Skip to content

fix(cmux-next): show progress while forking chats - #24662

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
leo1023f-fork-feedback
Oct 23, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
leo1023f-fork-feedback

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Fork starts a slow asynchronous host operation without showing that the click was accepted. A second click can arrive before the new session appears, and refusal/error feedback is easy to miss.

Change

Fork actions now use the live host chat.fork promise when available. The button enters a same-frame pending state, disables duplicate activation, shows a spinner while the fork/new-agent handoff is pending, then shows a success check or the existing localized fork failure state. Gallery and unit-test callers retain their injected fallback.

Leo described the problem as: “the fork button is slow with no feedback”.

Validation

  • bun test test/user-message-actions.test.tsx --test-name-pattern 'Fork|read prompt'
  • bunx vp lint src/agent-session/acpmux/conversation/MessageActions.tsx src/agent-session/acpmux/conversation/UserBubble.tsx src/agent-session/acpmux/conversation/TurnRows.tsx
  • Fleet compile and exact-head before/after captures will be added before merge.

Design reference

Matched the quiet, hover-first transcript action rows documented in apps/claude/live/NOTES.md and the fork action row reference apps/claude/live/transcript-user-message-actions-read-receipt.png.

Agent-Session: cmux16


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


Summary by cubic

Fork now shows immediate feedback in the transcript instead of looking inert while the host creates the new session.

  • The button enters a same-frame pending state, disables duplicate clicks, shows a spinner, then resolves to a success check or the existing localized failure state; empty or false host results count as refusal.
  • Pending state lasts through the live host chat.fork promise when available, and the app path now waits for session selection and persistence before resolving; injected fallbacks are unchanged.

Written for commit 359c6b1. Summary will update on new commits.

View guided diff Turn on auto-fix

@cursor

cursor Bot commented Oct 23, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 359c6b1: 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=pr24662 -f ref=leo1023f-fork-feedback -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards. This PR merged before its CI finished: fix forward on main.

CI failed on 359c6b14ec (run 40040940507 attempt 1): 2 code, 1 unknown.

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

Failures:

  • seen on other PRs agent-pane-agents-pill.test.ts by default the running agents sit in the tray above the composer, not in the transcript: failed (job)
  • seen on other PRs agent-pane-background-tasks.test.ts the summary card lists the chat's background tasks: running ones first, the finished folded: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab composer: hover gives the hovered button alone the soft pill; the box stays put: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab stage composer: hover gives the hovered button alone the soft pill; the box stays ...: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab composer: keyboard focus gives a button the soft pill and the bar's outline: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab stage composer: keyboard focus gives a button the soft pill and the bar's outline: failed (job)
  • seen on other PRs composer-caret-focus.test.ts webkit: New Tab composer: hover gives the hovered button alone the soft pill; the box stays put: failed (job)
  • seen on other PRs composer-caret-focus.test.ts webkit: New Tab stage composer: hover gives the hovered button alone the soft pill; the box stays pu...: failed (job)
  • seen on other PRs devices.test.tsx the card shows this Mac with its badge and fingerprint and reads again when it opens: failed (job)
  • seen on other PRs devices.test.tsx other devices show presence and an access picker that sends setAccess: failed (job)
  • ... 6 more in the job logs
Matched log lines
web / react-apps-check (3): (fail) by default the running agents sit in the tray above the composer, not in the transcript [1584.45ms]
web / react-apps-check (1): ERROR: test_warn_only_style_guards_pass_a_pr_adding_a_finding (__main__.ScopedChecksTests.test_warn_only_style_guards_pass_a_pr_adding_a_finding)

Not re-run automatically: web / react-apps-check (3), web / react-apps-check (1), 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: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 80beafb to compare; do not merge until green; see lane-rules
red: web / Web status; no finished base run on 80beafb to compare; do not merge until green; see lane-rules
red: web / react-apps-check; no finished base run on 80beafb to compare; do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on 80beafb to compare; do not merge until green; see lane-rules
red: web / react-apps-check (3); no finished base run on 80beafb to compare; do not merge until green; see lane-rules

