Session Info: opening or closing it moves nothing else in the chat

Merged
TE
6d ago
+116-233

Leo's words (2026-10-29):

"dude why the fuck did you guys remake the fucking session info intO A FUCKING BAR THAT FUCKING LAYOUT SHIFTS WHEN I ASKED FOR IT TO LITERALLY BE THE EXACT SAME FUCKING SITUTAION AS BEFORE BUT NOW YOU CAN FUCKING FCLICK AND DRAG TO REARRANGE THE FRUCKING SESSIONS WHAT THE FUCK"

"plus the stupid ass fucking layout shifting "sidebar" that you guys fucked up on"

"you guys still haven't fixed the fucking session info bar. Like, it's not supposed to be a fucking sidebar that pushes the fucking layout. It's supposed to just be the, you know, a thing that you can drag and drop. The thing that it was already there before."

What changes

In the default Overlay placement, opening Session Info used to move the transcript, the composer's stack and the thread rail left (inspectorChatShift, applied as the --acpmux-chat-shift translate) whenever the right gutter couldn't hold the panel. Closing it moved them back. That was the layout shift. It's gone now:

  • Opening, closing or resizing Session Info moves nothing else in the chat. The panel floats at the pane's right edge under the header.
  • Where the right gutter can't hold it, it lies over the chat and stops above the composer (inspectorOverChat and the data-over-chat foot, unchanged).
  • Nothing else is touched: Settings > Push always still takes a column, the section drag handles from #27291 stay, and the full-length card from #25641 stays.

Risk

With the panel open in a mid-width pane (about 1100–1250px), the panel now covers the right end of transcript rows instead of the chat moving left to clear it. That's the trade Leo asked for ("not supposed to be a sidebar that pushes the layout"). Settings > Push always remains the opt-in for a column.

Tests

  • chat-inspector.test.tsx: the shift's unit cases are replaced with over-chat cases, plus a check that nothing sets --acpmux-chat-shift.
  • chat-inspector-placement.test.ts (Chromium + WebKit): at 560/700/900/1200px, opening the panel moves no transcript row, and the chat keeps its width.
  • thread-minimap-left-rail-stays.test.ts: the rail draws in the same place with the panel open and closed.
  • chat-inspector-overlay-transcript.test.ts: the overlay case is now the 1600px pane, where the gutter holds the panel.

Before / after

Measured in Chromium on the chat page with a stand-in acpmux, at 1200px with Session Info closed and then opened (CI run 40985516086; base = feat-cmux-next's inspector/ at that time):

rows' left edge, closed → opencomposer's left edge, closed → open
before (base)225px → 114px (moves 111px left)225px → 114px
after (this PR)225px → 225px225px → 225px

Chromium stills, the chat page at 1200px with a stand-in acpmux (the Mac media tour has no step for this webview-only change; its run 41001591683 captured nothing):

Closed (same on base and head)Open, before (base 7050ae3041)Open, after (this PR)
closedbeforeafter

Before: opening Session Info moves every row and the composer 111px to the left. After: they stay exactly where they were, and the panel floats at the right edge.

Viewed after image: session-info-1200-head-open.jpg, session-info-1200-head-closed.jpg at 87428d77.

Visual verdict (ux-owner, Claude Opus 5.5): SHIP at 87428d7766d6b238966e2ebea8932d2e58170b7a. The panel floats over the right end of the rows and nothing shifts, as Leo asked. The Codex reviewer's covered-row BLOCK is overruled on Leo's explicit no-push words.

Takes back

Takes back #24948: its rule 2 moved the chat's column left for the floating panel, which is the layout shift Leo rejected on 2026-10-29 ("it's not supposed to be a fucking sidebar that pushes the fucking layout").
Takes back #25148: the rail's part of that same left shift; the rail now stays where it is, open or closed.
Takes back #25641: only the handoff-form gutter math that fed the shift; the full-length card and pressed toggle stay.
Takes back #25800: only the rail's translate by --acpmux-chat-shift; its tightened gutter stays.
Takes back #26157: the data-inspector-chat-resizing marker existed only to stop the shift's transition during a resize; with no shift, there's nothing to stop. The running line still lands with the composer (agent-pane-running-layout passes).

Verification

  • Head a0aea36 merges feat-cmux-next 7050ae3041. That resolved conflicts with #26641, which pins the thread rail to the pane edge: its rail test is kept, and useRailPlacement no longer reads the removed --acpmux-chat-shift. Webviews typecheck and lint are clean, unit tests pass 49/49, and the six Session Info and rail browser suites (Chromium and WebKit) pass 80/80. A review at this head is pending.

  • Head 716dbbe: webviews typecheck and lint are clean. The inspector unit suites pass 73/73 and the six affected browser suites (Chromium and WebKit) pass 76/76: run 40986771959.

  • transcript-output-copy.test.tsx ("a long output shows its last lines until Show all output") fails the same way on base ea12ea637f, twice each: run 40991700576. It's a base red, not from this PR.

  • Review (Codex gpt-6-astra high fast, independent): SHIP at 716dbbe34221b9f9108048e05dc0356745eaa825

  • Codex returned VERDICT: SHIP at that head. Its earlier pass at c3e7bf4 found that agent-pane-running-layout.test.ts still read the removed resize marker; 716dbbe fixes that.

The spec change is in teamleaderleo/leo-workspace#1565 (design/session-info.md).

Agent session: agent session

🤖 Generated with Claude Code