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
Exercise Library
Reference material for exercises the app knows about — one folder per exercise, named exactly as the exercise appears in the app.
Each entry contains:
info.md— the details, always in this order: a one-line summary, quick facts (Category, Type, Targets, Prescription), then Setup, Execution, Cues, Common Mistakes, and Progression (easier → harder — get strong by making the move harder, not by endless reps).motion.json— the exercise scripted as key frames of joint angles on the shared rig (proportions in the library-levelbody.json), with IK pins for planted hands/feet and tween timings. This is the canonical source for all visuals and for the in-app animation planned for the lower half of the exercise screen.- Generated from it by
render.py(never hand-edited):frames/frame-N.svg(one per key frame),preview.gif(the tweened loop), andvisual.svg(the primary frame, for static contexts).
The rig and the visual language — right limbs dark / left limbs light with an
embedded R/L legend, nose tick for facing, teal on the working parts, timing
that encodes tempo, plus figure profiles, flipping, and theming — are defined
in SYSTEM.md, along with the motion.json schema and rendering
instructions.
The library lives at the repo root, deliberately outside the app targets' source folders, and is not bundled into the app yet — the in-app presentation format is still being worked out.