Implements endpoints and frontend modals for users to link/unlink external identity providers (IdPs) to their accounts, including backend logic for secure OAuth linking and session management. Adds ModalComponentMFASetup for multi-factor authentication setup, refactors modal input components for accessibility and consistency, and updates documentation and trademark policy. Adjusts scope constants and permissions for identity provider management.
Removed MariaDB support from documentation and backend code, standardizing on PostgreSQL as the only supported database. Updated backend dependencies in poetry.lock and pyproject.toml, removing mysqlclient and updating several packages. Documentation and example files were updated to reflect the database change.
Replaces get_user_id_from_access_token/refresh_token with get_sub_from_access_token/refresh_token and introduces get_sid_from_access_token/refresh_token for session ID extraction. Updates all router dependencies to use new methods, refactors session CRUD to use session ID instead of hashed refresh token, and improves token creation and validation logic for more robust session management. Also updates session_utils and token_manager to support new session ID claim and token structure.
Enhanced gear nickname parsing by stripping whitespace after decoding in gear CRUD functions. Updated documentation for Strava bulk import to clarify import steps, note removal of '+' and whitespace, and correct development timelines for shoes and activity metadata imports.
Documents the multi-factor authentication (MFA) login flow, including request/response formats for web and mobile clients, error handling, and important notes about session management. This addition clarifies the two-step authentication process for users with MFA enabled.
Introduces activity type 36 for E-Mountain Bike ride in backend activity and user goals utilities. Updates mapping and calculation logic to include E-Mountain Bike rides as bike activities. Also updates documentation and i18n files to reflect the new activity type. Dependency bump
Introduces E-Bike ride as a new activity type (ID 35) across backend, frontend, and documentation. Updates mappings, i18n labels, modal options, cycling type checks, icon assignment, and search filtering to support E-Bike rides.
Changed example SMTP settings in .env.example to use ProtonMail and generic email address. Added detailed SMTP environment variable documentation to advanced-started.md. Updated index.md to mention Apprise and password reset via email.
Renamed geocoding-related config variables for clarity and consistency, defaulted REVERSE_GEO_PROVIDER to 'nominatim', and updated related usages in activity utils. Removed unused GEOCODES_MAPS_API from .env.example. Updated documentation and example compose file to reflect changes. Upgraded Python dependencies in poetry.lock.
Changed the default value of REVERSE_GEO_PROVIDER from 'nominatim' to 'geocode' in the configuration and updated the documentation to reflect this new default.
Introduces support for Nominatim as a reverse geocoding provider alongside geocode and photon. Updates configuration and documentation to include NOMINATIM_API_HOST and NOMINATIM_API_USE_HTTPS environment variables, sets Nominatim as the default provider, and refactors related logic in utils.py.
Introduces 'Track run' as a new activity type in the backend, updating mappings and distance calculations accordingly. Removes debug print statements from FIT utils. Updates backend dependencies in poetry.lock and pyproject.toml, and bumps API version to v0.13.4. Adds new ignore rules for import error files in .gitignore. Minor updates to frontend components and i18n files.
Standardized gear type names in GEAR_ID_TO_NAME and GEAR_NAME_TO_ID, correcting typos and adding common variations. Updated the developer guide to reflect these changes and ensure consistency between code and documentation.
Added a note about adding repoes for old-ish distroes (that doesn't support docker compose V.2 (`docker compose`, instead of `docker-compose`))
Updated path to reflect the directory structure of the docker-compose example file.
Introduces new activity types for stand up paddling (32) and surf (33) across backend and frontend, including mapping, UI options, i18n labels, and search filters. Adds gear type 8 (water sports board) with corresponding backend validation, model updates, documentation, and frontend display logic, including new avatar image and translations.
Corrected the logic for updating gear component distance and time to properly account for purchase and retired dates. Also fixed formatting and clarified provider names in the advanced getting started documentation.
Introduces support for the Photon reverse geocoding provider alongside Geocode, with new environment variables for provider selection and configuration. Updates backend logic to handle both providers, adjusts frontend location formatting, and documents new configuration options.
Introduces activity type 31 (Indoor walk) across backend and frontend, updates activity type mappings, and adds tracker_manufacturer, tracker_model, and import_info fields to the Activity model and schema. Updates Alembic migrations, improves activity media import/export logic, and standardizes Pydantic model config usage. Also updates documentation and docker-compose examples to use the new data directory.
[backend] add column windsurf_gear_id to users_default_gear
[backend] update comment on gear_type column on gear table
[docs] update docs to include .tcx and .gz
[frontend] updated translations to include .gz files on HomeView
[frontend] added windsurf default gear selection on profile settings
[README] update to include .tcx
[backend] added support for activity type mixed_surface_cycling
[frontend] added support for activity type mixed_surface_cycling
[frontend] centralized activity type validation for cycling and running on activityUtils
[backend] added support for activities, health_data, user image and user activity files to import feature
[backend] fixed issue on health_data where date on health_data table was set has unique, not allowing two or more users have an entry for the same day
[docs] fixed volumes on docker examples and docs based on change made on v0.12.4
[docs] added volume server_images on getting started