Allow activators to generically decorate Project objects

Created on 7 February 2025, 2 months ago

Problem/Motivation

I'll expand on this later; it's part of ✨ Allow recipes to expose additional follow-up tasks to Project Browser Active .

Proposed resolution

✨ Feature request
Status

Active

Version

2.0

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @phenaproxima
  • Merge request !715Make activators into generic decorators β†’ (Merged) created by phenaproxima
  • Pipeline finished with Failed
    2 months ago
    Total: 710s
    #418084
  • Pipeline finished with Success
    2 months ago
    Total: 875s
    #418176
  • Pipeline finished with Failed
    2 months ago
    Total: 471s
    #418195
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • Pipeline finished with Failed
    2 months ago
    Total: 271s
    #418201
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • Pipeline finished with Failed
    2 months ago
    Total: 514s
    #418204
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • Pipeline finished with Success
    2 months ago
    #418207
  • Pipeline finished with Canceled
    2 months ago
    Total: 422s
    #418219
  • Pipeline finished with Failed
    2 months ago
    Total: 822s
    #418227
  • Pipeline finished with Failed
    2 months ago
    Total: 570s
    #418302
  • Pipeline finished with Failed
    2 months ago
    #418318
  • Pipeline finished with Canceled
    2 months ago
    Total: 186s
    #418330
  • Pipeline finished with Failed
    2 months ago
    Total: 536s
    #418331
  • Pipeline finished with Failed
    2 months ago
    Total: 527s
    #418334
  • Pipeline finished with Failed
    2 months ago
    Total: 488s
    #418337
  • Pipeline finished with Failed
    2 months ago
    Total: 558s
    #418388
  • Pipeline finished with Failed
    2 months ago
    Total: 313s
    #418396
  • Pipeline finished with Success
    2 months ago
    Total: 372s
    #418401
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts

    This really turned out to be dragon-shaped but, along with πŸ“Œ Cleanup of Project object contract/constructor Active , represents a major, and critically important, clean-up of the backend code; a final twitch of the toxic myriad-tentacled monster that was the internally-tabbed Svelte data model. I was NOT kidding when I said that most of the complexity in Project Browser could be traced back to that design decision.

    The overall purpose of this MR is to sort out the boundaries between EnabledSourceHandler, the activators, and the endpoint controller. And setting the proper boundaries between local project IDs (not prefixed with the source plugin ID), and fully qualified project IDs (prefixed).

    Some of the salient points:

    • Project objects need not know which source exposed them. This is good, because any number of sources could, in theory, expose the same project in different ways. They can have a local ID, which should be immutable. So that's why Project::$source is gone.
    • The Svelte app, however, should only deal with fully qualified project IDs. That is generated at one point: in ProjectsResultsPage, which does have enough contextual information to ensure the fully qualified IDs are sent to the frontend.
    • On the backend, there is only one way to load a cached Project object from storage: with its fully qualified ID. InstallState's design was getting in the way of this, and for no real point anyway -- the progress-checking route is dead code and no longer in use. So I axed it.
    • A project's activation status and commands are not EnabledSourceHandler's business. It is only concerned with querying source plugins and caching the results; activation info has never been cached (and rightfully so), therefore EnabledSourceHandler should have nothing to do with activation. That moves to the one place that actually has reason to care about it, which is the ProjectBrowserEndpointController. It is the final word on what projects get delivered to the frontend, and is responsible for the final assembly of the frontend's data payload. That makes it the most natural place to attach activation data.
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • Pipeline finished with Success
    about 2 months ago
    Total: 638s
    #419521
  • πŸ‡ΊπŸ‡ΈUnited States tim.plunkett Philadelphia
  • Pipeline finished with Success
    about 2 months ago
    Total: 568s
    #420383
  • Pipeline finished with Skipped
    about 2 months ago
    #420392
  • First commit to issue fork.
  • πŸ‡ΊπŸ‡ΈUnited States chrisfromredfin Portland, Maine

    yeah boi

  • Automatically closed - issue fixed for 2 weeks with no activity.

  • Pipeline finished with Success
    about 1 month ago
    Total: 1081s
    #434544
Production build 0.71.5 2024