Skip to content

iOS: hide browser update hint while reconnecting - #15789

Merged
azooz2003-bit merged 2 commits into
mainfrom
feat-ios-browser-update-warning
Sep 30, 2026
Merged

azooz2003-bit merged 2 commits into
mainfrom
feat-ios-browser-update-warning

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The iOS terminal picker no longer tells users to update cmux while the selected Mac is disconnected or reconnecting. The hint appears only after a connected Mac publishes a capability snapshot that lacks browser streaming.

Testing

  • python3 scripts/verify-local.py --only swift-syntax --swift-changed origin/main
  • python3 scripts/verify-local.py --affected origin/main
  • The focused swift test --package-path Packages/iOS/CmuxMobileShellUI --filter TerminalPickerMenuValueTests cannot run on this Mac because the package is iOS-only; the local package resolver also requires an iOS simulator test lane.

HIG

Changelog

Fixed

  • Hide the browser streaming update hint while a Mac connection is unavailable or reconnecting.

@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 30, 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: 2d9535bc-627e-4740-b40b-d52dbf2a7f8b

📥 Commits

Reviewing files that changed from the base of the PR and between 119fdb0 and 6e4b511.

📒 Files selected for processing (5)
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalPickerMenuContent.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalPickerMenuValue.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift
  • Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalPickerMenuPresentationTests.swift
  • Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalPickerMenuValueTests.swift

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


📝 Walkthrough

Walkthrough

The terminal picker now distinguishes unknown browser-stream support from confirmed unsupported support. It shows the Mac update hint only when capability is known and browser streaming is unsupported.

Changes

Browser-stream update hint

Layer / File(s) Summary
Capability state and hint presentation
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalPickerMenuValue.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalPickerMenuContent.swift, Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalPickerMenuValueTests.swift, Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalPickerMenuPresentationTests.swift
The picker records capability as known when the connection is connected. The update hint requires known, unsupported browser-stream support. Tests cover unknown, unsupported, and supported capability states and menu presentation.

Priority: ⬇️ Low

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

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 6e4b5

