Session Info: keep header tools fixed with Push always

Merged
TE
9d ago
+92-1

Opening Session Info with Push always moved every chat-header tool left into the area occupied by the native tabs. Keep the header aligned with the pane's trailing edge while the conversation below it narrows. Opening, closing, and resizing leave the buttons visible and clickable in their original strip.

Leo: "you still haven't fixed this, the top right buttons. Like the session... I mean, how has it taken so ungodly long to fix these things?"

Leo: "i open up the session info those top right buttons just disappear... also we shouldnt be cutting our..."

Compared with nightly source f83ddd6b204221b1b019e67734cf129e8e431aee, this fixes the remaining Push always alignment bug. It preserves the existing transparent button surface and the default floating placement. The mixed native/web toolbar's duplicate actions and spacing are a separate follow-up.

The header uses the existing pane-room measurement, which excludes a document beside the chat. Its CSS value is removed when the panel leaves or its shell unmounts. No timer or observer is added. Risk: the header extends over the pushed panel's column, above the panel; artifact widths still bound it.

Validation: the new behavioral regression at 8295d7db27d9f1763f57c4d3a07f4a948d2559e7 fails in both header layouts on base d7d05a05713c40af2525cb106b32cee34557f6e5. With the fix, four Chromium checks pass for floating and pushing placement, including resize and a real click to close. WebKit could not launch locally. Full webviews/bun run check, changed-file lint/format, design-token, layer, fixed-wait, type checks and pre-push checks pass. Chromium reports a ResizeObserver notification warning during the resize case; investigation is recorded separately from the passing assertions.

Gallery: agent-pane.header/session-info-overlay-closed, agent-pane.header/session-info-overlay-open, agent-pane.header/session-info-push-closed, agent-pane.header/session-info-push-open

The gallery rendered all eight selected frames successfully (run 40591480121); these new variants have head renders only. The native captures below compare the same showcase chat against nightly source f83ddd6b, including a terminal pane beside it. The baseline loses the web tools with Push always open; the fixed head keeps them visible above the panel. The closed captures exercise the actual header toggle. Each capture records a connected chat with seven transcript rows and completed layout, and passed the capture privacy check.

After: Session Info open and closed, both placements, light and dark

Push Open

Capture steps-43918dc97b at 8ac5444a656d (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Push Closed

Capture steps-5c67eb02e0 at 8ac5444a656d (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Overlay Open

Capture steps-bd491bc422 at 8ac5444a656d (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Overlay Closed

Capture steps-e300da5a29 at 8ac5444a656d (fleet build, capture mini, text checked for private data)

LightDark
lightdark
Before: nightly f83ddd6b: Session Info open and closed, both placements, light and dark

Push Open

Capture steps-43918dc97b at f83ddd6b2042 (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Push Closed

Capture steps-5c67eb02e0 at f83ddd6b2042 (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Overlay Open

Capture steps-bd491bc422 at f83ddd6b2042 (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Overlay Closed

Capture steps-e300da5a29 at f83ddd6b2042 (fleet build, capture mini, text checked for private data)

LightDark
lightdark

Agent session: agent session