Skip to content

Releases: wger-project/wger

2.6

Choose a tag to compare

@rolandgeider rolandgeider released this 17 Jun 07:47

Important

This release comes with several breaking changes. Please read carefully.

New features

Offline mode (mobile app) 🥳

Adds the necessary backend changes to (finally!) support offline mode in the mobile app. The data is saved in a local sqlite database and synced with the server when the network is reachable again. Basically the whole application can be used without internet, with few exceptions such as

  • routines (needs some backend logic to calculate the routine data)
  • gallery (due to the image upload)
  • account actions like changing the email, etc.

Buttons and menus will be grayed out if they can't currently be used.

Social login and 2FA

It's now possible to login with social auth providers like Google, Facebook, etc. Also, we now support two-factor authentication like security codes or passkeys (note that due to these changes, you will need to re-login on the website).

Others

  • The exercise image API now exposes thumbnails with small and medium URLs, consistent with the ingredient API

  • The ingredient API filter now supports range lookups on nutriscore (gt, gte, lt, lte) in addition to exact and in, enabling queries like "better than C" (#2295).

  • Add a new, more efficient ingredient API endpoint (/api/v2/ingredient-sync) for synchronizing the local database with an upstream wger server (note that this is a fallback, the regular sync is still via the db dump which is faster)

  • JWT refresh tokens now rotate on every use. Combined with blacklist-after-rotation this makes refresh tokens single-use and lets a leaked token live only until the next refresh call. It's recommended to update your prod.env and set REFRESH_TOKEN_LIFETIME to a value like 3000.

  • When a username is already taken during registration, the system now suggests available alternatives. This replaces the default DRF UniqueValidator with a custom validator that includes suggested usernames in the error response. Suggestions are supported in both the serializer and web registration form validation.

  • The exercise language is now also checked when performing edits, instead of only during submission so it's not possible to e.g. save a Spanish text for the English description.

Upgrade steps

  • If you are using docker, make sure to pull the latest changes from the docker repo as there is a new service ("powersync"), configs (e.g. for nginx/Caddy) and settings (prod.env). Take a look at https://wger.readthedocs.io/en/latest/administration/powersync.html for administration details.

  • The new powersync service needs its own dedicated user and schema inside the Postgres database to store its sync state, run docker compose exec web ./manage.py setup-powersync-storage to apply. If you want to change the defaults, this can be configured in PS_STORAGE_PG_URI.

  • SIGNING_KEY is replaced by JWT_PRIVATE_KEY and JWT_PUBLIC_KEY. Run docker compose exec web ./manage.py generate-jwt-keys to generate a new pair.

  • Make sure you have set SITE_URL with your server's URL

  • Some unused thumbnail sizes have been deleted, run ./manage.py prune-thumbnails to delete dangling files

  • The default location for ingredient images has changed. Please run ./manage migrate-ingredient-image-paths to migrate existing entries. Note that this is technically optional, as the old paths will continue working, but it is advised for consistency.

(ignore these if you didn't change the default db password)

  • Set the PS_DATABASE_URI with the wger db password in the usual format postgres://<user>:<password>@<host>:<port>/<dbname>.

  • The Postgres container in the docker-compose setup now reads its credentials (POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB) from prod.env instead of having them hardcoded in the yaml file.

Breaking changes

(only relevant if you have your own scripts or interact with the REST API)

The type for the ID was changed from integer to string (UUID) for several models,
to allow clients to generate IDs locally. This affects the following endpoints:

  • /api/v2/measurement-category/
  • /api/v2/measurement/
  • /api/v2/nutritionplan/ and /api/v2/nutritionplaninfo/
  • /api/v2/meal/
  • /api/v2/mealitem/
  • /api/v2/nutritiondiary/
  • /api/v2/workoutsession/
  • /api/v2/workoutlog/

/api/v2/login/ and /api/v2/register/ endpoints removed. These endpoints returned
a permanent token, use the allauth ones instead (JWT based). If you still need a permanent
one, visit the "API key" page in the user settings and paste it into scripts.

/api/v2/token endpoint removed. Exchanging username + password for a JWT
pair via this endpoint bypassed 2FA. To get tokens, either use
/allauth/app/v1/auth/login (which respects the MFA challenge flow) or manually
mint a long-lived refresh token from the "API key" page in the user settings.

The details

Features

Dependencies

New Contributors

Read more

2.5

2.5

Choose a tag to compare

@rolandgeider rolandgeider released this 15 Apr 20:09

What's Changed

Notable changes

Improved ingredient sync. This process now uses a pre-generate database dump file, which can be processed much more effectively. The setting SYNC_INGREDIENTS_CELERY will automatically prefer the bulk dump over the paginated API, falling back to the API if no dump is available.

Improve serving size support for ingredients. It's now possible to log food in more useful units than "gram", e.g. "1 Serving (2 biscuits)" or "1 Cup". These serving sizes automatically imported from Open Food Facts.

Add vegan, vegetarian and nutriscore fields to the model.

Add "warmup" to list of set types.

Add more information to the repetition units in the routines. This will allow us to e.g. properly handle time units in the mobile app, e.g. by showing a timer or similar. The setting-repetitionunit endpoint now exposes the new fields unit_type and multiplier.

Automatically read the date from uploaded image to the gallery.

Move the exercise variation to a field in the exercise model. This simplifies a lot of code and allows us to properly sync them to local instances as well.

Breaking API changes

The following endpoints have been removed:

  • /api/v2/ingredient/search/, searches can use the regular /api/v2/ingredientinfo one
  • /api/v2/exercise/search/, searches can use the regular /api/v2/exerciseinfo one
  • /api/v2/variations/, variation data is not accessible directly on the exercise
  • /api/v2/weightunit/, not needed anymore

Features

Dependencies

New Contributors

Full Changelog: 2.4...2.5

2.4

2.4

Choose a tag to compare

@rolandgeider rolandgeider released this 18 Jan 12:12

Breaking changes

Please note that the default location for the settings files has changed, if you are not using the docker setup you will probably need to update this, please check the instructions at #2153

Update steps

  • Update python libraries uv sync or pip3 install .
  • Migrate database python manage.py migrate
  • Update CSS and JS libraries npm install
  • Compile the CSS npm run build:css:sass
  • Update static files (only production): python3 manage.py collectstatic
  • For the trophies you will need to manually start the evaluation process:
    python manage.py recalculate_statistics --all --active-only
    python manage.py evaluate_trophies --all

What's Changed

Features

Dependencies

New Contributors

Read more

2.3

2.3

Choose a tag to compare

@rolandgeider rolandgeider released this 05 Apr 18:05

What's Changed

See also https://github.com/wger-project/react/releases/tag/2.3

Features

Dependencies

Read more

2.2

2.2

Choose a tag to compare

@rolandgeider rolandgeider released this 06 Dec 12:08

🚀 Features

🤖 Updates

Read more

2.1

2.1

Choose a tag to compare

@rolandgeider rolandgeider released this 11 Oct 13:10

What's Changed

New Contributors

Full Changelog: 2.0...2.1

2.0

2.0

Choose a tag to compare

@rolandgeider rolandgeider released this 01 May 11:18

Upgrade steps from 1.9:

  • Update python libraries pip3 install -r requirements.txt
  • Install yarn and sass (e.g. sudo npm install -g yarn sass)
  • Update CSS and JS libraries yarn install
  • Compile the CSS yarn build:css:sass
  • Run migrations python3 manage.py migrate
  • Update data python3 manage.py loaddata licenses.json languages.json language_config.json
  • Load new ingredients (note that this will overwrite any ingredients that you might have added) wger load-online-fixtures
  • Update static files (only production): python3 manage.py collectstatic
  • Subcommands for wger now use dashes in their names (i.e. create-settings instead of create_settings)

🚀 Features:

🐛 Bug Fixes:

#368, #379, #426 (thanks @austin-leung), #499, #505, #504, #511, #516, #522, #554 and #560 (thanks @sandilsranasinghe), #564, #565, #615, #560 (thanks @bradsk88), #617 (thanks @Sidrah-Madiha), #636, #640, #642, #648, #650

🧰 Maintenance:

  • Moved translations to weblate #266
  • Improved docker and docker-compose images #340
  • Updated many libraries to last version (bootstrap, font awesome, etc.)
  • Use yarn to download CSS/JS libraries
  • Improvements to documentation (e.g. #494)
  • Improved cache handling #246 (thanks @louicoder)
  • Others: #450 (thanks @Rkamath2), #631 (thanks @harlenesamra), #664 (thanks @calvinrw),

v1.9

Choose a tag to compare

@rolandgeider rolandgeider released this 29 Jun 18:10

New features:

  • Allow users to enter their birthdate instead of just the age (thanks @dtopal) #332
  • Work to ensure that mobile templates are used when appropriate
  • Added optional S3 static asset hosting.
  • Drop Python 2 support.
  • Replaced django-mobile with django-user_agent (and some custom code) This isn't as slick as django-mobile was, but it unblocks possible * * Django 2.x support.
  • Update many dependencies to current versions.

Improvements:

  • Improve look of weight graph (thanks @alokhan) #381
  • Added password validation rules for more security
  • Exercise image downloader checks only accepted exercises (thanks @gmmoraes) #363
  • Use a native data type for the exercises' UUID (thanks @gmmoraes) #364
  • Increase speed of testsuite by performing the tests in parallel (thanks @Mbarak-Mbigo) wger_vulcan/#6
  • Update screen when adding an exercise to the workout while using set slider (thanks @gmmoraes) #374
  • Work to slim docker image * Download images at startup - If DOWNLOAD_IMGS environmental variable is set to TRUE * Uninstall dev packages
  • Update Ubuntu version used in docker container.
  • Fixed a handful of hard coded static path references to use static taglib
  • Updated tinymce theme for v5.
  • Other improvements and bugfixes: #336, #359,#386_, #443

1.8

1.8

Choose a tag to compare

@rolandgeider rolandgeider released this 05 Apr 20:36

New languages:

  • Norwegian (many thanks to Kjetil Elde @w00p #304)
  • French (many thanks to all translators)

New features:

  • Big ingredient list in Dutch, many thanks to alphafitness.club!
  • Add repetition (minutes, kilometer, etc.) and weight options (kg, lb, plates, until failure) to sets #216 and #217
  • Allow administrators to deactivate the guest user account #330
  • Add option to show the gym name in the header instead of the application name, part of #214
  • Exercise names are now capitalized, making them more consistent #232
  • Much improved landing page (thanks @DeveloperMal) #307
  • Add extended PDF options to schedules as well (thanks @alelevinas ) #272
  • Show trained secondary muscles in workout view (thanks @alokhan ) #282
  • Use the metricsgraphics library to more easily draw charts #188
  • Removed persona (browserID) as a login option, the service is being discontinued #331

Improvements:

  • Check and enforce style guide for JS files #317 (@petervanderdoes)
  • BMI calculator now works with pounds as well (thanks @petervanderdoes) #318
  • Give feedback when autocompleter didn’t find any results #293
  • Make exercise names links to their detail page in training log pages #350
  • Better GUI consistency in modal dialogs (thanks @jstoebel ) #274
  • Cache is cleared when editing muscles (thanks @RyanSept @pythongeek ) #260
  • Fields in workout log form are no longer required, making it possible to only log weight for certain exercises #334
  • New, more verbose, API endpoint for exercises, (thanks @andela-bmwenda)
  • The dashboard page was improved and made more user friendly #201 (partly)
  • Replace jquery UI’s autocompleter and sortable this reduces size of JS and CSS #78 and #79
  • Update to D3js v4 #314, #302
  • Remove hard-coded CC licence from documentation and website #247

Other improvements and bugfixes: #25, #243, #279, #275, #270, #258, #257, #263, #269, #296, #297, #303, #311, #312, #313, #322, #324, #325

Please check the changelog for information on upgrading

1.7

1.7

Choose a tag to compare

@rolandgeider rolandgeider released this 28 Feb 17:09
  • New translations
    • Czech (many thanks to Tomáš Z.!)
    • Swedish (many thanks to ywecur!)
  • Workout PDF can now print the exercises' images and comments #261
  • Allow login with username or email #164
  • Correctly use user weight when calculating nutrional plans' calories #210
  • Fix problem with datepicker #192
  • Order of exercises in supersets is not reverted anymore #229
  • Improvements to the gym management:
    • Allow to add contracts to members
    • Vastly reduce the number of database queries in gym member list #144
    • Global list of users for installation #212
    • Allow administrators to restrict user registration #220
    • Allow gym managers to reset a member's password #186
  • Visual consistency for lists and actions
  • Refactored and improved code, among others #208
  • Better rendering of some form elements #244
  • Improved GUI consistencyn #149
  • Docker images for easier installation #181
  • Use hostname for submitted exercises #159
  • Download js libraries with bowerjs #126
  • Improved and more flexible management commands #184
  • Fixed error when importin weight entries from CSV #204
  • Fixed problems when building and installing the application on Windows #197
  • Fixed potential Denial Of Service attack #238
  • Dummy data generator can not create nutrition plans #241
  • Other improvements and bugfixes #267 #264 #256 #242 #238 #236 #206 #202 #195 #190 #194 #185 #182 #179 #150