Fix run-from-source Bluetooth permission trap + 30 s search window (v1.2.1) - #11
Merged
Conversation
….2.1) Reddit user report: only the Accessibility prompt ever appeared, scans always came back empty, and they were watching System Settings → Bluetooth for the controller (where it will never show up). - Detect CBManager.authorization() == denied/restricted when clicking Connect: explain that the permission belongs to Terminal/Python when running from source, with a button opening the Bluetooth privacy pane - Initial search now keeps scanning for 30 s (rounds of 5 s) instead of a single window — no more racing the pairing-mode advertising - Scan failures map to actionable messages (unauthorized → permission steps, powered off → enable Bluetooth) instead of raw bleak errors - "Not found" error and README now state explicitly that the controller never appears in System Settings → Bluetooth, and that the Bluetooth prompt fires on first scan (Terminal owns it in run-from-source) - Tests: scan retry round, error message mapping (52 bridge checks) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses a real-world failure report (Reddit): running from source, the user only ever saw the Accessibility prompt, never the Bluetooth one, and scans silently found nothing. Root cause: in run-from-source mode the Bluetooth TCC permission belongs to Terminal/Python, and the prompt only fires on the first scan — our README claimed both prompts appear at first launch. They were also watching System Settings → Bluetooth, where a BLE client's peripheral will never be listed.
CBManager.authorization()— if denied/restricted, an alert explains the Terminal/Python subtlety and opens the Bluetooth privacy pane directlyTest plan
CBManager.authorization()verified working via pyobjc on a real machine🤖 Generated with Claude Code