diff --git a/docs/conventions.md b/docs/conventions.md index 1a0d0283..a927ec52 100644 --- a/docs/conventions.md +++ b/docs/conventions.md @@ -406,7 +406,7 @@ the relevant handler (`agent_server.rs`, `mcp.rs`, or `dashboard.rs`). ## Async forms Dashboard + per-agent mutating forms carry `data-async`; a delegated -`submit` listener in `assets/tabs.js` intercepts, shows a spinner, +`submit` listener in `assets/tabs.js` (+ `assets/app.js` for the per-agent UI) intercepts, shows a spinner, POSTs `application/x-www-form-urlencoded` (axum's `Form` extractor rejects multipart), calls `refreshState()` on success. New mutating forms should add `data-async` and optionally `data-confirm` (for a diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index 6a03bee6..77fdc527 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -536,7 +536,7 @@ nix config (an attrset keyed by peer domain), serialises each entry as `{ name, url }` into `state.peer_hives: Vec`, and includes the field in the `/api/state` snapshot. `tabs.js` reads `state.peer_hives` on every `refreshState` call and calls -`renderPeerHives(peers)`, which rebuilds the `#peers-section` +`swarm.js::renderPeerHives(peers)`, which rebuilds the `#peers-section` div from scratch. The `name` field is the peer's DNS domain (the attrset key); `url` @@ -707,7 +707,7 @@ the tooltip says "select … for bulk actions" or "deselect … (or press Esc to clear all)". The `` points at `/icon`; load failure falls back to the dimmed hyperhive mark (`/favicon.svg`). The card body sits to the right with three stacked lines -(`assets/tabs.js::renderContainers`). +(`assets/swarm.js::renderContainers`). **Icon layout + load strategy:** the `` is absolutely positioned (`inset: 0`) inside the `.container-icon` wrapper — @@ -885,7 +885,7 @@ the dashboard and CLI paths behave identically.) ### Topology tree Container rows render as a forest, not a flat list — each agent -sits indented under its declared parent. `tabs.js::buildAgentTree` +sits indented under its declared parent. `swarm.js::buildAgentTree` walks `ContainerView.parent` for every container in the snapshot and produces a render order with per-row depth + sibling-position info: @@ -979,7 +979,7 @@ every render before the bar appears. ## Approval card -Each pending approval renders as a card (`assets/tabs.js:: +Each pending approval renders as a card (`assets/call.js:: renderApprovals`) with three stacked sections: - **identity header** — glyph, `#id`, agent, kind chip, and a diff --git a/docs/web-ui/shape.md b/docs/web-ui/shape.md index 87fb8b15..933e7f4d 100644 --- a/docs/web-ui/shape.md +++ b/docs/web-ui/shape.md @@ -187,7 +187,7 @@ listener: read `data-confirm`, swap the button to a spinner, POST re-render), call `refreshState()`. State shapes live in `dashboard.rs::StateSnapshot` and `web_ui.rs::StateSnapshot` — when adding state fields, plumb through the snapshot struct and the -relevant `assets/tabs.js` render function. +relevant domain module (`assets/swarm.js`, `assets/call.js`, etc.) render function. **Focus preservation:** `refreshState` checks whether `document.activeElement` sits inside one of the managed sections