agent: remove rebuild button, move dashboard link into the links menu

mara (#3704): 'remove rebuild button, move link to dashboards into
links menu.'

The overflow (⋯) menu existed for exactly two items: the dashboard
back-link and a rebuild-container action. Rebuild is gone outright —
the dashboard's own R3BU1LD button already covers it, this was just a
rarely-used shortcut not worth its own menu. The dashboard link moves
into MetaNav's links popover (now the first item, above stats/forge/
config/extras) instead. With both gone, OverflowMenu had nothing left
to justify existing as a separate component — deleted along with its
CSS and the now-unused rebuildAction.ts (only consumer).

MetaNav gained a dashboardBase prop (Root.tsx already computes this
via resolveDashboardBase for InboxPanel/pause — reused, not
duplicated) and renders the dashboard link as a real <a>, same
treatment as every other item in that popover — no dangling
window.open()-only affordance.

Updated docs/web-ui/agent.md's Header section and the couple of
now-stale OverflowMenu references in index.html's/MetaNav.css's own
comments.

Verified: header now shows a single trailing icon-badge (was two),
popover opens with dashboard first then the agent_links() set.
tsc --noEmit clean, build clean, both pre-push lints clean.
This commit is contained in:
iris 2026-08-28 23:40:56 +02:00
commit 668ccc2278
8 changed files with 71 additions and 143 deletions

View file

@ -69,29 +69,34 @@ structurally rather than for one specific trigger. Two columns:
unprivileged process can't make directly).
- **Inbox / todos pills** (`📬 inbox · N` / `📋 todos · N`): hidden
when empty; click opens the matching flyout in the side panel.
- **Links badge** (`🔗`): opens a popover listing this agent's
`agent_links()`-sourced navigation (stats, screen when VNC is
enabled, forge profile + config-repo mirror when the agent has a
forge account, any `hyperhive.dashboardLinks` extras) as real
`<a>` elements — not a `Dropdown`-style command list, so
ctrl/middle-click and "copy link address" keep working. Each
`AgentLink.kind` resolves differently: `container` → same-origin
path; `forge``state.forge_public_url + url`, and the link is
dropped entirely when that's unset (never guessed from
- **Links badge** (`🔗`): opens a popover listing `↑ dashboard`
(back-link to the host dashboard, `${dashboardBase}dashboard.html`)
followed by this agent's `agent_links()`-sourced navigation (stats,
screen when VNC is enabled, forge profile + config-repo mirror when
the agent has a forge account, any `hyperhive.dashboardLinks`
extras) — all as real `<a>` elements, not a `Dropdown`-style
command list, so ctrl/middle-click and "copy link address" keep
working. Each `AgentLink.kind` resolves differently: `container`
same-origin path; `forge``state.forge_public_url + url`, and the
link is dropped entirely when that's unset (never guessed from
`<host>:3000`); `external` → already absolute. Same source
(`GET /api/state`'s `links` field) also feeds
`DashboardState.links` for the dashboard card's icon strip —
`agent_links()` in hive-agent is the single source of truth for
both.
- **Overflow badge** (`⋯`): a `Dropdown` with two rows —
`↑ dashboard` (link) and `↻ rebuild container` (select-twice
confirm, same action as the dashboard R3BU1LD button). Everything
else that used to live here (model/effort pickers, new-session,
logout) has a better home now: pickers are real badges above, and
`/new-session` / `/logout` are typed slash commands with their own
type-twice confirm (see below) — a modal doesn't fit a text-input
flow, and burying rare-but-important actions in one flat menu was
the design guide's own named anti-example.
both. There is no separate overflow (`⋯`) menu any more — it used
to hold exactly this dashboard link plus a rebuild-container action
(mara, hyperhive#3704: "remove rebuild button, move link to
dashboards into links menu") — rebuild had no real discoverability
need of its own (the dashboard's own R3BU1LD button already covers
it) so it's gone outright, and the dashboard link moved here,
leaving nothing to justify a separate menu. Everything else that
used to live in the old overflow menu (model/effort pickers,
new-session, logout) already had a better home before this: pickers
are real badges above, and `/new-session` / `/logout` are typed
slash commands with their own type-twice confirm (see below) — a
modal doesn't fit a text-input flow, and burying rare-but-important
actions in one flat menu was the design guide's own named
anti-example.
- No header cancel-turn button any more — `/cancel` (slash command,
below) is the only path; the turn-loop state badge already shows
`thinking` as the discoverability cue.