diff --git a/docs/design/dist/.gitignore b/docs/design/dist/.gitignore new file mode 100644 index 0000000..407f758 --- /dev/null +++ b/docs/design/dist/.gitignore @@ -0,0 +1,2 @@ +# Delivery archives — the extracted webp beside them is what is tracked. +*.zip diff --git a/docs/design/dist/Dark/01_WelcomeIllustration_dark.webp b/docs/design/dist/Dark/01_WelcomeIllustration_dark.webp new file mode 100644 index 0000000..e866860 Binary files /dev/null and b/docs/design/dist/Dark/01_WelcomeIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/02_LastPeriodIllustration_dark.webp b/docs/design/dist/Dark/02_LastPeriodIllustration_dark.webp new file mode 100644 index 0000000..8d17f1e Binary files /dev/null and b/docs/design/dist/Dark/02_LastPeriodIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/03_PeriodEndIllustration_dark.webp b/docs/design/dist/Dark/03_PeriodEndIllustration_dark.webp new file mode 100644 index 0000000..cdcc5ee Binary files /dev/null and b/docs/design/dist/Dark/03_PeriodEndIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/04_LearningIllustration_dark.webp b/docs/design/dist/Dark/04_LearningIllustration_dark.webp new file mode 100644 index 0000000..9e41959 Binary files /dev/null and b/docs/design/dist/Dark/04_LearningIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/05_PrivacyIllustration_dark.webp b/docs/design/dist/Dark/05_PrivacyIllustration_dark.webp new file mode 100644 index 0000000..8b80566 Binary files /dev/null and b/docs/design/dist/Dark/05_PrivacyIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/06_NotificationPrivacyIllustration_dark.webp b/docs/design/dist/Dark/06_NotificationPrivacyIllustration_dark.webp new file mode 100644 index 0000000..c4ea64c Binary files /dev/null and b/docs/design/dist/Dark/06_NotificationPrivacyIllustration_dark.webp differ diff --git a/docs/design/dist/Dark/07_ForecastIllustration_dark.webp b/docs/design/dist/Dark/07_ForecastIllustration_dark.webp new file mode 100644 index 0000000..251a452 Binary files /dev/null and b/docs/design/dist/Dark/07_ForecastIllustration_dark.webp differ diff --git a/docs/design/dist/Light/01_WelcomeIllustration_light.webp b/docs/design/dist/Light/01_WelcomeIllustration_light.webp new file mode 100644 index 0000000..a932237 Binary files /dev/null and b/docs/design/dist/Light/01_WelcomeIllustration_light.webp differ diff --git a/docs/design/dist/Light/02_LastPeriodIllustration_light.webp b/docs/design/dist/Light/02_LastPeriodIllustration_light.webp new file mode 100644 index 0000000..7b96d79 Binary files /dev/null and b/docs/design/dist/Light/02_LastPeriodIllustration_light.webp differ diff --git a/docs/design/dist/Light/03_PeriodEndIllustration_light.webp b/docs/design/dist/Light/03_PeriodEndIllustration_light.webp new file mode 100644 index 0000000..0a5b903 Binary files /dev/null and b/docs/design/dist/Light/03_PeriodEndIllustration_light.webp differ diff --git a/docs/design/dist/Light/04_LearningIllustration_light.webp b/docs/design/dist/Light/04_LearningIllustration_light.webp new file mode 100644 index 0000000..0dfb099 Binary files /dev/null and b/docs/design/dist/Light/04_LearningIllustration_light.webp differ diff --git a/docs/design/dist/Light/05_PrivacyIllustration_light.webp b/docs/design/dist/Light/05_PrivacyIllustration_light.webp new file mode 100644 index 0000000..b72d465 Binary files /dev/null and b/docs/design/dist/Light/05_PrivacyIllustration_light.webp differ diff --git a/docs/design/dist/Light/06_NotificationPrivacyIllustration_light.webp b/docs/design/dist/Light/06_NotificationPrivacyIllustration_light.webp new file mode 100644 index 0000000..81c5c42 Binary files /dev/null and b/docs/design/dist/Light/06_NotificationPrivacyIllustration_light.webp differ diff --git a/docs/design/dist/Light/07_ForecastIllustration_light.webp b/docs/design/dist/Light/07_ForecastIllustration_light.webp new file mode 100644 index 0000000..4e3d1f9 Binary files /dev/null and b/docs/design/dist/Light/07_ForecastIllustration_light.webp differ diff --git a/docs/design/dist/README.md b/docs/design/dist/README.md index ee82da1..3f1a5e7 100644 --- a/docs/design/dist/README.md +++ b/docs/design/dist/README.md @@ -1,55 +1,76 @@ -# Onboarding concept cards +# Onboarding illustrations — the decided direction ``` Status: Current Owner: _null Last reviewed: 2026-08-18 -Governs: docs/design/dist/** — the onboarding concept set and what it is for -Review trigger: Any concept set added or replaced here; the onboarding artwork +Governs: docs/design/dist/** — the onboarding illustration set and what it is for +Review trigger: Any illustration added or replaced here; the onboarding artwork in issue #29 landing in the app ``` -> **These are references, not assets.** Nothing in this folder ships in the APK. -> They are the decided *direction* for onboarding, drawn from -> [`../BRAND_GUIDE.md`](../BRAND_GUIDE.md) §22's master prompt, and the vectors -> that eventually ship are drawn *from* them. +> **References, not shipping assets.** Nothing in this folder goes in the APK. +> These are the decided direction for onboarding, drawn from +> [`../BRAND_GUIDE.md`](../BRAND_GUIDE.md) §22's master prompt. The vectors that +> eventually ship are drawn *from* these. -Seven cards, one per onboarding step, numbered to match the steps in -`app/src/main/kotlin/dev/privacyllc/period/feature/onboarding/OnboardingScreen.kt`: +Seven illustrations in a matched light/dark pair, named for the composables they +replace in +[`../../../core/designsystem/src/main/kotlin/dev/privacyllc/period/designsystem/art/Illustrations.kt`](../../../core/designsystem/src/main/kotlin/dev/privacyllc/period/designsystem/art/Illustrations.kt): -| File | Step | Composable | +| File stem | Onboarding step | Composable | | --- | --- | --- | -| `onboarding-01-welcome.webp` | 1 | `Welcome` | -| `onboarding-02-last-period-start.webp` | 2 | `LastPeriod` | -| `onboarding-03-period-end.webp` | 3 | `PeriodEnd` | -| `onboarding-04-previous-history.webp` | 4 | `PreviousHistory` | -| `onboarding-05-privacy-promise.webp` | 5 | `PrivacyPromise` | -| `onboarding-06-reminder-privacy.webp` | 6 | `NotificationPrivacyStep` | -| `onboarding-07-first-forecast.webp` | 7 | `FirstForecast` | +| `01_WelcomeIllustration` | 1 Welcome | `WelcomeIllustration` | +| `02_LastPeriodIllustration` | 2 Last period start | *new* | +| `03_PeriodEndIllustration` | 3 Period end | *new* | +| `04_LearningIllustration` | 4 Previous history | `LearningIllustration` | +| `05_PrivacyIllustration` | 5 Privacy promise | `PrivacyIllustration` | +| `06_NotificationPrivacyIllustration` | 6 Reminder privacy | *new* | +| `07_ForecastIllustration` | 7 First forecast | *new* | -## Why they are not the shipping assets +Each stem exists as `Light/_light.webp` and `Dark/_dark.webp`, at +**identical dimensions per card**, so a theme switch swaps the image without +moving the layout. -Recorded here so nobody drops them into `res/drawable` and calls #29 done. The -full argument, with evidence, is in the comment on that issue. +## What these got right, and why it is worth not undoing -- **They are raster.** The set is 340 KB as WebP; it was 12 MB as PNG, against a - 1.9 MB release APK. §42 asks for Compose vector paths or `VectorDrawable`. -- **The titles and subtitles are painted into the pixels**, and the app already - renders all seven itself through `Heading(...)`. Used as-is, every title - appears twice — and baked text cannot be translated, cannot scale with the - user's font size, and is invisible to TalkBack. -- **They are light mode only.** `BRAND_GUIDE.md` §22 names the dark palette, and - [`../README.md`](../README.md) requires a light/dark preview pair per screen. - A vector set recolours from theme tokens; a raster set has to be drawn twice. -- **Card 7 shows a fertile window and ovulation**, which the first-forecast - screen deliberately does not — on a fresh install it shows confidence Low and - Today reads "Not enough history to estimate". That conflict is a product - decision to settle before anything is drawn, not a detail to fix in the art. +Each of these was a correction during review, and every one of them would be easy +to reintroduce by regenerating carelessly: -## Provenance and format +- **No text of any kind is painted into the pixels.** The app renders all seven + titles and subtitles itself through `Heading(...)` in `OnboardingScreen.kt`. + Art carrying its own title prints every heading twice, cannot be translated, + cannot scale with the user's font size, and is invisible to TalkBack. +- **No step-number badge.** `LearningIllustration` is not only onboarding step 4 + — it is also the Insights empty state, where a "4" means nothing. Baked numbers + also freeze the running order, and this flow has already changed shape once. A + step indicator, if wanted, belongs in live UI where TalkBack can read it. +- **`07_Forecast` shows a calendar and a cycle arc, and names no fields.** An + earlier draft drew a forecast panel listing *Fertile window* and *Ovulation*, + which the real first-forecast screen deliberately does not show — on a fresh + install it reports confidence Low and Today reads "Not enough history to + estimate". A later draft named the correct fields but painted *Confidence — + Low* permanently, which is wrong for anyone with a settled cycle. Naming + nothing is the only version that cannot contradict the live forecast. +- **The dark set is a real dark composition**, not the light one dimmed — the + midnight-plum ground `BRAND_GUIDE.md` §22 specifies. -Generated from `BRAND_GUIDE.md` §22's master prompt, which is the workflow that -section exists to describe. Converted from the delivered PNGs to WebP at their -original 1086×1448 — same resolution, about a fortieth of the bytes, and the -same format [`../../data/img/`](../../data/img/) already uses for the marks -privacyllc.dev renders. +## Still to do before anything ships + +Tracked as **#29**, which stays open until the app renders these: + +1. Redraw as Compose vector paths behind the existing replaceable names, taking + colour from theme tokens rather than shipping two raster sets. +2. Add the light/dark preview pair per step, per [`../README.md`](../README.md). +3. Reconcile step copy — `PRODUCT_PLAN.md` owns the screen wording. + +`EmptyStateIllustration`, the Today "nothing logged yet" state, has no card here. +Onboarding would otherwise ship real art while Today keeps a placeholder visible +in the same session. + +## Format + +WebP at the delivered resolution — 204 KB for all fourteen, against 3.4 MB as +PNG, and the same format [`../../data/img/`](../../data/img/) uses for the marks +privacyllc.dev renders. The delivery `.zip` archives are deliberately not +tracked; see [`.gitignore`](.gitignore). diff --git a/docs/design/dist/onboarding-01-welcome.webp b/docs/design/dist/onboarding-01-welcome.webp deleted file mode 100644 index bd44d4b..0000000 Binary files a/docs/design/dist/onboarding-01-welcome.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-02-last-period-start.webp b/docs/design/dist/onboarding-02-last-period-start.webp deleted file mode 100644 index d48f2ed..0000000 Binary files a/docs/design/dist/onboarding-02-last-period-start.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-03-period-end.webp b/docs/design/dist/onboarding-03-period-end.webp deleted file mode 100644 index cb36cc2..0000000 Binary files a/docs/design/dist/onboarding-03-period-end.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-04-previous-history.webp b/docs/design/dist/onboarding-04-previous-history.webp deleted file mode 100644 index 8295846..0000000 Binary files a/docs/design/dist/onboarding-04-previous-history.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-05-privacy-promise.webp b/docs/design/dist/onboarding-05-privacy-promise.webp deleted file mode 100644 index 29a30ca..0000000 Binary files a/docs/design/dist/onboarding-05-privacy-promise.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-06-reminder-privacy.webp b/docs/design/dist/onboarding-06-reminder-privacy.webp deleted file mode 100644 index 70104ba..0000000 Binary files a/docs/design/dist/onboarding-06-reminder-privacy.webp and /dev/null differ diff --git a/docs/design/dist/onboarding-07-first-forecast.webp b/docs/design/dist/onboarding-07-first-forecast.webp deleted file mode 100644 index 11ee0ff..0000000 Binary files a/docs/design/dist/onboarding-07-first-forecast.webp and /dev/null differ