Skip to content

Releases: dvorka-oss/mytral

MyTraL 1.56.0

27 Jun 13:41
95269ae

Choose a tag to compare

This MyTraL minor release brings:

Added

  • Added a Flatpak distribution (fitness.mytral.Mytral). The package runs the local
    server and opens the UI in the default browser.
    Athlete data are stored outside of the sandbox in the standard MyTraL directory.
  • Added Distro Tarball GHA workflow that builds the upstream tarball in
    rel/<major.minor.patch> branches targeting main.
  • Added Distro Snap GHA workflow that builds the Snap package in
    rel/<major.minor.patch> branches targeting main.
  • Added Distro Windows GHA workflow that builds the Windows installer and ZIP archive
    on a Windows runner in rel/<major.minor.patch> branches targeting main.
  • Added Distro Flatpak GHA workflow that builds the Flatpak bundle in
    rel/<major.minor.patch> branches targeting main.
  • Added distro-win-zip Makefile target that packages the Windows desktop executable
    into a ZIP archive (distro/windows/mytral-<version>.exe.zip).

Changed

  • Removed the Waitress WSGI server from the desktop edition. The desktop app serves
    a single local, so it now uses Flask's built-in threaded server - this removes
    a dependency and simplifies installation and packaging across Snap, PPA,
    and the Windows installer.
  • Updated bleach from 6.3 to 6.4.
  • Updated cryptography from 46.0 to 48.0.
  • Updated msgpack from 1.0 to 1.2.
  • Updated pytest (dev) from 8.4 to 9.0.

Documentation

  • Documented Flatpak install and build.
  • Documented Snap build.

Fixed

  • Fixed distro-win-installer Makefile target which depended on the Linux targets.

Support on Open Collective

MyTraL 1.55.0

26 Jun 08:18
63fa516

Choose a tag to compare

This MyTraL minor release brings:

Changed

  • Switched from Python 3.11 to Python 3.12. The main reason is that Snap 22 runtime
    had Python 3.10 and Snap 24 runtime has Python 3.12. New Python constructs - like
    type, override, and T - will be incorporated as I go.

Added

  • Added improved Windows installer make targets and build artifacts.
  • Added Ubuntu resolute to Launchpad PPA.

Fixed

  • Fixed "missing waitress" server in the MyTraL installation from PPA apt log.

Documentation

  • Banner improved by the switch to MyTraL WWW palette.

MyTraL 1.54.0

25 Jun 15:21
8cb0326

Choose a tag to compare

This MyTraL minor release brings:

Fixed

  • Fixed and refactored Snap distribution builder to have snapcraft.io on repository
    paths required by snapcraft.io, use host's vs. container's resources correctly,
    and avoid use of (host) hard-coded paths.

MyTraL 1.53.0

24 Jun 20:59
e2f1439

Choose a tag to compare

This MyTraL minor release brings:

Added

  • Added Ubuntu PPA distribution for Ubuntu via Launchpad (ppa:ultradvorka/sport).
  • Added distro-ubuntu-deb Makefile target to build .deb package locally.
  • Added Snap package distribution for universal Linux package management. Opens a native
    desktop window via FlaskUI via classic confinement. User data stored in default
    locations.

Fixed

  • Fixed elevation chart rendering in the application's analysis page by smoothing
    the GPX points.
  • Fixed .deb packaging: Python dependencies are installed into an isolated virtualenv at
    /opt/mytral/venv/ - system Python environment is never polluted.
  • Fixed .deb wrapper scripts to export MYTRAL_INCARNATION, MYTRAL_USER_REGISTRATION,
    and MYTRAL_ENABLE_CACHE environment variables for correct desktop startup.

Performance

  • Fixed top calendar week navigation which was slooow as it was build on the frontend -
    moved it to the backend.
  • Fixed top feed day navigation which was slooow as it was build on the frontend -
    moved it to the backend.
  • Fixed duplicated activities list loading by the routes.py::calendar_view()

Documentation

  • Added MyTraL configuration guide.
  • Added Ubuntu PPA installation guide.
  • Added Ubuntu .deb installation guide.

MyTraL 1.52.0

22 Jun 10:30
c1d083b

Choose a tag to compare

This MyTraL minor release brings:

Added

  • Added Windows 10 distribution build to GH release.

Fixed

  • Fixed Desktop binary environment variables based setup so that athletes can create
    accounts OOTB.

Documentation

  • Added Ubuntu distribution build guide.
  • Added Python @ Ubuntu distribution guide.
  • Added Debian @ Docker distribution guide.
  • Added Fedora @ Docker distribution guide.

MyTraL 1.51.0

22 Jun 05:59
a431cae

Choose a tag to compare

This MyTraL minor release brings:

Added

  • Added activity type color border hint to goals, gear, and several other pages.
  • Added Strava synchronization of individual activities from the activity GET page.
  • Added card encouraging athlete to create an activity to pages which need at least one
    activity to render.
  • Added weight to gear.
  • Added tarball distribution.
  • Added Debian @ Docker distribution.
  • Added Fedora @ Docker distribution.

Fixed

  • Fixed km / hour usage of retired gears with no history.
  • Fixed exercise / symptom delete message to contain display name (not UUID) when
    removing these entities from an activity.
  • Removed color from Strava links on the day activities view and search result view.

Documentation

  • Adding the installation documentation.

MyTraL 1.50.0

13 Jun 16:24
e17105c

Choose a tag to compare

This MyTraL release is very special to me. After years of coding and hacking
together various versions of MyTraL I am moving to a brand-new Git repository on my 50th
birthday.

Sports have been my main hobby for 40 years - I have 30 years of training data scattered
across everything from paper logs to MyTraL. Today, I’m starting a fresh chapter - free
from hacks, sensitive data and the "sins of my youth."

Channeling Steve Prefontaine energy today - pure heart, max effort, FLOSS execution!

Added

  • Added polyline with map background to the activity feed.
  • Added rainbow polyline w/ running dot to the activity feed.
  • Added elevation chart to the activity feed.
  • Added "maximize map" action to the activity view page.
  • Added description field to symptoms so that user can specify how to cure such injury
    or illness.
  • Added import of Strava bulk user export ZIP archive (activities, GPX/TCX recordings,
    photos).
  • Added TCX import (individual files and directory of recordings/archives).
  • Added gender field to the athlete profile in order to calculate metrics like TRIMP
    more accurately.
  • Added TRIMP calculation and chart to the Progress menu.
  • Added FIT directory import - import all FIT files from a local directory in one go,
    with automatic conflict detection and parquet generation.
  • Bulldozer framework - a multiprocessing-based sandboxed job runner for
    parallelizing CPU-bound import workloads across multiple cores.
  • GPX polyline encoding with 2 selectable methods: fast distance-based sampling
    (default) and legacy RDP-based simplification for preview rendering. New GPX polyline
    encoding is ~4000× faster with the new distance-based sampling method - the default
    for all recording import paths.
  • Added meta sport taxonomy based lifetime totals insight page.
  • Added new cards on the homepage indicating the risk of injury, gear needed service,
    suggested activity and weight balance.
  • Added resting HR estimate to the athlete metrics page.

Changed

  • Strava API import is not hidden behing feature flag (just inverse condition on FE).
  • Refactored Predictions insight page to two pages - Predictions and Analytics.
  • Rewritten task manager, tasks and tasks invocation - removed duplicated task manager
    definitions, converged to MyTraL's task manager, typed tasks are used from now on.
  • Strava bulk ZIP archive import rewritten with Bulldozer framework for parallel
    photo & recording upload, parquet conversion, and GPX map-data precomputation.
  • Polar Precision Performance import rewritten with Bulldozer framework - HRM blob
    upload and parquet generation now run in .

Removed

  • Removed Suffer Score from the ActivityEntity and related forms and HTML code.

Fixed

  • Fixed blobstore logging message which no longer specifies wrong blob type.
  • Polar HRM import conflict resolution no longer fails on missing year-cache entries.
  • fit_tool monkeypatch tolerates non-UTF8 bytes in FIT string fields (Garmin
    developer fields), preventing silent parse failures.
  • Fixed many problems in the Polar PPP import - from user forgetting to switch
    the activity type, to the source of data (HRM vs. PDD) and the right units.
  • Fixed notifications decorator - it's newly tightly coupled w/ the icon.

MyTraL 1.9.0

29 May 10:58

Choose a tag to compare

This MyTraL minor release brings:

Added

  • Added import from FIT.
  • Added import from GPX - file or directory.
  • Added GPX recording management: upload, view metadata, edit name/description/keywords, download, and delete.
  • Added storing of recorded data (FIT, GPX, Polar HRM) to Parquet and Polars-based loading/saving.
  • Added power zones.
  • Added HR zones.
  • Added 2D maps rendering for GPX recordings.
  • Added athlete performance metrics w/ FTP, aerobic/anaerobic thresholds, ... estimates.
  • Added recorded data analytics - ridge/bar/line charts of various metrics.
  • Added multi-photo upload support for activities - up to 50 photos per activity.
  • Added outfits selection to activity create and update (all) forms.
  • Added outfits display to activity detail page.
  • Added sickness / injury in time chart.
  • Added day-based navigation to the activity feed.
  • Added week-based navigation to the caledar activity view.
  • Added avatar/photo upload support for users, AI coaches, gear, goals, and exercises.
  • Added preview of TabPFN ML-powered predictions feature with dedicated settings and predictions pages (behind feature flag).
  • Added sponsor link to the application layout.
  • Added Windows binary build.
  • Added and expanded sport taxonomy and mappings (new meta_activity_type, many new AT_* constants,
    Strava/FIT mappings, Concept2 uses AT_ROW_ERG).
  • Enriched bootstraps for activity types, exercises, and symptoms (muscle groups,
    descriptions/default weights, symptom body-part targeting) with new pytest coverage.

Changed

  • Core data model changes:
    • ActivityEntity.sport renamed to ActivityEntity.activity_type_key - breaks backward compatibility.
    • Added ActivityEntity.avg_cadence and ActivityEntity.max_cadence - consider rides, rowing, swimming, and other activities.
    • Added ActivityEntity.meta_activity_type - consider ski aggregating DP/F roller ski, DP/F nordic ski, ...
    • Added ActivityEntity.tags.
    • Added ActivityEntity.is_plan.
  • Reworked photo UI flows (entity photo galleries, activity/exercise photo metadata
    editor pages, markdown image support) and updated documentation site pages.
  • Data migration framework:
    • Migration step: rename sport to activity type in activities and gears.
    • Migration step: merge new activity types, exercises and symptoms.
    • Expert UI tool: migration of activities from one activity type to another.
    • Python tool: re-sync Strava activities to re-new lost source attributes.

Fixed

  • Activity update no longer purges source attributes (ID, descriptor and URL).
  • Blobstore exception handling in activity view/update routes now only silently ignores expected BlobStoreError; unexpected errors are logged and re-raised for easier debugging.
  • GPX import rewritten to be non-blocking (except upload) and to make intensive work in the asynchronous task.

Performance

  • Per-request total size limit is now enforced when uploading multiple photos in a single request, preventing excessive memory use.
  • EXIF metadata stripping in image processing no longer materialises the full pixel array into a Python list; metadata is cleared in-place, reducing memory allocation significantly for large images.

Documentation

  • HTML documentation is newly generated from Markdown files in this repository.
  • Public HTML documentation for mytral.fitness is newly generated from Markdown files in this repository.

Tests

  • Added random attack which generates synthetic data of all MyTraL entities including attachments and recordings.