Operations
Build & CI
- Xcode with iOS + Mac Catalyst SDKs.
- macOS environment for Catalyst builds.
- No network dependency for core app build path.
Local Build Recipes
Simulator build
xcodebuild -project "M2.xcodeproj" -scheme "M2" -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO clean build
Mac Catalyst build
xcodebuild -project "M2.xcodeproj" -scheme "M2" -configuration Debug -destination "platform=macOS,variant=Mac Catalyst" -derivedDataPath .derivedData build CODE_SIGNING_ALLOWED=NO
Extension target build
xcodebuild -project "M2.xcodeproj" -scheme "M2LiveActivityExtension" -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO clean build
Run Targets
| Target | Destination | Notes |
|---|---|---|
M2 |
iPhone Simulator / Device | Primary mobile runtime. |
M2 |
My Mac (Mac Catalyst) | Desktop runtime with sidebar shell. |
M2LiveActivityExtension |
Built through host app | Sleep timer activity rendering. |
CI Workflows
.github/workflows/ios-ci.yml: app + extension build validation..github/workflows/ios.yml: baseline iOS build workflow.
Verification Checklist
- Build succeeds for simulator and Catalyst targets.
- Playlists tab opens My Playlists hub from clickable heading/arrow.
- Hover overlay on playlist cards works with play + pin action.
- Pinned playlists appear and open from desktop sidebar.
- Desktop Favorites renders 2-column list and opens player correctly.
Troubleshooting
| Symptom | Action |
|---|---|
| CoreSimulator warnings in build logs | If build still finishes with BUILD SUCCEEDED, treat as environment noise. |
| Stale derived data artifacts | Use local -derivedDataPath .derivedData and clean build. |
| Desktop UI not updating pinned section | Verify defaults key m2_desktop_pinned_playlists_v1 and relaunch shell tab. |
Release Checklist
- Run simulator + Catalyst builds.
- Smoke-test playback, playlists, favorites, and sleep timer.
- Validate desktop-specific flows (hover, pin, favorites layout).
- Update docs pages if behavior or keys changed.
- Tag and push release commit.