feat(agent-pane): make sub-session cards disclosure rows

Merged
TE
5d ago
+946-31

Make sub-session transcript cards quiet and scannable like Claude Code's send/receive rows. A started session is a one-line disclosure with live state and a Markdown prompt panel; adjacent starts group into one row and expand into individual rows.

Depends on #27240 (prompt-once dedupe), rebased onto its head 3c6acae3faf964b6f82bf9089151edda162d8504.

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

"Like you need to be more ambitious, really. Like the whole dynamic workflow situation. I don't know if you already have the UI for that, how good it is, if you guys have tested it out yet. But, you know, we need to have that. And likewise, obviously, like the session info area, like that's where the things can be shown, and also the right tab area. All of these, like better and better UI. Just go ahead, man. I feel like you can do a hell of a lot more. More codex, more Claude, more whatever. We have the capacity, so let's use the fing capacity to go do some more productive fing work, right?"

"I need to, like, see the messages coming in back and forth at the very least."

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

"this could prob be bettter... it's all in the same realm of what i said earlier wrt the whole send/recieve ui thint"
"LEARN FROM CLAUDE CODE"

The shared DisclosureRow API is small enough for msg-fold's incoming-message work to adopt. It uses the existing anchored-collapse behavior, so expanding grows below the row without changing the transcript position. Live working, retry, waiting and failure states stay on the collapsed line; Raw remains at the end of the expanded panel.

Gallery variants cover the selected one-line treatment, Claude-Code-style status rows, and grouped avatar rows using recorded, recorded-wait, started and avatars fixtures. Before/after light and dark stills of three grouped starts will be attached after the gallery capture runs.

Risk: normal.

Tests: targeted Bun tests cover Markdown expansion, anchored scrollTop, grouped starts and existing incoming/waiting rows. bun run check passes locally.

Agent session: agent session