When computing virutalspeed based on slope, altitude, etc, total weight is relevant, specially in up and down hills
It was using 10kg plus the athlete weight. Now, it considers configured bicycle weigth. Not very relevant, but consistent with the data GH has for training
.. we cannot pass wide strings to the 'printd' debug macro
since it uses printf not wprintf. Not a major problem
in this case since it is just a debug statement.
introduced in previous commit that fixed crashes
when embedding python v3.11 or higher
.. for numerous reasons the font scaling on MacOS should be slightly
less than for other platforms to be in keeping with the native
systems font selections
.. instead of trying to create a font and use exactMatch()
.. this is faster and also avoids a qt-bug on MacOS for
QFont::exactMatch() that keeps recurring
.. what dpi scaling and font size are we using. helpful for
understanding how the ui is reacting to different resolutions
and OS specific settings for scaling
.. default font scaling wasn't working (it was always 1.0). This is
now fixed and means fonts are scaled so that GC always looks the
same.
For some users the fonts will appear too large, in this case they
can reduce the font scaling to suit their own preferences.
.. a button on the config dialog to reset appearance settings
to default values. Will be useful when fonts go squiffy
of the user changes the resolution of their display.
.. The default appearance settings on new install or directly
after and upgrade are terrible and create a poor impression
for new users
.. This commit fixes up scaling, font selection and themes so
that for a new install or directly after upgrade they are
set to defaults that are sensible for the current release
.. It is expected that these defaults will change and extend as
we implement new features and the UI evolves- so these should
be used as a basis for defaulting in the future.
.. A second update is required to resolve issues with scaling in
overview charts dependant upon the screen resolution
Cumulative changes from v3.6-RC4
dbd33465c Update FIT SDK to 21.105
708d8744f Support larger font scaling
c85dab80a Skip previously imported files on Auto-Import (#4347)
1ecc6f9ec Python - Add compare support to activity series (#4349)
f0c9f12b4 FitRideFile - Identify Pulse Ox field
ab337f165 WorkoutWizard - Remove references to FTP and CP60
00d09af48 Highlight current selection in Train and Trends (#4320)
e7b9275a3 Update Italian translation
fdb35bf74 Athlete tab colour fix (#4257)
e32eabc10 Update German translation
[publish binaries]
.. as 8k displays become more popular and affordable we need to
support greater font scaling - we now scale up to x5 the
default font size
This should be good for devices well over 8k resolution but
does highlight some limitations with Qt widgets and maximum
sizes they support internally.
If the importable file (after export when inside a .zip/.gz archive)
is present in imports files it means it was previously imported,
so it is skipped on Auto-Import for better performance and to avoid
re-appearance of deleted activities still present in the source folder.
Fixes#3696Fixes#1892
All activity functions working with data series,
both standard and xdata, now include an optional
compareindex=-1 parameter.
When compare mode is enabled compareindex parameter
is used as an index to get data for the corresponding
compare item, be an activity or an interval.
Sample chart contributed by Marcen at the users forum
Fixes#4346
Just a few changes from RC4:
- Updated German, Italian and Spanish translations
- Better contrast in Athlete Tabs when using dark colors
- Better contrast for selected items in Trends/Train sidebar
when using dark colors
- Clarify texts in Relative Wattage Workout Creator
[publish binaries]
* Use wchar when 2 bytes charachers are used
* Mark provisional parameters as UNUSED
* Static cast OR select appropriate data type
* Fill up comment with missing parameter
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
Change on select bg and fg colors for Trends and Train,
currently are barely/no noticeable on Windows and macOs
when using dark colors.
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
.. the original behaviour is reverted, which is not ideal but
does not cause rendering issues on Linux/MacOS and is compatible
with searchbox usage on dialog widgets.
.. any updates to the toolbutton styling will need to consider
a) placement on toolbar and dialog widgets
b) platform specific considerations across Linux/Windows/MacOS
* Corrects Athlete QTabBar tab colours to match NewSideBar,
abstract on select background color selection from NewSideBar
to Colors for reuse in MainWindow
* Fixes dropMenu visibility within the Filter/Search Box on Dark Themes
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
- DataProcessor primary key is english name,
but localized name is displayed in combobox
- tr() macro only works on string constants
- make all messages translatable
- remove unused messages
To better match the new BatchProcessing dialog
- Python DPs are listed together with builtin processors
to be executed like parameterless built in DPs, with
option to cancel.
- They also appear under the Python Fixes submenu, but in
this case they also can be edited.
Batch Processing - Delete, Data Processors & Export
Extension of Batch Export dialog to include other operation on multiple activities:
- run data processor (Builtin or Python)
- delete (after confirmation)
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
Data Processors running on import are applied before the activity
is added to RideCache and metrics are computed, this behavior is
by design, likely to optimize resource usage on bulk import.
So activityMetrics API is not available; a new getTag API was
added for this case and setTag/delTag/hasTag changed to work
in this context too.
When the Python fix is executed on activities already in the cache
either via Edit menu, Filters or other Python Fix changes are
notified via the corresponding RideItem.
Fixes#4095
[publish binaries]
[publish binaries]
Cumulative changes from RC3
402edf5 Stop signal processing during resetPerspective()
64386bc Perspective Selector Sync on switch Athlete tabs
b6fae05 Revert "Keep Perspective Selecto synced when switching athletes"
9eb8138 Revert "Fix strange behaviour when changing views"
0ddea94 Fix strange behaviour when changing views
88246a8 Overview Chart - Update metric pointer in tiles config
46bfab5 Overview - Use sport instead of isRun/isSwim
663bde0 Update Spanish translation (#4322)
30895b0 Update translation files to include latest strings
af21c35 FIT Files - Update sport list and sub sports (#4315)
68c7954 Add test FIT file from Garmin 945 swim with RR data
dfe572c Collect R-R data from Garmin HRM swim (#4319)
ef0eac8 Estimator - Use normalized Sport names
9531acf Remove Garmin devices already included in latest FIT SDK
523d2d1 Update FITmetadata.json to FIT SDK 21.94
bfa4b4b DataFilter - Metric aggretation honors AggregateZero and Count
c65f313 Revert "DataFilter - use RideCache::getAggregate continuation"
e95d116 DataFilter - Avoid crashes when no ride is selected
3c3d202 Fix DataFilter use of PowerIndex
cc5eaf4 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8 DialWindow - Fix rolling average initialization
841766e DataFilter - use RideCache::getAggregate continuation
afbb43e DataFilter - asaggstring uses RideCache::getAggregate
33ba1c0 FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd40 FTMS: Add support for Spin Down Calibration (#4073)
4f97bae DOB - display using 4 digits year
dfeb853 macOS plist - Add required BTLE keys for newer versions
2a99c87 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693 Workout Chart - Imperial units support (#4232)
8919eab Map Chart - Update default Tile Servers
7d0e6de Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbec Train - Improve L/R Balance Dial display
8e0b0a6 R/Python API - Sport case insensitive in Athlete Zones
b08e662 Train - Show lap notifications only when available
2c3eabd RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4 Strava Sync - Tag simulation rides as VirtualRide
53f8f51 Fix memory leak in Python API - part 2
e477b05 ErgDB Download - Decode title to be used as name
3a16d1e Keep Perspective Selecto synced when switching athletes
63d13ba Update Italian translation
f947b6b VideoSync - Distance scaling only applies to CRS workouts
67962bf Fix memory leak in Python API
5f22d12 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63 Remove MapQuest API Key from gcconfig.pri.in
a7ad134 Measures CSV Import - Last field can be empty
90172a4 Replace Tracker in default Trends layout
68b70e0 Fix Elevation - Avoid 302 network error
434580e Disable execution of Python DPs from formulas and Python API
cb23914 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9a Minimum bison version is now 2.7
.. when switching athlete tabs the perspective selector would
always be reset to the first entry, this update makes sure
we reset to the correct one.
Fixes#4325
The problem was introduce by 3a16d1e, the change in perspectiveSelector
current index triggers currentIndexChanged when the view change has
not been finished, to avoid this we use activated signal and add
a check to do nothing when the index has not changed.
The problem was reported at the forum.
When metric selection changes in tiles config the metric
pointer was not updated accordingly leading to inconsistencies
s.t. a Total metric displayed as an Average metric in Trends
until restart, since at tile creation the correct pointer is used.
* move sports list in a function for other calls
* Decode sport and sub-sport and push into activity tag
* Remove inaccurate comments
* Populate additional sports ID from documentation
* use of standardized RideFile::sport()
Fixes#4312Fixes#4313
[publish binaries]
Cumulative changes from RC3
523d2d1 Update FITmetadata.json to FIT SDK 21.94
bfa4b4b DataFilter - Metric aggretation honors AggregateZero and Count
c65f313 Revert "DataFilter - use RideCache::getAggregate continuation"
e95d116 DataFilter - Avoid crashes when no ride is selected
3c3d202 Fix DataFilter use of PowerIndex
cc5eaf4 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8 DialWindow - Fix rolling average initialization
841766e DataFilter - use RideCache::getAggregate continuation
afbb43e DataFilter - asaggstring uses RideCache::getAggregate
33ba1c0 FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd40 FTMS: Add support for Spin Down Calibration (#4073)
4f97bae DOB - display using 4 digits year
dfeb853 macOS plist - Add required BTLE keys for newer versions
2a99c87 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693 Workout Chart - Imperial units support (#4232)
8919eab Map Chart - Update default Tile Servers
7d0e6de Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbec Train - Improve L/R Balance Dial display
8e0b0a6 R/Python API - Sport case insensitive in Athlete Zones
b08e662 Train - Show lap notifications only when available
2c3eabd RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4 Strava Sync - Tag simulation rides as VirtualRide
53f8f51 Fix memory leak in Python API - part 2
e477b05 ErgDB Download - Decode title to be used as name
3a16d1e Keep Perspective Selecto synced when switching athletes
63d13ba Update Italian translation
f947b6b VideoSync - Distance scaling only applies to CRS workouts
67962bf Fix memory leak in Python API
5f22d12 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63 Remove MapQuest API Key from gcconfig.pri.in
a7ad134 Measures CSV Import - Last field can be empty
90172a4 Replace Tracker in default Trends layout
68b70e0 Fix Elevation - Avoid 302 network error
434580e Disable execution of Python DPs from formulas and Python API
cb23914 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9a Minimum bison version is now 2.7
This reverts commit 841766effb
since it provokes crashes in some Trends Overview charts.
TODO: fix aggregation to consider AggregateZero and count
properties of metrics.
[publish binaries]
Cumulative changes from RC3
e95d11671 DataFilter - Avoid crashes when no ride is selected
3c3d2024a Fix DataFilter use of PowerIndex
cc5eaf418 Estimates and Performances - Generalize to any sport with power data (#4307)
abb69b8fb DialWindow - Fix rolling average initialization
841766eff DataFilter - use RideCache::getAggregate continuation
afbb43edd DataFilter - asaggstring uses RideCache::getAggregate
33ba1c03e FitRideFile - Avoid crashes on multi-sessions from CloudServices
018bd404e FTMS: Add support for Spin Down Calibration (#4073)
4f97bae97 DOB - display using 4 digits year
dfeb8532a macOS plist - Add required BTLE keys for newer versions
2a99c8762 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693dd Workout Chart - Imperial units support (#4232)
8919eab5b Map Chart - Update default Tile Servers
7d0e6de0b Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbecf1 Train - Improve L/R Balance Dial display
8e0b0a67a R/Python API - Sport case insensitive in Athlete Zones
b08e662c9 Train - Show lap notifications only when available
2c3eabdd8 RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
Weekly estimates and performances are precomputed for any sport
with power data, not just Bike and Run.
In Trends view both LTM charts and DataFilter select sport based
on applied filters: when all activities are from the same sport,
that is used to select estimates and performances, otherwise
Bike estimates and performances are used for backward compatibility.
This reverts 1a285d1050
For consistency and simplicity, getAggregate honors AggregateZero
and count properties of metrics, beside some special cases.
Fixes#4302
TODO: aggmetric and aggmetricstrings likely have a similar problem.
[publish binaries]
Cumulative changes from RC3
018bd404e FTMS: Add support for Spin Down Calibration (#4073)
4f97bae97 DOB - display using 4 digits year
dfeb8532a macOS plist - Add required BTLE keys for newer versions
2a99c8762 Python 3.7.15 AppImage is no longer available, upgrade to 3.7.16 (#4299)
0296693dd Workout Chart - Imperial units support (#4232)
8919eab5b Map Chart - Update default Tile Servers
7d0e6de0b Bug Fixes for live map base url and remove erroneous debug message (#3901)
1c5bbecf1 Train - Improve L/R Balance Dial display
8e0b0a67a R/Python API - Sport case insensitive in Athlete Zones
b08e662c9 Train - Show lap notifications only when available
2c3eabdd8 RideCache - Fix refresh to inclu=de the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
[publish binaries]
Cumulative changes from RC3
2c3eabdd8 RideCache - Fix refresh to include the oldest activity
9c7d1d4f3 Strava Sync - Tag simulation rides as VirtualRide
53f8f5102 Fix memory leak in Python API - part 2
e477b05a9 ErgDB Download - Decode title to be used as name
3a16d1ecc Keep Perspective Selecto synced when switching athletes
63d13ba9e Update Italian translation
f947b6bd3 VideoSync - Distance scaling only applies to CRS workouts
67962bfff Fix memory leak in Python API
5f22d12a6 fix(doc): mention QMAKE_MOVE requirement for bison > 3.7
996ee63cd Remove MapQuest API Key from gcconfig.pri.in
a7ad1346e Measures CSV Import - Last field can be empty
90172a4a6 Replace Tracker in default Trends layout
68b70e0e4 Fix Elevation - Avoid 302 network error
434580ee8 Disable execution of Python DPs from formulas and Python API
cb23914a5 Honor chart filters in Trends view Histogram and CP charts (#4287)
1941b9af7 Minimum bison version is now 2.7
This boundary error provokes the cache entry for the oldest
activity don't be refreshed on full cache refresh, only
when the activity is imported or opened (s.t. selecting it
in Activities View).
For most users this may be uneventfull, but if the oldest
activity becomes dirty, a full cache will happend on each
following start, until the oldest activity is opened and
it may explain the behavior reported ocasionally at the forum
and recently in #4297
Py_buildValue does not steal references, leading to an incorrect
reference counter and therefore resources not freed by the
garbage collector.
Contributed by Joachim at the forum.
Title is html encoded, we need to decode it for readability and,
since name is used as a filename, replace "/" by "-".
This still has some limitations s.t. duplicate titles, but they
have easy workarounds for the user and they don't justify to change
the database schema now in my POV.
PyDict_SetItemString does not steal references, leading to an incorrect
reference counter and therefore resources not freed by the garbage collector.
Contributed by Joachim at the forum.
[publish binaries]
Metadata and metrics don't work in these contexts as documented
in #4095 so we disable them to avoid confusion until the root
issue is solved.
Fixes#4288
Just appending the file lists doesn't work like addFilter
does, isfiltered and files are added as optional parameters
to Pespective:filterlist so they are accounted for when
the list of files is generated.
Fixes#4285
- Crash on syntax error happened on <leaf> destructor and the cause
was tokens declared as <leaf> but not creating a leaf, to avoid
this a new <string> type without destructor was added for them.
- Warnings indicated semantic value not set for some rules due to
the lack of $$ = $1, likely bening, but lets avoid it.
This is a continuation of 523ffcc, %destructor bison
directive is used to clean and delete Leaf nodes
allocated and discarded by the parser.
Hopefully fixes#4249
This started to happen after #4277, problem is when parsing fails
treeRoot can point ot non Leaf objects. This does not happens when
parsing from the DataFilter constructor since treeRoot is forced
to NULL on errors, this commit does the same for check and parseFilter.
Remaining problem is the memory leak in these cases, which are frequent
when editing filters in User or LTM charts as explained in #4249
The crash documented in #4249 was related to the conversion of
Leaf of type Symbol to Function when () are found afterwards.
This is fixed in this commit, but more testing is necessary to
see if there are other cases.
clearFilter - delete root Leaf
Leaf constructor: initialize left,right and cond to null pointers
Leaf::clear avoid crashes when called with a null pointer parameter,
and release memory in all cases allocated in the parser
TODO: still crashes if called from DataFilter destructor, see #4249
Missing from RC2 build, also include the fix to avoid crashes when
myPerspective is not set in existing charts and default layouts
without R charts to avoid #4267 for newly create athletes.
[publish binaries]
This was reported at the forum and it is reproducible with
the supplied home-perspectives.xml, it was likely generated
by an older version, but lets get defensive just in case.
- DragDropMode is changed from InternalMove to DragDrop in RideTreeView,
this enables compare of activities again
- DragDropMode is changed from InternalMove to DragDrop in SeasonTreeView,
MoveAction is made the default action and dragEnterEvent ignores
events other than move or from other origins. This avoids compared
date ranges loosing their names.
- DragDropMode is changed from InternalMove to DragDrop in IntervalTreeView,
MoveAction is made the default action and dragEnterEvent ignores
events other than move or from other origins. This avoids removal
of compared intervals from the intervals list.
This solution was contributed by Joachim at the users forum.
Fixes#3622
[publish binaries]
Items are not editable, so it is not used in the normal flow,
and it worsen a bug which clears the date range name in the item
when dropping on compare pane commiting the change to seasons.xml
This allows to request all points at once since post api has
no limits according the documentation.
Break logic is preserve just in case we need it in the future.
Fixes#4261
MapQuest API reaches EOL on Aug-31, let's test the replacement
in all the supported platforms.
Reveal Controls are disabled in this build for all charts,
with Show Console on chart settings for R and Python charts.
[publish binaries]
Since MapQuest elevation service reaches end of life on aug-31,
it is replaced by Open-Elevation public API with minimum changes.
TODO: use Post instead of Get to request more points at a time
Fixes#4206
.. clarify how to make updates in the README
.. replace the fit_example.h from the current SDK
.. added Garmin devices not yet supported in the SDK to
the nongarmin.json file
.. updated the makefile to use python3 and update when
the python program is changed.
For R and Python charts the Show Console setting is now
part of regular settings, and it is replaced by a warning
label when R or Python are disabled to help users.
Since for remaining charts reveal controls are redundant,
they are globally disabled in Perspective class.
TODO: remove all reveal code to simplify charts,
eventually after v3.6 release to minimize risks?
Fixes#4256
[skip AppVeyor]
To avoid rebuild when after_success is cancelled,
so restarting the job can complete the packaging.
Drawback is we need to clear the cache to rebuild
[publish binaries]
GoldenCheetah is a desktop application for cyclists and triathletes and coaches, providing a rich set of tools and models to analyse, track and predict performance, optimise aerodynamics and train indoors.
GoldenCheetah is a desktop application for cyclists and triathletes and coaches
* Analyse using summary metrics like BikeStress, TRIMP or RPE
* Extract insight via models like Critical Power and W'bal
* Track and predict performance using models like Banister and PMC
* Optimise aerodynamics using Virtual Elevation
* Train indoors with ANT and BTLE trainers
* Upload and Download with many cloud services including Strava and Todays Plan
* Import and export data to and from a wide range of bike computers and file formats
GoldenCheetah integrates with most popular cloud services like Strava and Todays Plan, imports data from bike computers, imports downloads from any website like TrainingPeaks and Garmin and will also connect to smart trainers using ANT+ and Bluetooth.
GoldenCheetah provides tools for users to develop their own own metrics, models and charts
* A high-performance and powerful built-in scripting language
* Local Python runtime or embedding a user installed runtime
* Embedded user installed R runtime
GoldenCheetah supports community sharing via the Cloud
* Upload and download user developed metrics
* Upload and download user, Python or R charts
* Import indoor workouts from the ErgDB
* Share anonymised data with researchers via the OpenData initiative
GoldenCheetah is free for everyone to use and modify, released under the GPL v2 open source license with pre-built binaries for Mac, Windows and Linux.
@@ -19,7 +35,7 @@ INSTALL-WIN32 For building on Microsoft Windows
INSTALL-LINUX For building on Linux
INSTALL-MAC For building on Apple OS X
INSTALL-MAC For building on Apple MacOS
macOS and Linux: [](https://app.travis-ci.com/GoldenCheetah/GoldenCheetah)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.