Our second beta! Two months on from beta.1. The headliners: a proper rest timer in gym mode, more precise weight tracking, and the ability to point the app at your own server right from Settings — plus a lot of behind-the-scenes work to make Lyftr faster, sturdier, and better tested.
✨ What's new
⏱️ Rest timer in gym mode (#33)
Finish a set and Lyftr counts your rest for you, Hevy/Strong-style. Set a rest time per exercise (or lean on a global default), with a master on/off switch in Settings. While you rest, a panel slides up with a big countdown, pause/resume, quick −15s / +15s, and Skip — and it tells you which set is up next. Minimize the workout and the countdown tucks into the little "workout in progress" pill so it's never in the way.
🔌 Point the app at your own server (#17)
Self-hosters can now set a custom backend URL right in Settings — no rebuild, takes effect immediately. This also clears up trouble signing up on fresh self-hosted instances (#14, #31).
🏷️ App version on screen (#26)
Lyftr now shows which version you're running.
💪 Improvements & fixes
- Smoother gym logging (#59) — typing weights/reps mid-set no longer eats your decimals or leading zeros; reps and weight are now big tap-friendly tiles with +/− steppers; cleaner discard/stop.
- More accurate weight tracking (#39) — log to 0.1 precision, validation that matches the server, and no more tiny drift from unit conversion when you re-save the same value (#56). Weigh in twice in a day? You'll see your latest entry (#52).
- Clearer database errors (#25) — a locked database no longer surfaces as a confusing, unrelated error.
🧱 Behind the scenes
You won't see these directly, but they make Lyftr more reliable:
- Rebuilt the backend's data layer into clean per-feature stores with safe transactions and cascade-delete protection.
- Hardened the SQLite setup (WAL, busy-timeout, clearer error mapping) and fixed a startup race that could re-seed demo data.
- Overhauled testing — web unit tests with CI coverage, a faster/more reliable end-to-end suite, and docs on how it fits together.
- Docs — a testing guide, a Discord community link (#15), and clearer self-hosting notes.
🙏 Thank you
This release was shaped by the community — big thanks to everyone who raised something that landed here:
- @exile259 — for requesting the rest timer (#33) and flagging registration trouble on fresh instances (#31)
- @MikeZheng33 — for pushing for exact 0.1 weight inputs (#39)
- @shaine — for reporting the confusing "database locked" errors (#25)
- @mariushosting — for reporting registration failures (#14)
- @PandeoF1 — for the nudge to start a Discord community (#15)
✅ Tested
go test, TypeScript, production build, 76 web unit tests, and 29 end-to-end tests all green.
Full changelog: v0.1.0-beta.1...v0.1.0-beta.2
💙 Thank you to the whole Lyftr community — this release exists because of your feedback. Run into a bug or have an idea? Come say hi in our Discord or open an issue.