Monday, August 31, 2026

MyTraL 1.60.0



This MyTraL minor release brings:
Added
  •  Added a Polar Flow integration: sync new training from Polar Flow via the  official Polar AccessLink API and backfill full history from the Polar  "Download your data" (GDPR) export ZIP. The export import brings in complete  per-second recordings.
  • Added filtering and sorting to the gear listing. Gear can be filtered by its default activity type and sorted by last used, name, default activity type, purchase date,  usage, distance, time or TCoO in ascending or descending order. The summary cards  reflect the filtered gear and the selection is preserved when switching between the  list and the chart view.
  • Added schema headers to `winget` manifests.
  • Added document attachments to gear: manuals, invoices, warranty cards and other files.
  • Added histogram of usages to gear detail.
  • Added list of activities for given exercise, exercise label and delete button to exercise detail.
  • Added strikethroung extension to the rendered Markdown texts.
Changed
  • The gear component `Cost` mini-card now shows the component total cost of ownership - the base cost plus the cost of all its service history entries - together with the cost per kilometer. A tooltip shows the base cost and the number of services.
  • Polar Precision Performance import now reuses the heart-rate time series parsed by the import plugin when building recordings, instead of reading and parsing every `.hrm` file a second time in the worker process.
  • The bookmarks list now hides the exercises/laps, source and workout columns, and the reorder buttons no longer wrap on narrow screens.
  • Cancelled mytral.fitness domain & hosting:
    • web moved to my https://projects.mindforger.com/mytral
    • Flatpak qualified name changed from `fitness.mytral.Mytral` to `com.mindforger.Mytral`
  • Moved GitHub repository from `dvorka-oss` organization back to the personal `dvorka` profile.
Fixed
  • Fixed the Polar Precision Performance (PPP) import end to end - importing a Polar data directory now finishes successfully instead of failing once an already existing activity had to be updated.
  • Fixed the Polar PPP import silently dropping exercises it could not parse - such files are now counted and reported in the import task log.
  • Fixed the average speed of imported Polar activities being recomputed - and the cap to maximum speed lost - after the activities were persisted.
  • Fixed Polar PPP import log messages showing the raw `{self._log_name}` placeholder instead of the plugin name.
  • Removed unused Polar gear service constants.
  • Fixed Strava gear from an activity synchronization not being linked to the matching MyTraL gear when several items share the same brand - the gear is now resolved to the best-matching entry and its Strava gear ID is registered, instead of being left as an unresolved `strava-gear-id:...` placeholder. Each gear also gained an Advanced page showing its external service (Strava / Garmin / Polar) gear-ID mapping for debugging.
  • Fixed the exercise photo gallery - it now appears on the exercise view page, where it can be viewed, uploaded to, edited and deleted, instead of being stuck on the edit page.
  • Fixed exercises photos insert (from link to image).
  • Fixed sport variety field at the end of the dashboard and added tooltips to all fields on that row.
  • Fixed broken goal update which was failing.
  • Fixed the style of links in the rendered markdown (newly underscore in blue).
  • Fixed usage (hours/km) gear component calculation - newly the usage is from the installation date until now or replaced.
Documentation
  • Added functional architecture diagram to WWW.
  • Fixed documentation by replacing non-ASCII characters with ASCII characters.
  • Added motivation paragraph to `README.md` and WWW index.