Agent chat: keep the selected header toggle unboxed

Merged
TE
9d ago
+20-43

The selected Session Info/list toggle now uses only its selected glyph and icon tint, including on hover. It keeps its accessible pressed state and keyboard focus ring, and the chat-menu trigger stays lit after the pointer moves into its open menu.

Leo (2026-10-27): “plus the top right buttons still has that wack background”.

The special fill came from #25641, squash 761a5fa7796b419a17d4d54000994fd2c4262aae. Removing that exception restores the quiet icon strip from #25215. Reference: Claude Code's compact top-right utility strip, cmux-design-references/apps/claude/live/browser-panel-empty.png; selected state follows Leo's explicit tint-only direction.

StateBeforeAfter
Selected, darkBefore Selected, darkAfter Selected, dark
Selected, lightBefore Selected, lightAfter Selected, light
Menu open, darkBefore Menu open, darkAfter Menu open, dark
Menu open, lightBefore Menu open, lightAfter Menu open, light

Actual gallery captures from agent-pane.header-tools, panel-open and plain-icons, Chromium at the same 560×420 viewport in light/dark. The menu-open after capture moves the pointer onto Rename to verify the trigger remains lit; before shows the existing menu's initial keyboard selection. No private reference screenshots were published.

Validation at 1af371d6a3986ed5d08bfbe020f97460c1680526:

  • Hosted run 40480794493: 4/4 focused tests and full typecheck across 2,856 files pass. The expanded regression fails on base's pressed/hover fill, then passes after the fix.
  • Gallery run 40481432232: all eight base/head renders ready; both interactive head plays pass with zero layout shift or anchor movement. A nullable noninteractive play report stopped my image exporter after the four base images, so this run's aggregate is failure.
  • Head image recovery 40482671574: success; four actual head images exported, SHA-256 and PNG verification pass. Product source/tree unchanged. No repeat typecheck, unit suite or review.
  • Changed-file formatter/linter and prepush-gate pass. Full web lint reports unchanged base debt at 8711a8ca8333: SendScrollSetting.gallery.tsx type-scale, channelsCard.test.tsx/store.ts formatting, App.tsx hook dependencies, and stale protocol/generated/methods.ts.

Review (independent Codex gpt-6-astra, xhigh): SHIP at 1af371d6a3986ed5d08bfbe020f97460c1680526. Primary review passed at the same head. No new timers, animation loops or per-row work.

Agent session: agent session