Skip to content

Latest commit

 

History

History
228 lines (180 loc) · 13.8 KB

File metadata and controls

228 lines (180 loc) · 13.8 KB

Roadmap

Where openGym is going, in the order it is likely to land. Each block is a GitHub milestone; the issues and pull requests attached to it are the plan, this file is the readable summary.

A release every two weeks, on a Sunday. Each one is small on purpose: a handful of issues, one theme, so a version is out before the branch has drifted and every fix reaches phones within a fortnight. Whatever is not merged and tested on gym-test by the Friday before rolls into the next block, the date does not move. Version numbers follow the release rule, not the size of the change: the next release is the last published one plus one patch (1.3.7 → 1.3.8), and a minor bump is reserved for something that breaks compatibility — that is v1.4.0, the database.

  • Milestones: https://github.com/DuarteSantos8/openGym/milestones — every open issue sits in exactly one
  • Tracks, in order: promised items → history editing → queue and programmes → the progression engine → cardio → the foundation (database, then search) → accounts → the iOS app → Android and health → exercises → looks and social

v1.3.2 and v1.3.3 — Cleaner workout (released 2026-09-05)

Theme: the workout screen gets out of the way. Fewer things to tap, the things you tap every set stay where they are, everything else moves one tap away. Compared with Hevy or Strong the screen was busy: ~10 buttons under a card and ~8 per set. The new default is one "⋯" per exercise, the set number as the set's own menu, and an optional list view.

