move terminal-verbosity toggle from agent overflow menu to /settings.html

Per mara: 'i wanted you to put this in .../settings.html' — the toggle
belongs with the other operator-local browser preferences, not buried
in each agent's own overflow menu.

Extracted the get/set + localStorage key into @hive/shared/prefs.js so
settings.html (writer) and every per-agent app.js (reader, via
HiveTerminal.create's expandDetails option) agree on the exact same key
without two independently-typed copies that could drift. Removed the
now-unused overflow-menu toggle + its agent.css rules from the agent
page. Docs moved from docs/web-ui/agent.md's overflow-button section to
docs/web-ui/dashboard.md's S3TT1NGS section, next to the existing
browser-notifications preference.
This commit is contained in:
iris 2026-08-02 18:34:40 +02:00
commit da3fc9bf95
8 changed files with 79 additions and 83 deletions

View file

@ -101,16 +101,6 @@ through. Three flex columns:
the `/effort <level>` slash command). The active level's button is
highlighted; `renderEffortChip` keeps the picker in sync with
`StateSnapshot.effort` from the cold-load snapshot.
A third separator + **settings** section holds a single
`role="menuitemcheckbox"` toggle, `☐/☑ expand tool output` — flips
whether otherwise-collapsed `<details>` rows in the terminal (long
tool-results, Write/Edit diffs, …) default open. Pure client-side:
persisted to this browser's `localStorage` only (no backend field,
no `/api/*` call), read live by the shared terminal factory's
`expandDetails` option (see docs/web-ui/shape.md::Shared terminal
pane) so toggling mid-session applies to the next rendered row
without a reload. Rows that already default open regardless (send /
ask / answer / recv) are unaffected either way.
The popover's display rules are scoped to `:not([hidden])` so the
`[hidden]` HTML attribute's UA `display: none` isn't overridden by
the author CSS's `display: flex` — the popover stays hidden until

View file

@ -622,10 +622,9 @@ frontend reads.
Operator-local preferences. State lives in the browser's
`localStorage` — preferences do NOT sync between devices and
do NOT survive a profile wipe. Today the tab holds one section
(browser notifications); future preferences (theme, density,
etc.) land here as sibling `<h3>` blocks
under the same `<section id="tab-pane-settings">`.
do NOT survive a profile wipe. Two sections today (browser
notifications, agent terminal); future preferences (theme, density,
etc.) land here as sibling `<h3>` blocks in `settings.html`.
**◇ browser notifications** — `🔔 enable notifications` button when
permission ungranted; `🔕 mute / 🔔 unmute` toggle once granted
@ -636,6 +635,19 @@ single status line explains why. See `### Browser notifications`
below for the dispatch model + the three signals the dashboard
emits OS notifications on.
**◇ agent terminal** — a single `☐/☑ expand tool output panels`
toggle button (`role="switch"`, live `aria-checked`). Controls whether
every per-agent page's terminal defaults otherwise-collapsed
`<details>` rows (long tool-results, Write/Edit diffs, …) open; rows
that already default open regardless (send/ask/answer/recv) are
unaffected either way. Pure client-side — the key + get/set live in
`@hive/shared/prefs.js` (`getExpandDetailsPref`/`setExpandDetailsPref`)
so this page and every agent page's `app.js` read/write the exact same
`localStorage` key without a backend field; the shared terminal
factory reads it live via its `expandDetails` option (see
docs/web-ui/shape.md::Shared terminal pane), so a change here applies
to any already-open agent tab's next rendered row without a reload.
The FL0W page does NOT host this pane — settings live only on the
dashboard's S3TT1NGS tab (reach it via the FL0W page's `← home`
back-link → Dashboard). Notifications still fire on the FL0W page when