Phase 2 aus dem Native-Auth-Vollausbau-Plan (Option A, siehe ../mana/docs/MANA_SWIFT.md). Entstanden weil drei Apps fast- byte-identische LoginView.swift hatten und Sign-Up/Forgot-PW komplett fehlten. ManaAuthUI-Library mit: - ManaBrandConfig — App-injizierte Theme-Werte (forest für Cards/ Manaspur, mana-default für Memoro), Environment-Key, View-Modifier - Base-Components: ManaAuthScaffold, ManaPrimaryButton, ManaTextField, ManaSecureField + .manaEmailField()-Modifier - ManaLoginView + LoginViewModel — Email/PW-Login, schaltet bei AuthError.emailNotVerified automatisch auf ManaEmailVerifyGateView - ManaSignUpView + SignUpViewModel — Email/Name/PW + awaiting- Verification-Hinweis-Screen - ManaEmailVerifyGateView + ViewModel — Resend-Verification - ManaForgotPasswordView + ViewModel — Reset-Mail anfordern (immer generischer Hinweis, User-Enumeration-Schutz) - ManaResetPasswordView + ViewModel — neues PW mit Token aus Universal-Link - ManaChangeEmailView, ManaChangePasswordView, ManaDeleteAccountView + internal ViewModels — Account-Bausteine - ManaDeleteAccountView ist zweistufig (Bestätigungs-Wort tippen + Passwort) → App-Store-Guideline 5.1.1(v) Pflicht-Surface 26/26 ViewModel-Tests grün via per-test-ID URLProtocol-Routing (löst Parallel-Pollution zwischen .serialized Suites). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Changelog
Alle Änderungen werden hier dokumentiert. Format orientiert an Keep a Changelog, Versionierung nach Semver.
[Unreleased]
[0.1.0] — 2026-05-13
Phase 2 aus dem Native-Auth-Vollausbau-Plan (Option A, siehe
../mana/docs/MANA_SWIFT.md). Entstanden weil drei Apps fast-byte-
identische LoginView.swift-Dateien hatten und Sign-Up/Forgot-PW
komplett fehlten.
ManaAuthUI (neu)
ManaBrandConfig— App-injiziertes Bündel aus appName, tagline, primary/surface/background/error-Colors. Apps liefern hier ihr Theme (z.B. forest für Cards/Manaspur, default-mana für Memoro).- Base-Components:
ManaAuthScaffold,ManaPrimaryButton,ManaTextField,ManaSecureField— geteilte Bausteine, alle brand-aware. ManaLoginView+LoginViewModel— Email/PW-Login mit Sign-Up- und Forgot-PW-Buttons. Bei.emailNotVerifiedautomatisch insManaEmailVerifyGateViewumgeleitet (Resend-Mail-Button).ManaSignUpView+SignUpViewModel— Registrierung mit Email/Name/Passwort. Nach Submit: Bestätigungs-Mail-Hinweis-Screen.ManaEmailVerifyGateView— wenn Login.emailNotVerifiedwarf, bietet "Bestätigungs-Mail erneut senden".ManaForgotPasswordView+ForgotPasswordViewModel— Reset-Mail anfordern. Server antwortet immer 200 (keine User-Enumeration), UI meldet generisch.ManaResetPasswordView+ResetPasswordViewModel— neues Passwort setzen mit Token aus Reset-Mail. Wird aus dem Universal-Link-Handler der App aufgerufen.ManaChangeEmailView,ManaChangePasswordView,ManaDeleteAccountView— Account-Bausteine für die AccountView der App.ManaDeleteAccountViewist App-Store-Pflicht (Guideline 5.1.1(v)) für jede App mit Account-Erstellung.
Tests
- ViewModel-Tests via URLProtocol-Mock für jeden Auth-Flow.
- Brand-Config-Defaults.
Bekannte Einschränkungen
ManaChangeEmailView/ManaChangePasswordView/ManaDeleteAccountViewfunktionieren erst nach Phase-3-Server-PR (Bearer-Plugin inmana-auth). UI ist fertig, Wire ist fertig, Server muss nachziehen.- 2FA, Magic-Link, Passkey-Flows nicht enthalten. Folgen in v0.2.0 zusammen mit ManaCore v1.2.0 und dem Server-PR.