Watch
0
0
Fork
You've already forked hyperhive
0

docs(web-ui): state current dashboard behaviour, drop changelog wording

Rewrites 12 sentences in docs/web-ui/dashboard.md that described
current state as a change from something earlier (moved/no longer/
gone/was) or stated what a field/page doesn't exist without saying
what replaced it. Verified each against the current code at forge/main
before rewriting.

Refs #3902
This commit is contained in:
atlas 2026-10-02 11:45:40 +02:00 • committed by mara
commit 843c9ad016

View file

@ -16,7 +16,7 @@ from the dashboard tab strip.
- **← home back-link**: top-left of the chrome, links to the H0M3 hub
at `/`. Every surface links back to the hub rather than to each other.
- **Tab strip**: `◆ SW4RM ◆`, `◆ Y3R C4LL ◆`, `◆ P3RM1SS10NS ◆`,
`◆ SCH3DUL3S ◆`. In-page tabs only — the SYST3M panels moved to the
`◆ SCH3DUL3S ◆`. In-page tabs only — the SYST3M panels live on the
standalone **C0R3** page (`/core.html`), and FL0W / L0GS / ST4TS /
M4TR1X live on their own pages too, all reachable from the
H0M3 hub (not the tab strip). Count pills on SW4RM
@ -92,9 +92,8 @@ in_reply_to, file_refs).
browser's `localStorage` — preferences **don't** sync between devices and
**don't** survive a profile wipe. One section today (browser
notifications); future preferences land here as sibling `<h3>` blocks
in `dashboard.html`. Was its own S3TT1NGS page/tile (`/settings.html`)
until mara moved it in here — a standalone page for one toggle didn't
earn its own tile.
in `dashboard.html` — a standalone page for one toggle wouldn't earn
its own tile.
**◇ browser notifications** — `🔔 enable notifications` button when
permission ungranted; `🔕 mute / 🔔 unmute` toggle once granted
@ -111,15 +110,15 @@ instead — it's agent-terminal-only, unrelated to this section.
## C0R3 page (`/core.html`)
Passive / rare-interaction state. No longer a dashboard tab — it's a
standalone page reached from the **Core** tile on the H0M3 hub (served at
Passive / rare-interaction state, reached from the **Core** tile on the
H0M3 hub (served at
`/core.html`), with the same minimal chrome as `/logs.html`: a `← home`
back-link + a `createTabStrip` sub-tab nav (**K3PT ST4T3** default,
then **C0NT41N3R L04D**). The page is its own esbuild bundle (`core.js`)
that cold-loads `/api/state` and subscribes to `/api/dashboard/stream` for
`tombstones_changed`, `capabilities_changed`, and `tool_groups_changed`
(the latter two re-render the stale-perms sub-section when permission
data changes). (Rebuild queue and meta inputs have moved to the BU1LDS
data changes). (Rebuild queue and meta inputs live on the BU1LDS
page — see below.)
**K3PT ST4T3** — two sub-sections on one pane:
@ -199,9 +198,8 @@ pipeline) with an `onUpdate` callback to drive the two things below it
that the generic view doesn't show. The component owns fetching, cold
and live: `GET /api/jobq/graph` on mount, and a refetch via the mount
handle's `.refresh()` on every `rebuild_queue_changed` SSE tick (that
event is a bare `{ seq }` trigger — it carried a typed queue snapshot
until every consumer had moved to the generic endpoint, and now carries
none; both dashboard pages treat the tick as a pure refetch trigger).
event is a bare `{ seq }` trigger carrying no queue payload; both
dashboard pages treat the tick as a pure refetch trigger).
Each row is one root graph node (`parent: null`); a multi-step op's
per-agent subgraphs and sub-steps render as nodes within that one
@ -222,7 +220,7 @@ own domain concept (the component knows nothing about that endpoint).
**Rows carry no source chip, kind label, timing, or build-log
deep-link** — the generic graph wire doesn't carry those fields, and
rows deliberately present exactly what the endpoint provides rather
than reconstructing chrome hive-c0re no longer sends. Settled entries
than reconstructing chrome hive-c0re doesn't send. Settled entries
render their **full step tree**, not just a bare summary — the wire
doesn't filter `Done` nodes out.
@ -274,8 +272,8 @@ the panel shows a pulsing "⏳ meta-update running" banner and disables
the update button (snapshot field `meta_update_running`,
live event `meta_update_running`).
**BUILD L0GS** — all-agents build log history (moved from `/logs.html`).
Lazy-loaded on first tab activation; autorefreshes when
**BUILD L0GS** — all-agents build log history. Lazy-loaded on first tab
activation; autorefreshes when
`rebuild_queue_changed` fires. Fetches `GET /api/build-logs?limit=30`.
Renders a scrollable list of build entries; each row is a collapsible
button showing status badge (`live` / `ok` / `fail`), agent name,
@ -550,10 +548,9 @@ nginx container at `/matrix/` when
`HIVE_MATRIX_GUI_ENABLED` env var → `state.matrix_gui_enabled` in
`/api/state`; the gateway does the actual static serving.
There's no tile for it on the H0M3 hub (removed along with Forge's —
see the H0M3 section above). The operator reaches it from the swarm-ui
LinksMenu instead (see `docs/swarm/ui.md::Quick links`), and logs in
once with the in-host tuwunel homeserver URL (`http://localhost:8008` or whatever
The operator reaches it from the swarm-ui LinksMenu, not a H0M3 hub
tile (see `docs/swarm/ui.md::Quick links`), and logs in once with the
in-host tuwunel homeserver URL (`http://localhost:8008` or whatever
the matrix module exposes).
The unified nginx-front re-root to
@ -620,7 +617,7 @@ A dedicated log-viewer page (not a tab pane — a separate HTML page),
reachable from the Logs tile on the H0M3 hub. Minimal chrome:
a `← home` back link and a three-item sub-tab strip. Tab
routing is hash-based (`#agent`, `#infra`, `#system`); default is
`#agent`. (Build log history has moved to the BU1LDS page — see above.)
`#agent`. (Build log history lives on the BU1LDS page — see above.)
**AGENT sub-tab** — per-container journald viewer. Two selects: agent
name (populated from `GET /api/state`) and unit filter
@ -774,7 +771,7 @@ life). Two consequences for anything rendering it:
(`NodeKind`'s `&str` conversion, the same strings the graph wire's node
labels carry), not a fixed set. Treat it as an opaque display
string; don't switch on specific values. `restarting` in
particular no longer exists, because no node kind is unique to a
particular doesn't exist, because no node kind is unique to a
restart.
- It's **not** exclusively operator-initiated, and **not** limited
to rebuild-shaped work — `running_transients()` in hive-c0re is
@ -1226,8 +1223,7 @@ payload):
every queue mutation (enqueue, state transition, dedup collapse,
terminal-history trim). Unlike the snapshot events below it ships
no state at all: the client re-fetches `GET /api/jobq/graph`, which
is where it reads the queue from cold too. No
`/api/state.rebuild_queue` exists — it went with the typed projection.
is where it reads the queue from cold too.
- `schedules_changed` (seq, schedules: `Vec<WireSchedule>`) —
full snapshot of all scheduled prompts. Emitted after every
operator mutation via the `/api/schedules` surface (new /
@ -1276,7 +1272,7 @@ shaped yet). Every other section — approvals,
transients, containers, operator inbox, message flow —
derives from `/api/dashboard/stream` after the initial snapshot,
maintaining its own client-side store and applying events on
top. The 5s periodic poll is gone.
top.
<!-- vale write-good.Passive = YES -->
Generalised form helpers: `form[data-confirm="…"]` pops