Skip to content

Agent chat: header tools sit on the tab strip, with no box or line behind them - #25638

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
rail-opus-tools-box
Oct 27, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
rail-opus-tools-box

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

The agent chat header tools now share the native tab strip surface without a page-painted box or seam behind them. Leo’s words were: “the session rail session info thing, like, you literally didn't do. I mean, why is the button not toggled? Why is the button area still, like, just garbage? What is this? There's still that line of that box with the background that just always is there, and, like, you still haven't done the full-length thing.” This PR covers the “button area … garbage” and “line of that box” portion only.

The box came from the agent page root and .acpmux-shell painting --agent-page-bg across the offered tab row; the line came from .acpmux-header[data-tab-row]::after’s 12px gradient. Native pane framing is disabled for agent chats, so the native pane border/corner was not the source. The fix marks the shell while the row is offered, makes the document root transparent for that state, paints the page background below the row, and removes the seam pseudo-element. Tool positions, hit targets, tabs, and other pane surfaces are unchanged.

Before / after

Fleet capture evidence will be added after the Mac build for this exact head.

Risk

Low. The transparency selector is scoped to an agent shell with an active tab-row offer, and the existing page background resumes below the row. The focused regression checks the shell marker, scoped surface rule, and removed seam.

Validation

  • bun test webviews/test/chat-header-tab-row-surface.test.ts webviews/test/chat-header-plain-icons.test.ts (pass)
  • bun run --cwd webviews check:fixed-waits (pass)
  • bun run --cwd webviews check:design-tokens (pass; baseline ratchet reduced by removing the deleted 12px seam)
  • scripts/cmux-next/prepush-gate.py (pass)
  • check:layers remains red on the existing webviews/src/pages/keybindings/styles.css backdrop-filter baseline violation; typecheck/lint cannot complete because this checkout lacks generated locale files.

agent-identity footer


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

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 26, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next fast gates / post cmux-next/fast-gates is red on 17 of 22 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

high-signal review link / link is red on 17 of 22 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-eelpj created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra xhigh, next-review): BLOCK at e41c3c7

  • webviews/src/agent-session/acpmux/styles.css:4: The new gradient paints behind the tools instead of leaving the tab strip transparent. With an opaque page background, it is 50% opaque halfway down the row and fully opaque at its bottom. This defeats the PR’s stated behavior. Keep transparency through the entire row, then switch to the page background using a hard color stop.

@blacksmith-sh

blacksmith-sh Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Found 126 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp2eoccg4k/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpru825j5w/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-column-edges.test.ts/agent-pane-column-edges.test View Logs

...and 116 more test failures. View all on Blacksmith: run 40492505285, run 40492505250

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

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 9247265: 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=pr25638 -f ref=rail-opus-tools-box -f platform=macos -f backend_mode=local

Probably yours: agent-pane-working-counts.test.ts, composer-chip-press.test.ts fails here but not on main's latest full suite. Seen on other PRs too (likely flaky): agent-pane-background-tasks.test.ts, agent-pane-hairline-focus.test.ts, agent-pane-hairline-focus.test.ts and 27 more. This PR merged before its CI finished: fix forward on main.

CI failed on 9247265053 (run 40492505285 attempt 1): 4 code, 1 unknown.

