Skip to content
This repository has been archived by the owner on Jan 7, 2024. It is now read-only.

Latest commit

 

History

History
260 lines (240 loc) · 14.7 KB

CHANGELOG.md

File metadata and controls

260 lines (240 loc) · 14.7 KB

Workoutizer Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[Unreleased]

  • ...

0.25.1 - 2023-10-01

Fixed

  • #239: Rounding error when calculating distance between two coordinates which small proximity was fixed by replacing custom math formula with haversine.

Removed

  • Removed Raspberry Pi installation test as it required more maintenance efforts than provided value.

0.25.0 - 2022-03-09

Changed

  • Use Poetry for packaging. This removes the possibility of having dev or dirty versions. But simplifies the overall building and releasing process.

Removed

  • Dropped support for Python3.7. This is to follow development of used dependencies e.g. Django, Numpy and others. Recent Raspberry Pi images ship with Python >= 3.8 anyway.
  • Removed testing support for Chrome browser. This does not mean workoutizer does no longer run on Chrome. It is very likely that it still works without any issue. The purpose of removing the chrome testing pipeline is to speed up the entire build pipeline and reduce the number of features to be maintained.
  • Removed the usage of Dask & distributed for parallel file importing. The speed up of using dask was not as high as expected. Reason being the database bottleneck. Thus removing the dependency and falling back to purely sequential file imports.
  • Removed requests library. Functionality is covered by stdlib urllib also.

Added

  • Added support for Python3.10.

Fixed

  • Upgrade geckodriver to v0.30.0 in local docker setup to fix failing firefox tests because of incompatible selenium version.

0.24.0 - 2022-01-21

Fixed

  • Fixed retrieving geo referenced location names by adding county as additional field. This will again provide a geo name for activities with particular coordinates.
  • Updated the mounting mechanism to account for new gio on Raspberry Pi OS bullseye which does no longer return the path to a mounted device. The mount mechanism was changed in a way that it simply checks whether a device is mounted a the expected location. This should work with in all scenarios.

Changed

  • moved initial_trace_data dir from setup to wkz because in some cases this led to a failure of missing dir when initializing workoutizer with the --demo flag.

0.23.0 - 2021-10-24

Added

  • Introduce sports mapping name. It can be used to map a particular sport to a certain sport name label given by Garmin. Mapping of such names was previously hard-coded. With this flexible approach users can decide themselves which Garmin sport label should be mapped to which workoutizer sport. Note, that not all garmin activity types have their own individual name and unfortunately many are labelled with the same name, e.g. running, training, generic ... To figure out the Garmin name use either the fitparse library to manually parse your activities or have a look at the workoutizer logs when importing new files. A warning should be raised in case the Garmin name could not be mapped successfully.

Changed

  • Changed mounting mechanism to be triggered early on by udev whenever a Garmin device is connected, even before knowing the exact product id and type. Thus workoutizer takes care of waiting for the device being mountable and than mounts it, once it is ready. This fixes #9. Mind the following:
    • In case your device gets mounted via the manually added udev rule and the new mounting mechanism, you no longer need to provide the path_to_garmin_device setting parameter, since the path gets detected automatically during mounting. Just leave the setting empty to disable the device watchdog in this case. Your device will still be detected automatically and fit files would be collected accordingly.
    • In case your device is mounted automatically on your system (without specifying a custom udev rule), you would still need to configure the path to your device within the setting page aka path_to_garmin_device in order for workoutizer to regularly check for your device and and collect fit files.

0.22.0 - 2021-09-20

Fixed

  • Correctly display activity duration as timedelta formatted as HH:MM:SS instead of raw seconds in time series plots on activity page.
  • Use the same layer type for all maps (map on sport and activity page).

Changed

  • #189: Upgrade fitparse to most recent version (1.2.0) and use enhanced_altitude instead of altitude value when parsing fit files, since enhanced_altitude seems to contain the correct altitude value for all garmin devices. This requires a reimport of activities.
  • Use pie chart of Creative Tims paperdashboard instead of bokeh for the sake of simplification, speed-up and nice reload animation.

Added

  • Use value of altitude field in case enhanced_altitude field is not available during parsing of fit files.
  • Now all types of Laps are shown in the activity page, a button allows you to toggle if the laps are shown in the graphs/map. Every type of lap trigger has its own color to distinguish it from other lap types.
  • Test both mounting Block and MTP devices.
  • Render activity duration in hover tooltip on history plot on dashboard page.
  • Include lap trigger column within the lap table on activity page.
  • Run Django on DEBUG=True when working in docker environment, otherwise DEBUG=False.
  • Added 'Workload & Mileage' plot to dashboard page which shows the overall duration and distance aggregated by either weeks or months.

0.21.1 - 2021-07-17

Added

  • Run browser tests not only for firefox but also for chrome, thus workoutizer now officially supports chrome.

Fixed

  • Fix not mounting block devices due to flawed logic.

0.21.0 - 2021-07-06

Added

  • Add support for mounting devices which identify as block device.
  • Add check-for-update command to wkz CLI.

Changed

  • When looking for activities on device allow files next to device dir.

Fixed

  • Test for mounting devices fails sometimes, because it was not ready for block device mounting.
  • Fix reading package version of already installed workoutizer package.

0.20.1 - 2021-06-25

Changed

  • Updated the url to releases on help page to now point to the changelog on github.

Fixed

  • Remove temporary payload from parsing files during reimport from both the scheduler as_completed list and the worker. This avoids piling up memory when reimporting many files.

0.20.0 - 2021-06-21

