| Filename | Latest commit message | Latest commit date |
|---|---|---|
Second dashboard.css batch — scrubs all remaining #NNN cookies (post-batch-12 dashboard.css went from 51 → 36 raw matches, mostly hex colors). This batch zeroes out the actual issue refs. Moved to docs/web-ui.md::FL0W page: - **MESS4GE FL0W (extended)**: msgrow flex-wrap row + body flex-basis: 100% + min-width: 0 rationale (~10 lines new prose). Without flex-basis: 100% the body sat inline eating whatever the chips left, starting ~30ch in on long timestamps + agent names and wrapping awkwardly. Pushing it to its own line lets the body use the full row width. Collapsed in dashboard.css (en passant cookie scrubs across many small comments): - #485 msgrow body flex (→ FL0W docs pointer) - #450 inbox max-height (→ inline rationale only, cookie dropped) - #451 side-panel drag-to-resize × 2 (→ Side panel docs pointer) - #369 dashboard chrome (→ Tab strip pointer) - #416 full-width layout (→ inline rationale, cookie dropped) - #389 slug banner footer (→ inline rationale, cookie dropped) - #369#issuecomment-3437 + #362 + #383 + #383 + #362 flow.html section (→ FL0W page pointer + per-agent header pills pointer) - #375 tail pill stacking context (→ Per-agent page Terminal-wrap pointer to existing docs) - #66 ctx badge thresholds (→ Container row Line 1 pointer) - #541 panel-body column flex × 2 (→ inline rationale, cookie dropped) - #188 / #192 image preview (→ Side panel pointer) - #275 bulk select × 2 (→ inline, cookies dropped) - #259 background meta-update (→ inline, cookie dropped) - #474 inline edit button + form (→ inline, cookies dropped) - #466 interval composer (→ inline, cookie dropped) - #535 schedules-as-table × 2 (→ SCH3DUL3S tab pointer + inline) - #564 inline create row (→ inline, cookie dropped) - #443 selection bar (→ Selection bar pointer) - #486 M0V3 → <pick> (→ Selection bar pointer) - #459 scheduled prompts tab section (→ SCH3DUL3S tab pointer) dashboard.css: ~20 issue refs scrubbed in this batch + ~10 lines substantive prose migrated to MESS4GE FL0W. Total dashboard.css across batches 12 + 13: 51 raw matches → 0 issue-ref cookies (only hex colors remain). |
||
| .. | ||
| 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).