Skip to content

Agent pane header: no background behind the top-right icons at rest - #32687

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/header-icons-no-bg
Nov 2, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/header-icons-no-bg

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-11-02): "I'VE LITERALLY FING ASKED / FOR THE FING STUPID BACKGROUND ON THE FING TOP RIGHT ICONS TO BE REMOVED / FOR FING / WEEKS". Earlier (2026-10-31): "AND THE FING BACKGROUND ON THIS FING BUILD ON THESE BUTTONS STILL ISN'T F***ING REMOVESD".

What was drawing it

With the chat's tools in the pane's tab row (chrome.tabs.rowTools, on by default), the page is transparent at html but .acpmux-shell still painted --agent-page-bg over the whole pane, the tab row included. The tabs sit on the native row; the tools (Session Info, terminal, changes, browser, files) sat on a block of the page's color that ended at the pane's ⋯. That block is the background.

Regressed by: #20933 put the tools in the tab row while the shell kept its background. #25638 (git log -S'html:has(.acpmux-shell[data-tab-row])') made html transparent but left the shell's color. #28962 later removed per-button plates, which is why the complaint outlived it.

Change

  • header.css: .acpmux-shell[data-tab-row] paints the page color only below the row (a hard-stop gradient at --acpmux-tab-row-height), so the icons sit directly on the row.
  • Only the button under the pointer shows a hover pill. A toggle whose panel is open, or a button whose menu is open, shows the filled rounded square, as in Leo's reference, where only the toggled-on button is filled. The focus ring stays; the shared focus gradient stays off. Embedded and floating headers match.
  • Takes back Agent chat: header buttons draw no plate, pressed included (takes back #27546's fill) #28962: its pressed-and-hover "no fill" was not what Leo meant. The background was the shell band, and his reference shows a fill on the toggled-on button.

Test

webviews/test/chat-header-tab-row-surface.test.ts (committed red first in 897c56f):

  • A new pixel test renders the shipped CSS with the tab-row shell. The pixels behind the tools must be the row's color, not --agent-page-bg, and below the row they must be the page color.
  • The per-state cases now assert: nothing at rest, focused or disabled; the hover pill only on hover; the on fill only while pressed or with a menu open. This covers all four header hosts.

Observed / Not run

  • Observed: scripts/web-lint.sh passed (fast checks; the type-aware lint is left to CI on this host).
  • Not run yet: the browser-lane test through cmux-ci. Results will be posted on this PR. No Mac capture yet: this VM has no fleet client.

Changelog

Fixed: The agent pane header's top-right icons no longer sit on a background; only hover and an open panel's toggle are highlighted.

Agent session: agent session

🤖 Generated with Claude Code


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes the agent pane header's top-right icons showing a background band at rest, so the icons now sit directly on the tab row like the tabs beside them.

Bug Fixes

  • The shell paints the page color only below the tab row, not behind the tools.
  • Icons show no background at rest; hover shows a pill, and a toggle with an open panel or a button with an open menu shows the filled rounded square.
  • Reverts the previous removal of all fills on pressed states, matching the reference where only the toggled-on button is filled.

Written for commit 70642c1. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits November 2, 2026 23:49
…he tab row too

Fails on base: the shell paints --agent-page-bg behind the tab-row tools,
and hover / toggled-on draw no pill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-a2f53c60d9511e7ec747
… rest

The chat shell painted the page color across the pane's tab row, so the
header tools sat on a band of it while the tabs beside them sat on the
row (since #20933; #25638 cleared html but not the shell). The shell now
paints the page color only below the row. The icon under the pointer
gets the hover pill, and a toggle whose panel is open (or a button whose
menu is open) gets the filled rounded square, as in Leo's reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-a2f53c60d9511e7ec747
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 70642c1: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr32687 -f ref=lane/header-icons-no-bg -f platform=macos -f backend_mode=local

Gallery before/after for 70642c1: 16 states rendered, 12 images differ, 1109 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41548563631 -R manaflow-ai/cmux -n gallery-advisory-32687-70642c14a335101276c94c32f42a6df5720906b0 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.header-action-stability/idle Apple System Colors Light unchanged 0% own header.css
agent-pane.header-action-stability/idle Apple System Colors unchanged 0% own header.css
agent-pane.header-action-stability/busy Apple System Colors Light unchanged 0% own header.css
agent-pane.header-action-stability/busy Apple System Colors unchanged 0% own header.css
agent-pane.header-tools/native-row-off Apple System Colors Light unchanged 0% own header.css
agent-pane.header-tools/native-row-off Apple System Colors unchanged 0% own header.css
agent-pane.header-tools/native-row-tools Apple System Colors Light unchanged 0% own header.css
agent-pane.header-tools/native-row-tools Apple System Colors unchanged 0% own header.css
agent-pane.header-tools/unified-compact Apple System Colors Light changed 2.16% own header.css
agent-pane.header-tools/unified-compact Apple System Colors changed 2.12% own header.css
agent-pane.header-tools/unified-roomy Apple System Colors Light changed 2.91% own header.css
agent-pane.header-tools/unified-roomy Apple System Colors changed 2.87% own header.css
agent-pane.header-tools/unified-tight Apple System Colors Light changed 2.16% own header.css
agent-pane.header-tools/unified-tight Apple System Colors changed 2.12% own header.css
agent-pane.header-tools/idle Apple System Colors Light unchanged 0% own header.css
agent-pane.header-tools/idle Apple System Colors unchanged 0% own header.css
agent-pane.header-tools/panels-open Apple System Colors Light changed 6.43% own header.css
agent-pane.header-tools/panels-open Apple System Colors changed 6.25% own header.css
agent-pane.header-tools/panel-open Apple System Colors Light changed 2.16% own header.css
agent-pane.header-tools/panel-open Apple System Colors changed 2.12% own header.css
agent-pane.quick-surface/empty Apple System Colors Light unchanged 0% own header.css
agent-pane.quick-surface/empty Apple System Colors unchanged 0% own header.css
agent-pane.quick-surface/transcript Apple System Colors Light unchanged 0% own header.css
agent-pane.quick-surface/transcript Apple System Colors unchanged 0% own header.css
agent-pane.quick-surface/waiting Apple System Colors Light unchanged 0% own header.css
agent-pane.quick-surface/waiting Apple System Colors unchanged 0% own header.css
agent-pane.quick-surface/long Apple System Colors Light unchanged 0% own header.css
agent-pane.quick-surface/long Apple System Colors unchanged 0% own header.css
agent-pane.quick-surface/floating Apple System Colors Light changed 0.365% own header.css
agent-pane.quick-surface/floating Apple System Colors changed 0.36% own header.css
agent-pane.quick-surface/compact-streaming Apple System Colors Light unchanged 0% own header.css
agent-pane.quick-surface/compact-streaming Apple System Colors unchanged 0% own header.css

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Unclear: web / react-apps-base-check (4) failed: no known signature; failed step: Run base reds and compare. This PR merged before its CI finished: fix forward on main.

CI failed on 70642c14a3 (run 41548564266 attempt 1): 4 unknown.

Job Verdict Why
web / react-apps-base-check (4) unknown no known signature; failed step: Run base reds and compare
web / react-apps-base-check (8) unknown no known signature; failed step: Run base reds and compare
web / react-apps-base-check (7) unknown no known signature; failed step: Run base reds and compare
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-base-check (4), web / react-apps-base-check (8), web / react-apps-base-check (7), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules
red: web / react-apps-base-check (4); NEW webview test reds: test/chat-header-tab-row-surface.test.ts > acpmux-header-tools in the tab row draws no background behind its icons in its pressed-hover state; test/chat-header-tab-row-surface.test.ts > acpmux-header-tools draws no background behind its icons in its pressed-hover state; test/chat-header-tab-row-surface.test.ts > acpmux-floating-header draws no background behind its icons in its pressed-hover state (+1 more); do not merge until green; see lane-rules
red: web / react-apps-base-check (7); NEW webview test reds: test/chat-header-plain-icons.test.ts > the header tools' focus rule clears the shared focus gradient without drawing a fill; test/chat-header-plain-icons.test.ts > no header tool draws a fill, border or shadow of its own in any state; do not merge until green; see lane-rules
red: web / react-apps-base-check (8); NEW webview test reds: test/gallery-agent-pane-entries.test.ts > agent-pane.header-tools#plain-icons shows the product; do not merge until green; see lane-rules
red: web / react-apps-check; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules

Shipped in:

@teamleaderleo teamleaderleo added risk:low Risk tier (docs/ci/risk-tiers.md) leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel labels Nov 2, 2026
@teamleaderleo
teamleaderleo merged commit 9a290b3 into feat-cmux-next Nov 2, 2026
147 of 159 checks passed
@teamleaderleo
teamleaderleo deleted the lane/header-icons-no-bg branch November 2, 2026 23:52
@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Nov 2, 2026
teamleaderleo added a commit that referenced this pull request Nov 3, 2026
… closes native Session Info after a click in it (#32704)

* test(agent-pane): a pressed header toggle requires its filled square; Esc after a click in native Session Info closes it

chat-header-plain-icons (red on base since #32687 added the pressed and hover pill) now refuses a fill
at rest and requires one on a pressed tool in the chat header, tab row and floating chat; the gallery's
plain-icons play follows, and session-info-open[-accentless] check the open toggle's square and lit ink
and nothing behind the other tools, in the default and an accentless dark theme. The bun toggle test
asserts the page posted on mount and runs the old host's close script from the Swift template
(a SyntaxError in its pre-#32673 form). AgentPaneNativeSessionInfoTests gains the native Esc case:
red here, the panel never takes the keyboard on a click.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7a7568197607c3cdfb81

* fix(session-info): a click in the native panel gives it the keyboard, so Esc closes it

The page's Esc handler closes Session Info only from its toggle or panel; after a click in the App's
panel the keyboard stayed in the page (the composer, say), so Esc never reached the panel's
cancelOperation. A press on a line, a button, the edge or empty glass now makes the panel first
responder (no ring), as a click in the page's panel focused it; when it closes with the keyboard in it,
the chat takes the keyboard back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7a7568197607c3cdfb81

* fix(agent-header): hovering an on toggle keeps its filled square; the lint splits selectors at the top level

Review follow-up: the hover pill rule (0,4,0) outranked the pressed and menu-open square (0,3,0), so an
on toggle under the pointer showed the lighter hover tint, which chat-header-tab-row-surface's
pressed-hover case already expects not to happen. The hover pill now excludes [aria-pressed=true] and
[data-popup-open]. chat-header-plain-icons splits selector lists at top-level commas (not inside :is or
:not), ignores lit states inside :not(...), and asserts the hover fill excludes the pressed state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7a7568197607c3cdfb81

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 3, 2026
…er it again (#32971)

#32687 painted the page color only below the tab row, so over window art the
row read as a darker band with a hard edge instead of the transcript's soft
top fade. The shell paints one page color again; the tools keep no plate.


Agent-Session: https://cmux.com/deeplink/agent?id=aid-81baa1463f6190d4c5dc

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 70642c14 Deployed Nov 2, 2026 by teamleaderleo via cmux-tui tree preflight #103013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant