refactor: merge internal/sync into internal/garmin, regroup api files and routes

Garmin auth/sync routes move under /api/garmin/*; sync.Service becomes
garmin.Sync with garmin.SyncConfig/ClientConfig; applog becomes
internal/log; the test mock moves into the garmin package as MockClient
(breaking the test-only import cycle the merge created); stale test
URLs and type names updated to match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 16:04:18 +02:00
parent 19c9aecdeb
commit e2b2bf9611
61 changed files with 2007 additions and 982 deletions

View File

@@ -7,14 +7,21 @@ writing-plans flow (see `docs/superpowers/specs/` and `docs/superpowers/plans/`
for that history) and remove it from here once a spec exists.
## Backlog
- quickfixes
- make setupSessionIdleTimeout an application configuration (key session.idle_timeout), check difference with appCfg.SessionDuration
- don't put id_token in Claim, store it in the cookie apart from Claim
- find alternative to deprecated React.FormEvent
- replace all go log calls by our application logger
- new workout kinds
- add "Recovery", "Quick", and "Sprint" workout kinds
- order to follow (in activities page filter buttons, in analysis page combobox, in profile page workout kinds cards) is Recovery -> Easy -> Long -> Tempo -> 60' Threshold -> 30' Threshold -> Quick -> Intervals -> MAS Test -> Sprint -> Race
- adapt the color palette from blue to purple according to this order (starting with blue for recovery -> green -> yellow -> orange -> red until purple for race), put the color code in DB (UI shall not resolve it with kindColor based on workout kind name)
- workout templates
- provide workout templates in YAML (see docs/workouts.yaml for the structure)
- first time setup page
- once connection is validated, add a step to ask user its best race results on 5k, 10k, half-marathon and marathon (at least one shall be provided) and store it in the profile. these values will be updated later during synchronization (as we can detect race kinds with their distance)
- add another step to enter latest known MAS (in mm:ss/km) and store it in the profile. this value will be updated later during synchronization (as we can assign an activity with "MAS test" kind)
- profile page
- profile page
- move "Heart rate" card before "Activity analysis" card and rename it to "Characteristics"
- add genre (male/female) and age in "Characteristics"
- rename "Activity analysis" card to "Activities"
@@ -63,8 +70,9 @@ for that history) and remove it from here once a spec exists.
- discovery of warm-up, cool-down phases, so we can read activity per blocks (with detection of extension of a block compared to linked workout)
- discovery of additional blocks done but not requested by linked workout (for example, additional small sprints at the end of an easy run)
- add icon to indicate if an activity has an associated workout
-
- list layout with smaller graphs (no scale, no targets, no , detailed view with different graphs for each phase incl. delta with workout)
- manage 2 layouts
- list layout with smaller graphs (no scale, no targets)
- detailed layout (once clicked on details...) showing graphs for each block incl. delta with workout)
## Someday / maybe