466e4c7f7a
test(02-07): add Compose Resources, theme seed, and failing LoginViewModel tests
...
- Add Phase 2 auth strings.xml with Polish scaffold copy from UI-SPEC
- Add RecipeTheme with #3B6939 / #A2D597 seed and isSystemInDarkTheme
- Add LoginViewModelTest covering cancelled/network/unknown error mapping
and the clear-error-on-retry behavior; tests fail compile until Task 2
2026-04-28 17:35:11 +02:00
938f324bb8
feat(02-06): wire auth session into koin
...
- provide authModule singletons for store, OIDC, MeClient, AuthSession, and HttpClient
- include authModule from appModule bootstrap
2026-04-28 16:55:36 +02:00
0a24be9a95
feat(02-06): implement auth session runtime
...
- add AuthState and AuthSession restore/login/logout state machine
- add MeClient and token-redacting Ktor bearer HTTP client
2026-04-28 16:54:39 +02:00
06e5eaf94e
test(02-06): add failing auth session state tests
...
- cover restore, login, refresh failure, logout, and cancellation
- assert Phase 2 authenticated householdId remains null
2026-04-28 16:53:46 +02:00
ac9fc61410
feat(02-05): implement iOS AppAuth client
...
- Add AppAuth login, refresh, logout actual
- Add iOS Keychain auth state store to unblock native compile
- Add iOS Podfile AppAuth integration
2026-04-28 16:14:04 +02:00
11a5eeb3ff
fix(02-04): harden Android OIDC token result mapping
...
- Treat missing access tokens as auth failures
- Preserve AppAuth discovery errors for correct network/auth classification
2026-04-28 16:00:20 +02:00
6385453653
feat(02-04): register Android OIDC callback
...
- Add AppAuth redirect receiver for recipe://callback
- Preserve existing launcher activity manifest wiring
2026-04-28 15:58:12 +02:00
fa78ee31b4
feat(02-04): implement Android AppAuth OIDC client
...
- Add Android AppAuth login, fresh-token refresh, and end-session logout
- Add Android secure AuthState store actual required for Android compilation
2026-04-28 15:57:16 +02:00
0dbd374f46
feat(02-03): add Wasm auth stubs
...
- Keep Wasm OIDC behind explicit v2 NotImplementedError boundaries
- Add non-persistent Wasm AuthState store actual so the target compiles
2026-04-28 13:49:14 +02:00
edc2a1d4c8
feat(02-03): define common auth contracts
...
- Add OIDC result and expect client seam with pinned native AppAuth semantics
- Add secure AuthState JSON store contract and JVM dev actuals for test compilation
2026-04-28 13:48:25 +02:00
7ef222e71e
test(02-03): add failing secure auth state store contract
...
- Covers write overwrite semantics
- Covers clear removing stored AuthState JSON
2026-04-28 13:36:48 +02:00
68655eae1a
Phase 1 work
2026-04-24 20:21:03 +02:00
37f6191523
feat(01-04): wire JVM + Wasm main + Swift iOSApp to bootstrap Koin + Kermit
...
- Desktop main() calls configureLogging() → initKoin() before application { Window { App() } }
- Wasm main() calls configureLogging() → initKoin() before ComposeViewport { App() } (PITFALL #8 future-proof)
- iOSApp.swift imports ComposeApp and calls KoinIosKt.doInitKoin() in init() — single iOS call site (PITFALL #4 )
- MainViewController.kt and App.kt unmodified (anti-pattern guards)
2026-04-24 18:22:47 +02:00
4e6192293f
feat(01-04): add Android MainApplication + manifest registration
...
- Create MainApplication : Application() running configureLogging() then initKoin { androidContext(this@MainApplication) } in onCreate
- Register android:name=".MainApplication" on <application> element (MainActivity entry preserved)
- Establishes the canonical init order for Android process boot
2026-04-24 18:22:03 +02:00
7d750af710
feat(01-04): add Koin + Kermit bootstrap commonMain + iOS bridge
...
- Add initKoin(config) helper wrapping startKoin { modules(appModule) } (PITFALL #4 single entry)
- Add empty appModule placeholder (D-14) — Phase 2+ extends
- Add configureLogging() setting Kermit tag "recipe" (D-15)
- Add iosMain doInitKoin() bridge — Swift-accessible as KoinIosKt.doInitKoin()
- configureLogging() always runs before initKoin() so module loading can log
2026-04-24 18:21:36 +02:00
bf8b46bff2
Initial commit
2026-04-23 22:50:48 +02:00