Repository navigation
Cloud chat: a pause or resume stays invisible for 1.5 s and moves nothing - #34624
Conversation
…hing One threshold (afterDelay.ts, RESUME_NOTE_DELAY_MS = 1.5 s) gates every resume note in the agent pane, with its timer cleared when the wait ends: - ChatUnavailableState: a paused machine shows the empty loading layout for the first 1.5 s, then a calm card (role=status, not alert) that fades in. The resume spinner's slot is there from the first frame and fills only past 1.5 s. - ComposerQueue: the prompt held for a waking machine shows at once; its "Waking the machine..." line is there, empty, and the note fades in past 1.5 s. - PeerCopyBanner: shows only past 1.5 s (so a paused machine no longer reads "offline" before the machine list answers), floating over the transcript in a zero-height slot, so neither its arrival nor its leaving moves a row. Gallery: agent-pane.cloud-resume-designs (three places for the slow-resume note; queue ships), and paused-quick, slow-resume and resume-failed in agent-pane.cloud-chat-recovery. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Bugbot needs on-demand usage enabledBugbot 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. |
|
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 web and size checks: green Shipped in:
|
|
Owned by an agent session · session |
…on the banner slot Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
… its first rows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Review (codex gpt-6.1-sol xhigh, router-review): BLOCK at 083dd81 BLOCK at 083dd81
|
…ay; list the new entrances Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Found 5 test failures on Blacksmith runners: Failures
|
|
Review (codex gpt-6-astra high, router-review): BLOCK at dbf77ae BLOCK at dbf77ae Visual verdict: no images; Leo tries the build
Follow-ups: [P2] [follow-up] No after gallery stills were available. |
…possible Cloud machine waits Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
…ext in past the threshold Covers rows never, shifts nothing beyond what base did, and still never reads offline before the machine list answers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Review (codex gpt-6-astra high, router-review of 290711d..49a2191): SHIP at 49a2191 Visual verdict: no images supplied (range review); Leo tries the build Checked the earlier blocking findings at this head: fixed-waits (tests now use fake timers), settled-state fixtures in other suites, ssh peers showing at once, and the banner neither covering rows nor shifting beyond base. Follow-ups: [P2] the banner's |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Review (codex gpt-6-astra high, router-review): BLOCK at ecd5f1c BLOCK at ecd5f1c Visual verdict: no images; Leo tries the build
Follow-ups: none |
|
Review (codex, router-review): SHIP at ecd5f1c Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 2. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at ecd5f1c
The eight popover/entrance checks passed. Component tests could not start because this box lacks dependencies ( Follow-ups:
|
…ume note threshold Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
…d-chat-responsive
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex, router-review): SHIP at 809b67e Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 2. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at 809b67e Source review and syntax checks completed. Runtime tests were unavailable because Bun is absent.
Follow-ups:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-11-03: "The model sometimes sees a delay and you sometimes see it after sending but it evens out to not much at all just a tiny bit of extra time that you mostly perceive as "thinking" / But it's all still responsive on the ui side". Also: "the user acquisition has to come, and it has to come FAST aka we need it to work well feel good".
Cloud machines are about to pause on their own, first when idle and then between tool calls. A Cloud chat on a paused or resuming machine should feel exactly like one on a running machine.
What changes
One threshold,
RESUME_NOTE_DELAY_MS= 1.5 s, gates every resume note in the agent pane. It lives inafterDelay.tsasuseAfterDelay(active, ms). The hook runs one timer per stretch ofactiveand clears it when the wait ends or the component unmounts, so nothing runs at idle.ChatUnavailableState):role=status, neveralert.cloudChatRecoveryActive). That is unchanged.ComposerQueue):PeerCopyBanner):Where the slow-resume note goes (gallery:
agent-pane.cloud-resume-designs)I built three variants.
queueships: the line sits over the held prompt in the composer queue.New states in
agent-pane.cloud-chat-recovery:paused-quick(invisible),slow-resume,resume-failed. The existing banner variants now passnoteDelayMs: 0, or wait for the banner, so their captures stay settled.No design reference matched this state in cmux-design-references. The nearest,
t3-code/live/approval-resume-motion, shows a gate that gives way to the live composer without a blocking card.Budgets
setTimeoutper wait, cleared on end or unmount. There is no interval and no idle work.Out of scope (other PRs)
Changelog
Changed: a Cloud chat whose machine is paused or waking shows nothing for the first 1.5 s, then one quiet note, and nothing on screen shifts.
Observed / Not run
cmux-ci test --setup webviews) at an earlier head:bun run check(its remaining reds,transcript-spacing-kinds.test.tsafterandupdateSurfaces.css, are also red on base), andbun testforafterDelay.test.tsx,ChatUnavailableState.test.tsx,ComposerQueue.test.tsxandstopHeldMessages.test.tsx.check:fixed-waitsis clean). The settled-state fixtures incloud-chat-recovery,cloud-chat-resumeandagent-pane-peer-copy-pausedpassnoteDelayMs0.Risk: normal. Web-only UI timing; no data, protocol or native change.
🤖 Generated with Claude Code
Agent session: agent session