Skip to content

v1.2.4

Choose a tag to compare

@DuarteSantos8 DuarteSantos8 released this 01 Aug 15:12
· 45 commits to main since this release

Changelog

v1.2.4 — 2026-08-01

The effort ratings you have been recording since v1.2.3 now answer questions, and bodyweight
training stops being treated as barbell training with the weight left at zero. Plus: creating a
profile from Settings works on an invite-only instance, which it never has.

The effort ratings, read back as statistics

v1.2.3 let you rate how hard a set was. Nothing then read that rating back — it lived in the set
label and nowhere else. Stats now answers the question the number was recorded for.

  • 📊 An Effort card in Stats over 30d / 90d / 1Y / all time: average effort, the share of sets
    taken close to failure, and — always alongside them — how much of your training was rated at
    all. Rating is optional and off by default, so a partly rated history is normal; an average
    without its denominator would quietly speak for sets you never rated.
  • Week by week. The weekly average with that week's set count in the tooltip, because the
    pair is the reading: volume up with effort up is fatigue accumulating, volume up with effort
    flat is the adaptation you were training for. Weeks resting on a single rated set are dropped
    rather than drawn.
  • Where the sets land. The spread across the scale, not just the middle of it. Half your sets
    at failure and half in warm-up territory average out to a healthy-looking number; this is the
    chart that shows it.
  • 🔥 Hard-sets mode on the muscle map. The same body diagram, counting only sets taken near
    failure — "where did the stimulus go" rather than "where did the volume go". A muscle can lead
    on set count and still never be trained hard.
  • Effort on the exercise curve. Each session's dot on the top-set chart fills in as less is
    left in the tank, so the same weight moved with more in reserve stops reading as a flat line.
    Exercises with enough ratings also get an Effort curve of their own.
  • One history, whichever scale you use. Everything aggregates internally in RIR and converts
    back for display, so a history that mixes your own RIR logs with imported RPE averages as one
    series instead of two half-empty ones. RIR charts count downward on the axis, so harder sets
    sit higher.
  • Translated into all 12 UI languages.

Bodyweight training, logged the way it is done

A push-up has no weight to type, and the app asked for one anyway — every set, on a quarter of
the catalogue. Three reports (#31, #32, #33) turned out to be the same gap: the app assumed
progress lived in the load. It doesn't, for the exercises most people actually start with.

  • 💪 Exercises know they are bodyweight. Seeded from the equipment the dataset already
    records, so push-ups, pull-ups, dips and 300-odd others arrive marked. The weight column is
    not shown, the set row is one stepper instead of two, and the "confirm your working weight"
    prompt at the end of an exercise stops asking about a weight that was never there. (#32)
  • Added weight when there is any. A dip belt or a weighted vest is entered once in the
    exercise settings and reads as an addition — "+10 × 8", not "10×8" — everywhere it is shown
    back. With load on the belt the normal progression rules take over again, because now there
    is something to add.
  • 📈 Reps and sets are the progression. Clean session, one more rep. Set a top of the range
    and reaching it adds a set and starts the reps over instead of climbing forever; at six sets
    it says what it should have said all along, which is that it is time for weight or a harder
    variation. No ceiling set keeps the old behaviour exactly. (#33)
  • ↔️ Reps per side. For lunges, single-arm rows and every other unilateral movement. You
    log what you did — 16, the total — and the app shows the split, "8 per side", so the set in
    front of you is unambiguous without the rep count meaning one thing here and another there.
    The target steps in twos, 16 → 18 → 20, because half of an odd total is a rep one side never
    gets. (#31)
  • Both settings travel with a shared plan, and are written to a plan file only when they
    disagree with the catalogue — every existing plan, workout and backup is read unchanged and
    none of it needs migrating.
  • Translated into all 12 UI languages.

Fixed

  • Creating a profile from Settings on an invite-only instance. The sign-in screen asks for
    the invite code when the server needs one; the same registration reached from Settings never
    did, so it was refused with nothing on screen explaining why. It now asks on the same terms.
  • A long value no longer runs through its own label in a settings row — "Follow the routine
    (Linear progression)" overlapped "Rule" rather than shortening itself.