Releases: dvorka-oss/mytral
Releases · dvorka-oss/mytral
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.
MyTraL 1.9.0
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.sportrenamed toActivityEntity.activity_type_key- breaks backward compatibility.- Added
ActivityEntity.avg_cadenceandActivityEntity.max_cadence- consider rides, rowing, swimming, and other activities. - Added
ActivityEntity.meta_activity_type- considerskiaggregating 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.