Athlete tiles

437 views
Skip to first unread message

Paul J

unread,
Jan 24, 2026, 12:09:13 PMJan 24
to golden-cheetah-users
I've been looking at fixing the following with the Athlete view:

1) when athletes are created/deleted the tiles often end up overlapped, they just require dragging to reposition them.
2) placement of new athlete tiles (after initial load) given they can be dragged.
3) Removing planned activities from the last activity summary text
4) making the tiles more functional, I have a prototype with the following appearance (see Athlete after.png) which moves the backup and deletion of athletes from the menu bar "Athlete" tab to the tiles.

I'm happy to create a PR with any combination of 1-4 above, any opinions on whether making the tiles more functional is better (or worse) ?

Athlete before.png
Athlete after.png

Ale Martinez

unread,
Jan 24, 2026, 4:25:27 PMJan 24
to golden-cheetah-users
You remove Athlete > Settings and, paraphrasing Maradona, me cortas las piernas :)

Paul J

unread,
Jan 24, 2026, 6:48:09 PMJan 24
to golden-cheetah-users
:)

The Athlete-> settings can be restored to the menu if you wish, but I think it is clearer which athlete's settings are being edited when the user clicks on the athlete's tile.

Paul J

unread,
Jan 25, 2026, 4:48:23 AMJan 25
to golden-cheetah-users
Looking at the Athlete menu again, I now realise that "Save all modified activities.." also only applies to the selected athlete. So I'm now thinking this should also be moved to the individual athlete tiles as a "Save modified" button which could have red background if there are any modified (unsaved) activities, and green background when there are none, would that be better? All relevant athlete actions would then be through the tiles. 

Ale Martinez

unread,
Jan 25, 2026, 6:59:31 AMJan 25
to golden-cheetah-users
El domingo, 25 de enero de 2026 a la(s) 6:48:23 a.m. UTC-3, paulj...@gmail.com escribió:
Looking at the Athlete menu again, I now realise that "Save all modified activities.." also only applies to the selected athlete. So I'm now thinking this should also be moved to the individual athlete tiles as a "Save modified" button which could have red background if there are any modified (unsaved) activities, and green background when there are none, would that be better? All relevant athlete actions would then be through the tiles.

Sure, and the next time you look at this you will find New belongs to Athlete view and close after config so you can remove the athlete menu… I would really hate this change…
For me Athlete > settings.. is particularly useful because it allows to open the dialog on top of a chart s.t. CP which helps to set zones, you can’t do that using the cog icon in Athletes view, besides I am an old bloke used to menus.

Ale Martinez

unread,
Jan 25, 2026, 3:00:14 PMJan 25
to golden-cheetah-users
El domingo, 25 de enero de 2026 a la(s) 8:59:31 a.m. UTC-3, Ale Martinez escribió:
El domingo, 25 de enero de 2026 a la(s) 6:48:23 a.m. UTC-3, paulj...@gmail.com escribió:
Looking at the Athlete menu again, I now realise that "Save all modified activities.." also only applies to the selected athlete. So I'm now thinking this should also be moved to the individual athlete tiles as a "Save modified" button which could have red background if there are any modified (unsaved) activities, and green background when there are none, would that be better? All relevant athlete actions would then be through the tiles.

Sure, and the next time you look at this you will find New belongs to Athlete view and close after config so you can remove the athlete menu… I would really hate this change…
For me Athlete > settings.. is particularly useful because it allows to open the dialog on top of a chart s.t. CP which helps to set zones, you can’t do that using the cog icon in Athletes view, besides I am an old bloke used to menus.

PS: I am not against making Athletes view more functional and intuitive, I am against to remove the menu options, at least until the new UX proves to be better.

Paul J

unread,
Jan 26, 2026, 2:35:26 AMJan 26
to golden-cheetah-users
I have restored all the athlete menu options, and the athlete tiles will just be more functional, so it can support both ways of working.

Ale Martinez

unread,
Feb 10, 2026, 8:07:16 AMFeb 10
to golden-cheetah-users
Paul's work is available for review and testing on https://github.com/GoldenCheetah/GoldenCheetah/pull/4815, binaries for testing are available from https://ci.appveyor.com/project/Joern-R/goldencheetah-knhd8/builds/53513479 selecting your Operating System then Artifacts.
It would be interesting some coach or other people regularly using multiple athletes can give it a try and provide feedback.
Thanks in advance, Ale.

Ale Martinez

unread,
Mar 1, 2026, 10:10:53 AMMar 1
to golden-cheetah-users
Not that we are getting too much feedback from users on new features but, just in case someone wants to collaborate with testing, there is a new version for Paul's PR (https://github.com/GoldenCheetah/GoldenCheetah/pull/4827) which removes the restriction to close the first opened athlete besides the new functionality in Athletes view, binaries for testing are available from https://ci.appveyor.com/project/Joern-R/goldencheetah-knhd8/builds/53619213, choose your platform then Artifacts.
Cheers, Ale.

marcen

unread,
Mar 4, 2026, 8:59:27 AMMar 4
to golden-cheetah-users
Hello,

I’ve been testing this version. Here are the issues I’ve encountered so far on Arch Linux:
  •     Menu Bar: The dropdown menu does not open when clicking on "Athlete". In the "Activity" (Aktivität) menu, it only opens if you specifically click on the "ä" in the German translation.
  •     Crash when closing tabs: A crash occurs when a second athlete is loaded and switched to the Activity view and then import an activity (without saving it) and then close the athlete tab via the "X", the GC crashes. 
    • Attached file is: Estimator::calculate().txt and for import 2026_03_03_19_02_42.json
  •     Secondary Crash: If GC doesn't crash during the steps mentioned above, it usually happens when the previously closed athlete is reloaded and the imported activity is subsequently deleted.
    •  Attached file is:Segmentation fault.txt
  •     Suggested Improvement: It would be helpful to have a warning prompt when closing an athlete tab, reminding the user to save unsaved activities first.

I have also attached a close icon designed to match the style of the title bar icons.
close.svg
2026_03_03_19_02_42.json
Estimator::calculate().txt
Segmentation fault.txt

Paul J

unread,
Mar 4, 2026, 7:21:53 PMMar 4
to golden-cheetah-users
Hi Marcen,

Thank you for the testing, although I cannot repeat the crash on my Windows version, using your back traces I now understand the problem, the athlete is deleted whilst the file import process is still referencing the athlete, I have a fix which I'm testing.

Paul.

marcen

unread,
Mar 5, 2026, 12:54:16 PMMar 5
to golden-cheetah-users
Hi Paul, thanks for taking a look at this.
I'll be happy to test the new version.

Paul J

unread,
Mar 5, 2026, 1:22:00 PMMar 5
to golden-cheetah-users
Hi Marcen,

   Please see the latest commit to PR https://github.com/GoldenCheetah/GoldenCheetah/pull/4827, this should hopefully resolve the athlete closure whilst an activity import is in progress.

   I suspect that the Estimator might possibly still be an issue, if it is then the fix is likely to be the same as for the CloudService.cpp, which was using the athlete's context after ( as it runs in a separate thread) the athlete has been closed.

Paul.

Joachim Kohlhammer

unread,
Mar 5, 2026, 2:43:21 PMMar 5
to golden-cheetah-users
marcen schrieb am Mittwoch, 4. März 2026 um 14:59:27 UTC+1:
  •     Menu Bar: The dropdown menu does not open when clicking on "Athlete". In the "Activity" (Aktivität) menu, it only opens if you specifically click on the "ä" in the German translation.
I have seen this effect now for quite some time - can't tell exactly when it started. So it should not be caused by Pauls PR. The effects shows on my machine only with the Breeze QStyle, not with Fusion or Adwaita. Which style do you use?

marcen

unread,
Mar 5, 2026, 4:13:20 PMMar 5
to golden-cheetah-users
Hi Paul, As soon as I am authorized to download again, I will test the version.

Hi Joachim, I do indeed use the dark Breeze QStyle under KDE. However, I do not have the problem described with the snapshot build from February 27, 2026. Only with the version in which the changes to the athlete were made.
I then downloaded the Windows version and installed it on Windows 11. There, I have the same behavior where I cannot click on “Athlete” and “Activity.”

marcen

unread,
Mar 6, 2026, 2:30:37 PMMar 6
to golden-cheetah-users
Hi Paul, Unfortunately, GC still crashes even with the fix.
It still happens when a session is imported for the second athlete.
The import works, but when the second athlete is closed and then restarted and the view is switched to Activity, GC crashes.
Regarding the menu bar: I set the language to English, but the same effect occurs there as well.

Here is the backtrace:
Thread 1 "AppRun" received signal SIGSEGV, Segmentation fault.
0x0000555556085b10 in Estimator::calculate() ()