Job Verdict Why
web / react-apps-base-check (2) code a web test failed
web / react-apps-base-check (4) code a web test failed
web / react-apps-base-check (1) code a web test failed
web / react-apps-base-check (3) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs agent-pane-background-tasks.test.ts the summary card lists the chat's background tasks: running ones first, the finished folded: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts composer at 1x: focus is the resting hairline a step brighter, no ring: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts newtab at 1x: focus is the resting hairline a step brighter, no ring: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts composer at 2x: focus is the resting hairline a step brighter, no ring: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts newtab at 2x: focus is the resting hairline a step brighter, no ring: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts under Increase Contrast a focused edge keeps the resting edge, never a dimmer one: failed (job)
  • seen on other PRs agent-pane-hairline-focus.test.ts keyboard focus changes what a solid Send, Stop, the prompt editor's Send and a plain button paint; s...: failed (job)
  • seen on other PRs agent-pane-jump-latest-motion.test.ts webkit: a reply streaming in during Jump to latest's glide is followed to its latest row: failed (job)
  • seen on other PRs accent-glass-invariants.test.ts no orange or system accent and no opaque glass on 2198 gallery stages: failed (job)
  • seen on other PRs agent-pane-agents-pill.test.ts by default the running agents sit in the tray above the composer, not in the transcript: failed (job)
  • ... 22 more in the job logs
Matched log lines
web / react-apps-base-check (2): (fail) the summary card lists the chat's background tasks: running ones first, the finished folded [972.06ms]
web / react-apps-base-check (4): (fail) no orange or system accent and no opaque glass on 2198 gallery stages [701683.81ms]
web / react-apps-base-check (1): (fail) every block in the chat column starts on the column's left edge [8620.06ms]
web / react-apps-base-check (3): (fail) a chat on an SSH machine > counts its running turn from the prompt and offers no machine switch mid-chat [30918.66ms]

Not re-run automatically: web / react-apps-base-check (2), web / react-apps-base-check (4), web / react-apps-base-check (1), web / react-apps-base-check (3), 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: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 106c8c9 to compare; do not merge until green; see lane-rules
red: web / Web status; base red: the same failure on the base 106c8c9; does not block
red: web / react-apps-base-check (1); no finished base run on 106c8c9 to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (2); no finished base run on 106c8c9 to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (3); no finished base run on 106c8c9 to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (4); no finished base run on 106c8c9 to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base 106c8c9; does not block

Gallery before/after for 9247265: 16 states rendered, 0 images differ, 1745 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40492505152 -R manaflow-ai/cmux -n gallery-advisory-25638-92472650537bf385de98e4cdd7fa3846f03fd6c2 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.add-project-panel/environment Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/environment Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/sources Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/directory Apple System Colors unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.add-project-panel/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/open Apple System Colors unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-file-menu/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/toolbar Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/commit-form Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/include-new Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/keyboard Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/busy Apple System Colors unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-git-actions/push-refused Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/closed Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/open Apple System Colors unchanged 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors Light unchanged 0% own styles.css
agent-pane.changes-options-menu/keyboard Apple System Colors unchanged 0% own styles.css

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

@teamleaderleo
teamleaderleo merged commit 541069d into feat-cmux-next Oct 27, 2026
128 of 139 checks passed
@teamleaderleo
teamleaderleo deleted the rail-opus-tools-box branch October 27, 2026 11:20
@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Nov 2, 2026
…32687)

* test(agent-pane): header icons have nothing behind them at rest, in the 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

* fix(agent-pane): no background behind the header's top-right icons at 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

---------

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

* test(agent-pane): the tab row paints nothing behind the header tools, as the page ships

The browser test loaded src/styles.css, which the agent pane bundle never
loads, and set the row's html color itself, so it passed while the shipped
page painted WebTheme's html background (a chat's own color) behind the
tools. It now loads only the pane's own sheets under WebTheme's html rule
and reads the page's own pixels; the toggled Session Info plate stays.

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

* fix(agent-pane): no backing behind the header buttons in the tab row

The agent page's document root paints WebTheme's page background
(html{background:var(--cmux-surface-background) !important}): a chat's own
color under appearance.surfaces.agentPane, or the opaque surface. The rule
meant to clear it in the tab row (#25638) went into webviews/src/styles.css,
which the pane's bundle never loads, so the color filled the row behind the
tools, and #32039 then painted the same color behind the tabs. The row now
has no backing: html is clear while the chat shares the row, the shell paints
the page background below the row only, and the strip behind the tabs is
clear again (only the user's own tab bar color fills it). Takes back #32039.

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant