Skip to content

cmux NEXT transcript: no caret at the end of a streaming reply - #22730

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
cmux/transcript-no-caret
Oct 21, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
cmux/transcript-no-caret

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

A streaming agent reply no longer draws the soft bar after its newest character, and the bar no longer pulses while the reveal waits for more text. The reply simply ends at its last character; the newest characters still fade in as before.

The removal takes the plumbing that only fed the bar with it: the .cv-caret span and CSS, the waiting prop and .cv-md.is-waiting class, and the settled state in useStreamReveal (which cost one extra render when a reveal caught up). static-status-loops.test.ts drops the caret from its list of loops.

git log -S cv-caret origin/feat-cmux-next has no removal; #20432 and #20434 (hide it once idle) were closed unmerged.

Testing

From webviews/:

  • bun test src/agent-session/acpmux/conversation/StreamingEdge.test.tsx: red on the first commit (the .cv-caret span after world), green on the fix.
  • bun test src/agent-session/acpmux/conversation: 49 pass.
  • bunx tsc --noEmit -p .: clean.

Not run locally: static-status-loops.test.ts (browser lane, runs in this PR's web / react-apps-check). verify-local.py --affected: localization (41087 parity errors) and package-groups fail the same way on the base; this PR touches neither.

Changelog

Removed: the blinking caret at the end of a streaming agent reply

🤖 Generated with Claude Code

Agent session: cosmic-gray


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

A streaming agent reply no longer draws the blinking caret after its newest character, and the caret no longer pulses while the stream waits for more text. The reply simply ends at its last character; newest characters still fade in as before.

  • Removes the .cv-caret span and its CSS, the waiting prop and .cv-md.is-waiting class, and the settled state in useStreamReveal, which caused an extra render when the reveal caught up.
  • Adds a test asserting no caret renders mid-reveal or while waiting.

Written for commit a7aba81. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits October 20, 2026 18:21
Red: bun test src/agent-session/acpmux/conversation/StreamingEdge.test.tsx
fails with the .cv-caret span after the newest character.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The live-edge bar after streaming text (R104) and its wait pulse are gone,
with the waiting/is-waiting plumbing and the reveal hook's settled state
that only fed it. The newest characters still fade in.

Green: bun test src/agent-session/acpmux/conversation/StreamingEdge.test.tsx

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review a7aba81: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr22730 -f ref=cmux/transcript-no-caret -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check (3) failed: no known signature; failed step: Test webviews.

CI failed on a7aba81d26 (run 39528553462 attempt 1): 3 code, 2 unknown.

Job Verdict Why
web / react-apps-check (1) code a web test failed
web / react-apps-check (2) code a web test failed
web / react-apps-check (4) code a web test failed
web / react-apps-check (3) unknown no known signature; failed step: Test webviews
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs editors.test.tsx editors > every schema row renders the editor for its kind: timed out after 5000ms (job)
  • seen on other PRs editors.test.tsx editors > the window material is a material choice, never a radius slider: failed (job)
  • seen on other PRs editors.test.tsx editors > opacity is a percent slider: preview while dragging, one settings.set on release: failed (job)
  • seen on other PRs editors.test.tsx editors > an unset slider sits at the value the host derives (the theme's opacity), live: failed (job)
  • seen on other PRs editors.test.tsx editors > a number field commits on Return, clamped to the range: failed (job)
  • seen on other PRs editors.test.tsx editors > a number list adds a number in range on Return and refuses one outside it: failed (job)
  • seen on other PRs editors.test.tsx editors > a managed row shows its value, a disabled control and a localized lock line: failed (job)
  • seen on other PRs editors.test.tsx editors > the reset button appears only when the row is customized: failed (job)
  • seen on other PRs agent-pane-background-tasks.test.ts clicking a background task's end opens its terminal beside the chat: failed (job)
  • seen on other PRs agent-pane-math.test.tsx each delimiter typesets once math appears: failed (job)
Matched log lines
web / react-apps-check (1): (fail) editors > every schema row renders the editor for its kind [5512.98ms]
web / react-apps-check (2): (fail) clicking a background task's end opens its terminal beside the chat [937.55ms]
web / react-apps-check (4): (fail) each delimiter typesets once math appears [73.39ms]

Not re-run automatically: web / react-apps-check (1), web / react-apps-check (2), web / react-apps-check (4), web / react-apps-check (3), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; NEW: green on the base 9290a83; do not merge until green; see lane-rules
red: web / react-apps-check; no finished base run on 9290a83 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on 9290a83 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (2); no finished base run on 9290a83 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (3); no finished base run on 9290a83 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (4); no finished base run on 9290a83 to compare; do not merge until green; see lane-rules

CI fast guards failed on a7aba81d26 (https://github.com/manaflow-ai/cmux/actions/runs/39528553462). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally.

Tour of a7aba81d26 (run): no media. The tour did not run: only webview code changed (5 path(s)), which the gallery advisory run checks in Linux Chromium on the pull request (its artifact holds any captures); add the media-tour-mac label to tour it on a Mac.

@teamleaderleo
teamleaderleo marked this pull request as ready for review October 21, 2026 01:26
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-p0z1f created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 23 of 23 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
src/pages/settings/editors.test.tsx/editors.test.tsx View Logs
src/pages/settings/editors.test.tsx/editors.test.tsx View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-math.test.tsx/agent-pane-math.test.tsx View Logs
test/agent-pane-math.test.tsx/agent-pane-math.test.tsx View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
Conflicts: RevealedMarkdown.tsx keeps base's away/flushSync backlog path and
applies wordEdge to the reveal length before it; Markdown.tsx keeps the
no-block-cursor comment. Base #22730 already removed the caret CSS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bbf-a30f-7992-abba-3e3ca6f5adc1&host=cosmic-gray
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant