Agent chat: streaming replies grow by whole words, no block cursor
Closed
TE
15d ago+174+174+012345678901234567890123456789-2-2-0123456789
Leo (2026-10-19, nightly): remove the blinking block cursor in streaming text; text should fade in by word or chunk without layout jumps.
- The
.cv-caretlive edge (a pulsing 0.5em bar after the newest character) is removed. wordEdge(streamReveal.ts) caps the revealed length at a whole word: a word shows once its end has arrived and fades in as one.cv-freshspan (opacity only, so no reflow). Words over 48 chars (URLs, hashes) show as they arrive; the full text shows when the stream ends. Reduce Motion is unchanged.
Tests: RevealedMarkdown.test.tsx (committed first): deltas that split words; asserts no caret, every visible word whole, full text after the stream ends; unit cases for wordEdge.
Risk tier: low (webview rendering only, no data or protocol change).
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Streaming agent replies no longer show a blinking block cursor and now grow by whole words instead of single characters, so the text reads more naturally without layout jumps.
- Nothing trails the newest word; the change now sits on
feat-cmux-next, which already dropped the caret CSS. - A word fades in only once it is complete, as a single opacity-only span (no reflow).
- Chinese, Japanese, and Korean replies grow one character at a time, since those scripts don't space words.
- Words longer than 48 characters (URLs, hashes) still appear as they arrive; the full text shows once the stream ends.
- Adds
RevealedMarkdown.test.tsxcovering mid-word deltas, whole-word visibility, CJK scripts, and long-word passthrough.