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

48
assets/docs/runs_de.md Normal file
View file

@ -0,0 +1,48 @@
# Läufe
Die Läufe-Seite überwacht **abgekoppelte Aufrufe** — Flows, die im
Hintergrund laufen, statt auf ihr Ergebnis zu warten. Jede Zeile
zeigt den Flow, seine Phase, den aktuellen Schritt und das Projekt,
mit dem er gestempelt wurde.
## Was ein abgekoppelter Lauf ist
Die meisten Flows laufen *inline*: Man startet sie und wartet auf
das Ergebnis. Ein **abgekoppelter** Lauf wird dem Hub übergeben und
liefert sofort eine Kennung zurück; der Flow läuft im Hintergrund
weiter. Man kommt später zurück, um das Ergebnis zu lesen, dem Lauf
live zu folgen oder ihn abzubrechen.
Abgekoppelte Aufrufe sind **optional**. Sie funktionieren nur, wenn
der Betreiber sie in der Hub-Konfiguration aktiviert hat:
```yaml
detached:
enabled: true
```
Bis dahin ist diese Seite leer — das ist der Normalzustand.
## Phasen
- **Wartet** — angenommen, noch nicht in Ausführung.
- **Läuft** — ein Schritt wird ausgeführt (die Zeile nennt ihn).
- **Erfolgreich** — fertig; das Ergebnis wird unter den
Größen-/Anzahl-/TTL-Grenzen des Hubs aufbewahrt.
- **Fehlgeschlagen** — mit einem Fehler beendet (in der Zeile
angezeigt).
- **Abgebrochen** — von einem Betreiber gestoppt.
## Abbrechen
Ein wartender oder laufender abgekoppelter Lauf trägt einen
**Abbrechen**-Knopf. Der Abbruch signalisiert dem Lauf zu stoppen;
ein bereits beendeter Lauf lässt sich nicht abbrechen (Studio sagt
das ehrlich, statt es vorzutäuschen).
## Arbeitsbereich-Filter
Die Seite berücksichtigt den aktiven Arbeitsbereich: Mit gewähltem
Projekt zeigt sie nur dessen abgekoppelte Läufe. Abgekoppelte
Ergebnisse werden im Speicher des laufenden Hub-Prozesses gehalten —
sie überstehen keinen Hub-Neustart.