Tour of 359c6b14ec (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, then re-add media-tour, to tour it on a Mac.

Gallery before/after for 359c6b1: 16 states rendered, 3 images differ, 865 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40040940400 -R manaflow-ai/cmux -n gallery-advisory-24662-359c6b14ecc83980a9cf972e9f56ab542e56a956 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors changed 23.4% own App.tsx
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors changed 23.4% own App.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light changed 1.53% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own App.tsx
agent-pane.coderouter-offer/claude-key Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/claude-key Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/deepseek-key Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/deepseek-key Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/sign-in Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/sign-in Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/rate-limited Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/rate-limited Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/on-coderouter Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/on-coderouter Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/moving Apple System Colors Light unchanged 0% own TurnRows.tsx
agent-pane.coderouter-offer/moving Apple System Colors unchanged 0% own TurnRows.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own App.tsx
agent-pane.docked-chat/new-chat Apple System Colors Light unchanged 0% own App.tsx
agent-pane.docked-chat/new-chat Apple System Colors unchanged 0% own App.tsx
agent-pane.docked-chat/after-turn Apple System Colors Light unchanged 0% own App.tsx
agent-pane.docked-chat/after-turn Apple System Colors unchanged 0% own App.tsx
agent-pane.docked-chat/working Apple System Colors Light unchanged 0% own App.tsx
agent-pane.docked-chat/working Apple System Colors unchanged 0% own App.tsx
agent-pane.docked-chat/typing-in-dock Apple System Colors Light unchanged 0% own App.tsx
agent-pane.docked-chat/typing-in-dock Apple System Colors unchanged 0% own App.tsx
agent-pane.docked-chat/long-title Apple System Colors Light unchanged 0% own App.tsx
agent-pane.docked-chat/long-title Apple System Colors unchanged 0% own App.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 23, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Found 51 test failures on Blacksmith runners:

Failures

Test View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
---/--- View Logs
/tmp/tmp3ozoi4zn/summary-fail.json (live):/summary-fail.json (live): View Logs

...and 41 more test failures. View all on Blacksmith: run 40040940541, run 40040940507, run 40040940591

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo
teamleaderleo force-pushed the leo1023f-fork-feedback branch from 4aa6c60 to c96e3d7 Compare October 23, 2026 23:32
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Fleet evidence for final exact head c96e3d72337b2cc3cddae452d04bcf2520d6d733:

  • The earlier exact fork head 4aa6c6081a0e00e08b91e4041a32311e75543929 compiled green in job 7d6e66186a03b4693cb37294 before the refusal-sentinel repair.
  • A fresh cmux-ci compile-check --ref c96e3d72337b2cc3cddae452d04bcf2520d6d733 --app reached the same unrelated base Swift errors in WorkspaceAutoName.swift (WorkspaceNameSource visibility/default .auto) and was cancelled by the fleet compiler; the changed web files are lint-clean and the focused fork tests pass.
  • Required fleet capture admission is blocked on all registered capture minis by SSH host-key verification/reset failures. No local or private screenshots are being substituted.

@teamleaderleo
teamleaderleo force-pushed the leo1023f-fork-feedback branch from c96e3d7 to edd2e03 Compare October 23, 2026 23:36
@cursor

cursor Bot commented Oct 23, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Final head after independent review repair: edd2e0367299c4830ec564d9877fe992d6625334.

Repair: the fallback chat.fork path now returns the selected fork session id after persistSession completes, so a successful older/floating host handoff cannot be shown as a failure by the feedback button.

Focused final-head evidence:

  • bun test test/user-message-actions.test.tsx --test-name-pattern 'Fork': 6 passed.
  • bunx vp lint src/agent-session/acpmux/App.tsx src/agent-session/acpmux/conversation/MessageActions.tsx src/agent-session/acpmux/conversation/UserBubble.tsx src/agent-session/acpmux/conversation/TurnRows.tsx: passed.
  • The fleet app compile was attempted for this final head (5944972bdae593436fe6c2ec) and reached the known base WorkspaceNameSource visibility/default .auto Swift errors before compiling the changed web surface; the earlier pre-repair exact head compiled green (7d6e66186a03b4693cb37294).
  • Required capture admission is blocked by the fleet's SSH host-key verification/reset failures on all registered capture minis; no private/local screenshots were substituted.

@teamleaderleo
teamleaderleo force-pushed the leo1023f-fork-feedback branch from edd2e03 to 359c6b1 Compare October 23, 2026 23:39
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (gpt-6-astra): SHIP at 359c6b14ecc83980a9cf972e9f56ab542e56a956.

Verified the exact diff against origin/feat-cmux-next. ForkButton gives same-frame pending feedback, suppresses duplicate clicks, handles success/refusal, uses the live host action when available, and the App fallback returns the selected session id after persistence. Focused tests cover fallback pending/error, empty-host refusal, live-host success, and duplicate activation. No correctness or accessibility defects found. Fleet app compile/capture infrastructure has the unrelated base Swift red and SSH host-key failures recorded above.

@teamleaderleo
teamleaderleo merged commit 3f4a4c1 into feat-cmux-next Oct 23, 2026
124 of 137 checks passed
@teamleaderleo
teamleaderleo deleted the leo1023f-fork-feedback branch October 23, 2026 23:44
@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant