Agent chat: the tab row behind the tabs takes the chat's own background (no band)

Merged
TE
3d ago
+66-3

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). PaneTabRowForwarding forwards 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 Autofix with [code]smith
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.tabRowSurface so 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.