#0  0x0000555556085b10 in Estimator::calculate() ()
#1  0x00007fffe97de5f3 in ?? () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#2  0x00007fffe97ed20e in QTimer::timeout(QTimer::QPrivateSignal) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#3  0x00007fffe97d223f in QObject::event(QEvent*) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#4  0x00007ffff67907b6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Widgets.so.6
#5  0x00007fffe977c9e2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#6  0x00007fffe992b03a in QTimerInfoList::activateTimers() () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#7  0x00007fffe9a5a3fc in ?? () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#8  0x00007fffe72bdd3b in g_main_context_dispatch () from /tmp/.mount_GoldenNdAmkB/lib/libglib-2.0.so.0
#9  0x00007fffe73132b8 in ?? () from /tmp/.mount_GoldenNdAmkB/lib/libglib-2.0.so.0
#10 0x00007fffe72bb3e3 in g_main_context_iteration () from /tmp/.mount_GoldenNdAmkB/lib/libglib-2.0.so.0
#11 0x00007fffe9a5a60e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#12 0x00007fffe97890bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#13 0x00007fffe97850a6 in QCoreApplication::exec() () from /tmp/.mount_GoldenNdAmkB/lib/libQt6Core.so.6
#14 0x000055555580320f in main ()


Ale Martinez

unread,
Mar 6, 2026, 3:27:11 PMMar 6
to golden-cheetah-users
El jueves, 5 de marzo de 2026 a la(s) 6:13:20 p.m. UTC-3, marcen escribió:
Hi Joachim, I do indeed use the dark Breeze QStyle under KDE. However, I do not have the problem described with the snapshot build from February 27, 2026. Only with the version in which the changes to the athlete were made.
I then downloaded the Windows version and installed it on Windows 11. There, I have the same behavior where I cannot click on “Athlete” and “Activity.”

I am experimenting the same behavior on Windows 11: Athlete and Activity menu can not be clicked, you need to click on Edit/Tools/Help and then goto the left to activate these menus, and this doesn't happen on latest snapshot, so it looks like it is related to the changes in this PR. 

Joachim Kohlhammer

