hyperhive/frontend
Repository files (latest commit first)
Filename Latest commit message Latest commit date
iris 683e59c757 dashboard: hide live-only status when container is stopped (#432)
Mara: *don't show agent status if container is shut down. agent
meta should probably show the info that it is not running as well*.

When `c.running` is false the harness isn't there to report state,
but the dashboard kept rendering everything that depends on it —
alive-badge, rate-limited / needs-login chips, ctx token chip,
self-reported status text, the nav-strip fetched from
`/api/agent/{name}/links`. All of it goes stale the moment the
container shuts down; the operator sees data that hasn't been true
for hours.

Two changes in `renderContainers`:

1. Replace the live-only badge chain with a single
   `■ not running` muted badge when stopped. Pending transients
   still win (a start / stop in flight gets the spinner). Static
   info — needs-update, `container :port` meta, `deployed:sha`,
   pending-reminder count — stays visible regardless of running
   state.
2. Skip the nav-strip fetch + the self-reported status text on
   stopped containers. The fetch would fail anyway (container
   web server is down); the status text was last set when the
   harness was alive and isn't current.

Also short-circuit the agent-icon img: skip the doomed `${url}icon`
request and go straight to the dimmed `/favicon.svg` fallback.
Avoids a noisy failed request in the console + the brief
broken-image flash.

No CSS changes — reuses the existing `.badge-muted` style.
2026-05-25 23:00:55 +02:00
..
packages dashboard: hide live-only status when container is stopped (#432) 2026-05-25 23:00:55 +02:00
.gitignore frontend: add npm workspace scaffold under frontend/ 2026-05-23 14:51:01 +02:00
package-lock.json frontend: lock npm dependencies via package-lock.json 2026-05-23 14:51:01 +02:00
package.json frontend: lock npm dependencies via package-lock.json 2026-05-23 14:51:01 +02:00
README.md frontend: add npm workspace scaffold under frontend/ 2026-05-23 14:51:01 +02:00

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; buildNpmPackage in 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.mjs is ~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).