The update hint is withheld until the connected Mac’s browser capability is known. No concrete merge-blocking risk remains in the reviewed changes.

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 5 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
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 pull request changes only iOS terminal-picker state, presentation, workspace view wiring, and tests. The diff does not modify Cloud terminal creation, cmux-tui transport, manual renderer adm…
Cmux Swift Actor Isolation ✅ Passed PASS: The production diff only adds a Bool field and a pure computed property to the existing immutable TerminalPickerMenuValue model, and passes that value from WorkspaceDetailView, a SwiftUI U…
Cmux Swift Blocking Runtime ✅ Passed The production diff adds only capability-state data, a computed Boolean, and a conditional menu branch. It adds no semaphores, blocking waits, sleeps, delayed dispatch, timers, polling, main-queue syn…
Cmux Browser Automation Off-Main ✅ Passed PASS: The PR changes only iOS terminal-picker UI state and tests. The authoritative changed-file list contains no Sources/TerminalController.swift or ControlCommandExecutionPolicy.swift changes, a…
Cmux Expensive Synchronous Load ✅ Passed The production diff only adds a Boolean capability-state field, derives showsBrowserStreamUpdateHint, gates the menu item, and reads the existing effectiveConnectionStatus. It adds no agent-histor…
Cmux Cache Substitution Correctness ✅ Passed The diff does not replace a fresh read in a persistence, history, undo, or snapshot path. It adds a connection-known guard for a transient, non-persisted browser update menu hint. The existing capabil…
Cmux No Hacky Sleeps ✅ Passed PASS: The pull request changes only Swift source and Swift test files under Packages/iOS. The custom check applies only to TypeScript, JavaScript, shell, and non-Swift build/runtime changes, so it is …
Cmux Algorithmic Complexity ✅ Passed The production diff adds only scalar capability-state storage, a boolean conjunction, and a conditional menu branch. It adds no loops, collection scans, sorting, filtering, joins, rescans, or slower a…
Cmux Swift Concurrency ✅ Passed The pull request adds only synchronous state and menu logic, plus tests. The new code stores a Boolean capability flag, derives showsBrowserStreamUpdateHint, and gates the existing UI section. The a…
Cmux Swift @Concurrent ✅ Passed The pull-request diff introduces no async, nonisolated async, or @concurrent declarations or call-site changes. It adds synchronous state to TerminalPickerMenuValue, a synchronous `showsBrowse…
Cmux Swift Package Boundaries ✅ Passed PASS. The production changes stay in the existing CmuxMobileShellUI SwiftPM target, not an app-target root Sources/ path. The changed code is terminal-picker UI state and menu wiring: `TerminalPic…
Cmux Swiftpm Lockfiles ✅ Passed PASS: The authoritative PR diff contains only Swift source and test changes under Packages/iOS/CmuxMobileShellUI. It changes no Package.swift, Package.resolved, .gitignore, workflow, Xcode pro…
Cmux Swift Logging ✅ Passed The pull-request diff adds no print, debugPrint, dump, NSLog, ad hoc logging, Logger declaration, or sensitive-data logging. The only NSLog found in a changed production file is an unchanged…
Cmux User-Facing Error Privacy ✅ Passed PASS. The changed production path reaches the iOS terminal picker UI, but it only changes when the existing hint is visible. The text is the generic product copy “Update cmux on your Mac to stream bro…
Cmux Full Internationalization ✅ Passed PASS: The production diff changes only when the existing browser update hint is shown; it adds no user-facing text or localization key. The hint already uses `L10n.string("mobile.macUpdateHint.browser…
Cmux Swiftui State Layout ✅ Passed PASS: The diff adds only an immutable browserStreamSupportKnown value and a derived Boolean. It does not add ObservableObject, @Published, @StateObject, @EnvironmentObject, GeometryReader,…
Cmux Architecture Rethink ✅ Passed PASS. The diff is a small local correctness fix. It adds an immutable menu snapshot value and derives the hint from the existing capability state plus effectiveConnectionStatus. `WorkspaceDetailView…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The pull request changes only iOS terminal-picker state, menu presentation, workspace view wiring, and tests. The authoritative diff adds no NSWindow, NSPanel, NSWindowController, SwiftUI Window, Wind…
Cmux Source Artifacts ✅ Passed All five changed paths are intentional Swift source or test files under Packages/iOS/CmuxMobileShellUI. The diff adds no logs, screenshots, recordings, temporary directories, dependency checkouts, c…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS. The production diff adds browserStreamSupportKnown and showsBrowserStreamUpdateHint to control the user-facing browser update hint. showsBrowserStreamUpdateHint is called by `TerminalPicke…
Title check ✅ Passed The title clearly describes the main behavior change: hiding the browser update hint while the Mac connection is reconnecting.
Description check ✅ Passed The description includes a clear summary, testing commands, the blocked focused test, and a changelog entry. It omits the required demo video or screenshots and the checklist, and it does not explicit…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 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.

@github-actions

Copy link
Copy Markdown
Contributor

Dogfood tours of 6e4b5119

sidebar-and-chrome-tour at 6e4b5119, on its merge edeb88e8 that CI built: not run

skipped: main's build of these inputs is gone or does not load on the UI test Macs, and media never compiles one

Tours are picked by the paths globs in dogfood/scenarios/*.json; a Dogfood-tours: a, b line in the description picks them instead (none turns this off). Look at every frame before merging: a green tour only means no step failed.

@azooz2003-bit
azooz2003-bit merged commit c09d4fe into main Sep 30, 2026
72 of 73 checks passed
@azooz2003-bit
azooz2003-bit deleted the feat-ios-browser-update-warning branch September 30, 2026 03:11
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 6e4b511969: every check was green at merge (19 verified; 17 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 30, 2026
31014dc docs: add CodeRouter documentation in all locales (manaflow-ai#15506)
c09d4fe Merge pull request manaflow-ai#15789 from manaflow-ai/feat-ios-browser-update-warning
6e4b511 fix(ios): hide browser update hint while reconnecting
6ff5683 test(ios): cover browser update hint during reconnect
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