diff --git a/docs/web-ui.md b/docs/web-ui.md index a6d27464..397122fc 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -522,15 +522,15 @@ frosted-mauve bar slides up from the bottom of the viewport support the action; disabled with a tooltip naming the blockers when the selection is mixed: - `↺ R3ST4RT` — running agents only - - `■ ST0P` — running agents only (manager included; no special-case) + - `■ ST0P` — running agents only - `▶ ST4RT` — stopped agents only - `↻ R3BU1LD` — always available - `DESTR0Y` / `PURG3` — sub-agents only (disabled if manager selected) - `⇡ M0V3 → ROOT` (#486) — promote selected agents to top-level (parent = null); disabled when all selected are already at root. - Manager included with no special-case (matches the `ST0P` policy); - the backend's `topology::set_parent` refuses to move the manager - and the refusal surfaces in the failure roll-up. + Backend `topology::set_parent` refuses moves it can't satisfy + (e.g. moving the manager) and the refusal surfaces in the + failure roll-up. - `⇢ M0V3 → [select]` (#486) — inline picker available for any selection size. The dropdown lists every container that isn't IN the selection itself nor a descendant of any selected agent diff --git a/frontend/packages/dashboard/src/tabs.js b/frontend/packages/dashboard/src/tabs.js index 3a86af62..618f67c1 100644 --- a/frontend/packages/dashboard/src/tabs.js +++ b/frontend/packages/dashboard/src/tabs.js @@ -783,12 +783,6 @@ window.marked = marked; confirm: (names) => `restart ${names.length} agent${names.length === 1 ? '' : 's'} (${names.join(', ')})?`, disabledTitle: why('↺ R3ST4RT', stoppedNames.map((n) => `\`${n}\` is stopped`)), }); - // ST0P does not special-case the manager: when the whole selection - // is running it applies, manager included. host-side hive-c0re - // keeps serving the dashboard either way + per-agent approvals + - // meta-input updates still work without the manager up, so we - // don't special-case the confirm prompt when the manager is in - // the selection (mara: "dont special case manager for stopping"). addBulkButton(actions, 'btn-stop', '■ ST0P', allRunning, selected, { action: '/kill/', confirm: (names) => `stop ${names.length} agent${names.length === 1 ? '' : 's'} (${names.join(', ')})?`, @@ -835,14 +829,12 @@ window.marked = marked; addMoveActions(actions, selected, containers); } - // #486 — render the M0V3 affordances inside the selection bar. Split - // into its own helper because the picker variant needs a select + button - // pair, not the single-button shape addBulkButton ships. - // - // No client-side manager special-case (mara on #695): backend - // `topology::set_parent` refuses to move the manager and surfaces the - // refusal as a per-agent failure in the bulk-action error roll-up. Same - // pattern as ST0P (which also doesn't special-case manager). + // Render the M0V3 affordances inside the selection bar — separate + // helper because the picker variant needs a select + button pair, + // not the single-button shape addBulkButton ships. Backend + // `topology::set_parent` refuses moves it can't satisfy (manager + // included) and the refusal surfaces in the bulk-action error + // roll-up. function addMoveActions(parent, selected, containers) { // M0V3 → ROOT: parent=null for every selected agent. Only meaningful // when at least one selected agent currently has a non-null parent;