| Filename | Latest commit message | Latest commit date |
|---|---|---|
dashboard.css carried many CSS WHY-blocks duplicating prose already in docs/web-ui.md (after PRs #722/#724/#728/#776). Substantive new migration: topology indent geometry. Remaining cookies collapse to docs pointers. Moved to docs/web-ui.md::Topology tree: - Indent + lane geometry paragraph (~18 lines new prose): per-depth 1.8em ladder rationale + hardcoded six levels + CSS Values 5 attr() partial-support caveat (Chromium-only as of 2026) + lane center continuation bars + bottom: -0.4em prefix extension to merge sibling vertical lines + horizontal stub at icon midline. Collapsed in dashboard.css: - Topology indent block (#363/#361) → 3-line pointer - Tree prefix lanes block (#388) → 3-line pointer - Tree prefix depth-step ladder (~6 lines) → 4-line tighter paraphrase (lane-meets-icon rationale stays inline as it's immediate context for the values below) - Live cards icon-left split (#177/#344) → 6-line tighter paraphrase + docs pointer - Icon selection-toggle hover/focus (#443) → docs pointer - Icon img absolute positioning (#177) → docs pointer - Icon favicon fallback (#195/#202) → docs pointer - Pending state queued vs running (#769) → docs pointer - Icon-only nav strip (#262/#333) → 7-line tighter + docs pointer - Approval requested-at chip (#272) → 2-line pointer - In-flight step indicator (#437) → 4-line pointer - M0V3 affordance (#486) → 3-line pointer - Cancel-X queued (#575) → 5-line pointer dashboard.css: 51 → 36 cookies (counting hex-color false positives; ~15 actual issue refs scrubbed). Net ~50 lines of CSS WHY-prose collapsed to brief docs pointers; ~18 lines of new substantive prose migrated to docs/web-ui.md::Topology tree. |
||
| .. | ||
| packages | ||
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
hyperhive frontend
npm workspaces project for the hyperhive browser-facing assets:
packages/shared/— shared modules used by both surfaces (terminal pane, Catppuccin palette + body typography).packages/dashboard/— the hive-c0re dashboard SPA.packages/agent/— the per-container web UI (default agent page, stats, screen).
Build
npm install # one-off; uses the checked-in package-lock.json
npm run build # builds every workspace into packages/*/dist/
The Rust binaries serve packages/dashboard/dist/ and
packages/agent/dist/ via tower_http::ServeDir at runtime; the
build derivation is wired up in nix/modules/frontend.nix. Per-agent
additions are layered on top of the default agent dist via the
hyperhive.frontend.extraFiles option in agent.nix.
Why npm + esbuild
- Hermetic: dependencies vendored via the checked-in lockfile;
buildNpmPackagein nix uses it as the source-of-truth so the output is reproducible without network access at build time. - esbuild: vanilla-JS bundler, no framework runtime overhead.
Each workspace's
build.mjsis ~30 lines. - Single-PR migration: see issue #273 for the design proposal and the four-commit shape (npm scaffold → nix derivations → container plumbing → Rust cutover).