From a781addcfe345e65cda2a91dc74dd40ce864503a Mon Sep 17 00:00:00 2001 From: iris Date: Sun, 1 Nov 2026 15:37:33 +0100 Subject: [PATCH] hive ui: remove the counters on the tabs The pills on 4G3NTS, R3BU1LD QU3U3 and K3PT ST4T3, the poll that fed them, the two count helpers, their styles, and the tab strip's unused badge option. --- docs/web-ui/dashboard.md | 7 ++-- frontend/packages/dashboard/src/builds.js | 15 ------- frontend/packages/dashboard/src/dashboard.css | 20 +--------- frontend/packages/dashboard/src/index.html | 3 -- frontend/packages/dashboard/src/kept.js | 5 --- frontend/packages/dashboard/src/tabs.js | 39 +------------------ .../shared/src/tabs/hive-tab-strip.js | 11 +----- 7 files changed, 7 insertions(+), 93 deletions(-) diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index cb6e8c7d..1a08b36f 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -106,8 +106,7 @@ build log history — is two tabs of the dashboard: **R3BU1LD QU3U3** dashboard's one tab strip, `/api/state` snapshot and `/api/dashboard/stream` subscription serve them, with `rebuild_queue_changed` on the stream alongside the dashboard's other -kinds. The count pill on -R3BU1LD QU3U3 is the number of rebuilds in flight. +kinds. The 4G3NTS tab does **not** read the graph endpoint, by design — the swarm view stays independent of job-queue internals. Its per-agent pending badges are transient-only, and its queue-summary banner reads the much @@ -157,7 +156,7 @@ the tree — one per lifecycle state, matching the row glyphs — lets the operator narrow which root groups render; unchecking a state re-fetches `GET /api/jobq/graph?states=` rather than hiding rows client-side, so the `onUpdate` callback's node list (and -everything downstream of it — the count pill, the live-log panel) only +everything downstream of it — the live-log panel) only ever sees what's actually shown. Filtering is by a **root's own** state, which is already its subtree's rolled-up answer, so the filter keeps or drops a whole group, never splitting mid-tree. Default selection is @@ -175,7 +174,7 @@ Below the queue, a **live build-log panel** (`#rebuild-live-log`, inline — collapsible, with a live/ok/fail badge and a `↓ raw` download. It's keyed to the first `Running` node (in wire order) whose `payload.data.build_log_id` has a value — read from the `onUpdate` -callback's node list, same source as the count pill, no separate +callback's node list, no separate fetch — and **polls** `GET /api/build-log/{id}` every 2s (`fetchAndRenderLiveLog` / `liveLogPollTimer`); not an `EventSource` (that's the BUILD L0GS tab's own per-row expand view below — `GET diff --git a/frontend/packages/dashboard/src/builds.js b/frontend/packages/dashboard/src/builds.js index cfd05299..bd61b712 100644 --- a/frontend/packages/dashboard/src/builds.js +++ b/frontend/packages/dashboard/src/builds.js @@ -247,21 +247,6 @@ function renderRebuildLiveLog() { ); } -// ─── rebuild-queue count pill ───────────────────────────────────────────────── -// The queue's in-flight count, for the R3BU1LD QU3U3 tab's pill (tabs.js -// reads it on its refresh tick). Pending/Running/Finishing = in flight -// (Finishing = own work done, a sub-node still running — still counts). -// Root nodes only: each is one queue entry. -export function rebuildCount() { - return jobqNodes.filter( - (n) => - n.parent == null && - (n.state === "Pending" || - n.state === "Running" || - n.state === "Finishing"), - ).length; -} - // ─── BUILD L0GS tab ─────────────────────────────────────────────────────────── // All-agents build log history with expand-to-detail. Live builds stream in // real time. Lazy-loaded on first tab activation; auto-refreshes (debounced diff --git a/frontend/packages/dashboard/src/dashboard.css b/frontend/packages/dashboard/src/dashboard.css index a2364718..2a4a0fd8 100644 --- a/frontend/packages/dashboard/src/dashboard.css +++ b/frontend/packages/dashboard/src/dashboard.css @@ -12,8 +12,7 @@ /* ─── tabbed dashboard chrome ────────────────────────────────────── Top-of-page sticky header with banner + tab strip. SSE stays - alive across tab switches so count pills update live on inactive - tabs. See docs/web-ui/dashboard.md::Chrome header + Tab strip for the + alive across tab switches. See docs/web-ui/dashboard.md::Chrome header + Tab strip for the routing model. */ body.dashboard-shell { @@ -112,23 +111,6 @@ body.dashboard-shell { font-weight: bold; white-space: nowrap; } -.tab-count { - display: inline-block; - background: var(--purple-dim); - color: var(--purple); - border-radius: 999px; - padding: 0 0.55em; - min-width: 1.6em; - text-align: center; - font-size: 0.82em; - font-variant-numeric: tabular-nums; - font-weight: bold; -} -/* `display` above beats the UA's `[hidden]` rule, so an empty count (the - 4G3NTS and R3BU1LD QU3U3 pills at zero) would otherwise draw a "0". */ -.tab-count[hidden] { - display: none; -} /* Tab pane visibility — createTabStrip (@hive/shared/tabs.js) sets the `hidden` attribute on every inactive pane (resolved from the URL hash; diff --git a/frontend/packages/dashboard/src/index.html b/frontend/packages/dashboard/src/index.html index 68af0c61..1092e294 100644 --- a/frontend/packages/dashboard/src/index.html +++ b/frontend/packages/dashboard/src/index.html @@ -27,7 +27,6 @@ data-tab="agents" > ◆ 4G3NTS ◆ -