hyperhive/frontend/packages/dashboard/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
iris 4df286345a refactor(permissions): move ghost-perm detection server-side
Add GET /api/permissions/stale endpoint that returns agent names with
explicit capability/tool-group JSON entries but no live container AND
no kept-state tombstone. Ghost detection is now entirely server-side —
one authoritative call, no client-side roster cache, no staleness window.

The previous client-side approach in core.js made three parallel API
calls (GET /api/capabilities, GET /api/tool-groups, GET /api/state) and
filtered the result against a module-level `liveContainerNames` Set
populated only on cold load and form submits. Any container lifecycle
event (spawn, destroy) while core.html was open left `liveContainerNames`
stale, risking a false-positive ghost entry for a live container.

Changes:
- permissions.rs: add `get_stale_permissions` handler + `StalePermsResponse`
  struct. Computes live roster (containers_snapshot), tombstone set
  (Coordinator::kept_state_names), explicit perm names (capabilities::read
  + tool_groups::read), then returns the difference sorted.
- dashboard.rs: register GET /api/permissions/stale.
- core.js: replace the three-call client-side logic in
  `fetchAndRenderStalePerms` with a single fetch to /api/permissions/stale.
  Remove `liveContainerNames` state + its syncFromSnapshot population.
2026-06-28 23:29:51 +02:00
..
call.js fix(dashboard): render update_meta_inputs + schedule_prompt approval cards 2026-06-27 13:03:41 +02:00
colors.css refactor(frontend): base16 theme contract in a swappable colors.css 2026-06-08 21:24:07 +02:00
common.css feat(dash): show active model badge on agent cards (closes #2069) 2026-06-27 22:59:40 +02:00
common.js dashboard: stream the running rebuild's build log inline in the queue 2026-06-22 01:55:38 +02:00
core.css dashboard: stream the running rebuild's build log inline in the queue 2026-06-22 01:48:32 +02:00
core.html feat(core): add stale permission entries sub-section to K3PT ST4T3 2026-06-28 23:29:51 +02:00
core.js refactor(permissions): move ghost-perm detection server-side 2026-06-28 23:29:51 +02:00
dashboard.css feat(schedules): make schedules pausable 2026-06-27 20:01:16 +02:00
dashboard.html dashboard(html): fix stale P3RM1SS10NS pane comment after the save-all change 2026-06-17 20:14:09 +02:00
flow.css chore(frontend): scrub pre-existing issue-tag refs from source comments 2026-06-09 00:24:49 +02:00
flow.html refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
flow.js dashboard: point frontend at the /api/* backend routes 2026-06-22 00:45:26 +02:00
home.css dashboard(home): matrix-rain backdrop on the H0M3 page 2026-06-17 21:46:25 +02:00
home.js dashboard(home): harden matrix-rain fade-trail colour parsing 2026-06-17 21:59:12 +02:00
index.html dashboard(home): matrix-rain backdrop on the H0M3 page 2026-06-17 21:46:25 +02:00
logs.css feat(dashboard): AUD1T — privileged-actions audit trail as a LOGS sub-tab 2026-06-13 15:31:50 +02:00
logs.html feat(dashboard): AUD1T — privileged-actions audit trail as a LOGS sub-tab 2026-06-13 15:31:50 +02:00
logs.js dashboard: stream the running rebuild's build log inline in the queue 2026-06-22 01:55:38 +02:00
matrix-accounts.css dashboard(matrix-accounts): dim live dot when daemon heartbeat stalls 2026-06-22 14:15:19 +02:00
matrix-accounts.html dashboard: drop matrix-accounts experimental notice; relabel list as provisioned 2026-06-16 10:22:53 +02:00
matrix-accounts.js dashboard(matrix-accounts): dim live dot when daemon heartbeat stalls 2026-06-22 14:15:19 +02:00
modal.css fix(dashboard): extract themed-dialog styles into an importable modal.css 2026-06-22 22:24:42 +02:00
modal.js dashboard: themedPrompt is a textarea — Enter submits, Shift+Enter newline 2026-06-21 23:55:15 +02:00
permissions.js fix(permissions): propagate I/O errors as 500 from delete_agent_permissions 2026-06-27 13:44:11 +02:00
schedules.js feat(schedules): make schedules pausable 2026-06-27 20:01:16 +02:00
settings.css refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
settings.html refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
settings.js refactor(frontend): move S3TT1NGS to its own /settings.html page (#1464 step 2) 2026-06-08 23:44:22 +02:00
state.js dashboard: extract operator-inbox + approvals into call.js (#1451) 2026-06-16 10:22:53 +02:00
stats.css refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
stats.html feat(stats): add an 'all' time range to agent + hive stats 2026-06-22 23:47:20 +02:00
stats.js refactor(frontend): move ST4TS to its own /stats.html page (#1464 step 2) 2026-06-09 00:11:43 +02:00
stream-worker.js dashboard: point frontend at the /api/* backend routes 2026-06-22 00:45:26 +02:00
system-sections.css feat(core): add stale permission entries sub-section to K3PT ST4T3 2026-06-28 23:29:51 +02:00
tabs.js feat(dash): show active model badge on agent cards (closes #2069) 2026-06-27 22:59:40 +02:00
theme.css refactor(frontend): base16 theme contract in a swappable colors.css 2026-06-08 21:24:07 +02:00
util.js refactor(frontend): extract shared render/format helpers into util.js (#1451) 2026-06-09 14:52:01 +02:00