rzen 3c7a790e9d Rebuild the exercise figure on an anatomical 3D skeleton
The library's planar world-angle rig becomes a genuine 3D anatomical
model: skeleton.json holds bone-length profiles (real shoulder/pelvis
widths, feet, neutral/female/male) and per-joint ROM; motions pose
joints with anatomical angles (flexion/abduction/rotation from neutral
standing) under a per-exercise orthographic camera, resolved by
kinematics.py (3D FK, analytic two-bone IK with anatomical write-back)
and validated against physiological ranges. All 20 sagittal motions
were migrated by planar decomposition with 0.00 px golden parity against
the old renderer — relabeled to true anatomy, since shading is now
near-dark/far-light by camera depth rather than by limb suffix — and
the face-on machines are re-authored honestly: Abductor/Adductor with
real hip abduction (the foreshortened "frontal" profile is retired) and
Rotary with genuine spine axial rotation. Figures gain articulated
feet; profiles swap without touching a single motion script; --orbit
sweeps the camera 360° while a motion loops.

The in-app SwiftUI renderer (iOS + watch) is ported to the same model
and consumes the exported motions verbatim; figure-fixtures.json pins
its geometry to the Python pipeline within 0.5 px across every
exercise, key frame, tween, and orbit sample. Also makes the watch
bridge logger nonisolated for the newer SDK's stricter isolation
checking.

Claude-Session: https://claude.ai/code/session_01LEoff8bXGBS83tK1c55Mf7
2026-07-06 20:10:50 -04:00
2026-06-20 14:17:26 -04:00
2026-07-06 16:30:38 -04:00

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, icons, and an activity type (strength, HIIT, cardio, …). Built-in starter splits (Upper Body / Core / Lower Body machine routines, plus an equipment-free Bodyweight Core circuit with its own warm-up) appear automatically on first launch; editing one makes it your own copy, and deleted starters can be restored from Settings.
  • Exercise library — a bundled library of exercises to populate your splits, authored in Exercise Library/ with per-exercise setup, cues, mistakes, progressions, and an anatomically-rigged 3D stick-figure visual system — covering the bodyweight core moves plus the full Planet Fitnessstyle machine circuit (presses, rows, pulldowns, curls, leg and hip machines).
  • 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. End a workout early from the menu — Save keeps your progress (remaining exercises are marked skipped) or Discard removes it.
  • Animated form guide — every library exercise shows a looping stick-figure demonstration on the run screen's bottom half, posed by real joint angles on an anatomical 3D skeleton (complete with feet) and rendered live from the Exercise Library's rig data with the working limbs highlighted — machine exercises include schematic equipment (seats, bars, cables, roller pads) that moves with the figure, and face-on machines show true hip abduction and torso rotation.
  • Machine comfort settings — machine-based exercises remember your setup (seat height, back-rest position, pin position, …), shown on the workout screen and editable mid-workout; changes save back to the split for next time.
  • 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.
  • Apple Health & Activity rings — completed workouts are saved to Apple Health and credit your Move and Exercise rings: recorded live on the Apple Watch (heart rate + active energy), or estimated on the iPhone when you train without your watch. See live heart rate and calories on the watch, and a post-workout summary (duration, calories, avg/max heart rate, heart-rate zones, total volume) you can revisit on any past workout. Weights display in your choice of pounds or kilograms.
  • 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).

S
Description
No description provided
Readme
65 MiB
Languages
Cython 70.4%
Swift 27.5%
Python 1.7%
Shell 0.2%
HTML 0.2%