NEXT transcript: match ChatGPT expansion at and away from bottom
When a tool call expands at the end of the transcript, the whole transcript stack now moves upward while the viewport bottom stays pinned. Away from the end, the clicked row keeps its position while the transcript grows downward.
Leo asked: “if not at the bottom, simply expand the tool calls down and you add space at the bottom/total” and “if at the very bottom ... still play that animation but actually the text (all elements not just text) above it get pushed up”. His clarification was: “so current behaviour + that very bottom of transcript area logic is fine”.
This follow-up keeps the behavior from cmux#29686 and #29703, including retained room after collapse and scrolling up and back. Opening at the bottom consumes that room; closing other work disclosures preserves it. Reopening the same body fills the existing room without moving the stack. The tests measure viewport anchoring, scroll position, and movement of preceding rows. Surface contract: leo-workspace/design/chat-transcript.md, “Tool expansion at the bottom”.
Validation: git diff --check; targeted browser suite passed at 91407039db3a8428a5c0e30258eca0039e638bbd on the owned fleet (step c3d2560e251dc341350cf9bd): one file, zero failures or timeouts, no retries. Independent Codex review: SHIP at this exact head. Advisory visual follow-up: #29914. No new animation loops, observers, or timers.
Agent session: agent session
🤖 Generated with Claude Code