From 902fef11d1d6b49fd94550703804ea8bb8f87b86 Mon Sep 17 00:00:00 2001 From: null Date: Sun, 28 Jun 2026 16:22:18 -0500 Subject: [PATCH] docs(future): file P0 onboarding slide-3 crash (blocks first-run users from reaching login) --- Future.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Future.md b/Future.md index 0a6c08fe..6c8a6323 100644 --- a/Future.md +++ b/Future.md @@ -6,6 +6,20 @@ Non-blocking ideas: things that work today but could be better, plus feature ide ## UI Themes +- **🚨 P0 — Onboarding CRASHES on slide 3 (and on Skip) — blocks every first-run user from reaching login.** Discovered 2026-06-28 on a fresh `emulator-5558` install (Pixel 7 Pro, API 34, KVM hw accel). Slides 1 + 2 render fine; tapping **Next** on slide 2 → slide 3 → `FATAL EXCEPTION: main` → app dies back to the launcher. Tapping **Skip** (which jumps to a later slide) also crashes. Existing QA emulators (`5554`/`5556`) never hit this because they're past onboarding with logged-in users — **this regression is invisible to recurring QA and hits every new install.** + + **Stack:** `java.lang.IllegalArgumentException: Only VectorDrawables and rasterized asset types are supported ex. PNG, JPG, WEBP` at `androidx.compose.ui.res.PainterResources_androidKt.loadVectorResource` from `app.closer.ui.onboarding.OnboardingScreenKt.CtaSlide(OnboardingScreen.kt:246)`. + + **Root cause:** line 246 calls `painterResource(R.drawable.ic_launcher_background)`. The XML is a valid `` (108dp square with 4 gradient paths), but `painterResource` rejects it at runtime on API 34 — likely an aapt/adaptive-icon bundling quirk where the launcher-background resource resolves to something other than `VectorDrawable`/`BitmapDrawable`. + + **Fix options** (any one closes it): (a) swap to `Image(painter = ImageVector.vectorResource(...))`, (b) drop the decorative launcher icon entirely and use a solid `Color`/`Brush` matching the brand, (c) rasterize the background to a PNG and `painterResource` that, (d) use `LocalContext.current.getDrawable(R.drawable.ic_launcher_background)` wrapped in `runCatching`. + + **Re-introduction risk / regression-prevention:** add an onboarding route to `qa/entrypoint_smoke.sh` (the cold-start/launch-integrity smoke) so the `am kill` → notification path covers the entire onboarding flow, not just the post-login launch. Also consider a `theme-scan.sh` Tier 2 check: flag `painterResource(R.drawable.ic_launcher_*)` outside `BrandIllustration` / `OnboardingScreen` review. + + **Verification before close:** fresh AVD → install → tap Next through all onboarding slides + tap Skip from slide 1 → assert no FATAL, login screen reachable. Repeat on `5554` and `5556` (dark + light). + + **Note (project convention):** `Future.md`'s header says actual bugs belong in `ClaudeReport.md`. Filing here per explicit user request 2026-06-28 — recommend also adding a `O-ONBOARD-001` row to `ClaudeReport.md` with the same repro + fix options so it shows up in the recurring QA pass sweep. (The current working-tree `ClaudeReport.md` has uncommitted R17 edits — leaving it alone until the user commits/stashes.) + - **"Add to Bucket List" has mixed dark/light mode UI.** The input field, button, and surrounding elements use light-mode colors even when the app is in dark mode. Needs theme alignment.