phase 6: container events + drop the 5s /api/state poll
new DashboardEvent::ContainerStateChanged + ContainerRemoved close the last refetch loop on the dashboard. Coordinator's rescan_containers_and_emit diffs a fresh container_view::build_all against a cached last_containers map and fires per-row events. called from actions::approve (post-spawn), actions::destroy, the lifecycle_action wrapper, auto_update::rebuild_agent, and the existing 10s crash_watch poll. ContainerView extracted to its own module so coordinator and dashboard can both build it. dashboard endpoints flip to 200; container-lifecycle forms carry data-no-refresh. client drops the periodic poll entirely — initial cold load + SSE for everything afterwards. pending overlay reads from the existing transientsState since the new event payload doesn't carry it. PURG3 + meta-update keep the post-submit refetch since tombstones + meta_inputs aren't event-derived yet; tracked in TODO.md.
This commit is contained in:
parent
f153639cb4
commit
e7ce35c503
11 changed files with 396 additions and 195 deletions
20
CLAUDE.md
20
CLAUDE.md
|
|
@ -193,6 +193,26 @@ Prune freely.
|
|||
domain tooling — the agent flake's `inputs` block pulls
|
||||
the external flake, `agent.nix` references it via
|
||||
`flakeInputs.<name>.packages.${pkgs.system}.default`.
|
||||
- **Just landed:** Phase 6 container events. New
|
||||
`DashboardEvent::ContainerStateChanged { container }` +
|
||||
`ContainerRemoved { name }` close the last refetch loop on the
|
||||
dashboard side. `Coordinator::rescan_containers_and_emit` builds a
|
||||
fresh `container_view::build_all` snapshot, diffs it against a
|
||||
cached `last_containers` map, and fires per-row events for the
|
||||
delta. Called from every mutation site: `actions::approve`
|
||||
(post-spawn), `actions::destroy`, the `lifecycle_action` wrapper
|
||||
in `dashboard.rs` (start/stop/restart/rebuild), `auto_update::
|
||||
rebuild_agent`, and the existing 10s `crash_watch` poll loop.
|
||||
`ContainerView` extracted to its own module so coordinator +
|
||||
dashboard can both build it. Dashboard endpoints (`/restart`,
|
||||
`/destroy`, `/kill`, `/rebuild`, `/start`, `/update-all`,
|
||||
`/meta-update`, `/purge-tombstone`) now return 200; matching
|
||||
forms carry `data-no-refresh` where the event coverage is
|
||||
complete (purge + meta-update keep the refetch since tombstones
|
||||
+ meta_inputs aren't event-derived yet). Client drops the 5s
|
||||
periodic `/api/state` poll entirely — initial cold load + SSE
|
||||
for everything afterwards; pending overlay reads from
|
||||
`transientsState` since the new event payload doesn't carry it.
|
||||
- **Just landed:** dashboard event refactor. New `hive-fr0nt`
|
||||
workspace crate hosts shared frontend assets (palette + terminal
|
||||
CSS + `window.HiveTerminal.create` JS) so both the dashboard and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue