Releases: dvorka-oss/mytral
Release list
MyTraL 1.59.0
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. Lastpage 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.
- Documented Winget release process as a feature analysis in
- 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
This MyTraL minor release brings:
Added
- Improved the first login experience in MyTraL DESKTOP incarnation: when no
user profile exists yet, a defaultathleteuser ("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 sickinstead 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
.dmgdesktop distribution, built with PyInstaller and
hdiutil/iconutiland attached to theDistro macOS DMGGitHub Actions workflow
run for every release PR. The build targets Apple Silicon (arm64) only and ships
unsigned (no Apple Developer certificate).
Seedocs/INSTALLATION.mdfor 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.
MyTraL 1.57.0
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
aftersnap remove). - Added new body mannequin - from robot-like to realistic anatomical muscle
geometry adapted from the MIT-licensedreact-native-body-highlighter. - Added activity bookmarks - bookmark any activity from its detail page.
- Added an
Elevationaspect to theThis vs. LastandChargspages,
comparing weekly, monthly, and yearly elevation gain. The weekly and monthly
charts also show a dashed redEveresting(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-allbuild prerequisite for local.debbuilds
(make distro-ubuntu-deb) in the installation guide.
Fixed
- Fixed Ubuntu PPA/
.debinstallation on Ubuntu releases that do not ship
Python 3.12 as the system interpreter (trustythroughfocal) -postinst
now usesuvto provision a self-contained Python 3.12 under/opt/mytral,
independent of the host's system Python. - Fixed
.debpackageArchitecturemetadata (all->amd64 arm64) to match
whatpostinst'suvbootstrap actually supports, soaptrefuses
unsupported architectures upfront instead of installing a package that fails
during configure. - Fixed
.debpostinstfailing with an unclearuv pip installerror when
the bundled wheel orrequirements.txtwas missing - it now fails fast with a
clear message.
Security
- Hardened
.debpostinst: the downloadeduvbinary is now verified against
a pinnedsha256checksum 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.shto accept an optional Ubuntu
codename argument, building (and optionally uploading) a single distribution
instead of always looping over every supported version. - Added a
UBUNTU_VERSIONparameter (defaultnoble) tomake distro-ubuntu-deb, and a newmake distro-launchpad-release-versiontarget
to build and upload a single Ubuntu version's PPA package.
MyTraL 1.56.0
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 TarballGHA workflow that builds the upstream tarball in
rel/<major.minor.patch>branches targetingmain. - Added
Distro SnapGHA workflow that builds the Snap package in
rel/<major.minor.patch>branches targetingmain. - Added
Distro WindowsGHA workflow that builds the Windows installer and ZIP archive
on a Windows runner inrel/<major.minor.patch>branches targetingmain. - Added
Distro FlatpakGHA workflow that builds the Flatpak bundle in
rel/<major.minor.patch>branches targetingmain. - Added
distro-win-zipMakefile 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
bleachfrom 6.3 to 6.4. - Updated
cryptographyfrom 46.0 to 48.0. - Updated
msgpackfrom 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-installerMakefile target which depended on the Linux targets.
MyTraL 1.55.0
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, andT- will be incorporated as I go.
Added
- Added improved Windows installer make targets and build artifacts.
- Added Ubuntu
resoluteto Launchpad PPA.
Fixed
- Fixed "missing waitress" server in the MyTraL installation from PPA
aptlog.
Documentation
- Banner improved by the switch to MyTraL WWW palette.
MyTraL 1.54.0
This MyTraL minor release brings:
Fixed
- Fixed and refactored Snap distribution builder to have
snapcraft.ioon 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
This MyTraL minor release brings:
Added
- Added Ubuntu PPA distribution for Ubuntu via Launchpad (
ppa:ultradvorka/sport). - Added
distro-ubuntu-debMakefile target to build.debpackage 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
.debpackaging: Python dependencies are installed into an isolated virtualenv at
/opt/mytral/venv/- system Python environment is never polluted. - Fixed
.debwrapper scripts to exportMYTRAL_INCARNATION,MYTRAL_USER_REGISTRATION,
andMYTRAL_ENABLE_CACHEenvironment 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
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
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
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
genderfield to the athlete profile in order to calculate metrics like TRIMP
more accurately. - Added TRIMP calculation and chart to the
Progressmenu. - 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 Scorefrom 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_toolmonkeypatch 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.