Add CoreData-based workout tracking app with iOS and watchOS targets

- Migrate from SwiftData to CoreData with CloudKit sync
- Add core models: Split, Exercise, Workout, WorkoutLog
- Implement tab-based UI: Workout Logs, Splits, Settings
- Add SF Symbols picker for split icons
- Add exercise picker filtered by split with exclusion of added exercises
- Integrate IndieAbout for settings/about section
- Add Yams for YAML exercise definition parsing
- Include starter exercise libraries (bodyweight, Planet Fitness)
- Add Date extensions for formatting (formattedTime, isSameDay)
- Format workout date ranges to show time-only for same-day end dates
- Add build number update script
- Add app icons
This commit is contained in:
2026-01-19 06:42:15 -05:00
parent 2bfeb6a165
commit 13313a32d3
77 changed files with 3876 additions and 48 deletions

View File

@@ -1,35 +1,116 @@
{
"images" : [
"images": [
{
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
"filename": "icon-20@2x.png",
"idiom": "iphone",
"size": "20x20",
"scale": "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
"filename": "icon-20@3x.png",
"idiom": "iphone",
"size": "20x20",
"scale": "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "tinted"
}
],
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
"filename": "icon-29@2x.png",
"idiom": "iphone",
"size": "29x29",
"scale": "2x"
},
{
"filename": "icon-29@3x.png",
"idiom": "iphone",
"size": "29x29",
"scale": "3x"
},
{
"filename": "icon-40@2x.png",
"idiom": "iphone",
"size": "40x40",
"scale": "2x"
},
{
"filename": "icon-40@3x.png",
"idiom": "iphone",
"size": "40x40",
"scale": "3x"
},
{
"filename": "icon-60@2x.png",
"idiom": "iphone",
"size": "60x60",
"scale": "2x"
},
{
"filename": "icon-60@3x.png",
"idiom": "iphone",
"size": "60x60",
"scale": "3x"
},
{
"filename": "icon-20.png",
"idiom": "ipad",
"size": "20x20",
"scale": "1x"
},
{
"filename": "icon-20@2x.png",
"idiom": "ipad",
"size": "20x20",
"scale": "2x"
},
{
"filename": "icon-29.png",
"idiom": "ipad",
"size": "29x29",
"scale": "1x"
},
{
"filename": "icon-29@2x.png",
"idiom": "ipad",
"size": "29x29",
"scale": "2x"
},
{
"filename": "icon-40.png",
"idiom": "ipad",
"size": "40x40",
"scale": "1x"
},
{
"filename": "icon-40@2x.png",
"idiom": "ipad",
"size": "40x40",
"scale": "2x"
},
{
"filename": "icon-76.png",
"idiom": "ipad",
"size": "76x76",
"scale": "1x"
},
{
"filename": "icon-76@2x.png",
"idiom": "ipad",
"size": "76x76",
"scale": "2x"
},
{
"filename": "icon-83.5@2x.png",
"idiom": "ipad",
"size": "83.5x83.5",
"scale": "2x"
},
{
"filename": "icon-1024.png",
"idiom": "ios-marketing",
"size": "1024x1024",
"scale": "1x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
"info": {
"author": "xcode",
"version": 1
}
}
}