Repository navigation
cmux NEXT Cloud: pick a chat's machine from its folder, sent as autosize (no machine or size prompt) - #26740
Conversation
|
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)
web and size checks: green |
|
Bead |
|
Review (codex gpt-6-astra): SHIP at d3b4891 Three rounds of review at high effort with fast mode. Round 1 found three issues, all fixed in d3b4891:
Round 2 asked about |
…ze, task kind), sent as autosize A chat sent to Cloud no longer needs a machine or size choice: CloudWorkPick reads the chat's folder (repo key and GitHub repo from the remote, branch and whether it is pushed, git object size, root files, task kind, .cmux/machine.toml, Codex broker) and Move to Cloud with no machine to reuse, and New Cloud Machine from a chat, send its autosize with POST /api/vm. The answer's sizePick stays on the machine's session for the hand-off. Behind Labs preview features. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
…o from a local remote, no pick on the app-server link Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ba8980ae4e8eecb82d6
d3b4891 to
9b73ba6
Compare
|
Review (codex gpt-6-astra): SHIP at 9b73ba6 The same reviewed change, rebased onto feat-cmux-next to pick up #26754, which fixes the base Release-compile red ( |
|
Found 2 test failures on Blacksmith runners: Failures
|
Resolves the setup wizard against base's Cloud environments: choosePlan takes both the chat's suggested repository and the team's environments; the handler sizes the request for the chat and still saves a new environment before booting it. 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): SHIP at 8a93094 Delta review of the hand-resolved merge of feat-cmux-next into this branch: the remerge diff, the full PR diff against the merged base, and the full resolved files. No findings. Still held by the fleet-wide Swift merge hold (HOLD line in the body). |
|
Orphaned: no activity for 15 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged |
…utosize-pick # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextCloud/API/CloudMachine.swift
|
Review (codex gpt-6-astra high, fast, via review-router): BLOCK at dcf23b5
Static review only; tests were not run in this sandbox. |
…ref's tail A remote named team/origin made %(upstream:lstrip=3) answer origin/feature, a branch the machine's clone cannot find. Read %(upstream:remoteref) instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-5160a5704f7bd6c329fa
…lder - Name the branch's upstream remote when reading its URL, and pin with a test that a fork as origin beside a tracked upstream picks the upstream repo. - New Cloud Machine from a chat whose tab has no cwd cached reads the folder its local session reports, as Move to Cloud does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-5160a5704f7bd6c329fa
|
Review (codex gpt-6-astra high, fast, via review-router): SHIP at 01564b7
No P1/P2 findings. Static review only; tests were not run. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40999472385 at c62a8db failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
Resolves conflicts with #26740 and #26568: keep the palette actions, keep this PR's removal of the agent pane's sign-in fallback, and pass #26740's chat pick into bindMachineCreation (read when the action runs, since sign-in may finish after focus moved). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-5160a5704f7bd6c329fa
|
Shipped in:
|
The slice head 2b2fc8e (= 43037147a0b's tree: slice + trunk sync c09bb74) merges the feat tip, 130 new commits. 58 files conflicted: - 0 reuse the previous round's resolutions: this round's base is the previous feat tip a14725a, so no hunk had all three sides equal to 5f39f9e's inputs. - Regenerated, not hand-merged: the 4 CmuxMessagesLab patches (Fixture, Layout, RowDrawing, WindowView) from the merged vendored sources against the pinned upstream reconstructed from the side whose patch was consistent (feat's for 3, perf's for WindowView; feat 65de604 edited WindowView.swift without rewriting its patch). - 54 resolved by porting feat's change into perf's shape: - Package.swift (CmuxNext: Floating tests get CmuxNextDesign with perf's Wakeups deps; CmuxMobileKit: Model gets feat's Resources with perf's CmuxSafeConcurrency). - Lineage parents #24136: SidebarSessionTreeFeed (recordedParents and per-host links on perf's ServiceObservation), RemoteAcpmuxWire (host/linksAlias notes posted on perf's mainWork; test-only inits take them too), AgentTabRemoteHost, AgentTabs+Wiring, AgentSessionWorkspace (the record is one completion task on main), tests. - Artifact sandbox #26216: perf's page-host PageArtifactFrame already serves the sandboxed endpoint; feat's navigation tests ported to PageNavigation, frame-ancestors expectation added, artifactFrameURL keeps only the page host, webviews tests on perf's URLs. - pane.commandAvailability (#25405) and chief.face (#27914) beside perf's keyToPaint and Wiring init. - State files off main #27749: AgentUnsentDrafts (perf's ObservedMap) and ScrollAnchors (blockingDecode) on AgentPaneStateFile. - AgentPaneTransport.close: perf's close reason plus feat's host-request failure and trust reset. - CloudService: perf's file, plus #27104 signedOutCreation (scope, policy, stop, signOut in +Machines) and #26740 autosize/sizePick; listIsCurrent moved to +AppServer as feat did. - debug.object_menu into perf's DebugDriverControl; Home fixture presence/faces beside perf's field. - Palette overlay window #26951 into perf's paletteBuilt. - Per-window Home #27880 in perf's dockTab helper; active team (1bb1b96) on perf's cloudAuth. - Busy refusal (a930474, 2a9b813) in perf's LineTransport split (+State, +Route, framed write). - Launch snapshot sidebar doc (dc38061): DaemonLaunchSnapshot.sidebarDoc, shown once settled (whenSettled), its connect follow a ServiceObservation; the Rust test moved to launch_snapshot_tests.rs. - Hover card corners (bc66475) with perf's interactive flag; Chief pet state (#25671) on perf's ServiceObservation and AppearanceSignals; Chief picture crop (#27933) on perf's lanes and optional store; Home presence (#25578) as a FrameObservation; sidebar tab look (#27530) via SidebarLookFollower; settleOpenings (#24374) with perf's snap; Omnibar imports. - acpmux: inbox digest senders without slicing; withdraw_queued async with from_agents_only; cmux-tui-core and platform: connection leases beside perf's modules and InlineSocket (bounded_outbound.rs takes back the `platform::transport` import perf had dropped, which feat's claim_watched_connection names). - webviews: App/NewTab/NewTabScreen (retry, slash commands, at), settings keys moved to cardRows.ts. - Feat's tests that call perf-changed inits fixed: TabConcentricCornerTests (input:), HomeChatPresenceFacesTests (deadlines:, frame delivery), RemoteChildSessionsTests (main run loop for posted notes). Generators: cargo metadata in cmux-tui, cmux-tui/fuzz, Native/DiffSidecar and optchat-chief changed no lock; gen-features.py --check, gen-chromium-host-wire.py --check and --check-ops, sync-resource-api.py --check pass. webviews: bun run check passes. schemas/settings/settings-schema.json stays perf's (generated; the autofix regenerates it): until then feat's chiefLook.test.tsx misses the home.bubbleColors rows.
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
What
A chat sent to cmux Cloud gets its machine chosen from the chat's folder, with no machine, size or environment prompt.
CloudWorkPick(CmuxNextCloud) reads, from the chat's working directory:host/owner/name, lower-cased) from the remote, never a login or password from the URL;Package.swift,Cargo.toml,package.json, …), which give the server the toolchain;CloudTaskKind.inferred(from:): a whole word naming testing makes ittest, else a word naming building makes itbuild, elsechat. It reads the chat's title;.cmux/machine.tomlexists, and whether the agent is Codex (which needs the Codex broker).Every git command is local, with no network, and bounded at 3 s. A command that fails just leaves its fact out. A folder outside git gets no repo, and its root files still go.
Where it's used:
Both send
autosize: {taskKind, repo: {key, sizeMb, rootFiles}}withPOST /api/vm(#26617, #26630). AmemoryMbstill wins.The answer's
sizePick {vcpus, memoryGb, pick, reason}is decoded onCloudMachine.sizePick. It is also kept onCloudMachineSession.sizePick, which a list read does not overwrite. That copy is what the hand-off reads:CloudSizePick.handoffSizeisPOST /v1/handoffs'ssize.Why
Leo, 2026-10-28: "whatever's convenient for cloud, like that can be productionized, operationalized, we ought to just put out there"
Leo, 2026-10-28: "like as auto as chatgpt work and not NEEDING to deal with picking environments... the auto thing situation". And: "You know how we did that automatic routing, automatic sizing ... We want to have that for the cloud machines too ... Like ChatGPT work."
Risk
Tests
CloudWorkPickTestscovers:sizePickdecoding, where a malformed one drops the line and never the machine;CloudWorkspaceSetupWizardTestscovers the suggested starting point. These ran as package tests on the Mac fleet.No capture: with Labs preview features off (the default), nothing changes on screen. With Labs on, nothing new is drawn either. The one visible difference is a field's starting value: when New Cloud Machine is opened from a chat's composer, its setup dialog starts on "From repository" with the chat's own repo filled in (
CloudWorkspaceSetupWizardTests.aChatsRepositoryIsTheSuggestedStartingPoint). No capture scene opens that dialog from a chat. The size line in the chat is the follow-up UI PR, which comes with before/after captures.Agent session: agent session
🤖 Generated with Claude Code