Skip to content

Conversation

@sebyddd
Copy link
Owner

@sebyddd sebyddd commented Dec 28, 2025

What's Changed

This PR brings SDVersion up to date after years of dormancy, adding support for all Apple devices released between 2018-2024 and modernizing the library infrastructure to meet current App Store and developer expectations.

New Device Support

iOS

  • iPhone XS through iPhone 16e (33 new models)
  • iPad Pro M4, iPad Air M2, iPad mini 7, and all 2018-2024 iPads
  • New screen sizes: 5.4", 6.1", 6.3", 6.5", 6.7", 6.9" with proper notch/Dynamic Island detection

watchOS

  • Apple Watch Series 4 through Series 10
  • Apple Watch SE (1st and 2nd generation)
  • Apple Watch Ultra and Ultra 2
  • All case sizes: 40mm, 41mm, 44mm, 45mm, 46mm, 49mm

tvOS

  • Apple TV 4K (2nd and 3rd generation)
  • Renamed AppleTV4 to AppleTVHD for clarity

macOS

  • Full Apple Silicon support (M1 through M4 Max)
  • New isAppleSilicon, chipType, and chipName methods
  • Mac Studio detection
  • All MacBook Air/Pro, Mac mini, iMac, and Mac Pro models with Apple Silicon

Infrastructure

  • Swift Package Manager: Added Package.swift with proper platform targets
  • Privacy Manifest: Added PrivacyInfo.xcprivacy for App Store compliance (required since May 2024)
  • GitHub Actions CI: Build verification for all four platforms plus SPM and CocoaPods lint
  • Version bump: Now at 5.0.0 with updated deployment targets (iOS 13+, macOS 11+, watchOS 6+, tvOS 13+)

Documentation

  • Completely rewritten README with modern examples and full API reference
  • Added CHANGELOG.md documenting the 5.0.0 release
  • Added CONTRIBUTING.md with device identifier sources for future contributors

Bug Fixes (from QA audit)

  • Fixed watchOS screen height detection for Series 7+ watches (corrected point values)
  • Fixed M4 Pro/Max chip assignment for Mac16,6 and Mac16,8 identifiers
  • Fixed iOS CI scheme name to match actual Xcode target

Breaking Changes

  • Minimum deployment targets increased (was iOS 8+, now iOS 13+)
  • AppleTV4 renamed to AppleTVHD
  • Some enum values renumbered to accommodate new devices

Test Plan

  • Build succeeds on iOS Simulator
  • Build succeeds on macOS
  • Build succeeds on watchOS Simulator
  • Build succeeds on tvOS Simulator
  • swift build completes without errors
  • pod lib lint passes
  • Device detection returns correct values on available hardware

sebyddd and others added 7 commits December 28, 2025 02:19
Corrected several issues identified during comprehensive code review:

watchOS screen size detection:
- Fixed screen height values for Series 7/8/9/10 and Ultra watches
- 41mm now correctly uses 215pt (was incorrectly 205pt)
- 44mm now correctly uses 224pt (was incorrectly 215pt)
- 45mm now correctly uses 242pt (was incorrectly 224pt)
- 46mm now correctly uses 248pt (was incorrectly 227pt)
- 49mm Ultra now uses only 251pt (removed erroneous 242pt)
- Added documentation comments explaining pixel-to-point conversions

macOS Apple Silicon chip detection:
- Fixed M4 Pro/Max chip assignment for MacBook Pro models
- Mac16,6 (14" MBP) now correctly maps to M4 Pro (was M4 Max)
- Mac16,8 (14" MBP) now correctly maps to M4 Max (was M4 Pro)
- Added inline comments clarifying model-to-chip mappings

Package.swift:
- Added privacy manifest as bundled resource for all platform targets
- Ensures App Store compliance for SPM-based installations

GitHub Actions CI:
- Fixed iOS build scheme from SDVersion to SDiOSVersion
- Matches the actual target name in the Xcode project

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The macos-14 runner doesn't have Xcode 16 pre-installed, causing all
build jobs to fail when attempting to select a non-existent path.

Switched to macos-15 which includes Xcode 16 by default, eliminating
the need for explicit xcode-select commands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The SDVersion umbrella target was causing SPM build failures due to
invalid header layout - SPM doesn't allow subdirectories alongside
an umbrella header.

Changes:
- Removed the umbrella SDVersion product/target
- Users now import platform-specific libraries directly:
  - SDiOSVersion for iOS/iPadOS
  - SDMacVersion for macOS
  - SDwatchOSVersion for watchOS
  - SDtvOSVersion for tvOS
- Changed resource rule from .copy to .process for proper bundling
- Updated README with clearer SPM dependency example

This matches how the library was always intended to be used - with
platform-specific imports rather than a single umbrella.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The swift build command was trying to compile all targets including
SDwatchOSVersion, which requires WatchKit headers not available on
macOS. Explicitly build only the SDMacVersion product to avoid this.

The other platform targets (iOS, watchOS, tvOS) are already verified
through their respective xcodebuild jobs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The --product flag doesn't work for automatic products in SPM.
Using --target SDMacVersion to build only the macOS target.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sebyddd sebyddd merged commit 0fdfe94 into master Dec 28, 2025
6 checks passed
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.

2 participants