SportsTracker Changelog

What's new in SportsTracker 8.0.1

Jan 21, 2024
  • Project changes:
  • Updated JavaFX / OpenJFX to version 21.0.2
  • Fixes issue of slow app startup on macOS 14 (Sonoma)
  • Fixes bug of inactive / unselected window after app startup
  • fixed bug when selecting / editing entries in Exercise / Notes / Weight list
  • Was caused by an incompatibility of JavaFX versions between SportsTracker
  • Updated Java to version 21.0.2 (bundled in app packages)
  • Updated Kotlin to version 1.9.22
  • Updated ControlsFX to version 11.2.0
  • Updated commons-cli to version 1.6.0
  • Updated sqlite-jdbc to version 3.45.0.0
  • Updated JUnit to version 5.10.1
  • Updated Mockito to version 5.9.0

New in SportsTracker 8.0.0 (Nov 12, 2023)

  • Project changes:
  • - updated Java to version 21
  • - updated JavaFX / OpenJFX to version 21.0.1
  • - updated Kotlin to version 1.9.20
  • - updated ControlsFX to version 11.1.2
  • - updated JUnit to version 5.10.0
  • - updated Mockito to version 5.4.0
  • - updated JFreeChart to version 1.5.3 and JFreeChart-FX to 2.0.1
  • - updated sqlite-jdbc to version 3.43.2.1
  • SportsTracker changes:
  • - Exercise: optional values are now nullable
  • (ascent, descent, AVG heartrate, calories)
  • - no more workarounds for persistence and statistics needed
  • - ExerciseList doesn't display 0 values anymore when no values are given
  • - Statistic calculation was improved, missing values (null) are now excluded
  • - Exercise and Weight model classes: changed value types from float to double
  • to prevent precision and rounding issues when persisting in SQLite database
  • - Storage of application data in SQLite database instead of XML files
  • - Advantages:
  • - faster loading times, almost no saving times
  • - database schema provides foreign keys between exercises, sport types
  • etc. to ensure data consistency
  • - transaction support for discarding data changes
  • - data can be processed and evaluated easily by using 3rd party SQLite
  • database browsers (e.g. custom statistics via SQL)
  • - SQLite storage implementation was done in plain JDBC to avoid further
  • complexity, dependencies and performance impacts
  • - Memory consumption of SportsTracker has not been increased due to SQLite
  • storage compared to XML storage
  • - Existing application data is being migrated automatically to SQLite on
  • first application startup (XML files are not deleted for backup reasons)
  • - The SQLite Export feature has been removed, as this is the default
  • ExerciseViewer changes:
  • - Garmin FIT parser: bugfix for handling laps without any speed data
  • (when the lap contains just a break without any activity)
  • - All XML-based parsers (GPX, TCX, Polar): fixed error when opening files with
  • spaces or special characters in the filename
  • - GPX parser (TopoGrafixGpxParser): bugfix for issue #260
  • - support for GPX files where timestamps contain timezone / offset info
  • - Updated LeafletMap component to version 1.0.8
  • - adds new map layer OpenTopoMap
  • - removed Hike&Bike map layer (not active anymore)

New in SportsTracker 7.9.1 (Jan 26, 2023)

  • Project changes:
  • Bugfix: section header labels are now using bold font again on macOS
  • Updated JavaFX / OpenJFX to version 19.0.2.1
  • contains critical bugfixes for Apple Silicon support (crashed before)
  • updated Kotlin to version 1.7.10
  • updated EasyDI to version 0.6.0
  • replaced outdated dependency javax.inject with new jakarta.inject
  • updated sqlite-jdbc to version 3.40.0
  • updated jdom2 to version 2.0.6.1
  • updated commons-cli to version 1.5.0
  • updated JUnit to version 5.8.2
  • updated Mockito to version 4.4.0
  • SportsTracker changes:
  • SQLite Exporter:
  • table Exercise now uses the SportSubType and Equipment primary keys (ID)
  • for referencing sport subtypes and equipments
  • columns SportSubType.SPORT_SUBTYPE_ID and Equipment.EQUIPMENT_ID are not
  • needed anymore and were removed
  • > makes SQL queries a lot simpler and faster
  • added table Meta for storing database schema version and update timestamp
  • Entry Filter (Exercise, Note, Weight): added support for searching for
  • multiple words in any order (AND logic, case-insensitive)
  • Automatic sport type and subtype mapping when importing Garmin FIT files
  • user configuration is needed for mapping the SportsTracker sport types and
  • subtypes to the matching Garmin FIT sport types and subtypes (as displayed
  • in ExerciseViewer)
  • Sport Type Dialog: added UI for mapping FIT sport types and subtypes
  • SQLite Exporter: added FIT ID columns to SportType and SportSubType tables
  • ExerciseViewer changes:
  • updated Garmin FIT SDK library to version 21.94.0, provides bugfixes
  • and support for newer Garmin devices (e.g. Garmin Forerunner 955)

