| Filename | Latest commit message | Latest commit date |
|---|---|---|
agent.css carried 17 #NNN cookies, mostly attribution refs to the #394 vibec0re overhaul (mara's full-screen redesign). Most were not substantive WHY-prose — just "this exists because of #394" breadcrumbs. The two genuine WHY-explanations move to docs. Moved to docs/web-ui.md::Per-agent page: - **Agent icon paragraph**: rewrote with explicit-em-sizing rationale (intrinsic <img> dimensions push parent flex container open via align-items: stretch height feedback) + the 5em ≈ 6em min-height - 0.5em padding × 2 derivation + align-self: flex-start sticks-to-top. - **Overflow button paragraph**: added the :not([hidden]) display scoping rationale (UA stylesheet sets display:none on [hidden], but author display:flex would override — scope to :not([hidden]) so the popover stays hidden until JS unhides). Collapsed in agent.css: 17 cookies scrubbed across the file: - #360 (full-screen vibec0re overhaul — closed) ×2: section header preface + side-panel section header - #394 (vibec0re header redesign — closed) ×7: header height, main column, agent icon, meta-nav, overflow trigger, two orphaned-style tombstones - #411 (popover scoping + icon align-start — closed) ×2: icon sticks-to-top + overflow popover scoping - #568 (OAuth code mask + reveal — closed) ×1: show/hide toggle - #666 (ask→operator inline-answer slot — closed) ×1: slot styling (substance partly in PR #780 docs section) - #559 (mark all read header row — closed) ×1 - #376 (inbox row layout — closed) ×1: long-message wrap - #375 (tail pill z-index — closed) ×1: collision fix agent.css: 17 → 0 refs (100% reduction, fully migrated). |
||
| .. | ||
| 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).