fix(agent-pane): keep Preview tab-row tools visible

Merged
TE
8d ago
+66-26

Preview open in the shared native tab row hid the chat's trailing tools: the Preview shell sibling consumed the panel column while the header stayed sized to the chat column. The Summary path already stretches its header over its sibling; Preview now uses the same responsive artifact width and keeps the tab-row tools at the pane edge. Narrow overlay mode keeps the header at the full shell width.

This is a fix-forward for #27122. It changes only the web tab-row and Preview placement CSS; #27133 and #27135 are untouched.

Leo, 2026-10-28:

"What the fuck is this? Why is this BACKGROUND STILL FUCKING EXIST ON THE RIGHT FUCKING BUTTONS??? What the fuck? How is this happening? How is this fucking issue been plaguing us for so fucking long? What is this? It's fixed, right? And the next fucking night it's fixed, right?"

Risk: normal — responsive CSS geometry for the existing Preview sibling and shared tab-row header. No defaults, protocol, or native implementation changes.

Validation:

  • Red browser assertions were committed first: Preview at 28px and 40px rows had non-zero web tools whose right edge stopped at the chat column (540px) instead of the 1000px shell edge.
  • Green browser coverage checks Preview and Summary at 28px and 40px rows, 640px narrow overlay and 1000px side-by-side layouts, in light and dark themes. Preview tools are non-empty and end at the shell edge; Preview remains below the offered row.
  • Local Node 24 scripts/web-lint.sh passes; focused browser suites pass (19 tests, 84 assertions).
  • Linux gallery captures cover Preview open and Summary open in light/dark at 28px and 40px rows. Before captures are the feat-cmux-next geometry; after captures are this head.

Gallery comparison: synthetic Linux gallery, Preview and Summary open, offered row at 28px/40px. The before Preview stills show the tools ending at the chat column; after spans the Preview sibling to the shell edge. Summary remains unchanged.

SurfaceThemeBefore (base)After
PreviewDarkPreview before darkPreview after dark
PreviewLightPreview before lightPreview after light
SummaryDarkSummary before darkSummary after dark
SummaryLightSummary before lightSummary after light

Agent session: agent session