Skip to main content

Source Connection Status Visibility

Version: 3.0.0 Date: 2026-05-07

Goal: Allow users to quickly identify which sources are connected and which have init errors.

Solution: Cross-reference init report data with configured sources to display connection status badges, grouped init report, clickable source links, and a new read-only source summary page.

Features:

  • Workflows page: "Connected" / "Disconnected" badge with link icon on each source tile
  • Disconnected tiles: red border + error details in tooltip on hover
  • Clicking a tile opens a read-only source summary page (type, URL, projects, triggers, storages, status)
  • Edit button on summary navigates to the editor; 3-level breadcrumb (Workflow / name / Edit)
  • Init report: source names in error entries are clickable links to the source summary
  • Init report: entries grouped by source (one accordion per source)
  • Git username auto-discovery: GitHub/GitLab hide tokenName, username retrieved from /user on Test Connection
  • GitLab project name (path_with_namespace) stored as label and displayed throughout the UI

Implementation Details:

  • Status derived client-side in sources.utils.ts from init report data
  • discoverProjects for GitLab/GitHub returns { username, projects }
  • label stored on GitLab projects; ProjectFormatter.unkey includes it; no extra API call for display
  • webhook-capacity.service error report now includes operation field

Files Modified:

  • ui/src/pages/workflows/sources.utils.ts - Connection status computation
  • ui/src/pages/workflows/workflows.tsx - Loader fetches init report
  • ui/src/pages/workflows/WorkflowTile.tsx - Badge + tooltip + clickable card
  • ui/src/pages/workflows/WorkflowSummary.tsx - New read-only summary page
  • ui/src/pages/workflows/workflowEditor.tsx - 3-level breadcrumb + error banner
  • ui/src/pages/settings/report/WebhookActionReport.tsx - Clickable source link
  • ui/src/pages/settings/report/FtpActionReport.tsx - Clickable source link
  • ui/src/pages/settings/report/SourceGroupReport.tsx - Grouped entries per source
  • ui/src/pages/settings/report/InitReport.tsx - Grouping logic
  • ui/src/routes.tsx - New routes /workflows/:name and /workflows/:name/edit
  • ui/src/pages/workflows/stepForms/StepInitForm.tsx - Auto-discover username
  • src/protocol/source/gitlab/gitlab.service.ts - Returns username from /user
  • src/protocol/source/github/github.service.ts - Returns username (login)
  • src/protocol/capacities/webhook-capacity/webhook-capacity.service.ts - operation field
  • ui/src/pages/workflows/sources.types.ts - label on GitLab project type
  • ui/src/utils/format.ts - ProjectFormatter.unkey includes label
  • ui/src/pages/workflows/stepForms/StepGitForm.tsx - Persist label on GitLab selection
  • src/protocol/source/gitlab/gitlab.types.ts - label? on GitlabSource projects
  • src/protocol/source/gitlab/gitlab.service.ts - projectName uses label
  • src/core/configuration/config.schema.ts - label in gitlabProject Joi schema
  • src/protocol/source/source.service.ts - initStream() AsyncGenerator
  • src/app.controller.ts - SSE endpoint POST /config/reload-stream + calculateStatus
  • ui/src/protocol/tower.api.ts - reloadConfigStream() with fetchEventSource
  • ui/src/pages/settings/Status.tsx - Streaming reload, StrictMode guard ref
  • ui/src/protocol/tower.mock.ts - Updated mock data, mockReloadStream, dynamic errors