docs: reflect the H0M3 nav restructure in dashboard.md (#1504)

Follow-up to the #1464 step-2 PRs now on main (route swap + page-link
removal). Brings docs/web-ui/dashboard.md in line with the shipped UI:

- Tab strip no longer lists the FL0W / L0GS / M4TR1X "→" page-links —
  those are separate pages reached from the H0M3 hub now. The strip is
  in-page tabs only (SW4RM / Y3R C4LL / SYST3M / P3RM1SS10NS / SCH3DUL3S /
  ST4TS / P33RS / S3TT1NGS).
- Document the dashboard's new "← home" back-link in the chrome header.
- FL0W / L0GS page sections: they use a slim "← home" header now, not the
  dashboard tab strip (dropped the stale "reuses the dashboard chrome" +
  cross-page-tab-link descriptions).
- M4TR1X / L0GS page intros: reachable from the H0M3 hub tile, not a
  tab-strip "→" entry.
- S3TT1NGS-on-FL0W note: settings live only on the dashboard tab, reached
  via the FL0W page's "← home" → Dashboard.

Docs-only; matches the merged frontend. Closes #1504.
This commit is contained in:
iris 2026-06-07 22:00:47 +02:00
commit 022fd5015c

View file

@ -8,23 +8,21 @@ The dashboard is served at `/dashboard.html` (with the home page at `/`).
It has a fixed chrome header at the top and a `<main>` that shows exactly
one tab pane at a time. The URL hash (`#swarm`, `#call`, `#system`,
`#permissions`, `#schedules`, `#peers`, `#settings`) drives which pane is
active; hash changes don't reload the page. FL0W is a separate full-page
terminal at `/flow.html` — its tab-strip entry is a cross-page link
(`◆ FL0W ◆ →`), not a pane swap.
active; hash changes don't reload the page. FL0W, L0GS, and the optional
M4TR1X client are separate pages reachable from the H0M3 hub at `/`, not
from the dashboard tab strip.
**Chrome header** (fixed, overlays the active tab pane):
- **← 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 ◆`, `◆ SYST3M ◆`,
`◆ P3RM1SS10NS ◆`, `◆ SCH3DUL3S ◆`, `◆ ST4TS ◆`,
`◆ P33RS ◆` (hidden when `swarm.peers` is empty),
`◆ M4TR1X ◆ →` (optional page link, see below), `◆ FL0W ◆ →`
(page link), and `◆ S3TT1NGS ◆`. Count pills on SW4RM (container
count), Y3R C4LL (pending approvals + questions + unread operator
messages), and SCH3DUL3S (active schedules); P33RS and S3TT1NGS
have no count. The M4TR1X →
entry is hidden when `services.hyperhive.matrix.gui.enable` is off
(defaults to `matrix.enable`) so operators without the matrix GUI
on don't see a dead link — tabs.js gates the `hidden` attribute on
`state.matrix_gui_enabled` from `/api/state`.
`◆ P33RS ◆` (hidden when `swarm.peers` is empty), and `◆ S3TT1NGS ◆`.
In-page tabs only — FL0W / L0GS / M4TR1X live on their own pages,
reachable from the H0M3 hub (not the tab strip). Count pills on SW4RM
(container count), Y3R C4LL (pending approvals + questions + unread
operator messages), and SCH3DUL3S (active schedules); P33RS and
S3TT1NGS have no count.
- **Banner-thin** (`░▒▓█▓▒░ HYPERHIVE / HIVE-C0RE / WE ARE THE WIRED ░▒▓█▓▒░`)
— sits below the tab strip.
- **Browser tab title**`hive / c0re` by default; updated to
@ -38,9 +36,9 @@ terminal at `/flow.html` — its tab-strip entry is a cross-page link
`question_resolved` SSE events; it's preserved when
`hive_name` / `swarm_name` later replace the raw title.
The FL0W page reuses the same chrome strip but its `◆ S3TT1NGS ◆ →`
entry is a cross-page link back to the dashboard
(`/#settings`) since the settings pane only lives there.
The FL0W and L0GS pages use a slim header (a `← home` back-link + the
page title) rather than the dashboard tab strip — they're standalone
surfaces, not tab panes.
## SW4RM tab
@ -391,9 +389,9 @@ single status line explains why. See `### Browser notifications`
below for the dispatch model + the three signals the dashboard
emits OS notifications on.
The FL0W page does NOT host this pane — its tab-strip
`◆ S3TT1NGS ◆ →` entry is a cross-page link to the dashboard's
`#settings` route. Notifications still fire on the FL0W page when
The FL0W page does NOT host this pane — settings live only on the
dashboard's S3TT1NGS tab (reach it via the FL0W page's `← home`
back-link → Dashboard). Notifications still fire on the FL0W page when
they're enabled here, because `NOTIF.show()` in
`common.js` depends on `Notification.permission` + the
`hyperhive.notify.muted` localStorage key, not on the buttons
@ -410,7 +408,7 @@ 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.
The operator opens `/matrix/` from the M4TR1X → strip entry, logs
The operator opens `/matrix/` from the Matrix tile on the H0M3 hub, logs
in once with the in-host tuwunel homeserver URL
(`http://localhost:8008` or whatever the matrix module exposes).
@ -421,10 +419,9 @@ auto-discovery lives in `docs/gateway.md` (atlas's lane).
## FL0W page (`/flow.html`)
A dedicated full-page terminal (not a tab pane — a separate HTML
page). Reuses the same `<header class="dashboard-chrome">` chrome
as the dashboard so the tab strip remains visible; SW4RM / Y3R
C4LL / SYST3M / SCH3DUL3S are cross-page links back to `/#<tab>`,
and the FL0W entry is marked active (`aria-current="page"`).
page). Slim chrome: a `← home` back-link to the H0M3 hub, the FL0W
title, and the agent-filter select (see below). No dashboard tab
strip — FL0W is a standalone surface reached from the hub.
The operator inbox is **not** on this page — it lives on the
dashboard's Y3R C4LL tab (◆ 1NB0X ◆ section, with per-message and
@ -476,8 +473,8 @@ dashboard sub-pages include a `← Home` back-link for navigation.
## L0GS page (`/logs.html`)
A dedicated log-viewer page (not a tab pane — a separate HTML page),
linked from the SETTINGS tab's `◆ L0GS ◆ →` entry. Minimal chrome:
a `← dashboard` back link and a three-item sub-tab strip. Tab
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 (`#build`, `#agent`, `#system`); default is
`#build`.