cmux NEXT: an open panel's header toggle reads as on
Summary
Leo (2026-10-26): "why is the button not toggled? Why is the button area still, like, just garbage?" Then: "i literally meant the ui depicting it as toggled or not". And on 2026-10-29: "you can just fix it right now, right? Like you don't need a massive rework. You can just edit the fucking web UI."
While its panel is open, a header toggle (Session Info, Files, Preview) now reads as on. It takes the App's toolbar selection fill (--cmux-selection, which WebTheme publishes from tokens.selectionFill, the same fill PaneToolbarView uses) on its own 24px square, with the text's ink. Nothing else in the strip gets a fill, there is still no box behind the strip, and nothing lights on hover.
Takes back #26092: "keep the selected header toggle unboxed". With ink alone, an open panel's toggle looked the same as hover under the default accent, so it read as off. This brings back a fill on the pressed toggle's own square only, which is what Leo's clarification asks for.
Already in base, so this PR doesn't touch them: drag-to-reorder sections (#27291), no plates behind the strip (#27130), and the card floats with no layout shift and grows up to the full room under the header.
Before / after
| Before (base) | After | |
|---|---|---|
| Session Info open | ![]() | ![]() |
| Session Info closed | ![]() | ![]() |
Look at the header's top-right strip. While Session Info is open, its toggle (the list icon) has the selection fill; closed, it's plain. Light:
. Captures come from cmux-ci capture <sha> --state tour:session-info[-closed] at a1eff82. The before shots are from the same tours on base 7f7576e.
Capture tour-session-info-closed at a1eff82ec8c9 (fleet build, capture mini, text checked for private data). Its steps check "Session Info open: the toggle is on", then close it with its toggle.
| Light | Dark |
|---|---|
![]() | ![]() |
Testing
chat-header-plain-icons: the only fill in the strip is the pressed toggle's selection fill.chat-header-tab-row-surface(browser lane): computed styles. Pressed isrgba(255,255,255,0.12)from--cmux-selection; rest, hover, open menu and focus stay transparent.- Webviews on the fleet (
cmux-ci test) at 803c3ae:bun run checkclean;chat-header-plain-icons3/3; browser lanechat-header-tab-row-surfaceandchat-inspector-overlay-toggle49/49, including the new pressed-and-hovered state in both floating hosts and the toolbar. - Independent review: gpt-6-astra (high, fast). The first pass at 6538c16 found one P2: in the floating header, hovering the pressed toggle took its fill away. Fixed in 803c3ae with a test for it; re-review: VERDICT: SHIP at 803c3ae. CI then showed the gallery play
agent-pane.header-tools#plain-iconsstill asserting the old no-fill rule; a1eff82 updates it (pressed tools keep the selection fill, others none). Delta review: VERDICT: SHIP at a1eff82ec8c92a25863712551148e479fabbd9d1.
Changelog
Fixed: A chat header toggle shows as on while its panel (Session Info, Files, Preview) is open
Agent session: agent session
š¤ Generated with Claude Code




