cmux NEXT: no streaming caret once the chat is idle
Closed
TE
23d ago+180+180+012345678901234567890123456789-0-0-0123456789
Leo saw the block caret keep blinking at the end of the last reply after the turn ended and the chat went idle. #18123 was closed unmerged on 10-13, and its fix (7115d4c15002) covers only the turn end itself.
Two paths still leave a reply marked as streaming:
- Late text. Text that arrives after the turn's result opens a new streaming row with no turn around it, so nothing ever closes it. Background reports and late replies both do this.
- Newer message. When a newer message starts mid-turn, it gets its own row, but the earlier reply stays marked as streaming.
Changes
- When a newer message starts, the reply before it ends, the same way a tool call ends it.
- While the chat is not working, no reply stays streaming. Every snapshot emitted while idle closes any streaming row as a new row object, so the transcript's memoized rows redraw. Replay is not changed.
Testing
- New browser test
webviews/test/agent-pane-idle-caret.test.tscovers both paths. It was committed first (red) and then fixed (green). Results are recorded in the comments below.
Changelog
- Fixed: the streaming caret no longer stays at the end of a reply once the chat is idle.
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds a browser test asserting the agent pane's block caret only shows on the reply currently being written.
The test covers two paths that previously left a reply streaming: a late reply that arrives after the turn's result opens, and a reply followed by a newer message. It drives the pane's dev entry in real Chromium against a stand-in acpmux.