Repository navigation
Session Info: Compact in Context, and the composer ring's Compact back - #28969
Conversation
Leo, 2026-10-28: "You don't have the fucking, like, show more. You don't have the compact session." #17537 put Compact (the agent's /compact) in the context ring's popover. #20454 dropped the ring's onCompact wiring; #23785 brought the ring back with a card that still draws Compact, but nothing passed onCompact, so it never showed. One App handler (compactChat) sends /compact with the reach the context-full failure's Compact has (offersCompact + restartReaches + compactThrough). Session Info's Context, open, shows it as a quiet text action (like Environment's Save), off while a turn runs; a subagent's panel has none. The ring's card gets the same handler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
|
Owned by an agent session · session |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules Shipped in:
|
|
Review (codex gpt-6-astra high, router-review): BLOCK at bd2cfb3 BLOCK at bd2cfb3 Visual verdict: BLOCK — this UI change has no after screenshots;
|
|
Review (codex gpt-6-astra high, router-review): BLOCK at bd2cfb3 BLOCK at bd2cfb3 Visual verdict: BLOCK — no after screenshots were provided for this visible UI change.
Follow-ups: none |
|
Found 2 test failures on Blacksmith runners: Failures
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
#28969 (ContextSection.css: padding 2px 6px 0) and d13d17a (apps .apps-instance: font-size 12px) each added a raw value the design-token and type-scale ratchets reject, so every feat-cmux-next push stopped in the pre-push web lint. Same sizes: calc(var(--ds-space-1) / 2) calc(var(--ds-space-3) / 2) 0 and var(--text-detail) (12px at scale 1).
#28969 (ContextSection.css: padding 2px 6px 0) and d13d17a (apps .apps-instance: font-size 12px) each added a raw value the design-token and type-scale ratchets reject, so every feat-cmux-next push stopped in the pre-push web lint. Same sizes: calc(var(--ds-space-1) / 2) calc(var(--ds-space-3) / 2) 0 and var(--text-detail) (12px at scale 1).
|
Base red: this PR's |
Leo, 2026-10-31: "JUST FUCKING REMOVE COMPACT FROM THE FUCKING POPOVER". #28969 wired Compact into the ring's card (ContextCardBody's onCompact, from #23785/#17537). Deletes it end to end: the card's button and CSS, the ContextRing/Composer onCompact and working props, the App wiring and the gallery variant. Session Info's Context keeps its Compact. Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…n runs (#29641) * Session Info: Compact session is a real button that works while a turn runs Leo, 2026-10-31: "COMPACT BUTTON LITERALLY DOESN'T EVEN FUCKIGN WORK". Why it did nothing: #28969 drew Session Info's Compact with disabled={working}, and Leo's chats are nearly always mid-turn. The disabled link looked exactly like the enabled one (muted text, no disabled style), so a click just fell on a dead button. The send path itself (compactChat -> compactThrough -> chat.send "/compact") was fine. Now Compact session stays live: its /compact goes through chat.send and queues behind a running turn, as one typed in the composer does. It draws as a real button at the rows' trailing edge (8px inset, on the spacing scale), with "146.7K until auto-compact" on the leading edge when Claude's /context reports an autocompact buffer. The working prop is gone from ChatInspector and ContextSection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64 * webviews: format Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-10-31: "THE SESSION INFO HAS SO MANY FUCKING THINGS" / "THE VARIOUS OTHER FUCKING IMPROVEMENTS" / "WHERE IS MY FUCKING PARITY". 2026-10-28: "You don't have the fucking, like, show more. You don't have the compact session."
What was there before
This is a restore, not a new design. #17537 (10-06) put Compact (the agent's
/compact, shown when the agent listscompact) in the composer context ring's popover. #20454 (10-14, the hq#1957 compact row) removed the ring and itsonCompactwiring. #23785 (10-22) brought the ring back with a card (ContextCard.tsx) that still draws Compact, off while a turn runs, but nothing passed itonCompact, so Compact has been missing since 10-14. Session Info's Context never had it. The only working Compact was on the context-full failure footer (turnActions.compact).Change
compactChat), with the same reach as the failure footer's Compact:offersCompact(snapshot.commands)(only when the agent lists/compact), thenrestartReaches(never a View Only chat, a read-only subagent pane, or the next chat during a switch's hold), thencompactThrough(chat.send/compact).acpmux-chat-inspector-link). It is off while a turn runs, as the ring card's is. With no handler (the agent offers no/compact, or the chat can't be sent to) nothing shows, so there is no dead click. A subagent's own panel has no Compact, because the context belongs to the chat.fullprops now passonCompact, socontext-connectors-openandcontext-breakdownshow it. Newcontext-compact-workingarm shows it off during a turn.Design spec: leo-workspace
design/session-panel.md: Context is one folded row with an icon, the title and the percent; open, it shows the token counts. This PR only adds the action inside the open section. It adds no narration label and no dead click, and draws no box. Placement still followsdesign/session-info.md. Nothing is removed.Connectors "N connected" (the other half of this parity ask) is already on base:
rail.connectedwhen nothing failed,chatInspector.connectors.reconnectotherwise, and the row is hidden with zero servers. That needed no PR. #27966 (held) would change that value, and I commented there.Overlap: #28773/#27923 (Usage) add their own
onCompactto the same ChatInspector plumbing. The prop name and handler shape here match, so whichever lands second resolves trivially.Tests
webviews/test/chat-inspector-context-breakdown.test.tsx: Context shows Compact only with a handler and sends it on click; Compact is disabled while working; the ring card shows Compact again with a handler.Screenshots
Leo: "WE DONT NEED FUCKIGN SCREENSHOTS JUST LET ME TRY THE SHIT OUT". The gallery arms
agent-pane.chat-inspectorcontext-connectors-open/context-compact-workingandagent-pane.context-ringcard-claude-compactshow the change.Risk
Low. A new text button sends an existing command through the existing gated path.
🤖 Generated with Claude Code
Agent session: agent session