Watch
0
0
Fork
You've already forked hyperhive
0

dashboard: serve the dashboard at /, fold kept state in as a tab, add a pages menu

Drop the H0M3 tile hub and the core page. The dashboard is now the index;
kept state is its fifth tab. A pages menu in the chrome links flow, stats,
API docs and the swarm UI. The swarm apex URL comes from
services.hyperhive.swarm.domain via HIVE_SWARM_PUBLIC_URL and the new
swarm_public_url field of the state snapshot.
This commit is contained in:
iris 2026-10-16 14:03:31 +02:00 • committed by mara
commit 0622736b30
35 changed files with 661 additions and 986 deletions

View file

@ -208,6 +208,13 @@ in
# forge links rather than emitting one it can't justify.
HIVE_FORGE_PUBLIC_URL = config.services.hyperhive.swarm.forge.publicUrl;
}
// lib.optionalAttrs (config.services.hyperhive.swarm.domain != null) {
# Browser URL of the swarm UI, which answers on the swarm apex domain
# (see ../swarm-ui.nix). The dashboard links to it from its pages menu.
# Absent when the domain is unset, so the link is hidden rather than
# guessed.
HIVE_SWARM_PUBLIC_URL = "https://${config.services.hyperhive.swarm.domain}/";
}
// lib.optionalAttrs (config.services.hyperhive.swarm.matrix.gatewayHost != null) {
# Browser-facing matrix GUI (fluffychat) URL — the gateway
# vhost (`gatewayHost`, `chat.<swarm-domain>` by default). Surfaced via the daemon's `Urls`

View file

@ -116,13 +116,13 @@ in
example = "https://forge.example.com";
description = ''
Browser-facing forge URL the dashboard uses to build clickable
forge links (the H0M3 Forge tile, per-agent-row forge links) —
forge links (the per-agent-row forge links) —
sourced into every agent container + hive-c0re as
`HIVE_FORGE_PUBLIC_URL`.
Defaults to `https://''${cfg.domain}`, the gateway vhost. When
`null`, the dashboard **hides** forge links rather than
guessing one — see `docs/web-ui/dashboard.md::H0M3 page` for
guessing one — see `docs/web-ui/dashboard.md::Container row` for
the rationale (a link built from the operator's own browser
hostname + a container port is only an accident away from
wrong on any deployment that isn't plain localhost).

View file

@ -192,7 +192,7 @@ let
# files — hive-c0re serves none of this as a fallback.
# `= /api/docs` (no trailing slash) redirects to `/api/docs/`: nginx
# owns that redirect because hive-c0re has no route for it, and the
# H0M3 hub's own `/api/docs` link (no trailing slash) would 404
# the dashboard's own `/api/docs` links (no trailing slash) would 404
# without it.
swaggerUiLocations = {
"= /api/docs" = {

View file

@ -15,11 +15,10 @@
#
# $out/dashboard/ the hive-c0re dashboard assets (full layout in
# frontend/packages/dashboard/build.mjs):
# index.html (H0M3 hub, served at /) dashboard.html (operator SPA,
# served at /dashboard.html) flow.html
# index.html (operator SPA, served at /) flow.html
# stats.html favicon.svg
# static/{home,tabs,flow,stats,stream-worker}.js{,.map}
# static/{colors,theme,common,home,dashboard,flow,stats}.css
# static/{tabs,flow,stats,stream-worker}.js{,.map}
# static/{colors,theme,common,dashboard,flow,stats}.css
# $out/agent/ the per-agent default UI (layered with
# hyperhive.frontend.extraFiles at activation time)
# index.html stats.html screen.html