New in SportsTracker 7.9.0 (Jan 2, 2022)

  • Project changes:
  • updated Kotlin to version 1.6.10 (solves JDK 16/17 compatibility issues)
  • updated to JavaFX / OpenJFX 17
  • ensured JDK 17 compatibility
  • created a GitHub Actions based CI (continuous integration) pipeline for build and test execution (replaces the stalled Travis CI build)
  • updated ControlsFX to version 11.1.1
  • SportsTracker changes:
  • SQLite Exporter: datetime of exercises, notes and weight entries is now a string in ISO 8601 format "yyyy-MM-dd HH:mm:ss" instead of seconds since 1.1.1970 (makes database processing easier and content more readable)
  • Exercise Dialog: fixed CSS warning on dialog display (caused by a ControlsFX validation bug)
  • ExerciseViewer changes:
  • Main Panel: sport type is displayed, if available (e.g. for Garmin FIT, Polar and Timex files)
  • Garmin FIT parser: provides heartrate zones information and times within these zones (if available):
  • newer Garmin devices (e.g. Garmin Forerunner 645, Garmin Fenix 5, Garmin Edge 530 and later) provide all the data
  • older Garmin devices (e.g. Garmin Forerunner 520 or 820, Suunto Spartan) provide only the time in the heartrate zones, not the zone boundaries
  • Diagram and Track Panel: bugfix for issue #243 (exercise files with completely flat altitude can't be displayed)
  • support for parsing and displaing power data:
  • Garmin FIT parser: provides power data on exercise, lap and sample level (average, maximum and normalized power for the exercise and each lap)
  • Optional Panel: displays power data summary for the exercise
  • Lap Panel: displays power data summary for each lap
  • Sample Panel: displays power data for each recorded sample
  • Diagram Panel: displays power data on each axis
  • Track Panel: displays power data for the current position (tooltip)

New in SportsTracker 7.7.0 (Jul 13, 2019)

  • SportsTracker changes:
  • updated to JavaFX / OpenJFX 11.0.2
  • updated ControlsFX to version 11.0.0
  • updated JUnit 5 to version 5.4.0
  • Kotlin language can now be used in all SportsTracker Maven modules
  • was limited to st-exerciseviewer before)
  • updated Kotlin to version 1.3.41
  • automatic check for SportsTracker application updates, the latest version
  • number is downloaded from the SportsTracker website
  • checked on each application start after 30 seconds)
  • Exercise Dialog: bugfix for issue #206, the average speed input now displays
  • the proper unit for the speed mode of the selected sport type
  • Equipment of sport types can now be set to 'not in use', e.g. for worn shoes
  • the Exercise dialog does not display the outdated equipment for selection
  • anymore => the user must not search in long lists anymore
  • Sport Type Dialog: the user can toggle the 'not in use' state for each
  • equipment
  • the outdated equipment is still present in older Exercise entries, Filter
  • and Statistic dialogs
  • Module st-util:
  • ported most classes and unit tests from Java to Kotlin, so there is less
  • code, it's null safe, and fewer tests are needed
  • refactoring: moved all time-related functions from class FormatUtils to
  • new class TimeUtils
  • ExerciseViewer changes:
  • Track Panel:
  • display altitude chart below the track map, if altitude is present
  • display marker in altitude chart for current track position
  • TopoGrafixGpxParser: bugfix for issue #188, GPX import failed if there are
  • samples without heartrate data

