Skip to content

Cloud: the NEXT nightly passes the Mac's login by default; the shipping app points at the machine's sign-in - #30204

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cloud-transfer-nightly-dogfood
Nov 1, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cloud-transfer-nightly-dogfood

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up to #30183. Leo: "IN THE ACTUAL PRODUCTION APP IT MAY BE AGAINST TOS" (copying the Mac's Claude/Codex login to a Cloud machine). That line is about the shipping production app. The NEXT nightly is dogfood (only the team uses NEXT Cloud), so it keeps the transfer on by default, as Debug builds do.

What changed

  • CloudStartChat.passesHarnessLogin(isDogfoodBuild:setting:) = setting ?? isDogfoodBuild. The process reads the build type from the existing DevTools.isEnabled (a Debug compile, or a com.cmuxterm.app.nightly[.<tag>] bundle, which includes the NEXT nightly com.cmuxterm.app.nightly.cmux-next). The cmux.cloud.passHarnessLogin default still wins when set.
  • New-workspace setup: when the switch is off (the shipping app), the note says "Sign in to Claude or Codex on the VM itself: its chat offers a one-click sign-in." It used to say "Provider credential setup is unavailable with this Cloud connection." This is the new CredentialAvailability.signInOnMachine case, with translations for all 21 locales. This was a review follow-up on Cloud: copying the Mac's Claude/Codex login to a machine is DEV and dogfood only, card recovery included #30183.
  • Tests: the nightly, DEV, shipping and RC bundles under the default; the switch's truth table; and the wizard's resolve with the switch off (personal VM vs team VM).

Risk

NEXT nightly users get the Mac-login transfer again from the card, the start-chat pass and the new-workspace setup, as before #30183. Release and RC builds stay off. To make a nightly behave like production: defaults write com.cmuxterm.app.nightly.cmux-next cmux.cloud.passHarnessLogin -bool NO.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

The NEXT nightly build passes the Mac's Claude/Codex login to Cloud machines by default again; the shipping app keeps the transfer off.

  • Dogfood builds (Debug compiles and NIGHTLY bundles) default the cmux.cloud.passHarnessLogin switch on; release and RC builds default it off, and the explicit setting still wins.
  • With the switch off, new-workspace setup now directs users to sign in on the VM itself instead of saying provider credential setup is unavailable.

Written for commit 322b196. Summary will update on new commits.

View guided diff Turn on auto-fix

… points at the machine's sign-in

The NEXT nightly is dogfood (only the team uses NEXT Cloud), so the
cmux.cloud.passHarnessLogin switch now defaults on in any DevTools.isEnabled
build (a Debug compile or a NIGHTLY bundle), off in the shipping app; the
setting still wins. With the switch off, the new-workspace setup says to
sign in on the VM from its chat instead of "Provider credential setup is
unavailable with this Cloud connection." (review follow-up on #30183).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 322b196: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr30204 -f ref=cloud-transfer-nightly-dogfood -f platform=macos -f backend_mode=local

Not verified: macOS jobs did not run: compile and app tests were skipped on 322b196925; ci-status is green without them.

