dashboard: 'starting…'/'stopping…' card badges for start/stop queue kinds (#1806)

Frontend half of #1806 (batch start has no visible running-action feedback).
damocles is routing dashboard start/hard-stop through the rebuild queue as
QueueKind::Start ('start') / Stop ('stop') so they get the same async
queued->running card progression as restart/rebuild/graceful-stop (the sync
transient_guard flash is too brief to see, esp. in a sequential bulk loop).
This adds the row-renderer label cases: 'start' -> starting/start queued,
'stop' -> stopping/stop queued (mirrors the graceful_stop case from #1791).
Forward-compatible: no-op until the backend emits those kinds. Doc updated.
This commit is contained in:
iris 2026-06-21 13:00:14 +02:00 committed by mara
commit 3a2cdaa37b
2 changed files with 8 additions and 3 deletions

View file

@ -706,9 +706,10 @@ fetch entirely.
restart / rebuild / destroy). Additionally, when a rebuild-queue
entry for this agent is `queued` or `running` but no
operator-initiated transient is set, the card surfaces a
`building…` / `meta-updating…` / `stopping…` badge (per queue
`kind` — a `graceful_stop` entry shows `stopping…` / `stop
queued`) sourced from `rebuildQueueState` — so the SW4RM tab
`building…` / `meta-updating…` / `starting…` / `stopping…` badge
(per queue `kind` — e.g. a `start` entry shows `starting…` /
`start queued`, `stop` and `graceful_stop` both show `stopping…` /
`stop queued`) sourced from `rebuildQueueState` — so the SW4RM tab
shows the same progress visible on the C0R3 page's R3BU1LD QU3U3.
The row visual splits queued vs running: a **queued** entry shows
only the pending-state pill (no row tint, so a long queue doesn't

View file

@ -877,11 +877,15 @@ window.marked = marked;
? (op.kind === 'meta_update' ? 'meta-updating'
: op.kind === 'destroy' ? 'destroying'
: op.kind === 'restart' ? 'restarting'
: op.kind === 'start' ? 'starting'
: op.kind === 'stop' ? 'stopping'
: op.kind === 'graceful_stop' ? 'stopping'
: 'rebuilding')
: (op.kind === 'meta_update' ? 'meta-update queued'
: op.kind === 'destroy' ? 'destroy queued'
: op.kind === 'restart' ? 'restart queued'
: op.kind === 'start' ? 'start queued'
: op.kind === 'stop' ? 'stop queued'
: op.kind === 'graceful_stop' ? 'stop queued'
: 'rebuild queued')));
const opRunning = transientKind != null