Commit graph

211 commits

Author SHA1 Message Date
d3c2542f52
Merge branch 'refs/heads/fix/elevation-gain-in-meters' into sattelgeschichten 2026-04-30 13:01:39 +02:00
4df5af63e0
fix(analytics): show highest elevation gain in meters
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-30 12:59:26 +02:00
45517ae1e6
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-30 12:26:29 +02:00
98be2cfada
refactor(komoot): gate Komoot integration behind feature flag
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-30 12:25:51 +02:00
edf71fd359
Merge branch 'fix/test-errors' into sattelgeschichten 2026-04-30 11:59:18 +02:00
649d1e8c5f
fix(testcontainers): align versions and stabilize PostGIS setup
Unify Testcontainers dependencies to a consistent version and remove
custom container tweaks that caused instability with Podman.

- align all Testcontainers dependencies to 2.0.5
- remove `HostPortWaitStrategy` (PostgreSQLContainer already defines an appropriate wait strategy)
- remove `withReuse(true)` (may retain state across runs and break reproducibility)

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-30 11:37:38 +02:00
37aa63ff28
fix: handle missing timezone in activity title generation
Default title generation could fail when parsed activity data had no timezone set. This change adds a null/blank fallback in `ActivityFormatter` so titles can still be generated without throwing a `NullPointerException`.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-30 10:14:18 +02:00
cd3687683c
test: disable ActivityImageService manual test class in default build
The test method was already disabled, but the Spring test context for the class was still being created during the regular test run. Moving `@Disabled` to the class prevents the Testcontainers-based application context from loading for this manual-only test and stops `verify` from failing.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-30 09:59:54 +02:00
6110deba21
fix(analytics): rebuild stale current period summaries on read
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 17:20:41 +02:00
88ac213214
Merge branch 'refs/heads/24-fix-achievement-date' into sattelgeschichten
# Conflicts:
#	src/test/java/net/javahippie/fitpub/service/ActivitySummaryServiceTest.java
2026-04-29 17:08:56 +02:00
f97d82fa5e
fix(analytics): rebuild missing current period summaries on demand
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 17:05:31 +02:00
950e313145
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 15:31:25 +02:00
0663ca407f
fix(komoot): remove ellipsis from numbered import progress label
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 15:31:08 +02:00
6677b44bda
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 15:27:20 +02:00
33c32c5311
fix(komoot): map racebike activities to ride
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 15:26:54 +02:00
c10a3429c4
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 15:15:23 +02:00
0a98aa523d
feat(komoot): stop import on rate limit and reset pending activities
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 15:15:04 +02:00
9a9785973d
feat(komoot): show import progress count in button label
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 15:10:24 +02:00
67391038d6
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 14:15:33 +02:00
8a900ccd30
feat(komoot): prefill import date range with current year
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 14:14:58 +02:00
bda2ab13cf
Merge branch 'refs/heads/24-fix-achievement-date' into sattelgeschichten 2026-04-29 13:02:34 +02:00
86e276e735
fix(analytics): rebuild personal records after activity deletion
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 13:02:11 +02:00
d98b9be58b
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 12:36:07 +02:00
70e7632699
feat(komoot): show visibility icons in activity list
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 12:35:20 +02:00
e019935c68
Merge branch 'refs/heads/24-fix-achievement-date' into sattelgeschichten 2026-04-29 12:24:33 +02:00
f0e065600e
fix(analytics): flush achievement deletes before rebuild inserts
Avoid unique-constraint violations during achievement rebuilds by forcing the old rows to be deleted in the database before inserting rebuilt achievements.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 12:24:19 +02:00
816803f3f0
Merge branch 'refs/heads/24-fix-achievement-date' into sattelgeschichten 2026-04-29 12:19:12 +02:00
251beaae0f
fix(analytics): rebuild achievements from stable history snapshot
Prevent delete-triggered achievement rebuilds from failing when activity history changes again while an async recalculation is already running.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 12:18:55 +02:00
f37b20de62
Merge branch 'refs/heads/24-fix-achievement-date' into sattelgeschichten 2026-04-29 12:12:11 +02:00
714007aabe
fix(analytics): serialize delete recalculations per user
Prevent concurrent achievement and summary rebuilds for the same user when multiple activities are deleted in quick succession.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 12:11:54 +02:00
2ae0eeb06b
fix(analytics): recalculate delete side effects asynchronously
Move achievement and summary rebuilds out of the activity delete request path so the UI is not blocked by long-running recalculations.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 12:08:13 +02:00
dd80741090
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 11:35:15 +02:00
67999e8a4a
refactor(komoot): use explicit FitPub import user agent
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 11:34:37 +02:00
9824cca20d
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 11:23:40 +02:00
3135a36679
refactor(komoot): move import mapping to separate table
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 11:16:31 +02:00
ea47cccdb1
refactor(komoot): align DTOs with Lombok class pattern
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 11:01:21 +02:00
3d0fa7beec
Merge branch '24-fix-achievement-date' into sattelgeschichten 2026-04-29 10:48:31 +02:00
d86b8b9d23
fix(ui): correct achievement rebuild alert styling
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 10:48:11 +02:00
851ece0edd
Merge branch '24-fix-achievement-date' into sattelgeschichten 2026-04-29 10:43:47 +02:00
689b8e5e82
fix(analytics): refresh summaries after activity deletion
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 10:15:31 +02:00
2ac3d82fda
feat(analytics): add manual achievement rebuild action
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 10:07:01 +02:00
2c567a5e8e
fix(analytics): rebuild achievements after activity deletion
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 10:00:09 +02:00
10037de043
fix(analytics): count summary achievements by activity period
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 09:54:31 +02:00
6af484bcf7
fix(analytics): rebuild achievements from activity history
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 09:44:28 +02:00
4d16e8c685
fix(analytics): use activity end time for achievement earnedAt #24
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-29 09:31:30 +02:00
c84377b05a
fix(activity-detail): preserve line breaks in activity descriptions (#22)
- implement new CSS class `preserve-linebreaks` in `fitpub.css`
- add new CSS class to activity description element in `detail.html`
2026-04-29 09:18:53 +02:00
979fe4c416
Merge branch 'refs/heads/21-preserve-linebreaks' into sattelgeschichten 2026-04-29 08:18:58 +02:00
917a14ed06
Merge branch 'refs/heads/komoot-import' into sattelgeschichten 2026-04-29 08:17:30 +02:00
84735594f2
fix(komoot): send explicit GPX accept header for imports
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 17:10:34 +02:00
6bd7ab8748
style(komoot): reuse shared loading indicator for activity list loading
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 16:40:04 +02:00