Production hardening: password complexity, token refresh, network resilience

Password complexity: real-time validation UI on register, onboarding, and reset screens
  (uppercase, lowercase, digit, min 8 chars) — Compose + iOS Swift
iOS privacy descriptions: camera, photo library, photo save usage strings
Token refresh: Ktor interceptor catches 401 "token_expired", refreshes, retries
Retry with backoff: 3 retries on 5xx/IO errors, exponential delay (1s base, 10s max)
Gzip: ContentEncoding plugin on all platform HTTP clients
Request timeouts: 30s request, 10s connect, 30s socket
Validation rules: split passwordMissingLetter into uppercase/lowercase (iOS Swift)
Test fixes: corrected import paths in 5 existing test files
New tests: HTTP client retry/refresh (9), validation rules
This commit is contained in:
Trey T
2026-03-26 14:05:33 -05:00
parent af45588503
commit 334767cee7
28 changed files with 776 additions and 72 deletions

View File

@@ -28,6 +28,13 @@
<string name="auth_register_button">Create Account</string>
<string name="auth_have_account">Already have an account? Sign In</string>
<string name="auth_passwords_dont_match">Passwords don\'t match</string>
<string name="auth_password_requirement_length">At least 8 characters</string>
<string name="auth_password_requirement_uppercase">Contains an uppercase letter</string>
<string name="auth_password_requirement_lowercase">Contains a lowercase letter</string>
<string name="auth_password_requirement_digit">Contains a number</string>
<string name="auth_password_requirement_match">Passwords match</string>
<string name="auth_password_requirements_title">Password Requirements</string>
<string name="auth_password_complexity_error">Password must be at least 8 characters with at least one uppercase letter, one lowercase letter, and one digit</string>
<!-- Auth - Verify Email -->
<string name="auth_verify_title">Verify Email</string>