Release 2.15.0 ### Changed - Upgrade Keycloak to 26.0.6 in the example docker compose files. The older keycloak versions are still supported, but the examples uses up to date configuration. - Update docker base to python 3.14.5 on debian 13 (trixie). - Update Tag Reader to 1.10.1 to support reading heading from GPSTrack EXIF tag. ### Fixed - Support for generic OIDC providers (e.g. Zitadel, Authentik, Authelia) beyond Keycloak. New configuration variables `OAUTH_SCOPE`, `OAUTH_PROFILE_URL`, and `OAUTH_PROFILE_USE_IFRAME` allow customizing the OIDC scopes, profile management page, and profile display mode. The logout flow now uses the standard OIDC RP-Initiated Logout mechanism with `id_token_hint`. - Fix a potential SQL injection in `/api/users/search` endpoint. ### Added - Container images are now published on [GitLab container registry](https://gitlab.com/panoramax/server/api/container_registry/6362481) for every commit on the `develop` branch, tagged with `git describe`. - New type of _Page_ `custom-banner` is available, to display on frontend a homepage top banner for announcements. - Add a new parameter (`API_READ_ONLY`) to set the instance as read_only, making all database change impossible. This can be used for example for infrastructure migrations.