| Filename | Latest commit message | Latest commit date |
|---|---|---|
mara, live review: 'the login card looks like it is behind the header', 'badges and interactive elements on same row have inconsistent size', 'the links should have the same popout as the links in the nav bar of swarm-ui.' All three, addressed: - Root cause of the overlap: MetaNav rendered every link inline in the header's title row, a variable-width list that can grow the row past the fixed --agent-header-h the rest of the page (position: fixed header, position: absolute content below it) is offset against, so the header visually covers whatever's underneath it once it's actually taller than assumed. Fix: MetaNav is now a single fixed-size trigger (reuses @hive/shared's Badge, icon-only, same shape as the header's existing overflow trigger) in the pills cluster, not a variable-width list in the title row. A single badge can't grow the row regardless of how many links the backend sends. Verified at 1024px/1400px (no overlap, was previously untested below 1400px) — the deeper fragility (StatusChips' badge row itself can still wrap on a genuinely narrow/mobile viewport and hit the same class of bug) is real but predates this PR and is out of scope here. - The popover mara asked for: same visual language as swarm-ui's own LinksMenu (Shell/LinksMenu.tsx) and this page's Dropdown/OverflowMenu — quiet icon trigger, popover on click. Not built from @hive/shared's Dropdown itself (its items are always <button>s for command dispatch, which would lose real <a> link semantics — ctrl/middle-click, copy |
||
| .. | ||
| packages | ||
| .gitignore | ||
| npm-deps-hash | ||
| 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).