Skip to content

Cloud: rebake the devbox ladder with cmux-tui 3412812 - #15323

Merged
lawrencecchen merged 1 commit into
mainfrom
feat-cloud-rebake-tui-3412812
Sep 28, 2026
Merged

lawrencecchen merged 1 commit into
mainfrom
feat-cloud-rebake-tui-3412812

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Rebakes the Freestyle devbox ladder so that new Cloud machines run cmux-tui 3412812, which contains both fixes:

Promoted with bun run devbox:promote -- freestyle --slug cmux-devbox-tui3412812:

  • Source: main at f4115d7, epoch 2026-09-10-r2 (unchanged), production Freestyle account.
  • CMUX_VM_CMUX_TUI_MANIFEST_URL pinned to https://files.cmux.com/cmux-tui/3412812eae761215cb3fb99ec7d4a078ecd296dc/manifest.json.
  • verify-devbox-image.ts: ALL CHECKS PASSED.
  • Sizes: sm sh-74d661e18e914d47b053f3cb0f474a83 (the bake), md sh-c7d5ac3b37624a01855367f543f94657, lg sh-f05fe8109a2f4adcb8babd8ea3b9598c, lgx sh-54e085020d3f4e818e085a28d234c3c0, xl sh-4639feb3405244fd86056481fb69028e, 2xl sh-2e516b4e4dee4bb19e5742d58e8df616.
  • Both kinds (desktop, base) are recorded. The previous ed554c8 rows stay in the manifest, demoted, for rollback.

Extra live check on a new sm machine from this image:

  • The daemon sha matches 3412812, and the first terminal works.
  • After a daemon restart (SIGTERM), workspace.create still works and no template terminal ... not published yet lines appear.
  • Titles set before and after the restart both persist.

bun run devbox:manifest:check passes, and tests/vm-image-manifest.test.ts passes 22 of 22.

Running production machines were upgraded in place to the same build with web/scripts/upgrade-fleet-cmux-tui.ts --commit 3412812…: 8 of 8 OK, no terminal lost, no wedge after the upgrade. The canary was a short-lived VM on the production account.

Merging deploys web/, and after that New Machine uses these snapshots.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Rebakes the Freestyle devbox ladder on cmux-tui 3412812, fixing terminal titles not surviving reattach and the snapshot template terminal not being restored in place after a daemon restart. The previous ed554c8 build wedged workspace.create after any restart.

Manifest changes

  • Adds new desktop and base entries for all six sizes and pins the new daemon via CMUX_VM_CMUX_TUI_MANIFEST_URL.
  • Makes the new entries the defaults and demotes the old ed554c8 rows so they stay available for rollback.
  • New machines created after this merge use the new snapshots; validation and manifest checks pass.

Written for commit 147c881. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Updates
    • Freestyle devboxes now default to refreshed desktop and base images across the listed sizes. The small base image used for local development is also updated. These images include newer daemon and image versions.

