App Group group.app.banyaro.ios verbindet App und Widget-Extension
(Entitlements in beiden Targets, CODE_SIGN_ENTITLEMENTS fürs Widget).
Home-Screen-Widget (D):
- BanYaroHomeWidget (klein + mittel): Tagesfoto, Hundename, nächster Termin.
- App schreibt beim Heim-Laden einen Snapshot (HomeWidgetData) in die App
Group und triggert WidgetCenter-Reload; Snapshot wird bei Logout/401 geleert.
Siri-/Kurzbefehl (E):
- StartWalkIntent „Gassi gehen" + AppShortcutsProvider (öffnet die App).
- WalkLauncher überbrückt Intent → UI: Flag in der App Group, beim Aktivwerden
eingelöst → Aufnehmen-Tab + Aufnahme-Start (TrackingView.startFresh).
- MainTabView mit Tab-Auswahl (Tags), BanYaroGoApp liest scenePhase.
Bisher: cachedPhotoUrl (UserDefaults) wurde dem Backend-Wert
bevorzugt. Wenn der Cache eine tote URL hielt (gelöschtes Bild),
sah man bis Mitternacht kein Tagesbild — selbst nachdem der
Backend-Cache selbstheilend invalidiert war.
Jetzt: dashboard.randomPhoto.url gewinnt im Background-View, Cache
ist nur Offline-Fallback. In load() wird der Cache bei jeder neuen
Backend-URL aktualisiert.
- LinearGradient zum systemBackground entfernt — der Übergang war zu hart
weiß und hat das Foto verschluckt
- UserDefaults-Cache 'heimPhoto_{userId}_{dogId}_YYYY-MM-DD' analog zur PWA
(bg3_{userId}_YYYY-MM-DD). Sobald ein Foto pro Tag gewählt ist, sticht es
bis Mitternacht — damit kippt's nicht mehr, wenn zwischendrin neue Bilder
hochgeladen werden und die tick%len-Rotation auf einen anderen Index zeigt
Tagebuch (Diary):
- DiaryEntry + DiaryMedia + DiaryCreateBody DTOs
- TagebuchView: Liste der Einträge für aktiven Hund mit Titel, Text,
Ortsname, Meilenstein-Stern, Foto-Strip
- AddDiaryEntrySheet: Titel/Text/Datum/Meilenstein/Ort/Tags +
PhotosPicker, nach POST /api/dogs/{id}/diary werden Fotos einzeln
via POST /api/dogs/{id}/diary/{entry_id}/media hochgeladen (mit
ImageResize.resizedJPEG)
Heim-Tab als neuer 1. Tab:
- DashboardSnapshot DTO für /api/dogs/{id}/welcome-dashboard
- ActiveDogStore (@Observable + UserDefaults("activeDogId")): hält
den aktiven Hund app-weit
- HeimView: tägliches Hintergrundfoto aus random_photo.url (rotiert
pro Tag, vom Backend gewählt), Gradient zur Lesbarkeit, Tagezeit-
Begrüßung mit User-Namen, Hund-Picker (Menu), Info-Karten für
letzten Eintrag/nächsten Termin/Gewicht/Eintragszahl,
Quick-Action-Buttons (Tagebuch, Wetter, Erste Hilfe)
Reorganisation:
- 5 Tabs: Heim, Touren, Aufnehmen, Statistik, Mehr
- Hunde-Liste wandert in Mehr → "Hund & Alltag"
- Tagebuch in Mehr → "Hund & Alltag" + erreichbar von Heim