Plus menu: one New Cloud VM item that opens the New Machine sheet - #11603
Conversation
The + dropdown and the cloud button right-click menu shared one builder that listed Open, Fork, Checkpoint, Restore, and an Advanced submenu. It now shows a single "New Cloud VM" row, which runs the same NewMachineSheetPresenter path as the Machines panel + button and the command palette. The per-VM commands stay reachable from the palette. Claude-Session: https://claude.ai/code/session_012DskPjbscqPLLLDEnz1WBS
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
Warning Review limit reachedNext included review available in 4 minutes. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
All contributors have signed the CLA ✍️ ✅ |
main added CloudTreeNode.Kind.pendingMachine (manaflow-ai#11603-era machine create placeholder) while this branch added isCompactableGroup; the merge left the new case out of the switch and the build failed. Claude-Session: https://claude.ai/code/session_017SYRh8isujtDXJPoCg2GU5
…P modal on private addresses (#11626) * Heal the VPC members rule on reuse; copyable machine IPs in the sidebar The members-reach-each-other rule (all ports — it carries the whole feature) is created with the VPC, but create-time rules can be deleted out of band. ensureNetwork now verifies it on every reuse and re-creates it when missing, best-effort so a transient listing failure never blocks a create. Machines record their private-network addresses in providerMetadata at create; GET /api/vm returns them (`address: {ipv4, ipv6}`), the socket vm.list payload passes them through, and the sidebar machine menu gains "Copy IP Address" (v4 preferred, v6 fallback; hidden for machines with no private address). Machines created before address recording learn theirs on the next attach — the driver already reads vm.data() there, and the workflow merges what it learned into the row. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Make the cloud tree context menu actually dispatch Every item in the cloud tree's context menu rendered but no click ever ran: the item's action selector was `perform(_:)`, which compiles to `perform:` and collides with NSObject's perform machinery, so AppKit never delivered the click to the subclass. Rename the selector to `execute` — the shape SidebarRowMenuActionItem proved — and present the menu per-event through menu(for:) with autoenablesItems=false, matching every working cmux menu instead of the persistent-menu + delegate path. Debug probes (menu.build / menu.execute / copyToPasteboard) stay in: they are what located this, and the next menu regression should be one log read away. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Skip the plain-HTTP warning for private-network addresses The modal's rationale — traffic can be read or modified on the network — is about the public Internet; traffic to RFC 1918, link-local, and IPv6 unique-local literals never crosses it, and cmux Cloud machines live at exactly those addresses (their VPC ULAs, reached through the user's WireGuard tunnel, which encrypts the path anyway). Warning on every http://10.x panel trains people to click through the one dialog that matters on public sites. Only address literals qualify — a NAME is never private, so DNS cannot smuggle a public host past the warning. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Cloud sidebar: workspaces-first, port links, .internal hostnames, tab focus Sidebar - Hide the Terminals pool unless a terminal belongs to no workspace (orphans only) — workspaces are the machine's face now, terminals already show under the workspace that has them. - Ports section: one row per listening port, titled as a scheme-free underlined link (VS Code's forwarded-ports look) — host:port or <machine>.internal:port when the machine has a private address. Click opens it as a browser pane; the row's menu copies the full link. Workspace-tab browsers that happen to hit a localhost port are excluded (already shown under their workspace; would otherwise double-list). - VS Code-style folder-chain compaction: a group whose only child is itself a container folds into one row ("Workspaces / workspace-1") instead of two. Only pure organizational groups fold; machines never do, since they carry status and actions no group row has. - Workspace titles show the workspace's own name, never the machine's raw provider VM id as a prefix — `resolvedMachineName` reads the friendly label everywhere a machine name appears in user-facing text (progress labels, compound workspace titles). - A terminal opens as a tab, not a new split column, and clicking a sidebar row now explicitly selects that tab (`SurfacePaneFactory.focus` after every project(...)) instead of relying on requestedFocus alone. .internal hostnames - New shared `CmuxInternalHostnames` (CmuxFoundation, used by both the app and the CLI so the slug algorithm can't drift): builds `<label-or-id>.internal` and manages a markered block in /etc/hosts. - `cmux vpn hosts` writes every machine's name into /etc/hosts (managed block; the user's own entries untouched); `vpn up` runs it automatically, `vpn revoke` clears the block since every name it published is unreachable the moment the tunnel is gone. Other - Tabs close without a confirmation prompt (cmux.json warnBeforeClosingTab/XButton) — the terminal survives in the sidebar regardless, so the prompt was friction without a safety benefit. - Folds in the in-progress titlebar refactor: TitlebarNewWorkspaceCloudSplitButton and its cloud-VM dropdown menu are gone, replaced by a plain TitlebarControlButton with a right-click context menu (showNewWorkspaceContextMenu); MinimalModeSidebarControlActionSlot drops the now-unused .cloudVM case. 7 new CmuxInternalHostnames tests + 2 new Freestyle provider tests, all green; full Debug build clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Cover pendingMachine in the cloud tree compaction switch main added CloudTreeNode.Kind.pendingMachine (#11603-era machine create placeholder) while this branch added isCompactableGroup; the merge left the new case out of the switch and the build failed. Claude-Session: https://claude.ai/code/session_017SYRh8isujtDXJPoCg2GU5 --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com>
c8ec44d Cloud VPC follow-ups: copyable machine IPs, working tree menu, no HTTP modal on private addresses (manaflow-ai#11626) cbda3b0 ci: land base-controlled CLA policy guard (manaflow-ai#11606) 40d1dc6 CLI: return notification ids and support scoped clear (manaflow-ai#10336) d86d5f3 fix(relay): offload bounded filesystem actions (manaflow-ai#11568) 9778ac7 Plus menu: one New Cloud VM item that opens the New Machine sheet (manaflow-ai#11603) 392f83d fix(web): retire provider rows as destroyed in the Blaxel and E2B/Daytona migrations (manaflow-ai#11623) c1ce87c Cloud: create machines in the background; Create returns control immediately (manaflow-ai#11397) (manaflow-ai#11421)
The + dropdown (and the cloud button right-click menu, which shares the same builder) listed Open Cloud VM, Fork, Checkpoint, Restore, and an Advanced submenu. It now shows a single "New Cloud VM" row that runs
NewMachineSheetPresenter.presentNewMachineFetchingPlan, the same path as the Machines panel + button and the command palette.The per-VM commands (fork, checkpoint, restore, status, ports, promote, tools, handoff) remain in the command palette. The unused
command.cloudVM.advanced.titlestring is removed;command.cloudVM.new.titleis added in English and Japanese.https://claude.ai/code/session_012DskPjbscqPLLLDEnz1WBS
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
The + dropdown and cloud button right-click menu now show a single "New Cloud VM" item instead of the Open, Fork, Checkpoint, Restore, and Advanced submenu entries. Selecting it opens the New Machine sheet via the same
NewMachineSheetPresenterpath used by the Machines panel + button and command palette.Per-VM commands (fork, checkpoint, restore, status, ports, promote, tools, handoff) remain available in the command palette, and the Advanced menu state for the cloud button is removed along with its unused
command.cloudVM.advanced.titlestring. Adds thecommand.cloudVM.new.titlestring in English and Japanese.Written for commit b0d51f1. Summary will update on new commits.