ManaAuthUI-Initialsprint mit 5 Versions-Schritten in einer Session. spieler.md + macher.md hand-curated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.3 KiB
3.3 KiB
| date | day | view | weekday | commits | review |
|---|---|---|---|---|---|
| 2026-05-13 | 1 | macher | Mittwoch | 5 | written |
Mittwoch, 2026-05-13 — Tag 1 (Macher-Sicht)
Initialer Sprint des Pakets. Aus drei fast-byte-identischen
LoginView.swift-Files in cards-native, manaspur-native und
memoro-native wird ein gemeinsames Swift-Package — plus das, was
bisher gar nicht da war: Sign-Up, E-Mail-Verifikation, Passwort-Reset,
Account-Management. Und 2FA, weil die Lücke beim Aufräumen sichtbar
wurde.
Stats
5 Commits, +4 247 / −4 LoC, 39 Files. Sessionspanne 17:22 → 01:08, ~48 aktive Minuten in einem Durchstich. Bei +4 243 netto ist das v0.1.0 mit allem Anhang, nicht „aktive Tipparbeit" — die Inhalte flossen aus den drei App-Repos zusammen.
Versionsschritte des Tages
- v0.1.0 — vollständige Auth-Reise als SwiftUI: Login, Sign-Up,
Email-Verify-Gate, Forgot-/Reset-Password, Change-Email,
Change-Password, Delete-Account. ViewModels strikt getrennt von
Views, jeder Flow eigene
@Observable-State-Maschine. - v0.2.0 —
ManaAuthGate, der „bitte-erst-einloggen"-Wrapper für Action-Level-Eskalation. Cards/Manaspur/Memoro brauchen das pro Aktion, nicht pro Screen. - v0.3.0 —
ManaTwoFactorChallengeViewfür den Login-Step, wenn der Server 2FA verlangt. - v0.4.0 —
ManaTwoFactorEnrollView(QR-Code + Verify) undManaTwoFactorDisableView(Passwort-Bestätigung). - v0.5.0 —
ManaTwoFactorAccountRowfür den Account-Tab undManaBackupCodeRegenerateView.
Fünf Tags in einer Session ist viel — der Schnitt war pro Feature-Komplex, damit Consumer-Apps gezielt minor-bumpen können ohne 2FA mitzunehmen, das sie noch nicht zeigen.
Architektur-Entscheidungen
- Pure SwiftUI, keine UI-Lib — gleiche Regel wie
ManaCore. Senkt Drift-Risiko zwischen Vereins-Apps. - App injiziert
ManaBrandConfig— Pakets-Sources kennen keinen App-Namen, keine Farben.forest/mana/künftige Themes leben in der konsumierenden App, bis Token-Theme-Variants kommen. - ViewModel-zuerst-Pattern. Tests gehen gegen ViewModels via URLProtocol-Mock, Views sind dünn und ungetestet — das passt zum Swift-Test-Realismus auf macOS-CI.
- Account-Löschung ist Pflicht (App-Store-Guideline 5.1.1(v));
ManaDeleteAccountViewist Bestandteil jedes Sign-Up-Anbieters. - 2FA-Flow läuft komplett über
ManaCorev1.2.0 (Guest-Mode + Refresh-Resilience), keine eigenen API-Wrapper in UI.
Trade-offs
- 4 243 netto Zeilen für „v0.1.0 + v0.5.0 in einer Session" — das hat nur funktioniert, weil drei Source-Repos schon Login-Code in ähnlicher Form hatten. Hätten wir Sign-Up parallel in drei Apps gebaut, wäre der Tag dreimal so lang.
- Sprache deutsch im Public-API. Lokalisierungs-Refactor später, wenn EN-Bedarf real wird; jetzt würde die Indirection bremsen.
- 2FA UI ist da, aber Server-seitig fehlt der Endpoint in
mana-authnoch in mancher Form — die Views laufen daher zunächst gegen Stub-Antworten.
Offene Punkte
- ManaTokens-Theme-Variants → erst dann
ManaBrandConfigersetzen. - Snapshot-Tests für Views fehlen; ViewModel-Tests laufen.
- Localizable.xcstrings (EN) noch nicht angelegt — kommt mit der ersten konkreten EN-Anforderung.
- Cross-App-Probelauf: 2FA-Enroll von cards-native gegen Production noch nicht durchgespielt.