Agent chat: the tab row behind the tabs takes the chat's own background (no band)
Leo, 2026-11-01, on the agent chat's tab row (a flat darker band behind the tabs and header tools, the chat lighter below it): "why is the background STILL not removed"
What the band is
A chat with its own background color (appearance.surfaces.agentPane) paints that color under its header, and #29618 already made the page paint it right up to the top behind the tools. The rest of the row is native: the pane's tab strip is clear, so behind the tabs you see the pane's theme background, not the chat's color. With a chat color set, that leaves a darker band across the top of the chat.
Reproduced with the capture driver at base 79813dd8 (TokyoNight, appearance.surfaces.agentPane.color #282938, two chat tabs): the row behind the tabs is (26,27,38), the tools and the chat below are (40,41,56). With this head the whole row is (40,41,56).
Change
PaneTabRowSharing.tabRowSurface(default nil): the surface whose background a sharing view paints under its header. The agent chat returns its surface (agentPane, or the New Tab page).PaneTabRowForwardingforwards it.PaneContentView.paintStrip(): the strip paints the user's tab bar color as before, and otherwise, while a chat shares the row, that chat surface's override. With no override, or with nothing sharing the row, the strip stays clear as it does today.
Logic stays thin: one optional property and one color pick, repainted when sharing starts or stops and on theme changes.
Regressed by: the native strip never took the chat's surface. #25638 put the chat's tools in the tab row, and #29618 fixed only the page's side.
Test
TabRowToolsStayClickableTests.theRowBehindTheTabsTakesTheChatsBackground (480 and 900 pt): with an agentPane color, a sharing chat makes the strip paint that color, a chat in its own header row leaves the strip clear, and a view with no surface leaves it clear. The fleet app compile passed at this head (98 s).
Design: chat header, rule "the tab row behind the chat header has no fill of its own".
Risk: low. The strip gets a fill only when the user set a chat background color and a chat shares the row.
Agent session: agent session
š¤ Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes the agent chat's tab row showing a darker band behind the tabs when the chat has its own background color. While a chat shares the tab row, the strip now paints the chat's appearance.surfaces.agentPane color; before, only the header tools area got that color and the row behind the tabs showed the pane's theme background.
- Adds
PaneTabRowSharing.tabRowSurfaceso the strip can mirror the fill the chat paints under its header. - The user's tab bar color still wins when set, and the strip stays clear for views with no surface or when nothing shares the row.