New in SportsTracker 7.6.0 (Feb 8, 2019)

  • SportsTracker changes:
  • updated to JDK 11 (JDK 9 and JDK 10 are not supported by Oracle anymore)
  • JavaFX has been added as dependencies, not part of the JDK anymore
  • JDK used for development and packaging: AdoptOpenJDK 11.0.2
  • updated Kotlin to version 1.3.20
  • fixed all reasoned Kotlin compiler warnings
  • fixed all reasoned Java compiler warnings, suppressed the others (generics)
  • GitHub issue #186: Exercise/Note/Weight Dialog: bugfix for date entries in
  • the textfield, the new date is not ignored anymore
  • updated Java requirement to Java 10
  • tested Local Variable Type Inference (JEP 286) in class STApplication
  • support for descent data in exercises (GitHub PR #190)
  • descent is an optional Exercise attribute, shown also in Overview Diagram
  • and Statistic Calculation
  • ExerciseViewer reads and displays descent data (for Garmin FIT files only)
  • contributed by Alex Jarosch, completed by Stefan Saring)
  • ExerciseViewer reads and displays total cycles of cadence data, e.g.
  • rotations for cycling or steps for running (for Garmin FIT files only)
  • contributed by Alex Jarosch, completed by Stefan Saring)
  • support for sport type specific speed modes (Issue #197):
  • the user can define for each sport type whether speed has to be handled as
  • speed (e.g. km/h for cycling) or pace (e.g. min/km for running)
  • the user can define a preferred speed mode in the Preferences Dialog, this
  • is being used for new sport types, when multiple sport types are shown and
  • in the Overview Dialog
  • the speed mode of a sport type is used for entering and displaying exercise
  • speed data and in the Exercise Viewer when showing HRM files
  • when speed mode has not been set for a sport type yet, then the preferred
  • speed mode will be used
  • implemented new automatic SportsTracker package and installer creation for
  • macOS, Linux and Windows
  • old Ant-based packaging doesn't work anymore, has been removed from JDK 11
  • new packaging uses a backport of the upcoming jpackager tool (JEP 343)
  • see directory st-packager for further details
  • ExerciseViewer changes:
  • GarminFitParser:
  • ported to Kotlin (incl. tests)
  • added basic support for swimming exercices
  • TopoGrafixGpxParser: added support for parsing GPX files with partial
  • altitude data (GitHub issue #191)
  • updated Garmin FIT SDK library to version 20.80.00

New in SportsTracker 7.5.0 (Mar 31, 2018)

  • Java 9 / 10 update
  • updated Maven plugins
  • updated all dependencies / libraries to current versions
  • updated ControlsFX to version 9.0.0
  • JEP 226 usage: converted all translation files of the resource bundles to
  • UTF-8 encoding and removed all Unicode escape sequences (e.g. u00c4)
  • creation or update of translation files is much easier now (see I18N.txt)
  • fixed encoding problems in dutch translation
  • update to JFreeChart 1.5.0, does not need the JCommon library anymore
  • added official JFreeChart-FX 1.0.0 library, custom patch not needed anymore
  • updated Kotlin to version 1.2.31
  • updated documentation for project import and IDE setup in IDEA and Eclipse
  • migrated all unit tests to JUnit 5 (version 5.1.0)
  • provides better testing of expected exception calls and handling

New in SportsTracker 7.4.1 (Oct 2, 2017)

  • Calendar View:
  • Issue #141: today is highlighted in a blue circle (red for sundays)
  • Removed layout workarounds (JavaFX bugs have been fixed)
  • STApplication: removed Swing Look&Feel workaround (no Swing map anymore)
  • Refactoring: removed resource lookup in entity classes
  • Updated Java runtime to Java SE/FX 8u144, contains a bugfix for a memory leak in the WebView used by LeafletMap
  • ExerciseViewer changes:
  • Ported all exercise parsers and the unit tests written in Groovy to Kotlin
  • Less dependencies, Groovy is not needed anymore (was big)
  • Parser implementations are now faster and more stable (Kotlin is typesafe)
  • Refactoring of PolarHrmParser and some other parsers implemented in Groovy (huge monolithic code blocks)
  • Kotlin can now be used in all modules together with Java (no more mixed compilation issues with Groovy code)
  • Ported all data, core and UI classes from Java to Kotlin
  • Less and simpler code, better maintainable
  • Null safety in data model and view classes => no exceptions anymore when specific values are missing / null
  • Diagram Panel: missing values are not longer displayed as 0 values -> improves readability of diagrams
  • Removed compiler warnings in LeafletMap component
  • Issue #159: added support for Garmin Edge 820 exercise files
  • Updated Garmin FIT SDK library to version 20.33.01, previous FIT library was not able to parse exercise files with the new protocol format 2.0
  • Added unit test for a Garmin Edge 820 exercise file
  • Updated Kotlin to version 1.1.50
  • TimexPwxParser: bugfixes for parsing of recording modes, speed and distance data

New in SportsTracker 7.3.0 (Mar 18, 2017)

  • removed invalid version numbers from french and spanish translations
  • bugfix #51 for importing HRM exercise files: import duration only, when no
  • distance is being recorded for the selected sport type
  • Export of all SportsTracker application data to a SQLite database,
  • provides much more capabilities for data analysis, statistics or migration
  • (for advanced users with SQL skills, see README.txt for documentation)
  • added generic filter for all entry types, note and weight entries are now
  • filterable too (user can select the filter type in the filter dialog)
  • updated ControlsFX to version 8.40.12
  • (provides bugfixes and solves JDK compatibility issues)
  • updated JDOM to version 2.0.6 (bugfixes)
  • updated JUnit to version 4.12
  • updated Mockito to version 1.10.19

New in SportsTracker 7.2.0 (Mar 18, 2017)

  • Native SportsTracker packages are now containing all documentation files (README, LICENSE, CHANGES, AUTHORS, ...)
  • Native SportsTracker packages are displaying the GPLv2 license text before installation (tested on Mac OS X)
  • Exercise Dialog: preselection of sport type and subtype when adding new exercises, if there is only one choice
  • update of ControlFX to 8.40.10 for compatibility to Java 8u60+
  • updated javafx-maven-plugin to version 8.2.0
  • simpler inclusion of additional app resources
  • GPL license is displayed before installation (Mac / Windows)
  • better UI when opening the DMG package on Mac OS X
  • use of EasyDI 0.3.0 instead of Guice for dependency injection
  • much faster startup time (DI takes about 200 msec instead of 700 msec)
  • much smaller library (6 KByte instead of 2,7 MByte for Guice incl. Guava)
  • less memory usage after startup (about 10 MByte)
  • removed cyclic dependencies on STController in all entry views
  • update of the bundled Java runtime to Java SE/FX 8u77, which contains many
  • bug and security fixes

New in SportsTracker 7.0.0 (Feb 28, 2015)

  • SportsTracker changes:
  • use of no_aop version of Guice 3.0, is smaller and has less dependencies
  • update of Groovy to 2.4.1
  • update of JDOM to version 2.0.5
  • update of SwingX to 1.6.5-1
  • replaced SwingX-WS 1.0 library by JXMapViewer2 2.0 library
  • SwingX-WS is not under development anymore
  • JXMapViewer2 is an active, compatible fork with bug fixes, hosted at https://github.com/msteiger/jxmapviewer2 switched compiler to Java 8 in module st-exerciseviewer (already done in all other modules)
  • use of Java 8 Lambda features in module st-exerciseviewer
  • bugfix - adding an exercise via drag & drop of a HRM exercise file is now also possible when there are no exercises yet (a sport type must exist at least)
  • update to JFreeChart 1.0.19 (and JCommon 1.0.23) which provides JavaFX support
  • full rewrite of the SportsTracker and ExerciseViewer user interface by using JavaFX instead Swing
  • user interfaces are now declared in FXML using SceneBuilder
  • JavaFX provides improved look & feel (not native, same on all platforms)
  • no more UI problems on Linux (Swing system look & feel was horrible)
  • use of native file chooser dialogs on all platforms
  • all SportsTracker dialogs: added instant input validation
  • all required inputs are marked with a red upper left corner
  • the OK button is active only when all required user inputs are available and all inputs are valid
  • Exercise List View:
  • new table menu in header (+) for simple enabling / disabling table columns
  • list of optional columns (as configured in Preferences) is now used at application startup only (renamed to 'initial optional fields')
  • Calendar View: redesigned look (colors, fonts, ...)
  • Calendar View and Overview Diagram: bugfix for weeknumber calculation
  • initial set of sport types is added when there are no sport types defined, it makes the setup easier for new application users
  • new icon set for SportsTracker toolbar and context menus, taken from the Free Version of the IcoMoon project (https://icomoon.io, GPL licensed) or new creations based on the IcoMoon icons
  • support for Suunto Ambit watches (tested with Ambit2, downloaded GPX files)
  • Native SportsTracker packages and installers are created during build implemented in module st-packager (see PACKAGER.txt)
  • created packages include the Java Runtime Environment (JRE) easier setup, users must not install Java anymore
  • created installers (depending on the build system):
  • Windows: application package and Inno Setup installer
  • Mac OS X: application package, DMG and PKG installers
  • Linux: application package, DEB package (RPM too, not tested)
  • reduced memory usage:
  • asynchronous garbage collection is triggered after each closed dialog or changed view (otherwise the JVM prefers to allocate additional heap memory)
  • maximum heap size of created native packages is limited to 192 MB
  • faster loading of user data from XML files (about 25%) by using bulk operations for initial list setup
  • removed external tool polarpersonaltrainer-importer (in directory 'misc'), not in use anymore (import of Polar .ped files is still supported)
  • About Dialog: added license informations
  • Help Menu: added menu item for visiting the project website
  • ExerciseViewer changes:
  • Track Panel: added position slider for replaying the track in the map,
  • a tooltip displays all the details of the current track position

New in SportsTracker 6.0.0 (Apr 14, 2014)

  • switched compiler to Java 8 (except for module st-exerciseviewer)
  • replaced mocking framework EasyMock 3.2 with Mockito 1.9.5
  • much better API and easier to use)
  • switch to IntelliJ IDEA 13 as project IDE, added project files to VCS
  • reformated all Java and Groovy source files to common Java source code
  • format guidelines (reformating done by IntelliJ IDEA)
  • cleanup of import statements in all Java and Groovy source files
  • done by IntelliJ IDEA)
  • fixed all compiler warnings
  • fixed warnings reported by the IntelliJ IDEA Code Inspector
  • fixed warnings found by IntelliJ IDEA code inspector
  • removed Java WebStart installation option (since Java 7u40 there were
  • security warnings on each ST start due to missing signed certificates)
  • free signed certificates are not available for open source projects
  • use of Lambda features in module st-util
  • use of Lambda features in module sportstracker
  • use new Java Date Time API (JSR 310) in all SportsTracker modules
  • provides a better API for creation, conversion and formatting
  • provides type separation of date, time and date time (less errors)

New in SportsTracker 5.7.0 (Jan 14, 2013)

  • The major changes are support for reading and displaying Garmin Forerunner 910XT and Timex Ironman Run Trainer exercise files. The error handling of the exercise parser has been improved and the Spanish and German translations were updated.

New in SportsTracker 5.6.0 (Aug 30, 2012)

  • The Overview diagram can now display statistics per sport subtype and per equipment usage. The map viewer component shows tooltips with detailed informations for all recorded track points of your exercises.
  • Mac OS X users can now also use Java WebStart for installation. An OS X app bundle is available too, it's size is only 9 instead of 67 MByte before. It requires the installation of Java 7 Update 6 or later.
  • Other changes are Calendar and Diagram improvements, bugfixes, refactorings, updated libraries and translation updates.
  • Hint for Java WebStart users: If you have problems when updating an existing SportsTracker installation via Java WebStart, then you need to manually uninstall SportsTracker first and install it again by pressing the WebStart button on this page. The reason is a new certificate for signing the application, the old one expires in 2013.

New in SportsTracker 5.5.0 (Aug 2, 2012)

  • The focus of this release is the improved Mac OS X support. The installation on OS X (10.7 required) is now very simple, just download the archive of the app bundle and move it to your applications.
  • The required JRE is included.
  • Other improvements are the new high resolution application icon, exercise files check after startup, project and build system updates and bugfixes for Timex PWX users.

New in SportsTracker 5.4.0 (Aug 2, 2012)

  • The biggest change is the switch to Java 7 and the usage of the new language features. All calendar entries can now be copied to the current date, so entering new entries is done much faster. The context menu for the entries is now available in all views. A
  • Greatly improved the GPX exercise parser, it also supports Garmin Oregon and HOLUX FunTrek devices now.
  • As always, this release also includes other minor changes, bugfixes, refactorings and translation updates.

New in SportsTracker 5.3.0 (Aug 2, 2012)

  • It includes minor usability improvements and an important bugfix for users of GPX execise files. The libraries have been updated and the build process has been improved. SportsTracker now also runs with the recently released Java 7.

New in SportsTracker 5.2.0 (Aug 2, 2012)

  • The biggest changes are the support for the widely used GPX file format and the support for Timex Ironman Global Trainer exercises. As usual, this release also contains some bugfixes, refactorings and translation updates.

New in SportsTracker 5.1.0 (Aug 2, 2012)

  • The ExerciseViewer has now full support for the Garmin FIT exercise file format (e.g. for Garmin Edge 500), the conversion to TCX files is not needed anymore. The Track panel got many improvements, it displays all lap split positions on the map now

New in SportsTracker 5.0.0 (Aug 2, 2012)

  • For developers there was the migration to Maven and Mercurial and the split of the project into 3 separate modules (see below).
  • Users will see the most changes in ExerciseViewer. It was renamed from PolarViewer because it supports much more devices now. A new Track panel was added for displaying the exercise track (if available) in an interactive map.
  • Garmin TCX files are now supported completely (incl. track data).
  • Added support for Timex PWX exercise files and
  • Added support for PolarPersonalTrainer data.

New in SportsTracker 4.2.0 (Aug 2, 2012)

  • initial support for Garmin TCX exercise files, superb Mac OS X support (menu bar integration, Mac shortcuts, critical bugfixes),
  • Overview diagram improvements and an external bulk importer utility for importing all HRM files at once.

New in SportsTracker 4.1.1 (Aug 2, 2012)

  • bugfixes, translation and library updates. All users of Polar S*** monitors need to update, there was a date bug in the file parser.

New in SportsTracker 4.1.0 (Aug 2, 2012)

  • The columns in the Exercise List view are now configurable and all Spinner controls have mouse wheel support. Many internal libraries have been updated (e.g. Guice 2.0).
  • The Dutch, French and German translations have also been updated and some minor bugs were fixed.

New in SportsTracker 4.0.0 (Aug 2, 2012)

  • The biggest change is the support for new entry types. Note entries can be entered for e.g. events or training plans. Weight entries can be used for tracking the body weight history (also in the Overview diagram). The calendar shows entries of all types now, but there are also special list views for each entry type. All entries in the calendar are now selectable, so there are no more problems with multiple entries for one day.
  • PolarViewer can now display HRM files of Polar CS600 devices. Remco den Breeje has added support for Polar S510 RAW files (could work for S410 and S520 too), the SonicRead tool can be used for downloading the exercise files.
  • Internal refactorings have been done for the entry collection types, the XML storage, the calendar and the diagrams. Unit teats now cover more functionality.
  • Most of the translations (German, French, Polish, Spanish, Basque and Czech) have been updated too.

New in SportsTracker 3.6.0 (Aug 2, 2012)

  • The biggest improvement is drag & drop support of recorded exercise files to the calendar view - the import of recorded data is done much faster now. The calendar now displays exercise tooltips with further information. All diagrams scale correctly and use proper system fonts. Full builds (Ant) can also be done without the NetBeans IDE.
  • The Czech and French translation have been updated.