Features
- New
routines subcommand — routines list and routines show <name-or-id> export the saved workout templates Liftoff calls "presets" internally. Discovered via mitmproxy capture (fitnessService.fetchUserPresetsWithFolders).
- Folder rendering — routines organized into folders in the Liftoff app surface as H1 section headings (
# Valley Creek), with their routines as H2 underneath. Ungrouped routines appear under # My Routines — the same label the app uses.
- JSON shape —
routines list --format json emits the upstream-faithful nested shape {folders, presetsWithoutFolder} so foldered presets aren't silently dropped.
- Notes-in-parens convention — per-exercise cues (
Seat 3, Left Only) render inline: Machine Seated Crunch (Seat 3) rather than as a markdown # heading. Applied to both routines and workouts.
- Workouts: missing notes now surface —
SessionNotes previously rendered as a markdown # H1 collision; ExerciseNotes were silently dropped entirely.
Quality
- First unit tests for the
cmd/ package — 18 cases covering renderer output, folder layout, parens-note convention, and preset lookup paths.
- CI cross-compiled review binaries — every PR now publishes darwin arm64/amd64 + linux amd64/arm64 artifacts attached to the run.
Install
brew tap quantcli/tap
brew install liftoff-export
# or upgrade:
brew upgrade liftoff-export
What's Changed
- feat: routines export with folder sections + fitdown polish (#50)
- docs: add worked example for liftoff-export (#49)