Add the macOS app: a library-management companion (routines, schedules, exercise browser)
A new 'Workouts Mac' target (same bundle ID as iOS, universal purchase) with a NavigationSplitView shell over the shared data/sync layers: routine management with starter gallery and seed-fork follow, schedule editing (reminders stay iPhone-scheduled), and a browse-only exercise library with the animated figures and reference guides. Multi-writer stance: the Mac writes only routine and schedule documents (whole-document last-writer-wins) and never workout documents, whose per-log merge exists only on the watch ingest path. The Mac reconciles on window activation (throttled) since iCloud syncs while the app is closed, and flushes pending writes on deactivation.
This commit is contained in:
+50
@@ -4,6 +4,7 @@ options:
|
||||
deploymentTarget:
|
||||
iOS: "26.0"
|
||||
watchOS: "26.0"
|
||||
macOS: "26.0"
|
||||
xcodeVersion: "26.0"
|
||||
defaultConfig: Debug
|
||||
|
||||
@@ -184,3 +185,52 @@ targets:
|
||||
SWIFT_STRICT_CONCURRENCY: complete
|
||||
IPHONEOS_DEPLOYMENT_TARGET: "26.0"
|
||||
TARGETED_DEVICE_FAMILY: "1"
|
||||
|
||||
# ---- macOS app (library management MVP: routines/schedules/exercises; no
|
||||
# workout running/editing). Same bundle id as the iOS app (universal
|
||||
# purchase); writes only Splits/ and Schedules/ documents. -------------
|
||||
Workouts Mac:
|
||||
type: application
|
||||
platform: macOS
|
||||
sources:
|
||||
- path: Shared
|
||||
excludes:
|
||||
- "HealthKit/**"
|
||||
- path: Workouts/Sync
|
||||
- path: Workouts/Seed
|
||||
- path: Workouts/ExerciseFigure
|
||||
- path: Workouts/Views/Exercises/ExerciseCatalog.swift
|
||||
- path: "Workouts/Views/Exercises/ExerciseDocument+PlanSummary.swift"
|
||||
- path: Workouts/Views/Exercises/ExerciseInfoContent.swift
|
||||
- path: Workouts/Views/Routines/RoutineOrdering.swift
|
||||
- path: Workouts/Views/Library/StarterSeedState.swift
|
||||
- path: Workouts/Assets.xcassets
|
||||
- path: Workouts/Resources/ExerciseMotions
|
||||
buildPhase: resources
|
||||
- path: Workouts/Resources/StarterSplits
|
||||
buildPhase: resources
|
||||
- path: "Workouts Mac"
|
||||
excludes:
|
||||
- "Resources/Info-*.plist"
|
||||
- "Resources/*.entitlements"
|
||||
- path: CHANGELOG.md
|
||||
buildPhase: resources
|
||||
type: file
|
||||
- path: LICENSE.md
|
||||
buildPhase: resources
|
||||
type: file
|
||||
dependencies:
|
||||
- package: IndieSync
|
||||
- package: IndieAbout
|
||||
postBuildScripts: *updateBuildInfo
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.Workouts
|
||||
PRODUCT_NAME: Workouts
|
||||
INFOPLIST_FILE: "Workouts Mac/Resources/Info-macOS.plist"
|
||||
CODE_SIGN_ENTITLEMENTS: "Workouts Mac/Resources/Workouts-macOS.entitlements"
|
||||
GENERATE_INFOPLIST_FILE: false
|
||||
SWIFT_STRICT_CONCURRENCY: complete
|
||||
MACOSX_DEPLOYMENT_TARGET: "26.0"
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
|
||||
|
||||
Reference in New Issue
Block a user