Added

  • Port-forwarding added when using the run_docker.sh script.
  • Added support for Python3.7 and armv7 architecture to simplify the installation on Raspberry Pi - which is based on debian buster which itself comes with Python3.7, currently.

Changed

  • Made the extension of fit files to be imported case insensitive.

Fixed

  • Apply initial check to file importing process, which skips running a dask cluster in case all existing files are preset in the db already. This should fix a memory leak.
  • Set processes=False for dask client and only use scheduler with one worker to fix worker timeout when running wkz init --demo (#160).

0.19.0 - 2021-06-13

Note, when upgrading to this version you need to run wkz reimport in order to parse and display the additional data fields added in this release.

Added

  • Add gpx file to demo activities.
  • Use dask to parse activity files in parallel to speed up file import / reimport.
  • Reduce number of data points of tracked activities by only selecting every 5th value (configurable) in order to speed up activity page load.
  • Parse total ascent and total descent values from fit files and display them on the activity page.
  • Integrate total ascent into awards page by listing the top three activities with highest total ascent value per sport.

Changed

  • Show "made with ❤️" in footer only on settings and help page.
  • Moved tests folder from workoutizer/wkz/tests/ to workoutizer/tests root folder.
  • Run all tests together in github actions Test and Release pipeline.
  • Ensure activity leaflet map has always height of > 400 pixels

Removed

  • Removed reimport button/functionality from settings page in order to avoid threads from interfering when accessing sqlite db.
  • Removed retries around fit file reading and md5sum calculation, turned out that the io errors were caused by a too long usb cable...

0.18.0 - 2021-05-16

Added

  • Added custom 500 error page to catch internal server errors.
  • Re-trigger FileWatchdog whenever Path to Trace Directory gets updated on settings page in order to automatically import files from newly given path.
  • Added description on Path to Traces Directory in settings page when hovering over question mark icon in order to easily distinguish it from Path to Garmin Device.
  • Set default log level of django to WARNING. Django log level can also be changed by setting the value of the DJANGO_LOG_LEVEL environment variable.
  • Avoid showing None in case of an activity having None calories. Show - instead.
  • Enable Server Sent Events (SSE) to inform user on backend events. This allows for progress updates during importing/reimporting and validates paths for their existence on the machine workoutizer is running on.
  • The settings icon located in the top right corner is colored red in case the connection to the server is broken and green in case it is established. Note that a established connection is required in order to receive SSEs.
  • Wrap retry around checksum calculation to remedy io errors.
  • Use huey for queueing reimport & import tasks from within the settings page. Now both file watchdog and device watchdog are triggered periodically every minute and will be queued on huey to run independent of the django process. It is also ensured that only one file importer is run at a time and thus fixes some concurrency issues.

Changed

  • Catch fit file parsing errors to ensure to continue parsing other files in case only one file is corrupted.
  • Reduce number of retries from 5 to 3 to speed-up importing multiple files.
  • Set zsh as default shell and remove terminal.sh docker entrypoint script.

Fixed

  • Prevent unique constraint sql error when importing activity files with same checksum but different name. Note, this happened only in rare situations, when initially importing multiple files, which are not known to workoutizer.
  • Removed and reduced unneeded logging from fit collector.

0.17.1 - 2021-04-20

Changed

  • Setting Debug mode to False to handle HTTP errors with redirecting to home
  • always show number of selected days as either days or years on dashboard
  • show only hours (and not minutes) in summary facts duration card
  • provide shortcut cli options, e.g.:
    • wkz --version equals wkz -v and
    • wkz init --demo equals wkz init -d

Fixed

  • fix incorrect displaying of colors in "Sport Distribution" pie chart

0.17.0 - 2021-04-18

Changed

  • Migrate to new frontend: Paper Dashboard 🎉
  • Introduce 7-days sport and activity trend given as hours per 7 days.
  • restructure test directories
  • rename django app wizer to wkz (follow this guide if you have trouble renaming your existing django app)

0.16.0 - 2021-04-03

Changed

  • upgrade sportgems to avoid spikes in speed in situation with poor gps signal. Requires reimport.
  • remove obsolete zooming feature of best sections activity html tables.
  • Add box zoom tool to time series activity plots and link it for all plots.
  • Ensure vertical lap line in time series activity speed plot is rendered over entire plot height.
  • Increase max size for log files to 5MB.
  • Set log level for logging to file to WARNING.

0.15.1 - 2021-03-25

Changed

  • Also catch InconsistentLengthException when parsing best sections with sportgems since some gpx activities might come with different data array lengths.
  • Always run initial activity import when triggering wkz run to ensure all activities get imported in case of any files have been added since the last run.

0.15.0 - 2021-03-21

Added

  • Parse best climb sections from activity files using sportgems and integrate it into awards and activity page (next to fastest sections).

0.14.0 - 2021-03-15

Changed

  • #94: Decoupling fit file collecting (copying files from device) from mounting device. The mount endpoint now only mounts the device. An additional watchdog was added which monitors whether a device was mounted and triggers the fit collector in case a device shows up. This supports systems where devices are automatically mounted by the OS. Workoutizer now also automatically finds the Activity directory on your device irrespective on the path in which the activity files are stored.

Fixed

  • #95: Compute average values in case they are not provided in the fit file. Also make application more robust against missing data by adding if cases to template.

Other

  • Upgrade to sportgems v0.4.1, which allows to reduce code in workoutizer.
  • Add more logging when mounting device and importing files to support debugging.
  • remove django-leaflet dependency and add respective css and js to html header in order to resolve deprecation warnings.

Previous Releases

For earlier releases, have a look at the release section at github.