Commit graph

182 commits

Author SHA1 Message Date
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
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
7a0315d855
fix: linter warnings
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 16:16:11 +02:00
5f035d75b6
fix(summaries): retry summary updates after concurrent insert conflicts
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 16:13:32 +02:00
df3cd0616d
revert: remove unrelated change from feature branch
This reverts a change that does not belong to this feature branch.
The change will be moved to a separate branch and submitted as its
own pull request.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 16:09:17 +02:00
b5e88a317f
revert: remove unrelated change from feature branch
This reverts a change that does not belong to this feature branch.
The change will be moved to a separate branch and submitted as its
own pull request.

Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 15:52:26 +02:00
5945a2b139
feat(komoot): link imported activities to their FitPub detail pages
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 15:44:06 +02:00
f7f919f0b1
feat(komoot): improve import flow with throttling, cancellation, and UI guidance
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 15:24:15 +02:00
0387ca01e3
feat(komoot): import listed activities sequentially with per-row status updates
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 14:59:05 +02:00
6d89426584
feat(komoot): refine activity list for import status and mapped types
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 14:26:41 +02:00
aef23720d6
feat(komoot): add server-side date range filtering for activities
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 14:26:41 +02:00
803caf06b1
feat(komoot): import first new activity via GPX and override metadata
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 14:26:41 +02:00
0cea88d033
feat(db): add komoot activity id for import deduplication
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 14:26:33 +02:00
7ca09f0f27
feat(komoot): add completed activities preview import flow
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
2026-04-28 12:18:02 +02:00
13077573bb
fix(activity-detail): preserve line breaks in activity descriptions
- implement new CSS class `preserve-linebreaks` in `fitpub.css`
- add new CSS class to activity description element in `detail.html`
2026-04-28 09:31:35 +02:00
Tim Zöller
9e529f8b99 Quote Post Fixe 2026-04-27 22:27:16 +02:00
Tim Zöller
d79678aae3 Accept Quote Post Requests 2026-04-27 22:16:40 +02:00
Niklas
102d515b42
Display activity date in local time (using the time zone that is stored with the activity), not in UTC (#4)
* Display timestamps using the timezone that is stored at the activity (fix 'new Date()' invocation)

* Display timestamps using the timezone that is stored at the activity (relative date in timeline views)

* Use correct timezone for auto-generated activity title

---------

Co-authored-by: Niklas Deutschmann <sonstharmlos@noreply.codeberg.org>
2026-04-27 22:01:08 +02:00
Tim Zöller
5df4da86a5 Switched Weather Provider to OpenMeteo #15 2026-04-27 21:54:46 +02:00
Niklas
5f85417c80
Don't display "null" as activity location in UI when reverse geocoding didn't took place (#3)
* Fix display of "null" for activity location (backend)

* Fix display of "null" for activity location (frontend)

---------

Co-authored-by: Niklas Deutschmann <sonstharmlos@noreply.codeberg.org>
2026-04-13 14:20:04 +02:00
Niklas
fb440b2b8f
The activity type was not preserved when editing an activity (#6)
Co-authored-by: Niklas Deutschmann <sonstharmlos@noreply.codeberg.org>
2026-04-13 14:18:38 +02:00
Niklas
03b8e6d315
Get activity title from uploaded file, if it is present (#7)
* Use activity title from GPX file when present

* Extend test

* Test shortening of long names

* Extract constant

---------

Co-authored-by: Niklas Deutschmann <sonstharmlos@noreply.codeberg.org>
2026-04-13 10:12:38 +02:00
Niklas Deutschmann
492fd7dee1 Changed message 2026-04-10 12:10:58 +02:00
Tim Zöller
78c8b040c2 Fix too restricted visibility for followers 2026-04-08 13:41:50 +02:00
Tim Zöller
a8b601233b Allow Mastodon to Quote Post 2026-04-08 12:48:12 +02:00
Tim Zöller
07fbcf8064 Nicer Share Pics 2026-04-08 11:06:26 +02:00
Tim Zöller
48ac2e444b Design a little less noisy 2026-04-08 10:20:29 +02:00
Tim Zöller
c4f77469b8 New interactive charts 2026-04-08 10:03:15 +02:00
Tim Zöller
8fdb6a9fb1 Fix SPM bug 2026-04-08 09:28:12 +02:00
Tim Zöller
1952955f3b Fix broken links 2026-04-08 00:07:29 +02:00
Tim Zöller
e78a03b41b Fix wrongly calculated dashboards 2026-04-08 00:03:10 +02:00