unread,
Mar 7, 2026, 4:53:43 AMMar 7
to golden-cheetah-users
gammaray revealed the culprit: ICalendar is overlaying the window. As I am not aware of any UI functionality in this class, using QObject instead of QWidget as superclass fixes the issue. Created a PR (https://github.com/GoldenCheetah/GoldenCheetah/pull/4837) for testing
Bildschirmfoto_20260307_075105.png

Ale Martinez

unread,
Mar 7, 2026, 7:49:00 AMMar 7
to golden-cheetah-users
El sábado, 7 de marzo de 2026 a la(s) 6:53:43 a.m. UTC-3, tiefgara...@gmail.com escribió:
gammaray revealed the culprit: ICalendar is overlaying the window. As I am not aware of any UI functionality in this class, using QObject instead of QWidget as superclass fixes the issue. Created a PR (https://github.com/GoldenCheetah/GoldenCheetah/pull/4837) for testing
Bildschirmfoto_20260307_075105.png


It fixes the issue on Windows too, thank you!

Ale Martinez

unread,
Mar 7, 2026, 8:38:17 PMMar 7
to golden-cheetah-users
El sábado, 7 de marzo de 2026 a la(s) 9:49:00 a.m. UTC-3, Ale Martinez escribió:
El sábado, 7 de marzo de 2026 a la(s) 6:53:43 a.m. UTC-3, tiefgara...@gmail.com escribió:
gammaray revealed the culprit: ICalendar is overlaying the window. As I am not aware of any UI functionality in this class, using QObject instead of QWidget as superclass fixes the issue. Created a PR (https://github.com/GoldenCheetah/GoldenCheetah/pull/4837) for testing
Bildschirmfoto_20260307_075105.png


It fixes the issue on Windows too, thank you!

The above fix plus the other one about season/phases crashes is now included in this PR too, binaries for testing available from https://ci.appveyor.com/project/Joern-R/goldencheetah-knhd8/builds/53660181

marcen

unread,
Mar 10, 2026, 5:43:01 PMMar 10
to golden-cheetah-users
Hello, I tested the PR with the two changes. 
Again under Arch Linux. The bug with the menu bar has been fixed.
I experienced two crashes again with this version.
1. Immediately after importing the activity.
2. When the second athlete was closed, then reloaded, and the activity was deleted.

1. Backtrace
Thread 61 "Estimator" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff3c9ff6c0 (LWP 4262)]
0x0000555555df3bf5 in RideFileCache::meanMaxPowerFor(Context*, QList<float>&, QDate, QDate, QList<QDate>*, QString) ()
(gdb) bt
#0  0x0000555555df3bf5 in RideFileCache::meanMaxPowerFor(Context*, QList<float>&, QDate, QDate, QList<QDate>*, QString) ()
#1  0x0000555556085170 in Estimator::run() ()
#2  0x00007fffe992c7e8 in ?? () from /tmp/.mount_GoldenicgGHM/lib/libQt6Core.so.6
#3  0x00007fffe90a597a in start_thread (arg=<optimized out>) at pthread_create.c:454
#4  0x00007fffe91292bc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

2. Backtrace
Thread 1 "AppRun" received signal SIGSEGV, Segmentation fault.
0x000055555599ed9f in IntervalOverviewItem::setData(RideItem*, bool) ()
(gdb) bt
#0  0x000055555599ed9f in IntervalOverviewItem::setData(RideItem*, bool) ()
#1  0x00007fffe97d2288 in QObject::event(QEvent*) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#2  0x00007ffff67907b6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Widgets.so.6
#3  0x00007fffe977c9e2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#4  0x00007fffe977ff5d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#5  0x00007fffe9a5af47 in ?? () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#6  0x00007fffe72bdd3b in g_main_context_dispatch () from /tmp/.mount_GoldenHLmlaB/lib/libglib-2.0.so.0
#7  0x00007fffe73132b8 in ?? () from /tmp/.mount_GoldenHLmlaB/lib/libglib-2.0.so.0
#8  0x00007fffe72bb3e3 in g_main_context_iteration () from /tmp/.mount_GoldenHLmlaB/lib/libglib-2.0.so.0
#9  0x00007fffe9a5a60e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#10 0x00007fffe97890bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#11 0x00007fffe97850a6 in QCoreApplication::exec() () from /tmp/.mount_GoldenHLmlaB/lib/libQt6Core.so.6
#12 0x00005555558022cf in main ()

Joachim Kohlhammer

unread,
Mar 10, 2026, 5:50:28 PMMar 10
to golden-cheetah-users
Will look into this (identified an additional crash on shutdown in PladAdherenceWindow)

marcen

unread,
Mar 11, 2026, 5:42:30 PMMar 11
to golden-cheetah-users
Thank you!

Joachim Kohlhammer

unread,
Mar 13, 2026, 12:22:39 PMMar 13
to golden-cheetah-users
Hi Marcen, I just created the PR https://github.com/GoldenCheetah/GoldenCheetah/pull/4839 that attempts to fix your crashes (plus one more I saw once). Can you please test?

marcen

unread,
Mar 13, 2026, 4:44:30 PMMar 13
to golden-cheetah-users
Hi Joachim, as soon as it's possible to download the PR again.

Ale Martinez

unread,
Mar 16, 2026, 2:21:02 PMMar 16
to golden-cheetah-users
Update: all recent Joachim's PRs fixing crashes and adding new functionality are included in latest snapshot builds.
They are also included in the following builds together with the Athletes Tiles functionality discussed in this thread but not merged to master yet: https://ci.appveyor.com/project/Joern-R/goldencheetah-knhd8/builds/53710200, feedback is welcome.

marcen

unread,
Mar 17, 2026, 6:04:39 PMMar 17
to golden-cheetah-users

Hello, I tested the latest version that Ale posted on Arch Linux. With this version, I was no longer able to reproduce the crashes I described earlier. Other than that, I didn't experience any crashes with two athletes.

Ale Martinez

unread,
Mar 21, 2026, 7:00:30 PM (10 days ago) Mar 21
to golden-cheetah-users
El martes, 17 de marzo de 2026 a la(s) 7:04:39 p.m. UTC-3, marcen escribió:

Hello, I tested the latest version that Ale posted on Arch Linux. With this version, I was no longer able to reproduce the crashes I described earlier. Other than that, I didn't experience any crashes with two athletes.

Thanks Marcen, the athlete management functionality in Paul’s PR was merged and it is available in latest snapshot builds, more details in https://github.com/GoldenCheetah/GoldenCheetah/releases/tag/snapshot
Feedback is welcome, Ale.
Reply all
Reply to author
Forward
0 new messages