LiftTrace is a self-hosted weightlifting tracker (Docker + Android, AGPL-3.0). rc.5 is the next public roll-up, bundling everything since the rc.4 release.

What’s new

Scheduled automatic backups. Settings → Backup → Schedule lets you pick a time + frequency (daily / weekly). Server installs get an admin UI with optional ENV lock for managed deployments; the Android app does the same for offline-only users, writing scheduled backups to device storage or the share sheet.

Multi-architecture Docker image. The public image at ghcr.io/traceapps/lifttrace now ships both amd64 and arm64 builds, so Raspberry Pi 4 / 5 and other ARM self-hosters can docker compose up -d without building from source.

Default session length raised. From 30 days to 1 year so PWA users stop getting signed out every month. Admins can still set their own session length under Settings → User Management → Session Length.

Better biometric failure path on Android. When a stored auth token has expired, biometric sign-in now surfaces a clear “Session Expired” prompt instead of silently bouncing back to the Login screen with no explanation.

Fixes

  • INSECURE_COOKIES is now called out inline in the example docker-compose.yml with a comment explaining the failure mode (every request 401s after a successful login because the browser drops the Secure cookie over plain HTTP); README troubleshooting entry expanded with the exact Firefox console message that confirms the diagnosis (#4)
  • Sync pulls no longer clobber local pending edits. An incoming server pull respects in-flight local changes instead of overwriting them with older data.
  • Sync now clears local auth state on a 401 response so the user gets prompted to sign in again, instead of the app looping silently on every subsequent request.

Install / upgrade

  • Docker: pull the new image and restart your stack (see the README for compose snippets)
  • Android: signed APK on the release page
  • Full CHANGELOG: main repo

What is LiftTrace?

Self-hosted weightlifting tracker. Diary (sets, reps, weights, RPE, supersets, warm-ups, persistent rest timer, natural-language Smart Add), Programs (mesocycles, templates, week-by-week progression), Exercises (full library from wger / free-exercise-db / exercisedb plus your own custom entries with images, GIFs, or YouTube links), Statistics (volume, PRs, frequency, body stats trends, RPE overlays), Coaching (trainer prescribes workouts to athletes, per-set feedback, two-way reply threads), AI assistant (Claude / OpenAI / Gemini / Ollama, BYOK, opt-in), built-in music player (Subsonic / Jellyfin / Plex / Emby libraries plus Icecast / Shoutcast / HLS streaming stations with lockscreen controls), OIDC SSO (Authentik, Keycloak, Pocket ID, Authelia, Auth0, Google, anything OIDC 1.0), workout import from Strong / Hevy / FitNotes / Jefit CSVs, federation with NutriTrace (auto-log workout calories burned to your NT diary). Docker on the server, Capacitor app on Android. AGPL-3.0 licensed.

  • TraceApps@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    9 days ago

    Genuinely useful feedback, thanks for taking the time. Walking through each:

    Per-exercise sharing. Real gap. The exercises table is already structured cleanly enough to dump one as JSON; adding a “share this exercise” button that produces an importable file is small. The community-repo idea is good too: a separate awesome-lifttrace-exercises repo where people can drop contributions, and the in-app importer can read from a URL. Going on the roadmap.

    Custom equipment + searchable tags. The schema already supports arbitrary equipment strings; the UI just defaults to a fixed list. Adding a “+” in the equipment picker plus a “what’s available today” filter chip set on the Exercises page is genuinely useful, especially for travel and home-gym use. Adding to the roadmap as a near-term candidate.

    Per-exercise timer for time-based work. Real gap. The rest timer infrastructure exists but doesn’t currently cover “do this exercise for N seconds with a countdown and a cue.” That’s a meaningful addition for anyone doing carries, planks, isometrics, hangs, or hybrid stuff. Sharing the same audio + haptic plumbing as the rest timer keeps it cheap. Roadmapped.

    Per-set / per-round rest in HIIT-style circuits. Currently rest is global with per-exercise memory, which doesn’t cover the “20s between reps, 2 minutes between rounds” pattern you described. That’s a structural change to how sets express rest. Going on the list to think through together with the time-based timer above, since they share infra.

    Heart-rate data. The export direction you called out is the cheap win, and you’re right that PWA makes it easy. I’ll push a CSV export of the completed workout (sets, reps, weights, RPE, timestamps, rest durations) in a near term RC. That covers anyone who wants to feed an external analysis pipeline. Live HR ingestion from a BLE chest strap is the heavier direction and goes on the roadmap.

    Thanks again for your valuable feedback. Appreciate the level of detail.