CI passes on 322b196925 (run 41276844663 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

Default changes

This pull request changes 1 default at 322b19692545 (what everyone gets without configuring anything):

  • tunable-source.CmuxNextCloudUI/CloudWorkspaceSetupWizard.swift:credentialsNote: "83951fe6a315aacfc0a2eca27ad0c817b029a45c4d86a86b835c2e88ced5dd89" -> "b448ffcdd04f1e0274feb3ea1ccbd3d0496846ea3f562dd554ab34d44c5d2a49"

Signed off on this commit by review (subagent opus-5.5 medium).

Merge receipt: merged as afef751e5732 with these defaults changed, signed off by review (subagent opus-5.5 medium).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 1, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 6 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/CloudStartChatLoginTests.swift">

<violation number="1" location="Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/CloudStartChatLoginTests.swift:22">
P2: This fixture does not test the shipped NEXT DEV build: `com.cmuxterm.app.debug.next` is a Release artifact, but `isDebugBuild: true` makes `DevTools.isAvailable` return true for any bundle. Pass `false` here so the test verifies the bundle-specific dogfood rule and catches regressions that disable login transfer for NEXT DEV.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic


/// The NEXT nightly is dogfood (only the team uses NEXT Cloud), so it passes the login by
/// default like a DEV build; the shipping app does not.
@Test(arguments: [("com.cmuxterm.app.nightly.cmux-next", false, true), ("com.cmuxterm.app.debug.next", true, true),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This fixture does not test the shipped NEXT DEV build: com.cmuxterm.app.debug.next is a Release artifact, but isDebugBuild: true makes DevTools.isAvailable return true for any bundle. Pass false here so the test verifies the bundle-specific dogfood rule and catches regressions that disable login transfer for NEXT DEV.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/CloudStartChatLoginTests.swift, line 22:

<comment>This fixture does not test the shipped NEXT DEV build: `com.cmuxterm.app.debug.next` is a Release artifact, but `isDebugBuild: true` makes `DevTools.isAvailable` return true for any bundle. Pass `false` here so the test verifies the bundle-specific dogfood rule and catches regressions that disable login transfer for NEXT DEV.</comment>

<file context>
@@ -6,14 +7,23 @@ import Testing
+
+    /// The NEXT nightly is dogfood (only the team uses NEXT Cloud), so it passes the login by
+    /// default like a DEV build; the shipping app does not.
+    @Test(arguments: [("com.cmuxterm.app.nightly.cmux-next", false, true), ("com.cmuxterm.app.debug.next", true, true),
+                      ("com.cmuxterm.app", false, false), ("com.cmuxterm.app.rc", false, false)])
+    func dogfoodBundlesPassALoginByDefault(bundleID: String, isDebugBuild: Bool, passes: Bool) {
</file context>
Suggested change
@Test(arguments: [("com.cmuxterm.app.nightly.cmux-next", false, true), ("com.cmuxterm.app.debug.next", true, true),
@Test(arguments: [("com.cmuxterm.app.nightly.cmux-next", false, true), ("com.cmuxterm.app.debug.next", false, true),

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent opus-5.5 medium): SHIP at 322b196

DevTools.isEnabled turns the switch on for the NEXT nightly (and NEXT Stable, com.cmuxterm.app.nightly.cmux-next-stable, also a team build). It stays off for com.cmuxterm.app and .rc. .signInOnMachine is covered by the only switch over CredentialAvailability, and the team-machine case still wins over it. The xcstrings entry is valid and has the same 21 locales as its neighbours. Fleet app compile passed, string catalogs and cmux-tui included (job 950392470dff66bd7579543d). CloudStartChatLoginTests, CloudCredentialRecoveryTests and CloudWorkspaceSetupWizardTests pass.

Follow-ups:

  • Name NEXT Stable in the bundle test and in the doc comment.
  • .unsupportedCloudRoute can no longer be reached from beginWorkspaceSetup; prune it.
  • Check the "one-click sign-in" copy once the machine's sign-in card ships.

@teamleaderleo
teamleaderleo merged commit afef751 into feat-cmux-next Nov 1, 2026
142 of 162 checks passed
@teamleaderleo
teamleaderleo deleted the cloud-transfer-nightly-dogfood branch November 1, 2026 05:33
@lawrencecchen

Copy link
Copy Markdown
Contributor

Leo: this PR made the feat-cmux-next tip red on "CmuxNextApp size cap". check-app-size.sh --base found CmuxNextApp +1 source line (Handlers/CloudHandlers+Account.swift, 403 -> 404), and the arch ratchet reports app_lines +2.

#30223 fixes it without a revert. It moves the pure switch (cmux.cloud.passHarnessLogin and setting ?? isDogfoodBuild) to CloudCredentialTransfer in CmuxNextCloudCredentials. CloudStartChat.passesHarnessLoginHere stays as the one App forwarder, so the behavior does not change. You are credited with Co-authored-by.

The fleet compile and the Cloud login, recovery and wizard suites passed at 37f7da8. The PR has ready-to-land.

For later Cloud work: put new logic in CmuxNextCloud, CmuxNextCloudCredentials or CmuxNextCloudUI, not in CmuxNextApp. The size cap refuses any source-line growth in the App.

teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
lawrencecchen added a commit that referenced this pull request Nov 1, 2026
…30223)

#30204 grew CmuxNextApp by one source line (CloudHandlers+Account.swift
403 -> 404), so check-app-size.sh --base fails on feat-cmux-next tip
afef751 ("CmuxNextApp size cap"; arch-ratchet reports app_lines +2).

The pure part of the Mac-to-machine login switch, its defaults key and
its decision (the setting wins, else on in a dogfood build), now lives on
CloudCredentialTransfer in CmuxNextCloudCredentials, the package that
owns the transfer. The app keeps one forwarder,
CloudStartChat.passesHarnessLoginHere, which passes DevTools.isEnabled
and UserDefaults.standard; every caller and the behavior stay the same.

CmuxNextApp source lines: 117437 at the tip, 117434 here (117436 at the
last green 88dcb89). A new test pins that the switch reads
cmux.cloud.passHarnessLogin from the defaults it is given.

Co-authored-by: Leo <cheerleaderleo@outlook.com>
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
teamleaderleo added a commit that referenced this pull request Nov 1, 2026
…med the gate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 322b1969 Deployed Nov 1, 2026 by teamleaderleo via wait for same-key tree publisher #93897
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants