diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index 0b6ce9f7..4601e26c 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -369,15 +369,23 @@ re-renders with the final status. `status === null` = still running. **AGENT sub-tab** — per-container journald viewer. Two selects: agent name (populated from `GET /api/state`) and unit filter (`hive-ag3nt.service` / `(full machine journal)`). Fetches -`GET /api/journal/{name}?unit=&lines=500` on refresh. Output -rendered as a `
` block.
+`GET /api/journal/{name}?unit=&lines=500` on selection change
+or `↻ refresh`. Output rendered as a `
` block. The last-selected
+agent name and unit are persisted to `localStorage` (`logs-agent` /
+`logs-unit`) and restored on page load. A `?agent=` and/or
+`?unit=` URL param overrides the stored values — the per-agent
+`⋮` menu's **journal logs →** entry uses this to deep-link directly
+to a specific agent's journal. A "fetched N ago" chip appears after
+the `↻ refresh` button following each successful fetch and ticks
+every 30 s.
 
 **SYSTEM sub-tab** — host-side service logs. Unit selector (currently
 only `hive-c0re.service`). Fetches
 `GET /api/journal-host?unit=hive-c0re.service&lines=500` on activation
-and on `↻ refresh`. Rendered as a `
` block. Available to the
-operator unconditionally (not capability-gated — the endpoint lives
-on the hive-c0re dashboard, behind the gateway).
+and on `↻ refresh`. Rendered as a `
` block. A "fetched N ago"
+chip ticks every 30 s. Available to the operator unconditionally (not
+capability-gated — the endpoint lives on the hive-c0re dashboard,
+behind the gateway).
 
 ## Container row
 
@@ -482,31 +490,25 @@ fetch entirely.
   watermarks. When the window value is absent the badge falls back
   to fixed 100k / 150k thresholds.
 - Line 2: status badges only (no per-card action buttons — actions
-  moved to the **selection bar**, see below).
-- Line 3: drill-in triggers —
-  - `↳ logs · ` — opens the side panel and lazy-
-    fetches journald via `GET /api/journal/{name}?unit=&lines=`
-    (`journalctl -M  -b --no-pager --output=short-iso`).
-    A unit dropdown (harness service / full machine journal) and
-    a refresh button live in the panel. The panel uses a column-flex
-    layout so the `
` log surface fills the full remaining panel
-    height; scroll happens inside the `
`, not the side
-    panel body.
-  - `↳ build logs · ` — opens the side panel and fetches
-    the last 10 build-log headers via
-    `GET /api/build-logs/{agent}` (status chip + kind + age +
-    truncated cmdline per row). Clicking a row lazy-fetches its
-    full stdout+stderr from `GET /api/build-logs/id/{id}` and
-    expands it inline as a scrollable `
`. A refresh button
-    re-fetches the header list. Backed by the `build_logs.sqlite`
-    store that `lifecycle::run` and `lifecycle::prebuild_toplevel`
-    write into.
-  - Plain navigation links (config repo, forge profile,
-    `dashboardLinks` extras) now live in the icon-only nav strip
-    on Line 1 — see above. The agent's `config` link
-    goes to the repo root; the deployed sha shows separately on
-    Line 1 as the `deployed:` chip, since the agent harness
-    can't know its own deployed commit.
+  moved to the **selection bar** or the **per-agent `⋮` menu**, see
+  below).
+
+**Per-agent `⋮` overflow menu** — a `⋮` button appears on the right
+edge of each container row. Clicking it opens a small dropdown with
+per-agent actions and navigation links. Contents:
+
+- `↺ R3ST4RT` (running agents only) / `■ ST0P` (running only) /
+  `▶ ST4RT` (stopped only) — single-agent run-state toggles.
+  Identical to the bulk actions on the selection bar but operate
+  on one agent without requiring a selection click.
+- `↻ R3BU1LD` — always available; queues a rebuild for this agent.
+- `journal logs →` — opens `/logs.html#agent?agent=` so the
+  operator lands directly in the AGENT log tab pre-filtered to this
+  container, without having to pick an agent from the dropdown.
+- `DESTR0Y` / `PURG3` — destructive, each prompts for confirmation.
+- `deployed: ↗` — present when the agent has a `deployed_sha`
+  and the forge is reachable; links the deployed commit on the forge
+  agent-configs mirror.
 
 `↻ UPD4TE 4LL` button appears above the containers list when any
 agent is stale. Banner pulses on each broker SSE event