Conversation
…de false positive Skip the "Which platform(s) would you like to set up host tools for?" prompt when every relevant platform is already detected as ready. Detection matches the existing setup_* checks: - Android: SDK path resolves AND scrcpy on PATH - iOS (mac only): xcrun -f simctl succeeds AND applesimutils on PATH When all relevant platforms are ready the installer prints one "✓ <Platform> tools detected — skipping setup." line per platform, sets PLATFORM_CHOICE so run_doctor still verifies, and proceeds. Partial states (e.g. Android ready, iOS not) keep the existing prompt — partial cases are uncommon and tracking them adds surface area. Also fixes a false-positive in setup_ios: the previous check `xcode-select -p` succeeded for both full Xcode AND Command Line Tools-only installs, so users with CLT (often installed for git) saw a misleading "✓ Xcode detected" before the install failed later. `xcrun -f simctl` is the canonical Xcode-vs-CLT signal — simctl ships with Xcode and is absent from CLT-only installs, and `xcrun -f` is a path lookup so it doesn't trigger a license check. The "install Command Line Tools" branch in setup_ios is removed — CLT alone never satisfies iOS testing, so suggesting it as a fix was wrong. Error messages now distinguish the CLT-only case (suggest `sudo xcode-select -s` after installing Xcode) from the nothing-installed case (install Xcode from the App Store). Same skip behavior in install.ps1 (Android-only on Windows). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Summary
Two related installer changes.
1. Skip the platform prompt when host tools are already installed. Previously the "Which platform(s) would you like to set up host tools for?" prompt fired every time, even on a re-run where Android Studio + scrcpy + Xcode + applesimutils were all already present.
Now the installer runs a precheck before the prompt:
ANDROID_HOME/ANDROID_SDK_ROOT//Applications/Android Studio.app) ANDscrcpyon PATH.xcrun -f simctlsucceeds ANDapplesimutilson PATH.When every relevant platform is ready, the installer prints one line per platform (
✓ <Platform> tools detected — skipping setup.), setsPLATFORM_CHOICEsorun_doctorstill verifies, and proceeds. Partial states (e.g. Android ready, iOS not) keep the existing 1/2/3 prompt — partial cases are uncommon and dynamically rewriting the menu adds more surface area than it removes.2. Fix the Xcode false-positive in
setup_ios. A user reported "✓ Xcode detected" on a machine that didn't actually have Xcode. The cause:xcode-select -psucceeds for both full Xcode AND Command Line Tools-only installs (CLT is the smaller install you get when yougitand macOS prompts you to install developer tools — many devs have CLT without ever installing Xcode).Replaced the check with
xcrun -f simctl.simctlis the iOS Simulator control tool, ships with Xcode, and is absent from CLT-only installs.xcrun -fis a path lookup so it doesn't trigger a license check. The misleading "Installing Xcode Command Line Tools..." branch is removed — CLT alone never satisfies iOS testing.When the new check fails, the error message distinguishes two cases:
xcode-select -preturns nothing → "Install Xcode from the App Store, launch it once to accept the license."xcode-select -preturns a CLT path → "iOS simulators need the full Xcode app, not just Command Line Tools. Install Xcode and runsudo xcode-select -s /Applications/Xcode.app/Contents/Developer."Same
xcrun -f simctltest feeds bothsetup_iosand the newios_readyprecheck, so detection and setup agree.Changes
scripts/install.shandroid_ready/ios_ready/maybe_skip_platform_setuphelpers.main()callsmaybe_skip_platform_setupand bypassesprompt_platform+setup_host_toolson success.setup_iosswitched fromxcode-select -ptoxcrun -f simctl; CLT-vs-nothing branched error messages; removed thexcode-select --installbranch.scripts/install.ps1Test-AndroidReadyhelper.Invoke-MainskipsRead-AndroidPrompt+Install-AndroidwhenTest-AndroidReadyis true; doctor still runs.Test plan
✓ detectedlines print, doctor runs againstall.setup_iosprints "Xcode app not active" with thexcode-select -sinstruction, instead of "✓ Xcode detected".setup_iosprints "Xcode not found" with App Store + license instructions.✓ Android tools detectedline, doctor runs againstandroid.android.--ci/-CImode: section is unchanged (already short-circuited before this code path).🤖 Generated with Claude Code