2.4

wger-project/wger2.4Jan 18, 2026by rolandgeider

AI Summary

Major release with significant infrastructure changes including settings file location changes, pyproject.toml migration, and new trophy system. Introduces multiple new features for nutritional planning, exercise management, and user preferences.

Key Highlights

  • Breaking change: Default location for settings files moved (non-docker setups need update)
  • Trophy System backend implementation for user achievements
  • New exercise submission endpoint and refactored exercise search
  • Added start/end fields to nutritional plan models
  • Multiple weight entries per day support
  • AVIF image format support added
  • Removed django compressor, moved to pyproject.toml
  • Password toggle feature in forms

Breaking Changes

  • Default location for settings files has changed - non-docker users need to update configuration

New Features

  • Fix NoneType exception
  • Move requirements to pyproject.toml
  • Support for auth proxy header
  • Handle special characters in OFF product import
  • Trainers see their templates impersonating
  • Improve logging for ingredient sync operations
  • Optimize landing page images
  • Compile django translations on docker build time
  • Add start and end fields to nutritional plan models
  • Make language dropdown scrollable
  • Prevent height spinner going below 0
  • Add languages
  • Replace ingredient search function
  • Adds validator for (exercise) images
  • Allow multiple weight entries per day
  • Exercise submission endpoint
  • Refactor exercise search to unified endpoint
  • Add password toggle feature in forms
  • AVIF: updated supported images formats
  • Add management command to check gallery images for animation
  • Improve the celery ingredient sync
  • Add Trophy System's Backend
  • Refactor application settings
  • Remove django compressor

Full Release Notes

<!-- Release notes generated using configuration in .github/release.yml at 2.4 -->

## 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:
  ```bash
  python manage.py recalculate_statistics --all --active-only
  python manage.py evaluate_trophies --all
  ```

## What's Changed
### Features
* Fix NoneType exception by @rolandgeider in https://github.com/wger-project/wger/pull/1955
* Move requirements to pyproject.toml by @rolandgeider in https://github.com/wger-project/wger/pull/1964
* adds support for auth proxy header by @eyJhb in https://github.com/wger-project/wger/pull/1859
* Handle special characters in OFF product import #1956 by @wbonicki in https://github.com/wger-project/wger/pull/1970
* Ensure trainers see their templates impersonating. by @perrito666 in https://github.com/wger-project/wger/pull/1967
* Improve logging for ingredient sync operations by @rolandgeider in https://github.com/wger-project/wger/pull/1975
* docs: Fix demo container name by @hangy in https://github.com/wger-project/wger/pull/1976
* perf: Optimize landing page images by @hangy in https://github.com/wger-project/wger/pull/1978
* Compile django translations on docker build time by @rolandgeider in https://github.com/wger-project/wger/pull/1990
* Add start and end fields to the nutritional plan models by @rolandgeider in https://github.com/wger-project/wger/pull/1997
* Make language dropdown scrollable (limit height; overflow-y:auto) by @Carner-Lin in https://github.com/wger-project/wger/pull/2042
* Prevent height spinner going below 0 in user preferences by @Carner-Lin in https://github.com/wger-project/wger/pull/2030
* Add languages by @rolandgeider in https://github.com/wger-project/wger/pull/2046
* Replace ingredient search function by @rolandgeider in https://github.com/wger-project/wger/pull/1724
* Adds validator for (exercise) images by @rolandgeider in https://github.com/wger-project/wger/pull/2049
* Allow multiple weight entries per day by @scrapcode in https://github.com/wger-project/wger/pull/1895
* Exercise submission endpoint by @rolandgeider in https://github.com/wger-project/wger/pull/2051
* Feature/1694 by @wbonicki in https://github.com/wger-project/wger/pull/1977
* Fix typo in meal planning text by @AmandeepMandal1077 in https://github.com/wger-project/wger/pull/2059
* Refactor exercise search to unified endpoint (issue #2052) by @ChristianFeliks in https://github.com/wger-project/wger/pull/2057
* Fix "Get Started" Button and Add Registration Sidebar by @JANVI-CHATURVEDI in https://github.com/wger-project/wger/pull/2066
* refactor: make fields collections immutable by @seppzer0 in https://github.com/wger-project/wger/pull/2061
* Gallery: reuse exercise image validator to block animated uploads ( # 2054 )  by @saadpy0 in https://github.com/wger-project/wger/pull/2055
* Add password toggle feature in forms by @Akshit-MMQH in https://github.com/wger-project/wger/pull/2079
* AVIF: updated supported images formats with avif by @3mpee3mpee in https://github.com/wger-project/wger/pull/2083
* issue(2053): added the diemnsions and updated historical data by @shantanugupta2004 in https://github.com/wger-project/wger/pull/2063
* Add our react components as a regular dependency by @rolandgeider in https://github.com/wger-project/wger/pull/2086
* Added clickable app-store links to README by @DidiNDexter in https://github.com/wger-project/wger/pull/2100
* feat: add management command to check gallery images for animation by @saadpy0 in https://github.com/wger-project/wger/pull/2077
* Make app-store badges uniform in height by @DidiNDexter in https://github.com/wger-project/wger/pull/2102
* Remove test for empty common name. by @rolandgeider in https://github.com/wger-project/wger/pull/2114
* Properly translate the strings by @rolandgeider in https://github.com/wger-project/wger/pull/2115
* Improve the celery ingredient sync by @rolandgeider in https://github.com/wger-project/wger/pull/2117
* Fix bug that caused days with logs not to advance correctly by @rolandgeider in https://github.com/wger-project/wger/pull/2123
* Add Trophy System's Backend by @jeremy-ru in https://github.com/wger-project/wger/pull/2136
* Refactor application settings by @rolandgeider in https://github.com/wger-project/wger/pull/2153
* Remove django compressor by @rolandgeider in https://github.com/wger-project/wger/pull/2162
* PR trophies by @justin-pinheiro in https://github.com/wger-project/wger/pull/2147
### Dependencies
* Bump bootstrap from 5.3.3 to 5.3.5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1950
* Bump datatables.net-bs5 from 2.2.2 to 2.3.0 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1966
* Bump bootstrap from 5.3.5 to 5.3.6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1968
* Bump django from 5.2 to 5.2.1 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1969
* Bump datatables.net-bs5 from 2.3.0 to 2.3.1 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1972
* Bump bootstrap from 5.3.6 to 5.3.7 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1988
* Bump htmx.org from 2.0.4 to 2.0.5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1992
* Bump datatables.net-bs5 from 2.3.1 to 2.3.2 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1986
* Bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2021
* Bump super-linter/super-linter from 7 to 8 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2010
* Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2017
* Bump datatables.net-bs5 from 2.3.2 to 2.3.3 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2022
* Bump bootstrap from 5.3.7 to 5.3.8 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2029
* Bump htmx.org from 2.0.5 to 2.0.6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/1999
* Bump actions/setup-python from 5 to 6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2035
* Bump django from 5.2.5 to 5.2.6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2038
* Bump htmx.org from 2.0.6 to 2.0.7 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2037
* Bump datatables.net-bs5 from 2.3.3 to 2.3.4 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2039
* Bump django from 5.2.6 to 5.2.7 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2062
* Bump devbridge-autocomplete from 1.4.11 to 1.5.0 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2004
* Bump github/codeql-action from 3 to 4 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2081
* Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2080
* Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2096
* Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2095
* Bump vite from 7.1.10 to 7.1.11 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2089
* Bump htmx.org from 2.0.7 to 2.0.8 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2099
* Bump docker/setup-qemu-action from 3.6.0 to 3.7.0 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2109
* Bump django from 5.2.7 to 5.2.8 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2108
* Bump datatables.net-bs5 from 2.3.4 to 2.3.5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2111
* Bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2118
* Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2144
* Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2143
* Bump actions/cache from 4 to 5 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2142
* Bump datatables.net-bs5 from 2.3.5 to 2.3.6 by @dependabot[bot] in https://github.com/wger-project/wger/pull/2151

## New Contributors
* @wbonicki made their first contribution in https://github.com/wger-project/wger/pull/1970
* @perrito666 made their first contribution in https://github.com/wger-project/wger/pull/1967
* @hangy made their first contribution in https://github.com/wger-project/wger/pull/1976
* @Carner-Lin made their first contribution in https://github.com/wger-project/wger/pull/2042
* @AmandeepMandal1077 made their first contribution in https://github.com/wger-project/wger/pull/2059
* @ChristianFeliks made their first contribution in https://github.com/wger-project/wger/pull/2057
* @JANVI-CHATURVEDI made their first contribution in https://github.com/wger-project/wger/pull/2066
* @seppzer0 made their first contribution in https://github.com/wger-project/wger/pull/2061
* @saadpy0 made their first contribution in https://github.com/wger-project/wger/pull/2055
* @Akshit-MMQH made their first contribution in https://github.com/wger-project/wger/pull/2079
* @3mpee3mpee made their first contribution in https://github.com/wger-project/wger/pull/2083
* @shantanugupta2004 made their first contribution in https://github.com/wger-project/wger/pull/2063
* @DidiNDexter made their first contribution in https://github.com/wger-project/wger/pull/2100
* @jeremy-ru made their first contribution in https://github.com/wger-project/wger/pull/2136
* @justin-pinheiro made their first contribution in https://github.com/wger-project/wger/pull/2147

**Full Changelog**: https://github.com/wger-project/wger/compare/2.3...2.4