- APIClient.uploadFile: multipart POST mit Bearer-Token, generischer
field/filename/mime
- ImageResize: längste Kante max 2048px, JPEG q=0.8 — iPhone-Fotos sonst
5-10MB pro Stück
- FinishWalkSheet:
- PhotosPicker (iOS 16+, kein NSPhotoLibraryUsageDescription nötig)
- Thumbnail-Strip der gewählten Fotos
- Sequentieller Upload nach POST /api/routes, Toolbar zeigt "N/M"
- Bei < 50m: orangene Warnung "Sehr kurze Tour — du kannst trotzdem speichern"
- Save-Button blockt korrekt während Upload, Verwerfen auch
Das Backend bool-konvertiert nur is_premium explizit; alle anderen 0/1-Spalten
gehen unverändert durch FastAPI. Decode-Fehler vorher still verschluckt → jetzt
auch geloggt, damit das nicht nochmal passiert.
Login liefert nur {token, name, is_premium}. Für Admin-/Founder-/Tier-Info
holen wir nach Login (und beim Erscheinen von MainTabView) /api/auth/me und
zeigen ein echtes Profil mit Avatar, Email, Rolle und nur dann Premium-Status,
wenn das relevant ist.