Skip to content

fix(ios): use focused still photos for pairing onboarding - #14266

Merged
azooz2003-bit merged 2 commits into
mainfrom
fix-ios-onboarding-pairing-photo
Sep 24, 2026
Merged

azooz2003-bit merged 2 commits into
mainfrom
fix-ios-onboarding-pairing-photo

Conversation

@azooz2003-bit

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

Copy link
Copy Markdown
Collaborator

Pairing onboarding now shows a still photo with the Mobile and Enable iOS pairing headers fully visible, clipped to a rounded rectangle with a 12-point corner radius. The repeating zoom is removed, and the parent views no longer carry unused animation state.

Recaptured the Mac Settings photo with the Settings window focused in the app's actual Light and Dark theme modes. Both variants use the same crop and preserve the existing aspect ratio. The full source captures show colored window buttons and the blue Mobile sidebar selection; no color adjustment or image upscaling was applied.

Light Dark
Focused Light Settings photo Focused Dark Settings photo

Validation:

  • Swift syntax, package groups, feature flags, image dimensions, appearance mapping, and matching resource copies passed.
  • Exact-source device and simulator apps built successfully (tag pairph, controller job b8453bc20f8554a5f97c6192). Verified app identities, source SHA, both compiled luminosity variants, matching photo pixels, and worker cleanup.
  • Onboarding check passed: 1 test, 0 failures. Inspected the current screenshot and recording: both headers and the complete description are visible, with the same photo scale in the sampled frames.
  • The additional light/dark and header-text check verified both appearance variants and the complete photo text, then failed on a separate Settings > What's New page title: “Action Required: Enable iOS pairing on your Mac” is clipped after “on”. The saved screenshot confirms the title clipping; this PR does not change that title layout.
  • Reviewed Apple's image presentation guidance.

Physical iPhone installation remains unverified because the companion Mac build was blocked by a Sentry dependency download. This change does not modify Mac code.

@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 24, 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: 50c15975-552e-4ed9-9f31-71e27b674712

📥 Commits

Reviewing files that changed from the base of the PR and between e3ac98d and 4b7c9bb.

📒 Files selected for processing (3)
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingFlowView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingPairingSettingsScreenshot.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingPairingView.swift

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


📝 Walkthrough

Walkthrough

The pairing onboarding view no longer passes an activity flag to the settings screenshot. The screenshot no longer uses activity or environment state for animation. Its image uses scaled-to-fit sizing.

Changes

Pairing screenshot

Layer / File(s) Summary
Remove pairing screenshot activity state
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingPairingSettingsScreenshot.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingPairingView.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/OnboardingFlowView.swift
The screenshot no longer stores activity or reads motion and scene state. Its image now uses .scaledToFit() and has no zoom animation. The pairing view and flow no longer pass an activity flag.

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

Merge Risk: ⚪ Minimal · up to 4b7c9

