Repository navigation
agent pane: a paused Cloud machine's chat says paused and offers Resume - #26874
Conversation
The banner over a peer chat drawn from the Mac's copy read 'offline' for a paused Cloud machine, with nothing to do about it (cmuxterm-hq#4755). It now reads the account's machine of the chat's peer name (cloudMachine.list): a paused one says it is paused with Resume (cloudMachine.resume, one click), and one starting shows a spinner. The list is read again every 3 s only while the machine starts; the reads stop when it no longer starts, when the chat is back, or when the banner goes. Resume's place is the paused-machine-resume experiment (actions row ships; inline link and filled button compared in the gallery). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
|
Owned by an agent session · session |
|
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)
Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; base red: the same failure on the base d8a5b1a; does not block Gallery before/after for
States
Pick other states with a |
|
Bead |
…arts are bounded Another peer never reads as starting because of a Resume still running for another machine. A machine stuck starting is read at most 60 times (3 minutes). The read when the machine goes down is its own effect, so leaving the starting stages asks for no extra read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
…tart test reads each tick Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
…unt's shares, never an ssh peer Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
|
Found 20 test failures on Blacksmith runners: Failures
...and 10 more test failures. View all on Blacksmith
|
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. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
|
Review (codex gpt-6-astra high, next-review): SHIP at ec91c67 No blocking findings.
Static review only; unchanged Cloud helpers were unavailable, and tests were not run. |
|
Review (codex gpt-6-astra): SHIP at 10ecc55 Gallery health reds (empty-state#search, narrow#model-menu, model-picker#many-harnesses, streaming-text#jump-during-stream, and the budget lines for composer-row, composer, diff-panel, image-viewer) fail the same way on base (run 40716206829); none is in agent-pane.peer-copy-paused. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40723201469 at cce378b failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
A chat whose Cloud machine is paused now says the machine is paused and offers Resume. Before, the banner over the chat said the machine was offline, with nothing to do about it. While the machine starts, the banner shows a spinner and "Starting" in place of a second Resume.
Leo, 2026-10-28: "whatever's convenient for cloud, like that can be productionized, operationalized, we ought to just put out there". The Cloud state-of-affairs issue (cmuxterm-hq#4755), quoting Leo: "we want to get a lot of good stuff wrt the pausing and resuming and how it integrates with acpmux + the gui chat". This PR fixes one item on its gap list: a paused machine's chat reads "offline", and the pane has no Resume. The chat-menu half (Pause and Resume rows) is cmux#26872.
What changed (webviews only)
peerCloudMachine.ts(new):pausedorstarting; a Resume this page asked for counts as starting.usePeerCloudMachinereads the account's machine list once when the chat's machine goes down.PeerCopyBanner.tsx: a machine the account lists as paused reads " is paused", with Resume. One that is starting reads "Starting …" with the sharedSpinner, never a pulsing dot. Anything else reads offline, as before.App.tsxpasses the hook's state andresumeto the banner.cloudMachine.resumebridge method. That method takes one click, and the app runs it only on a paused machine from the account's list. After Resume, the list is read again, so a refused Resume leaves the machine paused with Resume back.clearInterval). There is no other timer or observer.peerCopy.paused.title,peerCopy.paused.resumeandpeerCopy.starting.title, in all 21 locales.Design choice (gallery
agent-pane.peer-copy-paused, experimentpaused-machine-resume, 3 arms):actions(ships): Resume in an actions row under the banner's text.inline: Resume as a link at the end of the first line.button: a small filled button at the trailing edge of the first line.I picked
actionsbecause it matches the watch and open-elsewhere banners in the same pane, which put their choices in that row with the same button. The other two arms make this banner look different from its neighbours: a filled accent button is louder than anything else in the pane, and an inline link is easy to miss in a two-line banner.Gating: none. This fixes the existing offline banner, which every user already sees on a peer chat whose machine stops answering. Only a machine the account lists as paused or starting changes what it says. Without Cloud machines, nothing changes.
Captures: the before/after captures are the gallery variants
before,paused,startingandpaused-no-timeinagent-pane.peer-copy-paused(the gallery advisory run on this PR).Risk: low. Webview only, no new bridge method, and at most one list read, plus the 3 s reads while a machine starts.
Tests (
test/agent-pane-peer-copy-paused.test.tsx, cmux-ci Linux, together with the peer-copy, gallery-entry, coverage and strings suites;bun run checkpasses):paused-machine-resumeputs Resume where it says.Agent session: agent session
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
A chat whose Cloud machine is paused now says the machine is paused and offers Resume, instead of reading "offline" with nothing to do about it. While the machine starts, the banner shows a spinner and "Starting".
Details
cloudMachine.resumebridge, which consumes one click; a refused Resume leaves the machine paused, with Resume back.paused-machine-resumecompares three Resume placements; the actions row (matching the watch banner) ships, andinlineandbuttonarms stay in the gallery.Written for commit 10ecc55. Summary will update on new commits.