| Filename | Latest commit message | Latest commit date |
|---|---|---|
Final pass on tabs.js. All 6 remaining cookies were either attribution refs to closed issues / past reviews or pure-history mile-markers: - #259 disabled meta-update state → drop attribution - dashboard.rs#2170 backend handler line ref → drop the line number (handler still lives in dashboard.rs, line drifts) - mara on #695 M0V3 picker any-selection → drop attribution (substance already captured in docs/web-ui.md::Selection bar) - #541 journald scroll surface → drop the migration history framing, keep present-state behaviour - argus on #471 textContent vs innerHTML review → drop the review attribution, keep the safer-pattern rationale inline - #369 tab routing section header → drop the cookie, keep the section divider tabs.js: 6 → 0 issue-ref cookies (100% reduction). Across batches 1-14 (#712): 73 → 0 issue-ref cookies, with substantive prose (Topology tree CSS geometry, Container row icon layout, Pending-state derivation, Selection bar, R3BU1LD QU3U3 cancel + step annotations, Approval card requested-at, SSE multiplexing worker-death self-heal, FL0W page MESS4GE FL0W body layout) migrated to docs/web-ui.md across the batches. dashboard SPA files all at 0 cookies now (PR #795 covers the other dashboard files; this PR covers the tabs.js residual). |
||
| .. | ||
| 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).