docs: update stale tabs.js→swarm.js/call.js references

After the SW4RM and Y3R C4LL extractions from tabs.js (PRs merged
earlier), several docs still pointed at `assets/tabs.js::fn`. Update
them to the authoritative module:

- dashboard.md: renderContainers, buildAgentTree → swarm.js
                renderApprovals → call.js
                renderPeerHives → swarm.js
- shape.md: generic "tabs.js render function" → "domain module"
- conventions.md: clarify async-form listener lives in tabs.js (dashboard)
                  AND app.js (per-agent UI)
This commit is contained in:
iris 2026-07-04 12:04:47 +02:00 committed by mara
commit fc415a72a5
3 changed files with 6 additions and 6 deletions

View file

@ -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

View file

@ -536,7 +536,7 @@ nix config (an attrset keyed by peer domain), serialises each
entry as `{ name, url }` into `state.peer_hives: Vec<PeerHiveView>`,
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 `<img>` points at `<url>/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 `<img>` 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

View file

@ -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