Make tool output fully readable inline
Lawrence: “leo i cant see full tool call output”.
A fetched Markdown result could appear as raw text under a permanent fade, and one long wrapped source line had no expansion control. Tool results now share one readable body: compact internal scrolling, Show all N lines, a larger scrollable view, and Raw for Markdown source. The bottom fade disappears when the final line is reached. JSON, shell output, and recognized logs stay monospace. Find reads the same formatted text that the body draws, and copying keeps the complete source.
Public-safe gallery: agent-pane.tool-output-full-read (collapsed, compact, expanded, Raw, JSON, log, and wrapped-line states). The fixture uses sample data only. Matched references: cmux transcript-long-message-show-more, transcript-expanded-agent-messages-scroll, and transcript-table-rendering-copy-affordance.
Validation at 689ccc11e515c9790c096d39b3117d0fdb04b46e: Linux run 40651175073 passes web lint/typecheck and all five Chromium behavior tests (30 assertions), including real wheel input that scrolls the inner output first and then chains at its bottom edge to an outer reader. The 77 focused tests (358 assertions) passed with the same production code in run 40650390748; the later commits only correct the browser fixture. Earlier red review heads reproduced the single-line log classifier, stale expanded disclosure, and geometry-read failures. The final geometry and scroll-position assertions pass. No native build ran. This PR introduces no catalog keys and audits all reused keys across the nine required locales.
The eight after images below were captured at fa3c6c4da8073c1f8a43a2a2746576040ac4513e in run 40646468746. The only later production change restores normal vertical scroll chaining (overscroll-behavior: auto), which does not change their geometry. An earlier capture showed browser scroll anchoring after expansion; the retained final capture begins at the Network map heading. That scroll-shift red evidence is visual only, since the standalone pre-repair browser assertion did not reproduce it consistently.
This is the inline-reading piece. A separate Open on right tab follows the shared placement work in #26582; this PR changes no placement API or ToolGroupRow expansion logic. Root owns final review and landing.
Demo before/after (baseline 4eaf0ddc19603a37abc05fcf8a183ee73b1fe100; capture head fa3c6c4da8073c1f8a43a2a2746576040ac4513e):
| State | Before | After |
|---|---|---|
| collapsed, dark | ![]() | ![]() |
| compact, dark | ![]() | ![]() |
| expanded, dark | ![]() | ![]() |
| collapsed, light | ![]() | ![]() |
| compact, light | ![]() | ![]() |
| expanded, light | ![]() | ![]() |
Changelog
Fixed: Tool output can be scrolled and expanded in full, with readable Markdown and a Raw toggle.
Agent session: agent session











