208fa73f3d12f91881e1d7bf9cef7ade113dd3e3
Stop giving up on a slow iCloud container: a freshly enabled iCloud Drive that reports nil while still provisioning is now polled patiently for up to ~10 minutes instead of failing fast to the "unavailable" screen. A nil ubiquity token (not signed into iCloud at all) still fails immediately, and the connecting screen reveals an escape hatch at 28s for users who'd rather jump to setup than keep waiting. The connecting and iCloud-required screens are now branded — a purple gradient with teal accents — and the spinner becomes a custom comet-arc ConnectingIndicator around an iCloud glyph. Connecting copy escalates with the wait so a slow first connect reads as steady progress. Claude-Session: https://claude.ai/code/session_01SCv7zvGFcKy47KSTnTLxRe
Workouts
A workout tracking app for iPhone and Apple Watch. Build workout splits, run sessions, and track your progress — with your data stored as plain JSON files in your own iCloud Drive.
Key Features
- Workout splits — organize exercises into reusable routines with custom colors and icons. Start with built-in starter splits (Upper Body / Core / Lower Body) generated from a bundled exercise catalog.
- Exercise library — a bundled catalog of starter exercises (bodyweight and machine-based) to populate your splits.
- Run a workout — start a session from a split, then tap an exercise to run it as a paged flow: a Ready? lead-in, count-up work phases, count-down rests, and a Finish page — mirroring the Apple Watch. Swipe a row to mark it complete, or swipe to edit its plan (sets/reps/weight or duration) and notes.
- Progress tracking — weight-progression charts per exercise across past sessions.
- Apple Watch companion — starting a workout on the iPhone launches the watch app straight into it. The watch lists your in-progress workouts; pick one, pick an exercise, and run it as a paged flow: a Ready? lead-in, count-up work phases, count-down rests with final-three-second haptics and auto-advance, and a Finish page with One More and a Done that auto-completes after a countdown. A phase-dot row (purple work, teal rest) tracks progress. Rest time and the auto-finish countdown are configurable; changes sync back to the phone.
- Two-way live run — prop your iPhone up during an Apple Watch workout and it runs the same Ready → work/rest → Finish flow with live timers, in step with the watch. It's bidirectional: drive from either device — swipe ahead, finish a set, add one — and the other follows. Only human transitions are sent; automatic ones (a rest timer ending) advance both devices independently off shared start times, so they never fight.
- Watch face complication — a launcher complication you can place on any Apple Watch face; tap it to open the app. Available in the circular, corner, inline, and rectangular accessory slots.
- iCloud Drive sync — your data lives as human-readable JSON in your iCloud Drive, synced across devices and visible in the Files app. iCloud is required.
Architecture
iCloud Drive JSON documents are the sole source of truth; a local SwiftData
store is a rebuildable read-through cache populated exclusively by an
NSMetadataQuery observer (one-way flow: files → observer → cache). The phone is
the only device that touches iCloud Drive; the Apple Watch is a thin remote that
round-trips workout changes through the phone via WatchConnectivity.
See REQUIREMENTS.md for the data model and CLAUDE.md for project guidance.
Building
The Xcode project is generated with XcodeGen:
xcodegen generate
open Workouts.xcodeproj
Requires Xcode 26 (iOS 26 / watchOS 26, Swift 6).
Description
Languages
Cython
89.4%
Swift
10.3%
HTML
0.2%
Shell
0.1%