feat: detached-runs monitor page (T3 parity)
Some checks failed
Security / Security check (push) Failing after 1s
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:
parent
984c91f91d
commit
54ccd3936a
13 changed files with 764 additions and 2 deletions
|
|
@ -2882,4 +2882,55 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get workspaceProtectedHint =>
|
||||
'Geschützt: logisch getrennt im gemeinsamen Hub — keine harte Prozessgrenze. Kritische Mandate nutzen einen abgeschotteten Bereich.';
|
||||
|
||||
@override
|
||||
String get runsTitle => 'Läufe';
|
||||
|
||||
@override
|
||||
String get runsReloadTooltip => 'Lauf-Liste neu laden';
|
||||
|
||||
@override
|
||||
String get runsEmptyTitle => 'Keine abgekoppelten Läufe';
|
||||
|
||||
@override
|
||||
String get runsEmptyHint =>
|
||||
'Mit detach gestartete Läufe stehen hier, bis sie fertig sind. Abgekoppelte Aufrufe sind optional — dazu detached.enabled in der Betreiber-Konfiguration aktivieren.';
|
||||
|
||||
@override
|
||||
String get runsCancelButton => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String runsCancelSignalled(String flow) {
|
||||
return 'Abbruch für $flow ausgelöst.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get runsCancelTooLate =>
|
||||
'Der Lauf war schon fertig — nichts abzubrechen.';
|
||||
|
||||
@override
|
||||
String runsCurrentStep(String step) {
|
||||
return 'Schritt: $step';
|
||||
}
|
||||
|
||||
@override
|
||||
String get runsPhasePending => 'Wartet';
|
||||
|
||||
@override
|
||||
String get runsPhaseRunning => 'Läuft';
|
||||
|
||||
@override
|
||||
String get runsPhaseSucceeded => 'Erfolgreich';
|
||||
|
||||
@override
|
||||
String get runsPhaseFailed => 'Fehlgeschlagen';
|
||||
|
||||
@override
|
||||
String get runsPhaseCancelled => 'Abgebrochen';
|
||||
|
||||
@override
|
||||
String get runsPhaseUnknown => 'Unbekannt';
|
||||
|
||||
@override
|
||||
String get navRuns => 'Läufe';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue