Skip to content

Cloud sidebar: remove the unsupported Increase Disk machine action - #12163

Merged
austinywang merged 2 commits into
mainfrom
issue-12156-cloud-sidebar-disk-resize
Sep 8, 2026
Merged

austinywang merged 2 commits into
mainfrom
issue-12156-cloud-sidebar-disk-resize

Conversation

@austinywang

@austinywang austinywang commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • What changed? The Cloud sidebar's machine context menu no longer shows the "Increase Disk" submenu (64 / 128 / 256 GiB targets). The UI-only resizeDisk closure in MachineRowActions and its cmux vm resize launcher go with it, so no native affordance fires a disk resize.
  • Why? Disk resize is not a supported product capability end to end yet (Cloud sidebar: remove unsupported disk resize action #12156). A menu item that exists only in the sidebar, with no backend contract behind it, is a discoverable dead end.

Left in place on purpose:

  • VMClient.resizeDisk and the vm.resize socket verb (the backend/CLI path Fix Cloud VM creation, access, resizing, and routing #12026 exercises). This PR touches no backend API.
  • Read-only CPU / memory / disk stats on machine rows.
  • New Machine's initial memory/disk profile.
  • Every other machine verb: Open Shell, New Workspace, Open Desktop, Open Full cmux-tui Client, Refresh, Rename, Copy IP Address, Status, Checkpoint, Fork, Delete, and Upgrade to Reconnect for expired free machines.

Trade-off, stated rather than absorbed: the verb is deleted instead of hidden behind a capability bit. A VMCapabilities.resizeDisk gate would have kept dead menu code alive behind a flag no backend sets, and this repo's rule is that a feature flag means a PostHog runtime flag. When disk resize ships end to end, the menu item can return alongside a backend-advertised capability, the way Checkpoint and Fork are gated today.

Localization audit: the three keys the removed code used (machines.menu.increaseDisk, machines.menu.increaseDiskTo, machines.operation.resizeDisk) were never added to Resources/Localizable.xcstrings and do not appear in web/messages/*.json or the docs, so nothing in any catalog changes. No new user-facing strings were introduced; the test's expected titles resolve through the same catalog keys the menu uses.

Testing

Two commits, per the regression policy: the first adds the failing test only, the second removes the affordance.

  • cmuxTests/CloudTreeMachineMenuTests.swift builds the real CloudTreeOutlineView.Coordinator + CloudTreeContainerView, applies a ready Base machine (paid plan, full capabilities, private address, a 32 GiB disk reading) and asks contextMenu(forRow:) for the menu AppKit would show. It pins the exact verb list, asserts no item carries a submenu, then fires Open Shell, Checkpoint, and Delete through NSApp.sendAction and checks each reached its closure.
  • Red run (test-only commit, test-e2e.yml on a hosted macOS runner, -only-testing:cmuxTests/CloudTreeMachineMenuTests): in progress, https://github.com/manaflow-ai/cmux/actions/runs/34225696231 (expected: fails on the "Increase Disk" item)
  • Green run (fix commit, same workflow and filter): in progress, https://github.com/manaflow-ai/cmux/actions/runs/34225880959 (expected: passes)
  • python3 scripts/normalize-pbxproj.py --check, ./scripts/check-pbxproj.sh, ./scripts/lint-pbxproj-test-wiring.sh pass (the new test file is wired into the cmuxTests target).
  • Tagged dev build: queued on the fleet behind the shared build lock; result to follow

Demo Video

  • Video URL or attachment: to follow once the tagged build runs (a machine row must exist on the dev account to right-click)

Review Trigger (Copy/Paste as PR comment)

@codex review
@coderabbitai review
@greptile-apps review
@cubic-dev-ai review

Checklist

  • I tested the change locally
  • I added or updated tests for behavior changes
  • I updated docs/changelog if needed
  • I requested bot reviews after my latest commit (copy/paste block above or equivalent)
  • All code review bot comments are resolved
  • All human review comments are resolved

Closes #12156

🤖 Generated with Claude Code

https://claude.ai/code/session_013BfSprZWdTSfqAyvZfvXok


Summary by cubic

Removes the unsupported "Increase Disk" submenu from the Cloud sidebar's machine context menu. The menu previously offered 64/128/256 GiB resize targets that fired cmux vm resize, but disk resize isn't a supported product capability yet, so the item was a dead end (#12156).

Left in place

  • VMClient.resizeDisk and the vm.resize socket verb, which the CLI/backend path uses.
  • Read-only disk stats and New Machine's initial disk profile.

Testing

  • Adds CloudTreeMachineMenuTests, which pins the exact verb list a ready machine offers and confirms Open Shell, Checkpoint, and Delete still reach their closures.
  • No localization entries change because the removed keys were never in any catalog.

Written for commit 3e2cd6b. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Removed Features

    • Removed the Increase Disk option from cloud machine context menus.
    • Removed disk-resizing actions from the Cloud Machines panel.
  • Tests

    • Added coverage confirming supported machine actions remain available and functional.
    • Added verification that disk-resizing options no longer appear.

austinywang and others added 2 commits September 8, 2026 04:58
Regression test for #12156: a machine row's context menu offered an
"Increase Disk" submenu whose targets fired a disk resize the product
does not support end to end. Pins the exact verbs a ready machine
offers, that none of them opens a submenu, and that Open Shell,
Checkpoint, and Delete still reach their closures. Red until the
submenu is removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BfSprZWdTSfqAyvZfvXok
The machine context menu offered an "Increase Disk" submenu (64, 128,
256 GiB) that launched `cmux vm resize`, but disk resize is not a
supported product capability end to end yet, so the sidebar advertised
a dead end (#12156). Drop the submenu and the UI-only `resizeDisk`
closure in MachineRowActions. VMClient.resizeDisk and the `vm.resize`
socket verb stay for the CLI/backend path; read-only disk stats and New
Machine's initial disk profile are untouched.

The three catalog keys the removed code used were never added to
Localizable.xcstrings, so no localization entries change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BfSprZWdTSfqAyvZfvXok
@vercel

vercel Bot commented Sep 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cmux166 Building Building Preview Sep 8, 2026 12:25pm UTC
cmux41 Building Building Preview Sep 8, 2026 12:25pm UTC

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: efcc89be-9ad9-428a-a4e5-ea57b903939b

📥 Commits

Reviewing files that changed from the base of the PR and between 296511d and 3e2cd6b.

📒 Files selected for processing (5)
  • Sources/Cloud/CloudTreeOutlineView.swift
  • Sources/Cloud/MachinesPanelView.swift
  • cmux.xcodeproj/project.pbxproj
  • cmuxTests/CloudTreeMachineMenuTests.swift
  • cmuxTests/CloudTreeNativeDragOwnershipTests.swift
💤 Files with no reviewable changes (3)
  • Sources/Cloud/CloudTreeOutlineView.swift
  • cmuxTests/CloudTreeNativeDragOwnershipTests.swift
  • Sources/Cloud/MachinesPanelView.swift

Included review availability: Your plan provides up to 10 included reviews per hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The Cloud machine UI no longer exposes disk resizing. The resize action is removed from machine row actions and command binding. New tests verify the remaining context-menu verbs and selected action wiring.

Changes

Cloud disk resize removal

Layer / File(s) Summary
Remove disk resize action
Sources/Cloud/CloudTreeOutlineView.swift, Sources/Cloud/MachinesPanelView.swift
The machine context menu no longer includes the “Increase Disk” submenu. MachineRowActions and its command binding no longer provide disk resizing.
Validate remaining machine actions
cmuxTests/CloudTreeMachineMenuTests.swift, cmuxTests/CloudTreeNativeDragOwnershipTests.swift, cmux.xcodeproj/project.pbxproj
New tests verify the supported menu verbs and selected action closures. The Xcode project includes the test source, and existing fixtures omit the removed closure.

Priority: ⬇️ Low — Defer this narrow Cloud sidebar cleanup because it only removes an unsupported disk-resize menu action while preserving backend paths and other machine actions.

Estimated code review effort: 2 (Simple) | ~10 minutes

Severity of issue fixed: Low

Merge Risk: ⚪ Minimal · up to 3e2cd

Cloud machine context menus no longer offer unsupported disk resizing, while supported machine actions remain available and covered. No current merge-blocking risk is identified.

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 1 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The pull request satisfies issue #12156 by removing the disk-resize menu and UI wiring, preserving backend APIs, initial resource selection, and read-only disk statistics, and adding behavior-level co…
Out of Scope Changes check ✅ Passed The changes remain within scope. The test file and Xcode project wiring directly support regression coverage, and no unrelated backend, CLI, localization, or resource-profile changes were introduced.
Cmux Swift Actor Isolation ✅ Passed PASS. The production diff only removes the disk-resize submenu and the existing MachineRowActions.resizeDisk closure and launcher. It adds no model, service protocol, Sendable reference type, logg…
Cmux Swift Blocking Runtime ✅ Passed PASS. The production Swift diff only removes the disk submenu and the resizeDisk action wiring: 0 additions and 27 deletions. No changed Swift lines add semaphores, waits, sleeps, delayed dispatch, …
Cmux Browser Automation Off-Main ✅ Passed PASS: The pull request does not change browser socket automation. The diff from origin/main contains only Cloud machine menu/action files, the Xcode project, and Cloud tests. It does not modify Source…
Cmux Expensive Synchronous Load ✅ Passed PASS: The production Swift diff only removes the machine-menu disk-resize block and the MachineRowActions.resizeDisk closure. It adds no loader, parser, directory scan, syscall loop, or synchronous …
Cmux Cache Substitution Correctness ✅ Passed PASS — The production diff only removes the Increase Disk menu block and the UI-only MachineRowActions.resizeDisk closure. It adds no cached or opportunistic read and changes no persistence, histo…
Cmux No Hacky Sleeps ✅ Passed The PR changes only Swift source/tests and Xcode project metadata. The only non-Swift change registers a Swift test file in cmux.xcodeproj/project.pbxproj; it adds no runtime code or delay. No added…
Cmux Algorithmic Complexity ✅ Passed PASS: The PR introduces no algorithmic-complexity violation. The production diff only removes the fixed-size [64, 128, 256] disk menu loop and its resizeDisk action wiring from `Sources/Cloud/Clou…
Cmux Swift Concurrency ✅ Passed PASS. The PR adds no legacy async pattern covered by the check. The production diff only removes the disk-resize menu block and its closure wiring. The new test uses @MainActor and `NSApp.sendAction…
Cmux Swift @Concurrent ✅ Passed PASS: The PR diff introduces no nonisolated async functions, @concurrent annotations, or async heavy helpers/call sites. It only removes the synchronous disk-resize menu and @MainActor closure, …
Cmux Swift Package Boundaries ✅ Passed PASS. The production diff only removes AppKit context-menu wiring in CloudTreeOutlineView and the UI closure/launcher wiring in MachineRowActions. These are small UI/app-target glue, which the bou…
Cmux Swiftpm Lockfiles ✅ Passed PASS. The pull request has no SwiftPM dependency or package-reference change. Its only cmux.xcodeproj/project.pbxproj change adds CloudTreeMachineMenuTests.swift as a test file and source. The dif…
Cmux Swift Logging ✅ Passed PASS — The complete pull-request diff adds no print, debugPrint, dump, NSLog, ad hoc file/stdout logging, Logger declaration, or sensitive-data logging. Production changes only remove the disk…
Cmux User-Facing Error Privacy ✅ Passed PASS. The production diff only removes the disk-resize submenu and its launcher closure. It adds no user-facing error, alert, command output, API error body, or recovery copy. The new provider and mac…
Cmux Full Internationalization ✅ Passed PASS: The production diff only removes the localized “Increase Disk” menu items and the related resizeDisk UI closure. It adds no user-facing Swift text, string-catalog entry, web message, locale, o…
Cmux Swiftui State Layout ✅ Passed PASS: The pull request introduces no prohibited SwiftUI state or layout pattern. The only added Swift file is an AppKit/Testing menu test. The Cloud tree change is inside `CloudTreeOutlineView: NSView…
Cmux Architecture Rethink ✅ Passed PASS. The PR removes an unsupported menu branch and its UI closure wiring. The production diff adds no sleeps, delayed dispatch, polling, locks, observers, caches, flags, side channels, duplicate acti…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS. The PR changes only Cloud menu/action wiring, test fixtures, and test-target registration. The complete diff from origin/main adds no NSWindow, NSPanel, NSWindowController, SwiftUI Window/Window…
Cmux Source Artifacts ✅ Passed PASS. The pull-request range changes five paths: two Swift production files, one Swift test, one existing test fixture update, and cmux.xcodeproj/project.pbxproj. The new test is intentional hand-wr…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS. The full PR diff from origin/main adds no lines under Sources/. It only removes 20 lines from Sources/Cloud/CloudTreeOutlineView.swift and 7 lines from `Sources/Cloud/MachinesPanelView.swift…
Cmux No Ambient Global State ✅ Passed PASS. The PR adds no ambient global state. Relative to origin/main, the production Swift changes only delete the machine disk submenu and the MachineRowActions.resizeDisk closure and launcher. The o…
Title check ✅ Passed The title clearly and concisely describes the main change: removing the unsupported Increase Disk machine action from the Cloud sidebar.
Description check ✅ Passed The description is complete and relevant. It explains what changed and why, identifies preserved functionality, documents regression tests and validation, and includes the required review and checklis…
Full details: Docstring Coverage

Explanation

Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 1 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-12156-cloud-sidebar-disk-resize

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@austinywang
austinywang merged commit 6bb0141 into main Sep 8, 2026
23 of 28 checks passed
austinywang added a commit that referenced this pull request Sep 8, 2026
Brings in #12164, #11976 (semantic agent notification admission; the VM
remote-workspace resolver moves out of CMUXCLI+VMTui.swift into
VMRemoteWorkspaceResolver.swift), #12155, #12145, #12163 (main also removed
the Increase Disk action), #12140.

Conflicts resolved:
- CLI/CMUXCLI+VMTui.swift: main relocated the resolver block this branch
  still carried; main's copy is a superset (unattributed-match handling,
  canonical-id preference), so the block is dropped in favour of the
  typealiases main left behind. No remaining old-style call sites.
- cmuxTests/CmuxTuiSurfaceProviderTests.swift: main's
  VMRemoteWorkspaceResolver() call form; the unused RemoteRoutingCLI
  typealias goes with it, as on main.
- Resources/Localizable.xcstrings: union of both sides' keys.
- cmux.xcodeproj/project.pbxproj re-normalized (workflow-guard-tests had
  flagged the earlier auto-merge as not normalized).

Claude-Session: https://claude.ai/code/session_01QBDetMeke87gUWzvok9LWr
aerickson pushed a commit to aerickson/cmux that referenced this pull request Sep 13, 2026
…anaflow-ai#12163)

* Cloud tree: cover the machine context menu's verb list

Regression test for manaflow-ai#12156: a machine row's context menu offered an
"Increase Disk" submenu whose targets fired a disk resize the product
does not support end to end. Pins the exact verbs a ready machine
offers, that none of them opens a submenu, and that Open Shell,
Checkpoint, and Delete still reach their closures. Red until the
submenu is removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BfSprZWdTSfqAyvZfvXok

* Cloud sidebar: remove the unsupported Increase Disk machine action

The machine context menu offered an "Increase Disk" submenu (64, 128,
256 GiB) that launched `cmux vm resize`, but disk resize is not a
supported product capability end to end yet, so the sidebar advertised
a dead end (manaflow-ai#12156). Drop the submenu and the UI-only `resizeDisk`
closure in MachineRowActions. VMClient.resizeDisk and the `vm.resize`
socket verb stay for the CLI/backend path; read-only disk stats and New
Machine's initial disk profile are untouched.

The three catalog keys the removed code used were never added to
Localizable.xcstrings, so no localization entries change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BfSprZWdTSfqAyvZfvXok

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
Preview – cmux41 — 3e2cd6ba Deployed Sep 8, 2026 by vercel[bot]
Preview – cmux166 — 3e2cd6ba Deployed Sep 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cloud sidebar: remove unsupported disk resize action

1 participant