Skip to content

fix(container): update image ghcr.io/duartesantos8/opengym-api ( 1.4.4 ➔ 1.4.5 ) - #355

Merged
renovate[bot] merged 1 commit into
mainfrom
renovate/ghcr.io-duartesantos8-opengym-api-1.x
Nov 14, 2026
Merged

renovate[bot] merged 1 commit into
mainfrom
renovate/ghcr.io-duartesantos8-opengym-api-1.x

Conversation

@renovate

@renovate renovate Bot commented Nov 14, 2026

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
ghcr.io/duartesantos8/opengym-api patch 1.4.4 → 1.4.5

Release Notes

DuarteSantos8/openGym (ghcr.io/duartesantos8/opengym-api)

v1.4.5

Compare Source

Apple Watch, redesigned and in step with the phone

  • Watch redesign: idea and first versions by @​cubetes (#​832 to #​966), and so is most of the last round (#​1066, #​1068, #​1069, #​1076, #​1100, #​1107, #​1108, #​1187, thanks @​cubetes).
  • The watch wears openGym's look: the app's greys, its rounded type and its accent colour (your own, if you picked one on the phone). On watchOS 26 every button is Liquid Glass. The start screen says Today beside the clock, tells you how big the routine is (exercises and sets) and has one big Start, with the other routines as rows under it.
  • The watch speaks all 26 of openGym's languages: Czech, Danish, Persian, Indonesian, Lithuanian, Swedish and Vietnamese are new.
  • One session screen instead of a stack of pages: the set in the middle, the rest on the same page after it, and a swipe right for the Overview with every exercise, its sets and supersets grouped. Tap a row to jump there. Finish is a one-second hold at the bottom of the Overview, so a workout never ends on a stray tap, and the Overview comes up by itself after the last set.
  • The set page reads like Apple's Workout: which set it is on a pill beside the clock, the exercise big under it (warm-up, left or right beside it), the numbers in boxes with their names on top, last time, and one wide Done. The Digital Crown turns the outlined number one step per click, in the exercise's own steps, and never flips exercises again; tap the other box to hand it the crown, tap an outlined box again for a keypad when you need 62.25 kg.
  • Fix a set you already logged: ‹ goes back to it with what you logged, change a number and Save. › goes forward, past the set up next too.
  • The rest: a big countdown beside the clock, your heart rate and the workout's time, and Up next with the next set's weight and reps, so you can load the bar while you breathe (#​1100; #​911, thanks @​rhjensen79 for the idea). Rate the effort while you rest: four chips (RIR 0, 1, 2, 3+ or RPE 10, 9, 8, ≤7, whichever the phone logs), one tap and it's on the set. −15 s, Skip and +15 s wait a second before they take a tap, and ‹ opens the set you just did to fix it while the clock keeps running.
  • Timed holds: a big countdown with a bar that turns orange for the last five seconds and a click for each of the last three. Finishing the workout mid-hold logs the seconds you held instead of dropping the set. Per-side sets say Left or Right on the set, the hold and Up next, and supersets name their partner under the exercise.
  • Metrics is a stack now: the summary the way Apple's Workout draws it, then Heart rate (average, max, min and a line of the whole workout), Effort (how hard each exercise was), Zones (time in each heart-rate zone) and Muscles (sets per muscle today) (#​1068, #​1108, #​1187). Zones works from your date of birth in Apple Health and only asks for it once you switch on Settings → Integrations → Apple Health → Birth date, for heart-rate zones. Apple's own music controls are one more swipe away, and lowering your wrist on the Overview or the music takes the watch back to the set.
  • The Overview shows each exercise's picture, the still of the animation the phone already sends for the workout, greyed once it's done.
  • The weigh-in, the summary and "All done?" got the new look. "All done?" is a card instead of a system alert, says how long nothing happened, sends Finish to the Overview's hold, and goes away by itself when you log a set on the phone. The summary shows the time big, and its Done ignores taps for its first second.
  • It follows the phone: a set ticked on the iPhone moves the watch to the next one, on that exercise or another, and the last set of an exercise takes it to the next exercise instead of leaving it on "All sets done" (#​1066, thanks @​cubetes). A rest paused on the phone stands still on the wrist, with only Skip live.
  • A rest that ran out while the screen was off goes back to the set page when you raise your wrist, and never starts a timed hold nobody saw (#​1101, #​884).
  • The watch says plainly whether your sets reached the iPhone: a small orange arrow with a count beside the clock while sets are on their way (a crossed-out phone when it is out of reach), "Waiting to sync 3" or "All synced" on the Overview and the summary, and the count on the complication and in the Smart Stack, even after the workout ended. It comes straight from the outbox, so it is right after a relaunch too.
  • Calmer, clearer motion: screens fade into each other instead of cutting, ‹ and › slide the set in from the side you went to while the arrows and Done stay put, and the 3-2-1 before a workout (or a hold that starts by itself) drains its ring smoothly, springs each number in and ends on GO! in the full ring. With Reduce Motion on it's short fades only, and in Always On nothing moves.
  • Long names fit: workout and routine names keep clear of the round corners on every case size, a long exercise name gets smaller or takes another line instead of ending in "…", and Skip shows its symbol where the word does not fit. Checked in the simulator on 40, 42, 46 and 49 mm, in German and Russian and at the largest text size.
  • Fixed: the end of a rest or a timed set keeps you in the app instead of dropping you on the watch face, and the rest countdown no longer crashes at 0:00 (#​936, #​883, thanks @​cubetes in #​955). With Apple Health off, watchOS can still go back to the clock, and the Overview now says how to avoid that.
  • Fixed: a snapshot from the phone no longer undoes a ±15 s on the watch or brings back a rest you skipped there, and the summary keeps its heart rate when watchOS ended the workout session itself (thanks @​cubetes in #​1073).
  • On the iPhone, Settings → Watches → Apple Watch says for each state of the link what to do next and keeps itself up to date while it's open. Apple Health opens the Apple Health page straight away (#​1069), the rest timer is picked from two pictures of the watch, Calories works and the "Time so far" switch that did nothing is gone (#​1076, thanks @​cubetes).

Wear OS, the same watch on every Wear OS wrist

  • Wear OS gets the watch redesign, idea and first versions by @​cubetes, and so is most of the last round (#​1024, #​1027, #​1029, #​1030, #​1031, #​1033, #​1165, #​1168 to #​1172, #​1174, #​1175, #​1180 to #​1184, #​1188, #​1189, thanks @​cubetes). Pixel Watch, Galaxy Watch and every other Wear OS watch now look and work like the Apple Watch: one design on every wrist.
  • openGym's look on Wear OS: the app's dark greys and your accent colour from the phone. Start says Today beside the clock, shows the routine's exercises and sets, one wide Start and the build number at the bottom.
  • The Wear OS watch speaks all 26 of openGym's languages: Czech, Danish, Persian, Indonesian, Lithuanian and Vietnamese are new there.
  • One session screen: swipe between the Overview, the set, Metrics and music controls. The rest and holds run on the set page, Finish is a one-second hold, and the Overview shows up by itself after your last set.
  • The set page: weight and reps in big boxes in Apple Workout's style (#​1175), and the exercise's animation beside them like on the Apple Watch, held still with Remove animations and left out in Always On (#​1170; where the phone app has the standard animations). The crown (or the rotating bezel) turns the outlined number, tap it again for a keypad, and ‹ › take you back to a logged set to fix it, with your heart rate for the set kept.
  • The rest like the Apple Watch's (#​1174, #​1184): a big countdown whose last three seconds turn orange, a +15 s pill that adds up your taps (#​1181), Up next with the next set's weight and reps (#​911), and the effort chips while you rest (RIR or RPE, whichever the phone logs). −15 s, Skip and +15 s wait a second after Done, a hold's bar goes orange for the last five seconds, the superset partner is named, and finishing mid-hold keeps the seconds you held.
  • Metrics: time, heart rate with its max and min, sets, volume and calories, on Metrics and on the summary (#​1171, #​1180). Under it Heart rate, Effort, Zones and Muscles pages like on the Apple Watch (#​1172, #​1188, #​1189). Zones works from the birth year you gave openGym on the phone and says how to add one when it is missing. Calories need the physical activity permission, which the watch asks for once.
  • Buzzes you can feel: Wear OS 3 watches vibrate at all now, and logging a set there no longer stops the app (found by @​cubetes in #​1168). The watch buzzes where the Apple Watch does, and "rest's over" comes once more after 5 seconds unless you touch the watch first.
  • Readable on every watch: no text under 12 sp (#​1183), every screen fits a 40/41 mm watch at the largest text size (buttons shrink their word or show just the icon, the set page measures what fits), the clock line at the top stays on its curve instead of running into the exercise name, and "Still training?" says its whole sentence. The first sync after installing opens the start screen at the top, and the page dots follow a page you jumped to from the Overview. TalkBack can change the numbers with More and Less, and Always On shifts its pixels so the screen does not burn in (#​1169).
  • A long-text complication for the wide slots on a watch face (#​1182), next to the Tile and the small complication, all with the sync count.
  • The weigh-in before a watch start, "All done?" after 20 quiet minutes (it asks, it never ends a workout on its own), a summary with the time big, and a Now playing remote for music on the watch, with one tap to the system's Media Controls for music on your phone.
  • It follows the phone: Skip, +15 s or a pause on the phone moves the watch's rest too, and a set ticked on the phone moves the watch along, to the next set, the superset partner or the exercise you ticked it on (#​1165, thanks @​cubetes; #​1149). The effort chips then rate that set. Moving, adding or removing an exercise on the phone leaves the watch on the one you are doing, and a weight changed on the phone for your next set shows on the watch, unless you already turned the crown.
  • Wear OS catches up with the Apple Watch, thanks @​cubetes (#​1030, #​1031, #​1033): a set you tick on the phone gets the watch's heart rate, each rest's heart rate lands on the set before it, a run or yoga session is recorded as one instead of strength training, and a workout left open on the charger rests the heart-rate sensor after 3 quiet hours instead of draining the battery.
  • Samsung Health or another app already recording a workout? openGym leaves it running and only reads your heart rate.
  • Sync you can see: an orange arrow with a count beside the clock while sets wait for the phone, "Waiting to sync 3" or "All synced" in words, and the count on the Tile and the complications. "Waiting to sync" clears as soon as the phone has stored a set, app open or not, and "All synced" waits until the phone has actually answered once.
  • The watch keeps itself awake through a rest so its buzz is not late with the screen off, "Phone out of reach" follows the phone within half a minute, and a phone reachable over Wi-Fi counts as in reach.
  • Fixing a weight on the phone half an hour after your last set counts as the workout going on, so the watch no longer asks "All done?" a minute later. And when the phone sees you walk out of the gym, "Looks like you left the gym" shows up on the watch too, and the phone no longer overrules a watch that ended the workout for that reason.
  • Calm motion: screens fade, ‹ › slide the set in from the side you went, and a 3-2-1 ring ends on Go!. Remove animations means short fades only, and in Always On the watch draws outlines and nothing moves.
  • New on Android: Settings → Watches → Wear OS watch. It says whether a watch is connected, whether openGym is on it, whether it is in reach and when it last checked in, and what to do next in each case. Until now Android had no watch page at all.
  • Fixed: a snapshot from the phone could undo a ±15 s or bring back a rest you skipped on the watch; the summary's heart rate ran into the round edge ("164 max" cut off); the rest screen's "Next: …" line was in English in every language; and the app crashed when a workout ended while it was still starting.

Garmin, talking to the phone at last

  • The phone apps now talk to the openGym Garmin watch app (Connect IQ): your workout shows on the wrist, sets, starts, finishes and discards logged there land on the phone, and the Garmin can start today's routine by itself. On Android it goes through Garmin Connect; on the iPhone you pick your watch once. The watch side needs openGym 1.4.5 on your phone.
  • Get it from the Connect IQ Store: Settings → Watches → Garmin → Get openGym for Garmin opens its store page. The same page lists which Garmins the phone knows, whether openGym is on them, and the watch switches (send workouts, open on the watch when a workout starts). A watch out of reach is asked to come closer instead of being offered the app, and Look again works after a Garmin Connect that was too old or got stuck.
  • Garmin gets the watch redesign, idea and first versions by @​cubetes. Forerunner, fēnix, Venu, vívoactive, Instinct and the rest now look and work like the Apple Watch and Wear OS, fitted to what each Garmin can do.
  • openGym's look on Garmin: black, your accent colour from the phone, numbers in boxes. Start says Today, shows the routine's exercises and sets and one Start. Black-and-white screens (Instinct) get outlines, and the number you are changing turns white on black.
  • One session screen: the Overview, the set and Metrics side by side. Swipe on touch watches, or pick them from the menu on watches with buttons. The rest and holds run on the set page, and the Overview shows up by itself after your last set. Touch and hold its Finish to end the workout, or confirm from the menu.
  • The set page like Apple Workout: UP and DOWN (or a swipe) change the outlined number, BACK switches weight and reps like before. Previous set in the menu (or ‹ beside Done) opens a logged set to fix it, and your heart rate for it stays.
  • Rest and holds: RIR or RPE while you rest (chips on touch watches, in the menu on the others), −15 s, Skip and +15 s that wait a second after Done, a hold with its own 3-2-1 and a bar that goes orange for the last five seconds, the superset partner by name, and finishing mid-hold keeps the seconds you held.
  • It follows the phone: Skip, +15 s or a pause on the phone shows on the wrist ("Paused", with the time standing still), and the watch's own +15, −15 and Skip move the phone's rest. On the bigger Garmins a set ticked on the phone moves the watch along too; the smallest ones (Forerunner 55 and 245, Venu Sq, fēnix 6, enduro, Instinct) don't have the memory for that.
  • Metrics (time, heart rate, sets, volume, calories), a summary with the time big, and "Still training?" after 20 quiet minutes or as soon as the phone saw you leave the gym. Keep going tells the phone too. Music stays with Garmin's own controls.
  • Sync you can see: an orange arrow with a count beside the clock while sets wait for the phone, and "Waiting to sync 3" or "All synced" on the Overview and the summary. It counts sets, not messages.
  • The Garmin keeps every event until the phone confirms it applied it, like the other watches, so a set logged while openGym on the phone was closed is not lost. A whole workout logged with the phone away drains in one go without the watch jumping back, an event sent again long after the phone applied it is confirmed again, so a watch that was away for a whole workout lets go of all of it, and the link no longer stops for good: it comes back after Garmin Connect was updated or restarted, and keeps quiet while the phone does.
  • A watch that never heard from the phone says where to go: Settings, then Garmin, in openGym on your phone. Android runs nothing of Garmin's until you open that page once, and never without Garmin Connect installed (the page says so). On the iPhone it says when Garmin Connect is missing.
  • Small watches, big workouts: on the Instinct 2 family (96 KB for an app) the watch keeps the first 16 sets of today's routine (the rest arrives from the phone) and holds 6 sets for the phone at a time; the others wait their turn and go out as soon as there is room. The 128 KB watches hold new sets back the same way once memory runs low, so a long workout with the phone at home no longer runs them out of memory. To fit at all, those smallest watches leave out Metrics, the effort chips, "Still training?" and the hold timer (Done logs a hold's seconds on the set).
  • A 3-2-1 that ends on Go! before a workout started on the watch. It drains smoothly on AMOLED screens and steps once a second on the others, which stay still otherwise.
  • The Garmin speaks 22 of openGym's languages now: Czech, Danish, Indonesian, Lithuanian and Vietnamese are new. (Connect IQ has no Hindi, Bengali or Persian, and only one Portuguese.)
  • The Garmin app ran in Garmin's simulator on ten watches, Forerunner 55 to fēnix 8: every screen sizes its big numbers to the watch, so nothing overlaps on the small ones, and nothing hides under the Instinct's little round window anymore.
  • Fixed: on the Venu Sq 2 the top button did nothing. It starts, logs a set and skips the rest like START on the other watches.
  • Fixed: on the Forerunner 55 and the Instinct 2 the summary's title and long exercise names were cut off. They wrap onto a second line and get a smaller font before anything is cut. "Not synced yet" reads whole on the Instinct too.
  • Fixed: a snapshot from the phone could undo a ±15 s or bring back a rest you skipped on the watch, and on the small watches "Timed holds start by themselves" logged a hold as done the moment the rest ended.
  • The F-Droid build stays free of Garmin's closed SDK, so it has no Garmin link; its Garmin page says so.

Watch sync: one rest timer, every set once

  • One rest for the phone and every watch: a rest started anywhere ends at the same second everywhere, +15 s, −15 s and Skip on any of them move the others, a pause on the phone holds the watch, and opening the phone app no longer restarts the watch's rest. A watch whose clock is a little off is allowed for (#​882, #​936, #​1149).
  • Every set of a running workout has an id now, shared by the phone and all three watches. A tick lands on the right set even after sets moved, the same exercise twice keeps its sets apart, and a set you make a warm-up on the phone stays the same set (#​1162).
  • Apple Watch and Wear OS keep every set, start, finish and discard in an outbox of their own and send it again until the phone confirms it applied it. A failed transfer, a killed app or a phone that was off all day no longer eats a set.
  • A set logged at the wrist is never dropped, even when the phone took that exercise out or the routine was edited or deleted since the watch last heard. A workout finished on the watch ends at the moment you tapped Finish, not when the phone heard of it.
  • The phone sends a change to the watches at once instead of waiting, and whatever waits goes out when you lock the phone. Apple Watch sets reach the iPhone in a moment while it is near, so logging on both devices back and forth stays in step (#​882).
  • iPhone: the watch link starts with the app, even when iOS wakes it in the background, so sets land while the phone sleeps in your pocket. One limit stays for now: with the iPhone app in the background, what you do on the watch shows on the phone when you open the app. Nothing is lost on the way.
  • A set unticked or edited on the phone stays that way on the watch, instead of the watch insisting on its own copy, and an older fix from the wrist no longer undoes a newer one from the phone.
  • The rest after a set ticked on the watch counts on the phone from the tick, so both ring together, and a phone that had been away no longer runs rests for sets done long ago.
  • A workout started on the watch and ended on the phone before the watch heard about it no longer keeps running on the wrist. Sets logged on the watch after you saved the workout on the phone join the saved workout, even for an exercise the phone had left empty.
  • A late copy of a watch workout's start no longer starts it all over again, and a watch workout started while another one ran on the phone waits its turn, however long that takes, instead of being thrown away.
  • Fixed: a phone clock set back a little made the watch ignore the phone until the clock caught up, and on Wear OS and Garmin a +15 or Skip pressed right after Done could be undone a few seconds later by the phone's copy of that same rest.
  • Settings → Watches → Apple Watch and Wear OS watch: "Last heard from the watch" counts the newest set, rest or status that reached the phone, not only when the watch app started (#​1151).
  • How we know: the sync has a simulator and a random test that plays thousands of lost, doubled and late messages, killed apps and clocks apart (docs/WATCH_SYNC.md), and each watch's own sync code has tests of its own. Not on real wrists yet, so tell us what you see.

Your workout at a glance: the live widget

  • The Lock Screen, the Dynamic Island, the Android notification (a Live Update on Android 16) and the Home Screen widget show what matters for the set you are on, with Log set right there.
  • It follows the exercise and the moment by itself: weight × reps for a lift, the band for band work, the clock for a timed hold, time and speed or distance for cardio, metres and load for a carry, the partner in a superset. During a rest you get a big countdown with "Up next", or "Next exercise" before a new one. Nothing to set up.
  • Settings → Workout → Live widget opens on a status card: a switch for this phone, a plain warning with one tap to fix it when Live Activities or notifications are off, and Try it on this phone, which puts a sample on your real Lock Screen or notification for two minutes. Turn Live Activities on in the iPhone's Settings and they work without restarting the app.
  • Under it a pinned preview of your own phone's screens in three moments (a set, a rest, all done), and the switches grouped by moment: During a set, During a rest, The whole workout and In the app. Flip one and the preview goes where it shows; one that cannot show says why. The choices: heart rate, what's next, time since start, effort, record hints, calories, the exercise picture, and the buttons − + for weight and reps, +15 s on rests (iPhone), Next exercise and Pause. Pick a Clean or a Detailed look.
  • For power users: Per exercise type gives strength, bands, holds, cardio and carries an own setup, with Warm-up and Add set among the buttons. And an optional strip in the workout shows only what the screen does not already: the exercise after this one, heart rate and calories.
  • Not showing up? A row at the bottom lists the usual reasons on your phone and what to do about each.
  • The buttons work from the Lock Screen and the notification without opening the app (on a locked iPhone, iOS may ask for Face ID or your passcode first), and a tap there and one in the app can never log the same set twice. On the iPhone the card changes the moment you tap and only the numbers roll, and Warm-up and Add set answer from the Lock Screen too. Finish opens the app, since saving asks what to keep.
  • Heart rate shows only when something measures it: headphones or the phone's workout, or the last set your watch measured.
  • The Android notification builds on the one whose idea (and first version) is by @​Andrew-A-A (#​874).

Circuits, AMRAP, EMOM, Tabata and run/walk (ideas by @​Seexelas #​560, @​dodo-rieder and @​yogainalift #​725, @​maku #​765, @​Space-Hermes #​626, @​rubenixnagios #​507)

  • A routine can run on the clock now: Plan → a routine → Routine type → Circuit, AMRAP, EMOM, Intervals (Tabata 20/10 × 8 is one tap) or Run/walk program. A superset can do the same from its name above the exercises (How it runs), so a finisher can sit after your strength work, and a one-exercise EMOM is fine.
  • A full-screen player with a big clock, the station you are on with its animation, what comes next, Pause, Done and Skip. Beeps, a buzz and 3-2-1 at the end of each interval, the voice says "Go! Burpees" when Spoken cues are on (the speaker in the player switches them), the screen stays on, and a locked phone still rings every interval. The Lock Screen and the workout notification count it down too.
  • Every station lands in the workout as a normal set as it happens, so history, stats, records and progression just work. The workout keeps the rounds, the AMRAP score (rounds + reps), the round times and how that compares with last time ("Round 3 today: 12 s faster").
  • After a finished run: one more rep or five more seconds per station for next time, one tap to put it in the routine. The run/walk program moves up a level after three finished runs.
  • Apple Watch, Wear OS and Garmin show the station you are on and count down the circuit's rests.
  • Fixed: the + and − buttons of a number field told a screen reader "Increase" and "Decrease" in English whatever the app's language.

The AI Coach, easier and handier

  • Setting up the Coach is a few taps: big cards for OpenRouter, Claude, GPT, Gemini and a model on your own network. Sign in with OpenRouter and one login covers Claude, GPT, Gemini and more, billed to your own OpenRouter credits.
  • For Claude, GPT and Gemini: a link straight to the provider's key page, paste the key (a key of another provider switches over by itself), Test it, pick a model with a rough price hint. "On my network" finds Ollama, LM Studio or llama.cpp for you.
  • Ask the Coach to do things, not just answer: "make me 3 full-body routines with only bodyweight and a pull-up bar", "a quick workout for today", "swap the leg press", "put Legs on Thursday", "remember my left knee is sensitive". Every change shows up as a preview you say yes to, and plan changes can be undone.
  • The Coach reads more of what you track: strength trends, body measurements and, only if you switch it on, sleep, heart rate, steps and how you feel. Coach menu → What the Coach sees lists all of it, with a switch for each.
  • Web research, if you want it: the Coach can look things up with your provider's own search and links the pages it read. Off until the admin and you both switch it on.
  • A routines library the Coach can pick from: the starter plans now, community routines from opengym.ch later.
  • Claude and ChatGPT can use your openGym as a connector: add the address from Settings → Integrations → API tokens as a custom connector and sign in with openGym. You pick what it may see and change, and you can revoke it any time.
  • Fixed: long-thinking models died as "could not reach" on mobile data (#​1035). Answers stream now, and a dropped connection says so.

Use the AI you already pay for

  • Settings → Use your subscription: add openGym to Claude, ChatGPT or Gemini as a connector and let the assistant you already pay for read your training and write routines. No API key, no second bill. Three steps per app, a Copy button and a QR code for the address, a link straight to the right settings page, and a status that turns green with "Connected via Claude" once it has used openGym. Disconnect any of them there too.
  • Gemini works where Google has custom apps (some plans and countries for now), and the screen says so instead of pretending.
  • No server, just the phone? The screen says honestly why a connector cannot reach it and shows what works instead: OpenRouter, an API key or a model on your network.
  • Got Claude Max, Ultra or Team? Your plan includes monthly API credits, and the Anthropic card in the Coach setup links straight to the key page. Gemini's free key is a one-minute job now: open AI Studio, copy, paste, and openGym tests it by itself.
  • The connector sign-in got sturdier: refresh tokens so Claude and ChatGPT stay connected, Claude's and ChatGPT's own client identity (no registration needed), the checks ChatGPT asks for, and it works under a subpath (BASE_PATH) too. Assistants can search the exercise library by name, muscle or equipment, so a routine they write uses exactly the exercise you meant.
  • Admins: the Claude Code setup token stays, with a plain warning that Anthropic only allows it in Claude Code. For your own instance there is a preview to run the Coach on your ChatGPT plan (COACH_CHATGPT_PLAN=on, Sign in with ChatGPT).

Trainers and gyms (self-hosted, TRAINERS=on, off by default)

  • Gyms, gym leads and trainers on one server. An admin creates a gym and gives people the lead or trainer role, or lets someone train freely without a gym (#​119, ideas by Alex Marin (trapy on GitLab) and @​hcke).
  • A trainer hands you a code or a QR. You see who they are, which gym and who answers for your data, and pick per category what they may see, suggest or change. Nothing is shared until you say yes and they confirm.
  • With a gym trainer, the gym lead gets a row of their own: pre-filled with what your trainer sees, never more than see, and you can switch any of it off (TRAINERS_LEAD_ACCESS picks row, mirror or none).
  • Settings → Account → Trainer & gym shows exactly what each side sees, lets you change it or disconnect, and it counts on their next tap. Your sharing log lists every connection, change and look, only you read it, and it comes along in "Download my sharing record" and goes with your account.
  • Groundwork for the trainer dashboard, the shared library and sign-in with OIDC: one permission check for every new route, versioned consent records, per-account limits. See docs/TRAINERS.md.
  • The trainer dashboard: the people you train in one list with their last workout, streak, this week as dots and what needs you (missed plan days, new PRs, quiet for a week, weight on the move, a suggestion still waiting), with search, filters and sort. On a phone it is a list, on a wide screen the list and the person sit side by side. Idea and first version by @​alexandreviolamelo (#​974).
  • One member shows only what they shared: an overview with sessions per week, best lifts and weight, their workouts (without photos, and without notes unless they shared those), their plan and body weight. Anything not shared says so, and every look lands in their sharing log.
  • Assign one of your routines to one person or a whole selection, onto a weekday if you like, with a word for the road. Before you send it, the sheet says per person whether it goes in directly, waits as a suggestion or is skipped because they do not share plans. Their copy says it came from you; send it again and it replaces that copy.
  • Comment on a workout, log a weigh-in from the gym's scale: comments go to the member's inbox, never into their data.
  • What a member allows decides the rest: "Change directly" writes on the server through the same sync stamps a second device uses, so their phones merge it without losing a thing; "Suggest" waits in their inbox to be taken or left. Every change carries the trainer's name and the member can undo it, one change at a time, for 30 days, from Trainer & gym.
  • Members get a line on Home and a push when a trainer connects, when their sharing changes (not you? have a look), when a trainer changes or suggests something and when one leaves a note.
  • Gym leads see their gym: its trainers, every member who joined, their trainers and only what each member's lead row lets through. They add and remove trainers by account id and hand out a join code (GY-…) for the front desk, which joins the gym without any trainer.
  • A trainer leaving a gym (or a member leaving it) no longer just cuts things off: each member gets 30 days to keep that trainer privately, with the same sharing and without the gym lead, or the connection ends by itself.
  • Nutrition is a category you can share already; it stays empty until a nutrition app is linked. openNutrition plugs in with its read-only summary:read token (NUTRITION_SOURCE, NUTRITION_URL), and a trainer never sees the token.
  • "See what Marco sees" in Trainer & gym shows you the very screen your trainer gets.
  • Progress photos you share with a trainer they can now actually see: your day photos and workout photos, newest first, each file checked against your sharing on every look and logged. Your form videos, exercise pictures and profile picture stay yours. The photo count no longer said 0 either.
  • Trainers can fix a typo in a logged workout (Correct, on the workout): the weight, reps or name, never adding or removing sets. Like every other trainer change it is labelled with their name, waits for a yes at "Suggest", shows in your sharing log and is one tap to undo. Logging a whole workout and a body check-in for you now have buttons too.
  • "Keep training privately?" only shows up when that trainer may train people outside a gym on your server. Otherwise the connection just waits, in case they come back.
  • The streak in a trainer's list counts with the member's own phone's rules, freeze history included, so it is never a week off what the member sees.

Sign in with your identity provider (OIDC)

  • Self-hosting with Authentik, Authelia, Keycloak, voidAuth or Pocket ID? openGym signs people in through it now, next to passkeys: set OIDC_ISSUER and OIDC_CLIENT_ID and the sign-in screen gets a "Sign in with ..." button (#​130, idea and first version by @​melduarmir (#​391), testing by @​austinwilcox).
  • The phone app signs in the same way from "Connect to my server", in the system browser, and comes straight back to the app. No pairing code needed.
  • Accounts make themselves: being in the right group at your provider is the invite (OIDC_ALLOWED_GROUPS), and leaving it ends that profile's sessions. FIRST_USER_ADMIN works for the first provider sign-in too.
  • Groups can hand out roles (OIDC_ROLE_MAP): admin, trainer, gym lead and member per studio. A role you gave by hand stays put.
  • Already have a passkey profile? Settings → Account → Sign in with ... links it, after the usual passkey check. Linking by e-mail is opt-in and only for addresses the provider says are verified.
  • OIDC_ONLY makes the provider the one way in (admins keep their passkeys for a rainy day), OIDC_LOGOUT signs you out at the provider as well, and Admin → Identity provider shows whether it all works.
  • Recipes for each provider are in docs/SELF_HOSTING.md.

From the community

  • Danish: the app speaks Dansk now, exercise names too (thanks @​jonasdkgit in #​1039). Everything added since it was written is translated too.
  • Fixed: 75 exercises whose steps described a different movement, like scapula push-ups that bent the elbows or reverse-grip rows done with a normal grip (#​1053, thanks @​6801318d8d in #​1056). Where a translation followed the old steps, it shows the corrected English until it is redone.
  • Easier to read: small notes in dialogs, the light "Sign in" pill, ticked sets and the search fields' hints all have more contrast, and the weigh-in nudges get a proper tap height (thanks @​cubetes in #​1040).
  • Self-hosting: the Docker images run on Node 26 and pick up the newest Node 26 and nginx 1.x fixes each time they are built (thanks @​vkentta in #​1059).
  • Fixed: planks, hangs and wall sits from FitNotes came in as cardio at 0 km/h. They are timed holds now, to the second.
  • Fixed: reloading the admin dashboard dropped you on Home.

From TestFlight

  • Fixed: spoken cues and your own voice clips are heard even with the end-of-rest sound off and the iPhone on silent. Music still only turns down for them.
  • Fixed: the back-to-top button did nothing on iPhone when you were all the way at the bottom of a long page.
  • Fixed: on a photo share card the logo sits on its own dark badge, and nothing runs over it any more. A card that is too full shortens the list or shrinks the map instead.
  • Fixed: "Next time: 0 kg, lighter" under every lift on the finish screen with pyramid sets or progression off. It now shows the set you will open with, or nothing.
  • Fixed: Apple Watch workouts could land in Apple Health with 0 kcal. The watch asks for the calorie permission an older version never asked for, and a watch workout without any energy gets the phone's estimate.
  • Share card colours: pick the background (openGym dark, black, white, your accent, any colour or see-through), the text and the highlights. The logo stays the logo.
  • "On the card" says what fits: the muscle map and the exercise list share the room now, and when something still does not fit on that size, its chip is marked and the sheet tells you.
  • Colour tags for sets: give any set one of six colours, each with its own shape and name. They show by the set number and in History, and go into the CSV export.
  • Bands in the Focus view and on per-side sets too, and a band can have a level or strength ("Heavy", "Level 3") beside or instead of its colour.
  • Voice: the moment sheets say up front that you can record your own voice or pick an audio file (MP3, M4A, WAV, AAC, OGG).
  • More room around the title and description fields when you share with your server, and under a custom exercise's description.

From the Reddit thread

  • Fixed: on iPhone the rest alerts could stop Spotify or leave it quiet. Every tone, clip and spoken line now only turns your music down for a moment and hands it back at full volume after the last one, also when you lock the phone mid-cue or a call comes in. Android gives the music back too when the voice engine drops a line.
  • Resistance bands: add your own (name, colour, resistance if you know it) under Settings → Equipment, then tap the band under each set. History reads "15 × Red + Yellow", the next session starts with last time's bands and hands you the next band once every set hit the top of its reps. Band exercises get the chips by themselves, any other exercise with Log with bands in its settings. The CSV has a bands column.
  • Carries and sleds by distance: an exercise can be tracked in Reps, Time or Distance now. Farmer's carries, yoke walks, sled pushes, pulls and drags and sprints start at metres per set with a load (#​1011, #​1012, idea and first version also by @​baron-de-ropp in #​177).
  • Drop-sets in the plan: on every set or only the last one, with how many drops and how much lighter, so the workout sets them up for you.

Text your size, forgotten workouts

  • Text size has six steps now, Smallest to Largest, with a preview right in the picker (Settings → Look & Home → Text size). Default follows your phone's own text size (Android font size, iPhone Dynamic Type) without doubling it, and a size of your own replaces the phone's instead of stacking on it.
  • Text that ignored the size now follows it, and the screens hold up at Smallest and Largest. Search finds it under "font", "text", "size" or "bigger" in every language.
  • Forgotten workouts: after a quiet spell (45 minutes unless you pick 30, 60, 90 or Off) the phone and your watch ask "Still training?" with Keep going or Finish (Settings → Workout → Forgotten workouts; idea and first version by @​lodepav in #​906).
  • Walked out of the gym with a workout running? With the gym reminder set up, the phone asks right away: finish now, keep going or discard. The places stay on your phone.
  • Nobody answers within 5 minutes (or 2, or 10), and the workout finishes by itself. It never throws anything away, and it ends at your last set plus its rest, so a forgotten evening still reads as the 52 minutes it was. Reopen it from the summary or History for 24 hours.
  • Apple Watch and Wear OS ask the same question and follow the same choices, Keep going on the wrist tells the phone too, and Wear OS now ends a forgotten workout as well (#​904) once the phone is on 1.4.5.
  • Fixed: Android scaled only the letters with a big system font, not the rows and buttons around them, so set rows clipped. The whole layout grows now.

Fresh from the tracker

  • Plan → Routine from a past workout: pick something you did (imported histories too) and its exercises and sets become a routine to tweak. Also on the empty Plan once you have workouts (idea by @​alexgrandasoto, #​1010).
  • Body measurements: a custom field can be renamed now, and every reading stays with it (#​1009, thanks @​claire-puppylove).
  • Health Connect: body water from your scale (Renpho and friends) shows next to body fat, lean and bone mass (#​1014, thanks @​elmillgoa).
  • Android 16: the workout chip by the clock has its own text, the sets done of all or the paused rest's time, so it shows up where a bare timer did not ([#​874](https://redirect.

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Australia/Melbourne)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot merged commit 9ae1a59 into main Nov 14, 2026
2 checks passed
@renovate
renovate Bot deleted the renovate/ghcr.io-duartesantos8-opengym-api-1.x branch November 14, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants