Session Info pushes the chat left where the right gutter cannot hold it

Merged
TE
4d ago
+71-46

Leo, 2026-11-01:

"why does THE fing SESSION INFO NOT fing PUSH THE LAYOUT LEFT EVER ANYTMORE"
"f***ing REGRESIONS ALL OVER"

His screenshot: Session Info open on the right, lying over the chat instead of the chat moving left to make room.

Regressed by

#27790 ("Session Info: opening or closing it moves nothing else in the chat", 2026-10-30) removed the default placement's left shift, so wherever the right gutter can't hold the panel (any pane under about 1,500px, every split) it floats over the transcript's right end. Its own Risk section named this: "the panel now covers the right end of transcript rows instead of the chat moving left to clear it."

What changes

sessionInfoPushes (session-info/SessionInfo.tsx) decides the default placement:

  • The gutter holds the panel (a wide pane): it floats beside the column and nothing moves. This keeps Leo's 2026-10-31 rule: "why is the session info thing still pushing my layout when it doesnt need to???"
  • The gutter can't hold it (a 1200px pane, a split, a narrow window): it takes its column, the same layout as Push always, so the chat moves left and narrows. It never lies over a row or the composer. That's the 2026-10-21 rule (#23862): "OR it shifts the layout if there isn't enough space".
  • A short pane (under 520px tall) keeps the 2026-10-31 popover over the chat (#29649).
  • A handoff review's wide form never pushes, as before.
  • Settings > Push always is unchanged and still pushes in every pane.

An output's diff split no longer closes the default panel. Only Push always closes it, as before.

Design spec: leo-workspace design/session-info.md. Its rule 2 ("Nothing moves for it") is replaced by the rule above; I'll update the spec separately.

Tests

  • test/session-info.test.tsx: sessionInfoPushes at 1600, 1200 and 720px, a short pane, a handoff form, unmeasured, and Push always. The rendered panel is push at 1200 and 720px and overlay at 1600px. This is red on base, where it stays overlay.
  • test/session-info-placement.test.ts (Chromium and WebKit): at 560, 700, 900 and 1200px it pushes, the chat narrows, and no row or the composer meets the panel. The 1600↔1200 resize puts the panel in its new place on the first frame.

Risk

Low to medium, webview only. At mid widths the chat reflows narrower while Session Info is open, which is the ask. Follow-up: App.tsx previewBeside still reads only the Settings placement, so a computer-use preview in a narrow pane may keep its column beside a pushed panel.

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 Session Info's default placement so the chat moves left to make room when the right gutter can't hold the panel, instead of the panel floating over the transcript's right end (a regression from the previous change).

  • The default floats, moving nothing, while the gutter holds the panel; it takes its column and narrows the chat otherwise.
  • A short pane keeps it a popover over the chat, and a handoff review's form never pushes. Settings > Push always is unchanged.
  • An output's diff split no longer closes the default panel; only Push always closes it.