Commit graph

5 commits

Author SHA1 Message Date
cschlaefke
51a304e986 Fix: BootstrapGate als Overlay statt Baum-Austausch (markNeedsBuild during build)
Das Umschalten vom Warte-Bildschirm auf die App remountete den ganzen
App-Baum, während Riverpod noch Provider-Abhängigkeiten nachzog — das
löste die 'setState() or markNeedsBuild() called during build'-Warnung
aus. Der Splash liegt jetzt als deckende Stack-Ebene über der durchgehend
gemounteten App. Handoff: Bug vom Nutzer als behoben bestätigt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:50:29 +02:00
cschlaefke
0cc39f69b1 Fix: Bootstrap-Maßstab ist householdId, nicht users-Doc-Existenz
Die Push-Registrierung legt users/{uid} per merge selbst an (fcmTokens,
timezone) — beim kaputten Apple-Account existierte das Dokument daher
ohne householdId, und Gate + Bootstrap hielten den Account für fertig.
Jetzt prüfen beide auf householdId; der Bootstrap schreibt das
users-Dokument mit merge, damit die Push-Felder erhalten bleiben.
Neuer Test bildet exakt diesen Zustand ab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:43:23 +02:00
cschlaefke
5ed3a68e45 Fix: Reaktiver Haushalts-Bootstrap + BootstrapGate (Apple-Login legte keinen Haushalt an)
Der Bootstrap hing an signInWithApple und lief erst, nachdem der Router
den Nutzer schon in die App geleitet hatte — Fehler blieben unsichtbar,
der Account blieb ohne users-Doc/Haushalt und alle Writes scheiterten an
den Rules. Jetzt beobachtet householdBootstrapProvider das users-Dokument
und legt Profil + Haushalt reaktiv an (alle Login-Wege); das BootstrapGate
hält die App so lange zurück und macht Fehler mit „Erneut versuchen"
sichtbar. Bestehende kaputte Accounts heilen beim nächsten Start selbst.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:49:49 +02:00
cschlaefke
798912cb03 V2.x: Anmelden mit Apple (iOS + Android)
- AuthRepository.signInWithApple() via eingebautem AppleAuthProvider
  (nativ auf iOS, Web-Flow über Firebase-Handler auf Android, ohne Zusatzpaket)
- Haushalts-Bootstrap in gemeinsamen Helper _bootstrapHouseholdIfNeeded
  ausgelagert; beim ersten Apple-Login wird Profil + Haushalt idempotent angelegt
- LoginScreen: "oder"-Trenner + "Mit Apple anmelden"-Button, Abbruch ohne Fehlermeldung
- l10n: signInWithApple, orDivider, authErrorAppleFailed
- iOS: Entitlement com.apple.developer.applesignin ergänzt
- Doku: firebase-einrichtung.md Schritt 7 (Apple-Login) mit Portal-/Console-Anleitung

Noch offen: Apple-Portal (Services-ID, Sign-in-Key), Firebase-Console-Provider,
Xcode-Capability — danach Ende-zu-Ende auf iOS+Android testen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 16:52:49 +02:00
cschlaefke
53ee30c598 Firestore und Auth: echte Daten statt Demo, Login mit E-Mail+Passwort, Security Rules
- Datenmodell: users/{uid}, households/{id} mit memberUids, plants/locations als Subcollections
- StreamProvider liefern Live-Daten, Repositories kapseln Schreibzugriffe
- Login-Screen mit Registrierung (legt Haushalt automatisch an), Logout in Einstellungen
- Router-Redirect bei Login/Logout, firestore.rules mit Haushalts-Prinzip
- Tests auf firebase_auth_mocks + fake_cloud_firestore umgestellt
- Verifiziert: analyze/test grün, Android-Debug-Build erfolgreich

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 22:53:09 +02:00