Modernize project for macOS 10.13+ and release v1.2.0#25
Merged
Conversation
- Update deployment target from macOS 10.9 to 10.13 - Fix duplicate InfoPlist.strings build error in project.pbxproj - Replace deprecated CBCentralManagerState enums with CBManagerState - Update NSTask API to use executableURL and launchAndReturnError: - Replace deprecated NSStringPboardType with NSPasteboardTypeString - Replace NSOnState/NSOffState with NSControlStateValueOn/Off - Add NSBluetoothAlwaysUsageDescription for macOS privacy requirements - Configure CocoaPods test target with inherited search paths
- Add CLAUDE.md with codebase guidance for Claude Code - Add .project IDE configuration
- Enable automatic code signing with development team - Change bundle identifier to nyc.welles.BeaconScanner - Fix testManagerScanningStart to wait for Bluetooth state - Add XCTSkipIf for environments where Bluetooth isn't available - Use run loop polling instead of XCTestExpectation for reliability
- Update NSHumanReadableCopyright in Info.plist - Update Credits.rtf shown in About box
- Add Apple Help Book with usage instructions - Add CFBundleHelpBookFolder/Name to Info.plist - Add CI workflow for build/test on push and PR - Add Release workflow for signing, notarization, and GitHub releases
- Test CFBundleHelpBookFolder is configured - Test CFBundleHelpBookName is configured - Test help bundle exists in app resources - Test help index.html exists - Test help content contains expected keywords
- Use XCTWaiter for proper async timeout handling without failure - Subscribe to RACReplaySubject for immediate cached state delivery - Increase timeout to 10 seconds for slow Bluetooth initialization
The BeaconScanner scheme was only available as a user-specific scheme in xcuserdata/, which is not committed to version control. This caused CI builds to fail with "workspace does not contain a scheme named BeaconScanner" error. Create a shared scheme in xcshareddata/xcschemes/ that will be available to CI runners after checkout.
User-specific Xcode data (xcuserdata/) should not be tracked in version control as it contains personal IDE preferences like breakpoints, window layouts, and individual scheme copies. Now that we have a shared scheme in xcshareddata/, the user-specific schemes are redundant and can be safely removed.
- Pin ReactiveCocoa to ~> 2.5 (last Objective-C version, 3.0+ is Swift) - Add post_install hook to force MACOSX_DEPLOYMENT_TARGET = 10.13 for all pods - Update libextobjc from 0.4 to 0.6
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
Comprehensive modernization of the BeaconScanner project (v1.2.0) for compatibility with modern macOS and Xcode versions.
Build System Updates
nyc.welles.BeaconScanner~> 2.5(last Objective-C version; 3.0+ is Swift-only)post_installhook to enforce 10.13 deployment target for all podsInfoPlist.stringsbuild errorxcuserdata/and updated.gitignoreDeprecated API Updates
CBCentralManagerState*→CBManagerState*(CoreBluetooth)NSTask.launchPath/launch→executableURL/launchAndReturnError:NSStringPboardType→NSPasteboardTypeStringNSOnState/NSOffState→NSControlStateValueOn/NSControlStateValueOffPrivacy & Entitlements
NSBluetoothAlwaysUsageDescriptionfor macOS privacy requirementsTest Improvements
testManagerScanningStartto properly wait for Bluetooth state usingXCTWaiterXCTSkipIffor graceful handling in CI environments without BluetoothNew Features
Metadata Updates
CLAUDE.mdproject documentationTest Plan
xcodebuildFiles Changed
BeaconScanner.xcodeproj/project.pbxprojBeaconScanner.xcodeproj/xcshareddata/xcschemes/BeaconScanner.xcscheme(new)BeaconScanner/BeaconScanner-Info.plistBeaconScanner/HGBeaconScanner.mBeaconScanner/HGBeaconViewController.mBeaconScanner/en.lproj/Credits.rtfBeaconScanner/BeaconScanner.help/(new)BeaconScannerTests/BeaconScannerTests.mBeaconScannerTests/BeaconScannerTests-Info.plistPodfile/Podfile.lock.github/workflows/ci.yml(new).github/workflows/release.yml(new).gitignoreCLAUDE.md(new)