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/useron Test Connection - GitLab project name (
path_with_namespace) stored aslabeland displayed throughout the UI
Implementation Details:
- Status derived client-side in
sources.utils.tsfrom init report data discoverProjectsfor GitLab/GitHub returns{ username, projects }labelstored on GitLab projects;ProjectFormatter.unkeyincludes it; no extra API call for displaywebhook-capacity.serviceerror report now includesoperationfield
Files Modified:
ui/src/pages/workflows/sources.utils.ts- Connection status computationui/src/pages/workflows/workflows.tsx- Loader fetches init reportui/src/pages/workflows/WorkflowTile.tsx- Badge + tooltip + clickable cardui/src/pages/workflows/WorkflowSummary.tsx- New read-only summary pageui/src/pages/workflows/workflowEditor.tsx- 3-level breadcrumb + error bannerui/src/pages/settings/report/WebhookActionReport.tsx- Clickable source linkui/src/pages/settings/report/FtpActionReport.tsx- Clickable source linkui/src/pages/settings/report/SourceGroupReport.tsx- Grouped entries per sourceui/src/pages/settings/report/InitReport.tsx- Grouping logicui/src/routes.tsx- New routes/workflows/:nameand/workflows/:name/editui/src/pages/workflows/stepForms/StepInitForm.tsx- Auto-discover usernamesrc/protocol/source/gitlab/gitlab.service.ts- Returnsusernamefrom/usersrc/protocol/source/github/github.service.ts- Returnsusername(login)src/protocol/capacities/webhook-capacity/webhook-capacity.service.ts-operationfieldui/src/pages/workflows/sources.types.ts-labelon GitLab project typeui/src/utils/format.ts-ProjectFormatter.unkeyincludeslabelui/src/pages/workflows/stepForms/StepGitForm.tsx- Persistlabelon GitLab selectionsrc/protocol/source/gitlab/gitlab.types.ts-label?on GitlabSource projectssrc/protocol/source/gitlab/gitlab.service.ts-projectNameuseslabelsrc/core/configuration/config.schema.ts-labelin gitlabProject Joi schemasrc/protocol/source/source.service.ts-initStream()AsyncGeneratorsrc/app.controller.ts- SSE endpointPOST /config/reload-stream+calculateStatusui/src/protocol/tower.api.ts-reloadConfigStream()withfetchEventSourceui/src/pages/settings/Status.tsx- Streaming reload, StrictMode guard refui/src/protocol/tower.mock.ts- Updated mock data,mockReloadStream, dynamic errors