Fix Wahoo import bugs, add Import All, update spec

Bugs fixed:
- FIT parser returns timestamps as Date objects, not strings — convert
  to ISO 8601 before passing to generateGpx (caused str.replace crash)
- FIT parser already converts semicircles to degrees — remove redundant
  conversion that produced near-zero coordinates
- Wahoo CDN URLs are pre-signed S3 URLs — remove Bearer auth header
  from download requests (caused 400 "Unsupported Authorization Type")
- Filter out third-party workouts (fitness_app_id >= 1000) since Wahoo
  does not share their data via the API

UX improvements:
- Individual imports use fetcher (no page refresh), button shows
  "Importing..." inline
- "Import all" button imports all unimported workouts on the page
  sequentially with progress indicator
- Add @vitejs/plugin-basic-ssl for local HTTPS dev (opt-in via HTTPS=1)

Also adds unit test for FIT-to-GPX conversion with real fixture file,
and updates wahoo-import spec to reflect all behaviors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-04-05 17:47:48 +02:00
parent 01d7620617
commit 20b91ef511
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
10 changed files with 258 additions and 58 deletions

View file

@ -186,6 +186,9 @@ export default {
noWorkouts: "Keine Workouts gefunden.",
noGps: "Kein GPS",
noGpsTooltip: "{{provider}} stellt für diese Aktivität keine Routendaten bereit",
importing: "Importiere...",
importAll: "Alle importieren ({{count}})",
importingProgress: "Importiere {{current}} von {{total}}...",
previous: "Zurück",
next: "Weiter",
},

View file

@ -186,6 +186,9 @@ export default {
noWorkouts: "No workouts found.",
noGps: "No GPS",
noGpsTooltip: "{{provider}} does not provide route data for this activity",
importing: "Importing...",
importAll: "Import all ({{count}})",
importingProgress: "Importing {{current}} of {{total}}...",
previous: "Previous",
next: "Next",
},