Shipped: v1.3.2 is the contributors' batch, v1.3.3 the redesign and the bug round on top of it.

  • Workout view: cards or a scrollable list, with the header pinned in list mode (!96, #28, #44, #50)
  • One menu per exercise (note, details, progression, bar weight, warm-up, superset, swap, move, remove) and one per set (drop set, rest-pause burst, remove) (#20)
  • Settings → During a workout → "Workout controls": +/− buttons, drop/burst shortcuts, superset buttons, move/swap/remove buttons — each switch brings an old button row back
  • Colour-coded RIR/RPE picker with a plain-language explanation per level; the empty cell is one button, a logged rating is tinted by how close to failure it was (!91, #32)
  • Automatic working weight, no confirmation prompt, no auto-advance (!92, #18)
  • Stepper fixes: one tap = one step in supersets (!97, #41); the +/− uses the exercise's own increment and progression's rounding, without snapping off-grid values (!84)
  • Progression: routines with progression off keep their targets everywhere (!71); a weight change starts a new stall streak so a deload cannot spiral (!93); the progression sheet cannot save into the wrong entry (!77)
  • Starter plans: Push/Pull/Legs, Upper/Lower, Full Body, 5×5 with a chooser and confirmation (!94)
  • Muscle explorer in the library and the exercise picker, honouring the equipment profile (!87)
  • Copy routine (!85); the "+" in the exercise picker adds immediately (!72)
  • Timer flash blinks the theme; no replay after the app was hidden; a quiet toast on reopen (!89)
  • MCP: preview_session shows what a routine will really open with; rest_sec in get_routine (!90, !81, #36)
  • Coach: the create schema requires routine ids and a week, and caps the arrays (!99)
  • Infrastructure: nginx re-resolves the api container (#16); Renovate config repaired (#37); CI with JUnit/coverage, stack smoke test, Trivy scan, SBOMs, release preflight, fork-MR pipelines

Also in v1.3.3: exercise history and a progress line from the ⋯ menu (#43), favourite exercises (#6), the in-app update check for the Android build (!40, #38, #9), the Coach save fix on Android (#42), bands as bodyweight equipment (#39), kg ↔ lb conversion (#22), the centre tab button on the workout screen (#29, #21), warm-up ramps on the exercise increment, and the small fixes from the tester round.

Left over from this block:

  • "By muscle" inside the Add-exercise sheet keeps the keyboard-aware search
  • A real pause for the workout timers (#29 asked for it)
  • Discord announcement (owner)

v1.3.6 and v1.3.7 — Sync, push and the phone (released 2026-09-12)

Signed in, the server's profile is the truth: sign-in adopts it, two devices merge on a server revision instead of overwriting each other, the app polls for changes and works offline with a banner. Reminders fire up to 15 minutes late rather than never, push subscriptions re-register themselves, rest-timer alerts are per device. iOS: chip rows scroll sideways only, sheets clear the Dynamic Island, the tab bar stays put after the keyboard, the home-screen app reloads offline. The twelve Astra findings, eleven community merges (weigh-in switch, Swiss German, iOS 26 build, PDF on the phone, nginx resolver, custom-exercise equipment, per-side data, warm-up rest) and a headless QA sweep of every screen. Left over: routine reordering (#142), the Smith-bar "no bar" option (#138), two decimals (#139), delete user in the admin (#107).

v1.3.8 — Promised items (released 2026-09-20, a week early)

All four promises, plus the iOS keyboard, the assisted machines and a QA sweep of every screen — twenty-four reports in total. See the changelog for the full list.

  • Reorder routines in Plan; the Start sheet follows that order (#142)
  • "No bar" per exercise, so Smith-machine lifts calculate plates and drop sets from 0 (#138)
  • Two decimals on weights, as a display toggle (#139)
  • Delete a user from the admin dashboard: credentials, state file, subscriptions, Coach data (#107)
  • Custom-exercise muscle order is fixed, not click order; the import fallback classifies "wrist curl", "row … neutral grip" and Romanian deadlifts correctly (Discord)
  • The small open pull requests: unknown-path redirect (#185), manifest behind an auth proxy (#184), standard ß (#190); the distance mode (#177, #178) moves to a later release

v1.3.9 — Editing history (released 2026-09-28, two weeks early)

Edit a saved workout, its date, start time and duration, with photos and videos on it — plus the two Discord reports (a paired phone that silently stopped syncing, a plan that opened at the wrong reps) fixed at the root, and a good part of later milestones pulled forward: password sign-in and extra passkeys, custom-exercise pictures, the Android rest notification, plate loading per set, Structural Balance, Ukrainian and Arabic. Thirty-nine community pull requests. See the changelog.

  • Edit a finished workout — date, start time, duration, sets, weights, exercises; progression and 1RM history re-read the corrected session (#143, #203, #263, #218)
  • Save a logged workout as a routine (#111, #211); repeating a past workout from History and undo finish (#58, GitLab !130) move to v1.3.10
  • Copy a workout as text; relabelling an "Unknown" exercise after an import moves to v1.3.10
  • Auto-backup keeps the newest 14 files (#161, first half); a "next step" hotkey independent of focus (#133); extra passkeys and the device link (PR #95); body measurements (PR #82) move to v1.3.10

v1.3.10 — Session queue & rotation (2026-10-25)

Next up.

  • A free-running session queue beside the fixed week — the next session is the next undone one, whatever the weekday — with an in-app editor and automatic refill (#158, #69; PR #167 and the editor on top of it; Discord "not forced into a weekly plan")
  • Swipe between exercise cards during a workout (#113, GitLab !114) — the swipe preview landed in v1.3.9 (#202)
  • Drag-and-drop exercise order that survives touch (#114 — the first version came out again on 2026-09-07; a drag handle on computers came in v1.3.9, #277); the Start/Resume button as "next" during a workout (Discord)
  • Rolled over from v1.3.9: repeat a past workout from History and undo finish (#58, GitLab !130), relabel an "Unknown" exercise after an import without losing its sets, body measurements (PR #82)

v1.3.11 — Programmes & phases (2026-11-08)

  • Programmes: routines grouped into a named block over weeks, with deload and rest weeks, several per profile (#159, GitLab !98; Discord "Programme mode", "folders", "major good ideas" 1)
  • Session phases — mobility / work / accessory / cooldown — with completion-only exercises for stretching that stay out of volume and PRs (#57, #140; Discord "non-typed exercises")

v1.3.12 — Progression engine I (2026-11-22)

  • A universal AMRAP / "to failure" flag and rep or set ranges per set (#154; Discord "Sets to Failure", "More types of sets")
  • Triple progression, reps → sets → load (#179, #186; PR #181)
  • Multi-formula 1RM with Epley as the default shown (#155); assisted exercises as negative added weight (#176)

v1.3.13 — Progression engine II (2026-12-06)

  • Load as %1RM or auto with a stored training max, target RPE/RIR (#153)
  • Wave / percentage progression, 5/3/1 style (#70; PR #168)
  • A warm-up generator that picks the ramp from load and lift (#156)
  • Periodisation extras on top: mesocycle blocks, auto-regulation on RPE (#120)

v1.3.14 — Cardio, alternatives, groups (2026-12-20)

  • Cardio: incline and intervals (rounds × work/rest), interval programmes such as C25k, rucking as distance + pace + load (#132, #169; Discord "incline treadmill", "cardio programs", "rucking")
  • Exercise alternatives per routine slot (Discord); Replace in the routine editor came in v1.3.9 (#110)
  • Complexes and interval groups beside supersets (Discord)

v1.4.0 — Foundation: database (2027-01-10)

The one compatibility break. Storage moves from one JSON file per profile to a database (#191): tables for workouts, sets, routines, weigh-ins, custom exercises, favourites, credentials, push subscriptions and Coach data; an idempotent migration on first start; the old files kept until the admin removes them. The state file stays the import/export and backup format, and the revision/merge contract from v1.3.6 stays the client contract. Which database is decided in the issue — embedded by default so docker compose up stays one line, a server database as an option (Discord "Postgres/SQLite"). Nothing else rides on this release; it gets the three-week slot over the holidays.

v1.4.1 — Foundation: search (2027-01-24)

  • Search rebuilt over catalogue names in every language, import aliases, custom exercises and history: typo tolerance (GitLab !122), a live result count (!31), filters that compose, built once per catalogue version (#192)
  • Shared custom exercises between accounts on one instance (#151)
  • "Different gyms": a location on a logged set, separate histories and PRs per location, bodyweight shared (Discord "How to deal with different gyms")
  • Admin: per-user export, invite management, audit log filters

v1.4.2 — Accounts: password & OIDC (2027-02-07)

  • Optional username + password login next to passkeys (#118; Discord "Basic login", the password-manager thread) — shipped early in v1.3.9, behind PASSWORD_LOGIN
  • OIDC login for PocketID / Authelia-style setups (#130, #72; GitLab !132 is the candidate)

v1.4.3 — Trainer & MCP write (2027-02-21)

  • Personal-trainer role: invite students by code, open a student read-only, write their plan (#119, GitLab !79; Discord "Trainer & Student Management")
  • MCP write tools — routines, log corrections, equipment — in pieces (#116); remote MCP over OAuth for hosted AI clients (GitLab !88)
  • Switching kg ↔ lb converts stored values instead of relabelling them (#22)

v1.4.4 — iOS app (2027-03-07)

  • App Store / TestFlight build of the existing Capacitor target, HealthKit weight and workout export, the Home Screen icon and timer-sound issues gone for good (#90; Discord "Google Health")
  • Apple Watch rest timer later, once the app is in the store

v1.4.5 — Android & health (2027-03-21)

  • Health Connect for weight and sessions (Discord "Use health connect"); Withings and other scales (#127)
  • The rest timer as an ongoing notification on the lock screen (#122, PR #296) (shipped in v1.3.9); a home-screen widget (#125)
  • APK ABI filters (#136) (shipped in v1.3.9), about 12 MB smaller; the auto-backup directory picker (#161, second half)
  • Media for the routine's exercises cached on the phone, so a session works with no signal (#123; Discord "Download all videos")
  • Firefox-on-Windows QR and third-party passkey providers stay documented, not fixed — platform behaviour (#103, #101)

v1.4.6 — Exercises & catalogue (2027-04-04)

  • Pictures for custom exercises: upload a photo, GIF or video and a link per exercise (shipped in v1.3.9) (#126, #170); picking one from the catalogue and media on built-in exercises (#259) stay here (Discord "custom images/GIFs", "upload videos")
  • Catalogue: bench as equipment with flat / adjustable, TRX / suspension, lats and the three delts as their own categories, exercises that should not carry weight, more routine icons (#132, #188; Discord)
  • Choose what the "last time" line shows on the logger (#173) (shipped in v1.3.9); one progress line per set number (#145); custom heatmap targets per muscle; a shareable image after a workout (Discord)

v1.4.7 — Looks, social, plugins (2027-04-18)

  • Skins alongside the accent colour, backgrounds as part of a skin, a big-screen layout (#129, #134, #135)
  • Social: friends, progress and plan sharing (PR #180); a plugin surface for integrations (Discord)
  • Native NixOS module (GitLab !83) and Azure deployment (!35) only if someone maintains them; Arabic and right-to-left (GitLab !36) (shipped in v1.3.9)

How things move

An issue sits in exactly one milestone; a milestone is a Sunday, and whatever is not merged and tested on gym-test by the Friday before rolls into the next one — the date stays. Contributor pull requests from returning contributors get their pipeline started here automatically; a first PR is started by hand after a look at the diff. Anything in review is on gym-test.duarte-santos.ch. Releases bundle whatever has passed that test, with a changelog section per contributor.