openGym logo

openGym

Self-hosted gym and body-weight tracker with workout planning and muscle recovery tracking

Alternative to: strong, hevy, fitnotes

openGym screenshotopenGym screenshotopenGym screenshot

About Versions (28)

v1.1.2

2026-07-21

Changelog

v1.1.2 — 2026-07-22

Custom exercises, full localization, and input fixes.

Custom exercises (#11)

  • ✨ Create your own exercise from the exercise picker or the Exercises tab: a name and a body part is all it takes. Your search text is pre-filled as the name, so “no match” flows straight into “create it”.
  • 📝 Optional description — setup, cues, anything you want to remember. It shows on the exercise’s detail and config sheets (where a built-in exercise would show its animation), and it’s searchable, so you can find your own exercises by their cues too.
  • 🏋️ Custom exercises behave like built-in ones everywhere — routines, supersets, workout logging, weight suggestions, PRs, stats and history. The animation stays blank by design.
  • 🏃 Pick the cardio body part and it logs time + speed instead of weight × reps, like the built-in cardio exercises.
  • ✏️ Edit (rename, change body part or description) or delete your custom exercises — from their detail sheet in the Exercises tab, or straight from the exercise inside a routine via “Edit or delete this exercise”. Deleting removes them from your routines; already-logged workouts keep their sets and still show the exercise name. (The routine sheet’s old “Remove exercise” button is now labelled “Remove from routine”, so the two are no longer confusable.)

Localization (#7)

  • 🌍 12 UI languages: English, Deutsch, Español, Français, Italiano, Português, Polski, Türkçe, Русский, 中文, 한국어, हिन्दी. Pick yours under Settings → Appearance → Language; the choice syncs with your profile like the theme does.
  • 📖 Localized exercise instructions for 10 of those languages (all except German and Portuguese, which the upstream dataset doesn’t cover yet — those fall back to English), covering all 1,324 exercises. Body-part filters, equipment and muscle tags are translated too; exercise names stay English (upstream limitation). Custom exercises are translated too.
  • 📅 Dates, weekday and month labels follow the selected language.
  • ⚡ Zero cost when unused: the app still ships English-only by default. Each UI language is a ~7 kB chunk and each instruction pack ~80–120 kB (gzipped), downloaded only when you switch — the initial bundle size is unchanged.
  • 🛠️ New scripts/build-instructions.mjs regenerates the instruction packs from the upstream dataset; translations live in frontend/src/locales/ (PRs welcome — it’s one flat English-string → translation map per language).
  • Known gaps: push notification texts (sent by the server) and plural forms in some languages are approximated; happy to take corrections from native speakers.

Fixes

  • ⌨️ Weight and other numeric fields now accept a comma as decimal separator (“33,5”) — iOS decimal keyboards in many locales only offer a comma, which previously reset the field to 0. Partial input like “33,” no longer snaps to 0 while typing. (#13)
  • 📱 Fixed the exercise-config sheet (Sets / Reps / Weight, and the cardio variant) overflowing the screen edge on narrow phones — the Weight stepper was clipped and could make the whole page pan sideways in iOS Safari. Steppers now shrink to fit the viewport. (#10)
  • 🛡️ Added a global horizontal-overflow guard so a single too-wide element can no longer knock the page layout off-scale.