The pairing screen now shows the full settings capture without the zoom animation, with no established change to instruction layout or externally usable API. No actionable issue remains that should block merging.

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 3 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 onboarding artwork and view parameters. It does not modify Cloud terminal creation, cmux-tui transport, manual renderer admission, input routing, snapshots, aut…
Cmux Swift Actor Isolation ✅ Passed PASS: The PR changes only three internal SwiftUI View structs and removes pairing artwork animation state. The diff adds no Codable, Identifiable, Sendable, service protocol, shared mutable referenc…
Cmux Swift Blocking Runtime ✅ Passed PASS: The review-scoped diff removes the pairing screenshot's repeating keyframe animation and removes the isActive plumbing. It adds no semaphore, blocking wait, sleep, delayed dispatch, polling, m…
Cmux Browser Automation Off-Main ✅ Passed PASS. The PR changes only iOS onboarding SwiftUI views. The authoritative diff contains no browser socket commands, WebKit/AppKit automation routing, worker-lane changes, or policy-test changes. The b…
Cmux Expensive Synchronous Load ✅ Passed PASS: The pull request only changes onboarding image presentation. It removes the keyframe animation and activity/environment state, switches to .scaledToFit(), and updates initializer calls. The au…
Cmux Cache Substitution Correctness ✅ Passed PASS: The diff only removes a SwiftUI activity flag and keyframe zoom from the pairing artwork, then changes the asset presentation to .scaledToFit(). It does not replace an authoritative read with …
Cmux No Hacky Sleeps ✅ Passed PASS. The pull request changes only SwiftUI files under Packages/iOS. It removes a presentation-only keyframeAnimator and the related activity state; it adds no TypeScript, JavaScript, shell, or n…
Cmux Algorithmic Complexity ✅ Passed PASS: The diff only changes the iOS onboarding view hierarchy and removes a repeating image animation. It adds no loops, collection scans, sorting, filtering, joins, or batch processing. The changed p…
Cmux Swift Concurrency ✅ Passed PASS. The diff only removes the pairing view's isActive plumbing and its repeating keyframeAnimator, then changes the image from scaledToFill() to scaledToFit(). It adds no DispatchQueue, Co…
Cmux Swift @Concurrent ✅ Passed PASS. The pull request only removes the pairing artwork animation and its isActive plumbing. The zero-context diff introduces no async, nonisolated, @concurrent, actor, or heavy-work call-site…
Cmux Swift Package Boundaries ✅ Passed The diff only changes SwiftUI onboarding presentation in the existing CmuxMobileShellUI package. It removes a view animation, changes image scaling, and removes the isActive view parameter. This i…
Cmux Swiftpm Lockfiles ✅ Passed The pull request changes only three Swift source files under Packages/iOS/CmuxMobileShellUI/Sources. The authoritative diff contains no Package.swift, Package.resolved, .gitignore, workflow, o…
Cmux Swift Logging ✅ Passed The diff changes only onboarding view construction and artwork presentation. It adds no print, debugPrint, dump, NSLog, file/stdout logging, or Logger declarations, and it does not materiall…
Cmux User-Facing Error Privacy ✅ Passed The PR changes only pairing artwork presentation and removes the isActive plumbing. Added content is a still-image comment, .scaledToFit(), and constructor updates. No user-facing error, alert, co…
Cmux Full Internationalization ✅ Passed PASS: The PR changes only Swift view wiring, image fitting, animation removal, and a developer-facing documentation comment. No user-facing string, string catalog, Info.plist entry, web UI, metadata, …
Cmux Swiftui State Layout ✅ Passed PASS. The authoritative diff adds no ObservableObject, @Published, GeometryReader, lazy/list row store reference, or render-time state mutation. It removes the pairing screenshot animation and activit…
Cmux Architecture Rethink ✅ Passed PASS: This is a small local UI correctness change. The diff removes the pairing screenshot's isActive state, scene lifecycle dependencies, and repeating keyframeAnimator; it adds no sleeps, delaye…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The PR changes only SwiftUI onboarding content. It removes the pairing screenshot animation and the isActive plumbing in OnboardingFlowView, OnboardingPairingView, and `OnboardingPairingSe…
Cmux Source Artifacts ✅ Passed The pull request changes only three hand-written Swift source files under the iOS UI package. The diff adds no logs, screenshots, recordings, temporary or cache directories, build output, dependency c…
Cmux No Test Or Debug Seam In Production Source ✅ Passed The reviewed changes do not add a test or debug seam. They remove the isActive parameter, motion-related environment properties, and keyframe animation from the production onboarding views. The diff…
Title check ✅ Passed The title clearly identifies the main change: replacing the pairing onboarding animation with focused still photos.
Description check ✅ Passed The description explains the behavior change, implementation details, validation results, screenshots, and the remaining physical-device limitation. It does not use the template's exact Summary, Testi…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • 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.

@cursor

cursor Bot commented Sep 24, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot 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.

@azooz2003-bit azooz2003-bit changed the title fix(ios): keep pairing onboarding artwork still fix(ios): use focused still photos for pairing onboarding Sep 24, 2026
@azooz2003-bit
azooz2003-bit merged commit 150ba9f into main Sep 24, 2026
52 checks passed
@azooz2003-bit
azooz2003-bit deleted the fix-ios-onboarding-pairing-photo branch September 24, 2026 20:26
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 24, 2026
5eb6722 Scope shell command history per terminal surface (manaflow-ai#13851)
f6b3f4a ci: keep the runner account out of the SwiftPM manifest cache key (manaflow-ai#14282)
150ba9f fix(ios): use focused still photos for pairing onboarding (manaflow-ai#14266)

# Conflicts:
#	.github/workflows/ci-guards.yml
#	.github/workflows/seed-derived-data.yml
#	.github/workflows/seed-swiftpm-manifests.yml
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