Repository navigation
v0.8
What's Changed
Version 0.8 expands workout import compatibility, improves FIT data fidelity, adds workout photos, and strengthens workout rebuilding and import recovery.
Workout Import Improvements
- Added support for compressed workout files:
.fit.gz, including TrainingPeaks exports.zip, including FORM workout exports- Compressed FIT, CSV, GPX, and TCX sources where applicable
- Added validation and safety controls for compressed files, including expanded-size limits and ZIP content validation.
- Preserved original compressed source files so workouts can be rebuilt from their original data.
- Improved failed-import recovery so a failed import can be retried safely using its previously preserved source file.
- Preserved duplicate-import protection while allowing legitimate retries of failed imports.
Apple Watch FIT Support
- Improved identification of Apple Watch FIT files when the FIT manufacturer value does not directly identify Apple.
- Apple Watch model information is now retained when available.
- Improved Apple Watch pool-swim parsing, including:
- Average heart rate
- Maximum heart rate
- Calories
- Active lengths
- Rest lengths
- Pool length
- Stroke type
- Per-length stroke counts
- Added support for historical FIT local timestamps so older workouts are assigned the correct local workout time rather than relying solely on the current WordPress timezone.
Per-Length Stroke Counts
- Added storage and display of individual-length stroke counts from FIT files.
- Supports FIT sources that provide standard per-length
total_strokesdata, including tested Apple Watch and Garmin workouts. - Workout Details now displays a Strokes column when stroke-count data is available.
- Existing workouts can acquire the newly supported stroke-count information by rebuilding them from their preserved FIT source.
Workout Rebuilding
- Corrected workout rebuilding so FIT, CSV, GPX, and TCX parser dependencies are loaded reliably.
- Rebuilds now use the same archive-aware parsing path as normal imports.
- Preserved
.fit.gzand other compressed sources can therefore be decompressed and reparsed correctly during a rebuild. - Rebuild operations remain transactional so failed reparsing does not leave partially rebuilt workout data.
Workout Photos
- Added support for attaching up to three photos to a workout.
- Supports JPEG, PNG, GIF, and WebP images.
- Photos can be uploaded, replaced, and deleted from the workout administration interface.
- Workout photos are maintained separately from imported workout source data and survive workout rebuilds.
Release Packaging
- Updated the release builders so WordPress.org listing assets are excluded from the installable plugin ZIP.
- WordPress.org banners, icons, and screenshots remain separate from the plugin installation package.
Reliability and Testing
- Added regression coverage for compressed workout extraction, workout rebuilding, failed-import retries, release packaging, database schema migration, FIT timestamps, and stroke-count handling.
- Added private regression testing against historical Apple Watch FIT data.
- Added validation against real Garmin FIT per-length stroke-count data.
- Corrected an import database-table initialization issue discovered during production testing.
- Added SHA-256 validation before reusing a protected source from a failed import.
Database Update
Version 0.8 introduces the database changes required to store per-length stroke counts. Existing installations are upgraded automatically through the plugin's database migration process.
Validation
The final v0.8 release passed:
- PHP 7.4
- PHP 8.0
- PHP 8.1
- PHP 8.2
- PHP 8.3
- PHP 8.4
- PHPUnit test suite
- WordPress Plugin Check release-package validation
The final release was also tested with real Apple Watch and Garmin FIT workout data.
Full Changelog: v0.7...v0.8