swarm.js: drop per-agent pending-badge fallback, transients-only now

mara, on review: "swarm.js should not need to pull in the jobq to do
its job" followed by "remove the per agent pending stuff - only show
what is running."

Deletes queuedOpsByAgent() entirely — no more per-agent badge derived
from Pending-state job-queue nodes. A card's pending badges are now
driven exclusively by transientsState (i.e. actually-running work);
queued-but-not-started work shows nothing on the card until a node
starts. jobqNodesState + refreshJobqGraph() stay, now feeding only
the queue-summary banner (a separate, still-open question — mara
separately asked for a dedicated rollup endpoint for that, tracked
apart from this PR).

Collapses the now-always-coincident `pending`/`pending-running` row
classes into one (`pending-running`) — there's no more queued-only
row state to visually distinguish it from.

docs/web-ui/dashboard.md's Container-row section rewritten to match:
the two-store priority-fallback description is gone, replaced with
"transients only."
This commit is contained in:
iris 2026-08-03 19:18:52 +02:00 committed by mara
commit 17f61d1da6
4 changed files with 66 additions and 106 deletions

View file

@ -234,13 +234,14 @@ window.marked = marked;
// `transientsState` + `containersState`, not from `s.*`).
syncTransientsFromSnapshot(s);
syncContainersFromSnapshot(s);
// Job-queue graph feeds the SW4RM agent-card badges
// (queuedOpsByAgent) + the queue-summary banner; its own detailed
// view lives on /builds.html. Self-fetches GET /api/jobq/graph —
// not read off `s` (this page's snapshot carries no jobq field) —
// fire-and-forget: renderContainers below runs off whatever
// jobqNodesState already holds, and refreshJobqGraph's own
// re-render catches up once the fetch resolves.
// Job-queue graph feeds only the SW4RM queue-summary banner now
// (per-agent card badges are transient-only — see swarm.js); its
// own detailed view lives on /builds.html. Self-fetches GET
// /api/jobq/graph — not read off `s` (this page's snapshot
// carries no jobq field) — fire-and-forget: renderContainers
// below runs off whatever jobqNodesState already holds, and
// refreshJobqGraph's own re-render catches up once the fetch
// resolves.
refreshJobqGraph();
renderContainers(s);
// Sync the derived approvals + questions stores from the