From 40b9a7f2cded0587e432d39cf6463ccdd49e3f58 Mon Sep 17 00:00:00 2001 From: iris Date: Fri, 29 May 2026 22:06:28 +0200 Subject: [PATCH] =?UTF-8?q?dashboard:=20M4TR1X=20=E2=86=92=20tab=20strip?= =?UTF-8?q?=20entry=20for=20matrix=20GUI=20(#607)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Frontend half of #607 v0 — adds the `◆ M4TR1X ◆ →` page-link entry to the dashboard tab strip between SCH3DUL3S and FL0W →. Same `tab-link` class as FL0W → since /matrix/ is its own SPA, not an in-place pane swap. Hidden via the `hidden` attribute by default; tabs.js's `refreshState` flips it based on `s.matrix_gui_enabled` (added in #610). When the operator hasn't set `hyperhive.matrix.gui.enable = true` the snapshot returns false and the tab strip doesn't surface a dead link. docs/web-ui.md updated: - chrome-header tab-strip list now includes M4TR1X → with the hidden-when-disabled note - new "M4TR1X page" section under FL0W explaining the same-origin serve via hive-c0re ServeDir + the manual homeserver URL pick on first login (with #609 tracking the post-#15 nginx-front re-root + .well-known/matrix/client auto-discovery) --- docs/web-ui.md | 31 +++++++++++++++++++--- frontend/packages/dashboard/src/index.html | 12 +++++++++ frontend/packages/dashboard/src/tabs.js | 6 +++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/docs/web-ui.md b/docs/web-ui.md index ada63831..84179763 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -140,10 +140,15 @@ cross-page link (`◆ FL0W ◆ →`), not a pane swap. **Chrome header** (fixed, overlays the active tab pane): - **Tab strip**: `◆ SW4RM ◆`, `◆ Y3R C4LL ◆`, `◆ SYST3M ◆`, - `◆ SCH3DUL3S ◆`, and `◆ FL0W ◆ →` (page link). Count pills on - SW4RM (container count), Y3R C4LL (pending approvals + - questions), and SCH3DUL3S (active schedules); FL0W pill mirrors - the operator inbox length (hidden when zero). + `◆ SCH3DUL3S ◆`, `◆ M4TR1X ◆ →` (optional page link, see below), + and `◆ FL0W ◆ →` (page link). Count pills on SW4RM (container + count), Y3R C4LL (pending approvals + questions), and SCH3DUL3S + (active schedules); FL0W pill mirrors the operator inbox length + (hidden when zero). The M4TR1X → entry is hidden when + `hyperhive.matrix.gui.enable = false` (default) 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` (#607). - **Notification controls**: `🔔 enable notifications` when permission ungranted; `🔕 mute / 🔔 unmute` toggle once granted. Always visible in the chrome regardless of active tab. @@ -300,6 +305,24 @@ button hard-deletes (`POST /cancel-reminder/{id}`) and a Lives in the SCH3DUL3S tab alongside operator schedules so the operator has one place for everything time-fired (#460). +### M4TR1X page (`/matrix/`, optional) + +A static matrix web client (default `pkgs.fluffychat-web`, swappable +via `hyperhive.matrix.gui.package`) mounted by hive-c0re's dashboard +router as a sibling `nest_service("/matrix", ServeDir::new(dir))` +when `hyperhive.matrix.gui.enable = true` + `HIVE_MATRIX_GUI_DIR` env +points at the dist root. Same-origin with the dashboard; the +operator opens `/matrix/` in the same tab from the M4TR1X → strip +entry, logs in once with the in-host tuwunel homeserver URL +(`http://localhost:8008` or whatever the matrix module exposes), +then has matrix chat alongside the agent dashboard without leaving +the host's origin. + +v0 same-origin shape via hive-c0re ServeDir (#607 / #610); the +unified nginx-front re-root to `https://matrix.${hyperhive.domain}` ++ `.well-known/matrix/client` auto-discovery is tracked in #609 +(atlas's lane, post-#15). + ### FL0W page (`/flow.html`) A dedicated full-page terminal (not a tab pane — a separate HTML diff --git a/frontend/packages/dashboard/src/index.html b/frontend/packages/dashboard/src/index.html index fdd9a62b..2018d737 100644 --- a/frontend/packages/dashboard/src/index.html +++ b/frontend/packages/dashboard/src/index.html @@ -45,6 +45,18 @@ + + +