Add GPX file import to planner + archive change

Two import entry points:
- Home page: "Import GPX" button next to "Start Planning"
- In-session: drag-and-drop GPX onto the map (with confirmation)

Parses GPX client-side, extracts waypoints (Douglas-Peucker) and
no-go areas from extensions. Non-GPX files show error toast.

Also:
- Fix spec drift: non-GPX drop now shows error toast (was silent)
- Add E2E tests for import button, invalid GPX, and session creation
- Archive gpx-import-planner change, sync specs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-04-03 17:31:44 +01:00
parent 516b86aa3d
commit a9f8ee61f0
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
16 changed files with 394 additions and 175 deletions

View file

@ -22,6 +22,10 @@ export default {
exportRouteDesc: "GPX-Track für jede App",
exportPlan: "Plan exportieren",
exportPlanDesc: "Mit Wegpunkten und Sperrzonen",
importGpx: "GPX importieren",
importGpxError: "GPX-Datei konnte nicht gelesen werden. Bitte Dateiformat prüfen.",
dropGpxHere: "GPX-Datei hier ablegen",
replaceRouteConfirm: "Aktuelle Route durch importierte GPX ersetzen?",
profile: "Profil",
connecting: "Verbinde...",
loadingMap: "Karte wird geladen...",

View file

@ -22,6 +22,10 @@ export default {
exportRouteDesc: "Clean GPX track for any app",
exportPlan: "Export Plan",
exportPlanDesc: "Includes waypoints and no-go areas",
importGpx: "Import GPX",
importGpxError: "Could not read GPX file. Please check the file format.",
dropGpxHere: "Drop GPX file here",
replaceRouteConfirm: "Replace current route with imported GPX?",
profile: "Profile",
connecting: "Connecting...",
loadingMap: "Loading map...",