| Filename | Latest commit message | Latest commit date |
|---|---|---|
Three columns gain Table's filterValue/filterMode (the mechanism hyperhive#4088 added): title (text, substring search -- there was no way to search by title text at all), assignees (text, not select -- a row can carry more than one assignee and Table's select mode matches one whole string per row exactly, so substring search over the joined string is the shape that actually fits multi-value data), and blocked (select, synthesized "blocked"/"not blocked" strings -- distinct from the existing "hide blocked" toggle, which only hides blocked issues and has no way to show only them). Deliberately not touched: repo (redundant with the existing repo SelectField), labels (redundant with the existing label chip multi-select -- chips are the better UI for a bounded label set anyway), the three numeric columns (no clean filter shape, already sortable). The existing hand-rolled sort (SortHeader, useLocalSetting- persisted) is untouched too -- migrating it onto Table's own sortBy would drop the localStorage persistence this page specifically wants, and Table doesn't expose controlled sort state to a caller today. The two layers compose without conflict: Table's own filter/sort runs over whatever rows it's handed, which is already this page's own filtered+sorted array. Scoped on the issue first, including this exact reasoning, before writing any code. |
||
| .. | ||
| 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/packages/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).