Agent pane: the session recap row when you come back to a Claude chat after 5+ minutes away
Leo (2026-11-03): "likewise, i know there's suggested prompts that you can right arrow/tab to do stuff with... is that an opt in feature? lkewise with teh cli summarization thing? how do those get turned on? maybe we can expose it in cmux-next too"
The web half of the session recap: the row that draws acpmux's recap record. acpmux decides when (a Claude chat the person comes back to after 5+ minutes away, Settings > Chats > Session Recap) in #33116; this only renders. It lands on its own: with no recap record nothing changes.
direct.ts: amuxrecaprecord{text, awayMs}becomes onerecaprow where it was logged. A record without text is skipped; it is never a turn, a prompt or a bubble.conversation/RecapNote.tsx: a compact hairline card, muted text after a "While you were away" lead-in, and a × (Dismiss recap). Dismissed, it stays hidden on this device (localStorage, the newest 200 kept).- Layout: the row keeps out of a folded turn (
turns.tsstaysOut), and its height estimate is its card plus a line per ~70 characters (model.ts). - Per chat: the composer's Options lists acpmux's Session recap option (Default, On, Off; #33116), each choice naming its cost ("One extra model call per recap, about $0.016 with a warm cache"), through the existing
extraConfigOptions, so no change is needed here. - Strings:
awayRecap.labelandawayRecap.dismissin the pane catalog, 21 languages.
Design
Reference: Claude's own recap card (cmux-design-references claude/web/october-recap-card): muted text in a hairline card with a × at the top right. Copied: the hairline card, the muted text, the ×. Kept: our tokens (--agent-border, --grid-cards-radius, --cv-text-dim, the detail type size). Gallery agent-pane.recap-note has three looks: card (chosen), a tool-row line (reads as one more tool step), and a left rule (reads as quoted text). The ?mock daemon has the chat mock-session-recap showing it under a finished turn.
Codex
Codex CLI 0.164 has a /recap and an "Automatic recaps" setting only in its TUI; its app-server protocol has no recap request or event, so no Codex chat gets this row yet.
Observed / Not run
- Observed: web lint (format, design tokens, string catalog keys) on this host.
- CI: type check, Oxlint, the webview suite and the gallery capture.
Changelog
Added: Session recap row in the agent pane when you come back to a Claude chat after 5+ minutes away.
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds the session recap row to the agent pane so coming back to a Claude chat after 5+ minutes away shows where the chat stands. This is the web half of the session recap: acpmux sends the recap record and this renders it; with no such record, nothing changes.
- The recap shows as a hairline card with muted text after a "While you were away" lead-in and a dismiss ×. Dismissing drops the row so no blank slot stays, and later attaches skip it on that device; the dismissal is keyed by the chat and the record's seq, so another chat's recap with the same seq still shows, and localStorage keeps the newest 200.
- A
recaprecord without text is skipped, and the row is never a turn, prompt, or bubble; it stays out of folded turns and gets a height estimate of its card plus a line per ~70 characters. - The per-chat Session recap option (Default, On, Off) and its cost note come from #33116 through the existing
extraConfigOptions, so no composer change ships here. - Strings are localized in 21 languages; the gallery compares card (shipped), line, and rule looks with a new mock fixture; Codex CLI chats don't get the row since its protocol has no recap record.