Skip to content

Pin & Control the Active Pipeline Project #6979

Description

@A-Artemis

Background & Motivation

Only one pipeline can run at a time across the whole environment, this is enforced in the backend via OtherProjectActiveError in application/backend/app/api/routers/pipelines.py. However, discovering which project currently owns the running pipeline is hard for a newcomer:

  • On the home page grid, the active-pipeline project is not pinned , it's sorted in with everything else.
  • In the header dropdown (ProjectsListPanel in application/ui/src/components/project-panel/projects-list-panel.component.tsx), only the currently-selected project shows an "Active" tag; if you're viewing a different project, the active one is buried in the otherProjects list.

A common instruction is: "disable the pipeline that's currently running, then enable my new project's pipeline." Today the teammate has to hunt for the running project first.

Proposed Solution

Make the active-pipeline project always visible and always pinned to the top of both the home page grid and the header dropdown, with inline enable/disable controls. Every project already carries an active_pipeline: bool in ProjectView (application/backend/app/api/schemas/project.py), so the data is available client-side without new endpoints.

Functional Requirements

  1. Always-visible active project
    • The project whose active_pipeline is true shall be pinned to the top of the home page project grid and the top of the header project dropdown, regardless of the current sort/filter. Optionally: this project stands out with a glowing green box or play/pause button (indicating it is in use).
    • The pin shall persist even when a name search or task filter (Project Discovery feature) would otherwise exclude it, so the running pipeline is never hidden.
  2. Clear status indication
    • The pinned active project shall show a prominent "Active pipeline" indicator, reusing the existing "Active" Tag styling already used in ProjectsListPanel.
  3. Inline enable/disable
    • From the pinned location, the user shall be able to disable the running pipeline directly (calling the existing POST .../pipeline:disable in application/backend/app/api/routers/pipelines.py).
    • From any other project row/card, the user shall be able to enable its pipeline (calling POST .../pipeline:enable). This already exists in ProjectActionsMenu (application/ui/src/features/project/list/menu-actions/menu-actions.component.tsx) but shall be surfaced consistently on the home grid too.
  4. Conflict handling
    • When enabling a pipeline while another is active, the existing 409 OtherProjectActiveError flow shall be surfaced via the already-present EnablePipelineBlockedDialog (application/ui/src/components/enable-pipeline-blocked-dialog/), guiding the user to disable the currently active pipeline first.
  5. No active pipeline state
    • When no pipeline is running anywhere, no pinned "active" slot shall be shown, and the grid/dropdown shall render normally.

Affected Areas

  • UI: application/ui/src/features/project/list/project-list.component.tsx, application/ui/src/components/project-panel/projects-list-panel.component.tsx, application/ui/src/features/project/list/menu-actions/menu-actions.component.tsx, application/ui/src/components/enable-pipeline-blocked-dialog/
  • Backend (existing, no change expected): application/backend/app/api/routers/pipelines.py

Acceptance Criteria

  • The active-pipeline project is pinned to the top of the home grid and header dropdown.
  • The pin persists even when active filters/search would otherwise hide it.
  • A prominent "Active pipeline" indicator is shown on the pinned project.
  • Users can disable the running pipeline inline from the pinned location.
  • Users can enable a pipeline from any project, with the 409 conflict surfaced via the existing blocked dialog.
  • No pinned slot is shown when no pipeline is running.

Metadata

Metadata

Labels

Geti BackendIssues related to the Geti application serverGeti UIIssues related to Geti application frontendGeti UXIssues related to the Geti UX

Fields

No fields configured for Feature.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions