fix(agent-pane): keep Summary and Preview below the shared tab row

Merged
TE
9d ago
+215-8

The inline Summary column painted from y=0 beneath the native shared tab row. The native tools opening exposed part of the card's background and clipped its counts, making a separate dark plate appear behind the right-hand buttons.

Reserve the offered --acpmux-tab-row-height above the inline Summary card, and keep the shared-row tools at the full pane edge. The same clearance fixes the Preview panel at both narrow and wide sizes. Existing header/card colours, glass, radii, motion, counts and right ellipsis stay unchanged. No default changes.

Leo, 2026-10-28:

"What the fuck is this? Why does 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?"

This touches the Summary column's placement. #26720 restores Session Info cards nearby; this does not change that card system. Sweep: Session Info already reserves useTabRow().height; Files is a native side tab; Preview has the same placement bug and is fixed here; the workflow side tab is fixed in #27000 using the same --acpmux-tab-row-height variable.

Risk: normal — CSS placement of shell-level side panels while the native shared tab row is offered. No new timer, observer or animation loop.

Validation:

  • Red tests committed before fixes: Summary starts at 0 instead of 28/40px; Preview does likewise at 640/1000px widths.
  • Browser regression checks Summary/card non-intersection with the 28/40px tab row in light/dark, full-pane trailing tools, no counts background/backdrop/mask/pseudo plate, and real right-ellipsis overflow.
  • Preview regression covers 28/40px clearance in both layouts.
  • Local Node 24 web lint passes; 13 focused tests pass (51 assertions), including all 8 browser cases.
  • Combined exact-head CI: run 40789975959 passed web lint and all 23 tests (104 assertions), including browser and native tab-row regressions. The earlier run stopped before checks because of shallow history; the successful run fetches both refs first.
  • Independent Astra review: SHIP at 56f1d6575b10cd4e830810c0d4bb28e3f856c93b.
  • Real-app light/dark capture requested through the coordinator when this PR opens.

Gallery comparison: identical synthetic state at 720px with a 40px offered row. The before stills restore the three base geometry values (zero margin, full card height, automatic header width); after uses the committed CSS. These Linux stills show placement; the native clipping holes are exercised by the requested real-app capture.

ThemeBefore (base geometry)After
DarkBefore darkAfter dark
LightBefore lightAfter light

Agent session: agent session