New machines get the daemon with the OSC title replay fix (#15163) and the
template restore-in-place fix (#15200). Promoted with devbox:promote from
f4115d7 under the production Freestyle account, cmux-tui pinned by
CMUX_VM_CMUX_TUI_MANIFEST_URL.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@lawrencecchen
lawrencecchen enabled auto-merge (squash) September 28, 2026 10:45
@lawrencecchen
lawrencecchen deployed to cloud-vm-image-checks September 28, 2026 10:45 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown
Contributor

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

@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: a40ed668-ba82-4597-be60-bf7d095e6fee

📥 Commits

Reviewing files that changed from the base of the PR and between 1755ea8 and 147c881.

📒 Files selected for processing (1)
  • web/services/vms/images/manifest.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The manifest removes default flags from the existing Freestyle image records and adds desktop and base records for the tui3412812 image set. The new records are marked as defaults across the listed sizes. The small base image is also marked as the local-development default.

Changes

Freestyle image defaults

Layer / File(s) Summary
Update Freestyle image defaults
web/services/vms/images/manifest.json
Existing Freestyle desktop and base records are no longer marked as defaults. New desktop and base records for tui3412812 are added across the listed sizes and marked as defaults. The small base record is also marked as the local-development default.

Priority: ➖ Normal

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

Change: Bug fix

Suggested reviewers: austinywang

Merge Risk: ⚪ Minimal · up to 147c8

The new image set becomes the default without an identified selection conflict. The change is mergeable after normal checks.

Architecture Summary

Architecture risk: 🔵 Low · up to 147c8

The change affects 1 system.

Changed systems: web

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — web (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in web/services/vms/images/manifest.json: The defaultForKind value changes from true to false for the existing Freestyle desktop image records in sizes sm, md, lg, lgx, xl, and 2xl.
  • observed — Modified behavior in web/services/vms/images/manifest.json: The existing small Freestyle base record changes defaultForKind and defaultForLocalDev from true to false; its size and base configuration remain unchanged.
  • observed — Modified behavior in web/services/vms/images/manifest.json: The existing md Freestyle base record changes defaultForKind from true to false.
  • observed — Modified behavior in web/services/vms/images/manifest.json: The existing lg Freestyle base record changes defaultForKind from true to false.

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Cmux User-Facing Error Privacy ❌ Error The manifest changes the production default images to new Freestyle snapshot IDs. The VM resolver selects these IDs for new machines, and the product CLI exposes the selected image in user-facing co… Do not expose provider snapshot IDs or provider names in human-facing CLI output. Return and display only safe product terms, such as the machine kind and size. Keep the selected image ID and provider in operator-only logs and internal tele…
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change: rebaking the Cloud devbox ladder with cmux-tui 3412812.
Description check ✅ Passed The description clearly explains the problem, resulting behavior, manifest changes, validation results, live checks, and production upgrade results. It omits the template headings for Testing, Changel…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS: The PR changes only web/services/vms/images/manifest.json. The diff adds 12 Freestyle image records for cmux-tui 3412812 and changes default flags on 12 rollback records. It does not change …
Cmux Swift Actor Isolation ✅ Passed The pull request changes only web/services/vms/images/manifest.json. The authoritative diff contains no Swift files or Swift declarations. Therefore, it does not introduce or worsen any Swift 6 actor …
Cmux Swift Blocking Runtime ✅ Passed PASS: The PR changes only web/services/vms/images/manifest.json (+443/-12). It contains no Swift files or added Swift synchronization code. The blocking-runtime check is therefore not applicable.
Cmux Browser Automation Off-Main ✅ Passed PASS. The pull request changes only web/services/vms/images/manifest.json, a data-only JSON manifest. The authoritative diff contains no changes to Sources/TerminalController.swift, `ControlComman…
Cmux Expensive Synchronous Load ✅ Passed The authoritative PR diff changes only web/services/vms/images/manifest.json. It contains no Swift changes and no agent-history, transcript, JSONL, workspace, panel, tab, window, or socket-handler c…
Cmux Cache Substitution Correctness ✅ Passed PASS: The pull request changes only web/services/vms/images/manifest.json. The diff adds and updates image manifest metadata, including default flags and image identifiers. It does not change Swift,…
Cmux No Hacky Sleeps ✅ Passed PASS. The PR changes only the declarative web/services/vms/images/manifest.json. The diff adds or updates image metadata and default flags, with no TypeScript, JavaScript, shell, or build/runtime sc…
Cmux Algorithmic Complexity ✅ Passed The PR changes only web/services/vms/images/manifest.json. It adds 12 fixed-size image metadata records (six desktop and six base) and updates default flags on existing records. It introduces no…
Cmux Swift Concurrency ✅ Passed The pull request changes only web/services/vms/images/manifest.json. The diff contains image metadata and default flags, with no Swift source or Swift concurrency patterns. The custom check is therefo…
Cmux Swift @Concurrent ✅ Passed The pull request changes only web/services/vms/images/manifest.json. It introduces no Swift files, Swift code, async functions, or call-site changes. Therefore the Swift @concurrent check is not a…
Cmux Swift Package Boundaries ✅ Passed PASS: The pull request changes only web/services/vms/images/manifest.json. It introduces no Swift, SwiftPM, or app-target source changes, so the Swift package boundary rule does not apply.
Cmux Swiftpm Lockfiles ✅ Passed PASS. The authoritative PR diff changes only web/services/vms/images/manifest.json. It contains no SwiftPM package, Xcode project, .gitignore, workflow, or dependency changes, so the SwiftPM lockf…
Cmux Swift Logging ✅ Passed The pull request changes only web/services/vms/images/manifest.json. It adds and updates image metadata, with no Swift files or Swift logging statements changed. The Swift logging check is therefore…
Cmux Full Internationalization ✅ Passed The PR changes only web/services/vms/images/manifest.json. The additions are snapshot IDs, version names, hashes, sizes, validation/build metadata, default flags, and operational bake notes. The res…
Cmux Swiftui State Layout ✅ Passed The pull request changes only web/services/vms/images/manifest.json. The authoritative diff contains no Swift, Xcode, storyboard, or XIB files. Therefore, it introduces no SwiftUI state-layout chang…
Cmux Architecture Rethink ✅ Passed The pull request changes only web/services/vms/images/manifest.json. The diff contains image metadata and default flags, with no Swift files or Swift lifecycle, synchronization, observer, bridge, or…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The pull request changes only web/services/vms/images/manifest.json. The authoritative diff contains no Swift, storyboard, or XIB changes and introduces no NSWindow, NSPanel, `NSWindowCont…
Cmux Source Artifacts ✅ Passed PASS. The only changed path is web/services/vms/images/manifest.json. The repository identifies this file as the source of truth for promoted Cloud devbox images, and the promotion script explicitly…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS. The authoritative pull-request diff changes only web/services/vms/images/manifest.json. It contains no Swift files under a production Sources/ path, so the custom check does not apply and no…
Full details: Cmux User-Facing Error Privacy

Explanation

The manifest changes the production default images to new Freestyle snapshot IDs. The VM resolver selects these IDs for new machines, and the product CLI exposes the selected image in user-facing command output (cmux vm ls and cmux vm new --detach). The changed path is concrete: manifest.json defaults → /api/vm image field → VMClientSocketCommands → CLI lines such as image: sh-74d.... This exposes provider-specific snapshot identifiers to cmux users, which the rule prohibits.

Resolution

Do not expose provider snapshot IDs or provider names in human-facing CLI output. Return and display only safe product terms, such as the machine kind and size. Keep the selected image ID and provider in operator-only logs and internal telemetry. Preserve the manifest IDs for server-side image selection.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

@lawrencecchen
lawrencecchen merged commit fc882fe into main Sep 28, 2026
73 of 74 checks passed
@lawrencecchen
lawrencecchen deleted the feat-cloud-rebake-tui-3412812 branch September 28, 2026 10:49
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 147c881ded: every check was green at merge (21 verified; 18 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 28, 2026
0c753fe ci: give each Python lane test an empty Foundation home (manaflow-ai#15289)
62cde14 Place config error notice below the tab bar (manaflow-ai#15218)
436909b Keep an exited terminal's tab edge consistent with its revision (manaflow-ai#15205)
fc882fe Cloud: rebake the devbox ladder with cmux-tui 3412812 (manaflow-ai#15323)
8e6357b Add pr-media.py for putting a clip or screenshot on a PR (manaflow-ai#15295)
1755ea8 ci: place release-build and main's side lanes on the owned minis (manaflow-ai#14797)
447eb04 Keep focused-pane notifications silent unless opted in (manaflow-ai#15233)
f66d18a Dial every discovered Mac concurrently on iOS (manaflow-ai#15127)
dc5a21a ci: place the Iroh release gate's Tailscale job on the owned minis (manaflow-ai#15139)
3887653 docs: hide the Cloud beta note on nightly docs (manaflow-ai#15317)
f4115d7 Center cloud row icon glyphs by their visible pixels (manaflow-ai#15149)
8714160 Let dogfood tours hold modifiers while clicking (manaflow-ai#15239)

# Conflicts:
#	.github/workflows/ci-guards.yml
#	.github/workflows/ci-macos.yml
#	.github/workflows/ci-owned-pool-rescue.yml
#	.github/workflows/ci.yml
#	.github/workflows/iroh-release-gate.yml
#	.github/workflows/remote-daemon.yml

This branch was successfully deployed

1 active deployment
cloud-vm-image-checks — 147c881d Deployed Sep 28, 2026 by lawrencecchen via reachable #553
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.

1 participant