Skip to content

Releases: quantcli/liftoff-export-cli

v1.3.0

Choose a tag to compare

@DTTerastar DTTerastar released this 21 Jul 02:19
6cbb1dc

Output contract

  • bodyweight is now a JSON number in workouts list / workouts show (#33). It was emitted as a quoted string ("175") while workouts stats emitted the same field as a number — one field, two types depending on subcommand. It is now a number everywhere, or null when absent or unparseable. null rather than 0 so a missing measurement can't be mistaken for a real one. This is a breaking change for consumers that read bodyweight as a string.
  • New sessionDurationSeconds field (#36). sessionDuration was only available as a human phrase ("01 hours 06 minutes 01 seconds") sitting next to genuinely numeric caloriesBurned and prCount. The numeric field is additive — the human string is preserved, so existing consumers are unaffected.
  • No more usage dump on error (#31). Cobra printed its full usage/flags block to stderr on any flag-parse or RunE failure, burying the actual message. Errors are now a single Error: <msg> line on stderr, exit 1; stdout stays data-only. --help and bare invocation are unchanged.

Fixes

  • One bodyweight row per day (#30). Bodyweight is read off each workout post, so logging two workouts on one calendar day produced two rows for that date, double-counting it in per-day trend and plateau analysis. Entries now collapse to one row per local calendar day, keeping the latest measurement. Applies to both bodyweights list and the monthly averages in bodyweights stats.
  • Routines: no more placeholder sets (#51). Zero-weight/zero-rep placeholder sets were rendered as real sets, and bodyweight-only movements picked up a meaningless @+0 suffix.

Install

brew tap quantcli/tap
brew install liftoff-export
# or upgrade:
brew upgrade liftoff-export

What's Changed

  • bodyweights: collapse to one row per local day (#30) (#53)
  • workouts list/show JSON: numeric bodyweight + sessionDurationSeconds (#33, #36) (#54)
  • Silence cobra usage/error dump on failure (#31) (#52)
  • fix(routines): drop placeholder zero sets and "@+0" bodyweight suffix (#51)

Thanks to @vinistoisr for #52, #53, and #54.

Full Changelog: v1.2.0...v1.3.0

v1.2.0

Choose a tag to compare

@DTTerastar DTTerastar released this 15 Jun 04:55
45ff795

Features

  • New routines subcommandroutines 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 shaperoutines 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 surfaceSessionNotes 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)

v1.1.2

Choose a tag to compare

@DTTerastar DTTerastar released this 09 May 15:13
3386733
  • fix(auth): bump default API host to v2-13-10 (#44). The previous bump (v2-12-5 in v1.1.1) latched onto a host that returned 500 "database is unreachable" because the probe couldn't tell that apart from "deprecated". The actual current host matches the iOS app version 2.13.10.
  • ci: probe by message text, ask iTunes first, sweep wider (#45). Reworks the probe so the next rotation lands on a healthy host instead of a 500'ing trap. CI-only change, included for context.

v1.1.1

Choose a tag to compare

@DTTerastar DTTerastar released this 09 May 14:58
877bd27
  • fix(auth): bump default API host to v2-12-5 (#43). Liftoff retired v2-12-3; refreshes were failing with server is deprecated on the compiled-in default. The runtime override LIFTOFF_API_BASE is unchanged.
  • ci: probe API host daily, not weekly (#42). Worst-case lag from rotation to auto-bump PR drops from ~7 days to ~1 day.
  • docs: trim prime to one screen (#41). Per the shared contract §6.

v1.1.0

Choose a tag to compare

@DTTerastar DTTerastar released this 26 Apr 00:37
0bd1687

Minor release adding quantcli contract features.

Highlights since v1.0.6

  • prime subcommand — one-screen primer for LLM agents (#20, #21).
  • auth status subcommand — one-line auth readiness check (#18).
  • --format replaces --json--format markdown|json, markdown default (#19). Breaking for scripts that used --json; pass --format json instead.
  • Harmonized date flags--until, today/yesterday keywords (#17).
  • bodyweights stats --format json now supported (#39).
  • Fractional weights preserved in PR/Recent markdown — 152.5 no longer truncates to 152 (#40).

Known issues

See open issues — empty-state markdown silent in some filter paths, JSON type drift on a few numeric fields, --format csv not yet implemented. None block normal use.

v1.0.6

Choose a tag to compare

@DTTerastar DTTerastar released this 25 Apr 15:19
9371569

Fixes

  • Restore authenticated commands. Liftoff retired the v2-12-2 API host with "The server is deprecated.", breaking every authenticated subcommand once the cached access token expired. Default bumped to v2-12-3. (#15)
  • Better error on future deprecations. When the backend returns the deprecation marker (from auth refresh, auth login, or any tRPC query), the CLI now points users at the LIFTOFF_API_BASE workaround instead of surfacing the bare upstream message. (#15)

New

  • LIFTOFF_API_BASE env var override. Dodge the next API host retirement without waiting for a release:
    LIFTOFF_API_BASE=https://v2-XX-Y.api.getgymbros.com liftoff-export workouts list
    The Liftoff iOS/Android app shows its version under Settings → About; matching that is usually safe. The CLI logs liftoff-export: using LIFTOFF_API_BASE=<value> to stderr once on first use. (#15)
  • Weekly automated host-rotation probe. .github/workflows/api-host-probe.yml runs Mondays at 14:00 UTC; if the default host gets retired, it scans candidate versions and opens a PR bumping defaultAPIBase. (#16)

Notes

Existing users do not need to re-authenticate — tokens in ~/.config/liftoff-export/auth.json remain valid against the new default host.

v1.0.5

Choose a tag to compare

@DTTerastar DTTerastar released this 22 Apr 00:46
f0b52ff

Bug fix: dates and bucketed timestamps now resolve in local time. Previously, absolute date flags (--since 2025-01-01, show 2025-03-08) parsed as UTC, and workout timestamps bucketed by API-zone day — producing off-by-one-day results for users not in UTC. See #14.

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 20 Apr 09:22
f1d7b30

Changelog

  • f1d7b30 chore: move to quantcli org and migrate to homebrew_casks (#11)
  • 1e9d8dc Update SEO tracking for 2026-04-19
  • 46b3035 Update SEO tracking for 2026-04-17
  • 51d7358 Update SEO tracking for 2026-04-16
  • 4136717 Update SEO tracking for 2026-04-15
  • c782e26 Update SEO tracking for 2026-04-14
  • 82a70c7 Update SEO tracking for 2026-04-13
  • 5c71b9c Update SEO tracking for 2026-04-12
  • f2ec312 Update SEO tracking for 2026-04-11
  • 2c048b8 Update SEO tracking for 2026-04-10
  • c502dc4 Update SEO tracking for 2026-04-09
  • 23aa777 Update SEO tracking for 2026-04-08
  • ac01b01 Update SEO tracking for 2026-04-08
  • f0c8008 Update SEO tracking for 2026-04-08

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 08 Apr 01:15
77e87b7

Changelog

  • 77e87b7 Rename Homebrew formula to liftoff-export (#10)
  • 76c4d68 Fix release workflow to use separate tokens for release and Homebrew tap (#9)
  • 769b550 Use HOMEBREW_TAP_TOKEN for goreleaser releases (#8)
  • 93b9844 Add Homebrew tap and improve GitHub discoverability (#7)

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 08 Apr 00:12
f1fa840

Changelog

  • f1fa840 Rename liftoff-cli to liftoff-export-cli (#6)
  • d432dec Change workouts show to accept a date instead of an ID (#5)
  • 9bd6c7b Document all commands and flags in README (#4)
  • cea79e9 Add compact exercise stats with monthly graphs (#3)
  • d105705 Fix bar chart alignment in bodyweight stats
  • d9970fa Add --exercse flag (#2)
  • ebd3018 Add bodyweights commands
  • d68e59d Initial commit