Skip to content

v0.3.1 — Assisted-machine sign fix & non-English CSV coverage

Choose a tag to compare

@BenjiPy BenjiPy released this 13 Jul 11:33
· 19 commits to main since this release
72fd0f1

Two related hotfixes from community feedback on v0.3.0. No breaking
change, no engine architecture change — mostly non-English users
benefit.

🐞 Bug fix — assisted-machine sign

Assisted pull-ups, chin-ups and dips (Assisted / Assistée /
Band / equivalents in FR / ES / DE / PT / IT) were treated as
added weight instead of subtracted when the CSV title didn't
exactly match the English template catalog. Result:
more assistance = higher Back / Chest score, which is obviously
backwards.

The engine now detects assisted / weighted bodyweight variants
directly from the title using a multilingual keyword list, and
overrides the load semantics accordingly. Assistance that meets or
exceeds bodyweight now correctly skips the set (was silently
producing 0 before).

Big thanks to the Reddit user who caught this — it's exactly the
kind of feedback that makes the project mature.

🌍 Non-English CSV coverage (ES + DE + PT + IT)

Hevy's exercise catalog is English-only, so users on other Hevy
locales were bleeding accuracy in three places. All three are now
fixed:

  1. Muscle group inference (GROUP_HINTS): Spanish, German,
    Portuguese and Italian keywords added across all groups and the
    cardio/mobility skip list. 36 multilingual test cases pass.
  2. Per-exercise coefficients (GROUP_COEFFS): same
    multilingual pass on the coefficient table, so a Prensa /
    Beinpresse / Pressa Gambe picks up the leg-press coefficient
    (3.0) instead of falling through to the group default (which was
    over-crediting foreign users on machine-friendly lifts).
  3. Fuzzy catalog lookup: buildCatalog() now indexes each
    template by a canonical form (sorted tokens, parens stripped)
    so titles like Barbell Bench Press match
    Bench Press (Barbell), and so on.

🇩🇪 German compound words

matchesWord() now allows a trailing compound tail for single-word
needles of ≥ 5 chars, so Bankdrucken / Bizepscurl /
Schulterdrucken match their base keywords (bank, bizeps,
schulter). Multi-word needles stay strict.

🧹 Also

  • corda (PT/IT jump rope keyword) no longer incorrectly skips
    triceps rope pushdowns.
  • Many missing EN/FR variants added (Meadows Row,
    Landmine Press, Belt Squat, Muscle Up, Cable Crossover,
    Farmer Carry, Ab Wheel, Sissy Squat, Pallof Press, etc.).
  • bodyweightFraction() extended to cover FR/ES/DE/PT/IT variants
    of pull-up / squat / push-up so bodyweight-only sets stay
    scorable across languages.

Upgrade notes

Existing users' ranks are essentially unchanged — the ranking
engine, coefficients and thresholds are the same as v0.3.0.
Non-English users will see more accurate ranks (previously
over-inflated on assisted work and machine-friendly foreign
titles). No action required.

Full changelog

See CHANGELOG.md.