All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project follows Semantic Versioning.
Note
The current fork uses the 0.x release series. Older 0.9.x–0.12.x
entries at the end of this file belong to the upstream project history and
are kept for reference.
- Renamed the application from TP2Intervals to Workout Relay.
- Renamed the Gradle project, JAR, Spring application, Docker service, container image, repository, database, log file, and Kotlin base package.
- Updated application branding, metadata, documentation, CI, and release workflows.
- Existing deployments must rename or remap the previous SQLite database.
- The legacy container image is no longer used.
- Added configurable synchronization-history retention through the
SYNC_HISTORY_RETENTION_LIMITenvironment variable. - Added a default history retention limit of 100 executions.
- Added the
INTERRUPTEDsynchronization status. - Added startup recovery for executions left in
RUNNINGstate after an unexpected application shutdown. - Added startup and post-execution history maintenance.
- The Scheduler history now returns and displays up to the configured retention limit.
- Old synchronization executions are automatically removed while preserving the most recent entries.
- Interrupted executions now include a completion timestamp and an explanatory message.
- Documented the new history-retention environment variable for Docker Compose and Docker CLI deployments.
- Prevented platform credentials and configuration values from being written to application logs.
- Reduced OpenFeign logging from
fulltobasic. - Disabled detailed internal error messages in HTTP responses.
- Restricted exposed Actuator endpoints to
healthandinfo. - Disabled the Actuator
loggersendpoint.
- Added
DELETEandOPTIONSto the API CORS configuration. - Corrected package-name typos in configuration and activity classes.
- Updated scheduler-related notification and log messages.
- Corrected the documented scheduler offset limits to
-1through7days.
- Added configurable rolling periods to scheduled calendar synchronization.
- Added
startOffsetDaysandendOffsetDaysto each scheduled sync. - Added readable rolling-period labels to the Scheduler interface.
- Added validation for scheduler offsets and invalid date ranges.
- Added safe multi-day TrainerRoad to TrainingPeaks reconciliation by processing each day independently.
- Scheduled syncs can now process relative periods from one day before the execution date through seven days after it.
- Existing schedules remain backward compatible and default to the current day with offsets
0 → 0. Run nowand automatic scheduler executions use the configured rolling period.- TrainerRoad to TrainingPeaks responses now aggregate copied, removed, skipped, and failed workout counts across all processed days.
- Settings panels are collapsed by default for a cleaner mobile experience.
- Updated Scheduler and Settings styling and documentation.
- Corrected scheduler offset validation messages.
- Applied minor responsive and layout improvements.
Release details for versions before 0.3.0 are available in the repository's GitHub Releases history.
- Updated Java to 21.0.3.
- Fixed future-date workout synchronization for TrainingPeaks Premium users.
- Fixed an invisible remove button for scheduled jobs.
- Added multi-architecture Docker images.
- Added persistent scheduled jobs.
- Fixed the Docker image.
- Added scheduled calendar synchronization for planned workouts.
- Added ARM64 support.
- Added support for skipping already synchronized workouts when syncing to Intervals.icu.
- Fixed null workout names from TrainingPeaks.
- Added calendar synchronization between TrainerRoad, TrainingPeaks, and Intervals.icu.
- Added a Bash script for automatic calendar synchronization with cron.
- Added future-date calendar synchronization for TrainingPeaks Premium users.
- Updated platform-configuration tutorials.
- Added automatic cleanup of pasted authentication cookies.
- Fixed TrainerRoad workout load values being set to zero.
- Replaced the log-level option with Debug Mode for troubleshooting.
- Added a TrainerRoad configuration tutorial.
- Removed Strava support.
- Added support for distance-based workout steps.