feat: detached-runs monitor page (T3 parity)
Some checks failed
Security / Security check (push) Failing after 1s

New Runs sidebar destination listing detached invocations (detach:true)
with phase, current step, project and a Cancel button while
pending/running. Workspace-scoped like Audit/Approvals, polls every 2s.
Detached runs are opt-in (detached.enabled) — the empty state explains
how to enable them. Inline help doc DE+EN. DetachedRun model +
listDetachedRuns/cancelDetachedRun in HubService, backed by the SDK's
listInvocations()/cancelInvocation(). flutter analyze clean; 29 tests
green (sidebar Y-stability updated for the new destination, model
mapping unit-tested).

Screenshot verification (light+dark) deferred — shared desktop in use.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-12 14:43:37 +02:00
parent 984c91f91d
commit 54ccd3936a
13 changed files with 764 additions and 2 deletions

View file

@ -21,6 +21,7 @@ import 'pages/audit.dart';
import 'pages/doctor.dart';
import 'pages/federation.dart';
import 'pages/flows.dart';
import 'pages/runs.dart';
import 'pages/store.dart';
import 'pages/welcome.dart';
import 'theme/theme.dart';
@ -380,6 +381,12 @@ class StudioShellState extends State<StudioShell> {
selectedIcon: Icons.inbox,
page: ApprovalsPage(),
),
_NavPage(
id: 'runs',
icon: Icons.rocket_launch_outlined,
selectedIcon: Icons.rocket_launch,
page: RunsPage(),
),
_NavPage(
id: 'federation',
icon: Icons.hub_outlined,
@ -1641,6 +1648,8 @@ class _NavPage {
return l.navAudit;
case 'approvals':
return l.navApprovals;
case 'runs':
return l.navRuns;
case 'federation':
return l.navFederation;
default: