Skip to content

Releases: dvorka/mytral

MyTraL 1.60.0

Choose a tag to compare

@dvorka dvorka released this 31 Aug 10:20
5008f47
Screenshot from 2026-08-31 12-13-13

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:
  • 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.

MyTraL 1.59.0

Choose a tag to compare

@dvorka dvorka released this 19 Jul 13:10
63bfa9a
feature everesting

This MyTraL minor release brings:

Added

  • Added sport-aware Everesting experience on the dashboard. A new Everesting card tracks
    how much of Mt. Everest you have accumulated for your top climbing sport, with a
    Day/Week/Month/Year toggle.
    Climbing a full Everest - or a Quarter, Half, Double, or Triple - in a single activity
    earns an Everesting achievement badge shown on the activity, in activity lists, and on
    the "Highest Climb Ever" card.
  • Added weekly elevation gain to the calendar year view. The last column of the calendar
    table now shows the total elevation climbed each week above the weekly weight.
  • Added lifetime elevation gain to the Lifetime Totals insight.
  • Added a new Histograms page - reachable from the Charts page - showing the
    distribution of your activities by distance, time, and elevation gain.
  • Added Winget distribution Makefile targets, artifacts and scripts.

Changed

  • Replaced the "Years Active" dashboard summary card with a "Total Elevation" card
    showing the cumulative elevation gained across all activities.
  • Everesting elevation is now counted per climbing sport (Ride, Run, Hike, and Nordic
    Ski) instead of lumping all sports together.

Fixed

  • Fixed the This vs. Last page showing the literal text "None" instead of a
    chart when the selected sport and period had no data - it now shows a friendly
    empty state.
  • Fixed typos in GH issues in README.md.
  • Removed dead code from around the code base (import).

Documentation

  • WAITING FOR MYTRAL APPROVAL - THIS WILL WORK AS SOON AS MYTRAL IS IN:
    • Documented Winget release process as a feature analysis in docs/.
    • Documented installing MyTraL on Windows via Winget in INSTALLATION.md.
  • Listed the Windows (winget) installation method in README.md.
  • Added new features screenshots for everesting and histograms.

Web

  • Improved WWW pages SEO by adding the sitemap, OG image, 404 page, and favicon.

MyTraL 1.58.0

Choose a tag to compare

@dvorka dvorka released this 08 Jul 09:49
feature heatmap

This MyTraL minor release brings:

Added

  • Improved the first login experience in MyTraL DESKTOP incarnation: when no
    user profile exists yet, a default athlete user ("MyTraL Athlete") is
    auto-created and auto-logged in, landing straight on the dashboard - no
    sign-up/login step required. Logging out disables auto-login until the next
    explicit login, so a second/third user can be added or logged into from the
    login page.
  • Calendar and sickness heatmaps now mark today with a yellow rectangle so the
    current week and day stand out, and each sickness day's tooltip now reads like
    2026-05-25: 3x sick instead of a bare count.
  • Added estimated speed to the analysis chart of the activity in case that activity
    recordings (as well as parquet) don't have it.
  • Added tooltip with the elevation, time, distance and grade to the elevation chart
    on the activity analysis page.
  • Added a macOS .dmg desktop distribution, built with PyInstaller and
    hdiutil/iconutil and attached to the Distro macOS DMG GitHub Actions workflow
    run for every release PR. The build targets Apple Silicon (arm64) only and ships
    unsigned (no Apple Developer certificate).
    See docs/INSTALLATION.md for the one-time Gatekeeper workaround needed
    on first launch.
    Data is stored in ~/Library/Application Support/mytral/ like every other macOS app.

Fixed

  • Fixed path(s) in Snap which pointed outside of strict confinement filesystem.

Documentation

  • Documented macOS Apple Silicon (arm64) installation and build.

Support on Open Collective

MyTraL 1.57.0

Choose a tag to compare

@dvorka dvorka released this 05 Jul 13:48
bd40774
feature manequinne

This MyTraL minor release brings:

Added

  • Published MyTraL to the Snap Store at https://snapcraft.io using strict
    confinement. The Snap Store snap runs the local server and opens the UI in the
    default browser. Athlete data are stored in $SNAP_USER_COMMON
    (~/snap/mytral/common) i.e. are NOT stored in the location used by all other
    distros - data persist until uninstall (snapd keeps a snapshot for ~31 days
    after snap remove).
  • Added new body mannequin - from robot-like to realistic anatomical muscle
    geometry adapted from the MIT-licensed react-native-body-highlighter.
  • Added activity bookmarks - bookmark any activity from its detail page.
  • Added an Elevation aspect to the This vs. Last and Chargs pages,
    comparing weekly, monthly, and yearly elevation gain. The weekly and monthly
    charts also show a dashed red Everesting (8848 m) reference line so athletes
    can see whether their cumulative climbing reaches Mt. Everest peak.

Changed

  • Redrew the body mannequin with realistic anatomical muscle geometry, used
    everywhere it appears (muscle load, injuries, and sickness). Muscle load now
    renders as a cool-to-hot volume heatmap.

Documentation

  • Documented both strict and classic Snap installations.
  • Documented the missing python3-all build prerequisite for local .deb builds
    (make distro-ubuntu-deb) in the installation guide.

Fixed

  • Fixed Ubuntu PPA/.deb installation on Ubuntu releases that do not ship
    Python 3.12 as the system interpreter (trusty through focal) - postinst
    now uses uv to provision a self-contained Python 3.12 under /opt/mytral,
    independent of the host's system Python.
  • Fixed .deb package Architecture metadata (all -> amd64 arm64) to match
    what postinst's uv bootstrap actually supports, so apt refuses
    unsupported architectures upfront instead of installing a package that fails
    during configure.
  • Fixed .deb postinst failing with an unclear uv pip install error when
    the bundled wheel or requirements.txt was missing - it now fails fast with a
    clear message.

Security

  • Hardened .deb postinst: the downloaded uv binary is now verified against
    a pinned sha256 checksum before extraction, closing a supply-chain gap where
    a tampered or corrupted release asset would otherwise be executed as root
    during package installation.

Infrastructure

  • Rewrote build/ubuntu/launchpad-release.sh to accept an optional Ubuntu
    codename argument, building (and optionally uploading) a single distribution
    instead of always looping over every supported version.
  • Added a UBUNTU_VERSION parameter (default noble) to make distro-ubuntu-deb, and a new make distro-launchpad-release-version target
    to build and upload a single Ubuntu version's PPA package.

Support on Open Collective

MyTraL 1.56.0

Choose a tag to compare

@dvorka dvorka released this 27 Jun 13:41
95269ae

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.

MyTraL 1.55.0

Choose a tag to compare

@dvorka dvorka released this 26 Jun 08:18
63fa516

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

Choose a tag to compare

@dvorka dvorka released this 25 Jun 15:21
8cb0326

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

Choose a tag to compare

@dvorka dvorka released this 24 Jun 20:59
e2f1439

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

Choose a tag to compare

@dvorka dvorka released this 22 Jun 10:30
c1d083b

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

Choose a tag to compare

@dvorka dvorka released this 22 Jun 05:59
a431cae

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.