Repository navigation
Agent pane: a sub-session or agent-run result keeps its "Show more" after the card closes, scrolls away or the chat switches - #31544
Conversation
|
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 red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on d6858a5 to compare; do not merge until green; see lane-rules Shipped in:
|
|
Found 8 test failures on Blacksmith runners: Failures
|
|
Review (codex gpt-6-astra high, next-review): SHIP at 28020db SHIP at 28020db Visual verdict: no introduced visual regression across all 16 supplied before/after pairs; differences are animation timing. No correctness findings. Checked disclosure keys, provider scope, remounts, and chat-switch wiring; tests could not run because Bun is unavailable. Follow-ups: none |
A newer verdict blocks aa26255 (no independent SHIP at the head).
|
Review (next-review patch-id; carried): SHIP at aa26255 The independent SHIP at 28020db carries to this head: the PR's own change ( |
|
Review (next-review patch-id; carried): SHIP at 247b29d The independent SHIP at 28020db carries to this head: the PR's own change ( |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Carries draft #28693 (opened by ChatGPT for Leo, tests not run there) together with the draft it was stacked on, #28634 (an earlier agent-lane draft). Both are carried here as one PR.
Leo: "oh btw i talked with chatgpt and they raised a bunch more drafts and issues across cmuxterm-hq, cmux, and cmux-platform. some stuff worth looking at"
What was wrong
On base, the result text in a sub-session card (
wait_for_sessionsreply) and in a standalone agent-run card is shown throughCutinSubsessionCallCard.tsx, andCutkept its "Show more" state in a plainuseState. When a reader expanded a long report, closing the card, scrolling it out of the virtualized transcript or switching chats and back collapsed it again.What changed
Cutreads and writes its open state through the existing transcript disclosure storage (useTranscriptDisclosureinconversation/transcriptDisclosure.tsx), the same storage the card's own disclosure uses.disclosureKeyis now a required prop.Cutcall site on current base supplies a stable key. There are two, and no prompt cuts remain on base:subsession-reply:<tool id>:<sub-session id>agent-result:<agent id>SubagentGroupRowinApp.tsx) renderAgentRunTranscriptCard, which wraps the card inTranscriptDisclosureProviderwith the row's chat id. That way a tool-call id that repeats in another chat does not share the choice. It follows the existing per-row provider pattern (WorkingRow); no outer provider surrounds these rows, so nothing is wrapped twice. The row memo now comparessessionIdso a chat switch re-renders the row.result-reopenedvariant onSubsessionCallCardexpands a result, closes the card, reopens it and checks that "Show more" is still expanded.webviews/test/subsession-disclosure.test.tsx):Carry notes: the cherry-pick conflicted in the test file, because base has since replaced the "started labels" test with "a started sub-session's row is its name". The conflict was resolved by keeping base's test and adding the new tests in front of it. No other changes vs the drafts.
Risk
Small and contained to the agent pane's result cards. Choices are stored per view (Normal / Thinking / Verbose), like every other transcript disclosure. A chat-find reveal that opens a cut is now remembered as well.
Leo-ask: ask-e06a62154f
Agent session: agent session
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Persists the "Show more" state on sub-session and agent-run result cards so expanding a long report stays expanded after closing the card, scrolling it out of the virtualized transcript, or switching chats and back.
Cutnow stores its open state through the existing transcript disclosure storage instead of local state, with a required stabledisclosureKeyper result.Written for commit 247b29d. Summary will update on new commits.