docs: onboarding illustrations recomposed for a full-bleed hero
closes #39 Sixteen files, 3:2 landscape, composed natively for the wide frame rather than cropped or padded from the portrait originals. THE FIRST ATTEMPT MET THE CANVAS AND NOT THE BRIEF It reached 2048x1365 by upscaling the old portrait art ~2.8x and padding the sides with a blurred copy of itself. The sharp region was 1024x1365 — aspect 0.750 against the originals' 0.748, the same composition — and measured edge detail fell 2.1x-8.8x in the outer quarters on 15 of 16 files. At real hero size a hard seam showed around the sharp centre. This set is natively wide: real painted content to all four edges, checked by measuring detail across each image and looking for the step change a pasted rectangle leaves. None has one. A DUPLICATE THAT WOULD HAVE SHIPPED 07_Forecast dark was byte-identical to 01_Welcome dark. Light was correct, so light mode looked perfect and only dark mode showed the wrong picture, on the last onboarding step — the silent failure OnboardingPreviews.kt exists to expose and that #42 would fail a build over. Replaced; all sixteen hashes are unique. Dark 07 is 1536x1024 where the rest are 2048x1365 — the same 3:2 to within 0.02%, 274.00dp against 273.93dp at a 411dp hero, and ample resolution at every density the app ships to. The set still carries no text, no step numbers, and a forecast illustration that names no fields. Recorded in dist/README.md, along with two things deliberately left unmatched: light and dark 07 are different compositions, and eight files have a busy bottom quarter under the fade. Sources only. 4.2 MB here; the shipped copies are downscaled into density buckets, which is #41. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 331 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 380 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 325 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 272 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 249 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 246 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 296 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 275 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 229 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 277 KiB |
|
|
@ -30,8 +30,20 @@ replace in
|
||||||
| `EmptyStateIllustration` | — not onboarding | `EmptyStateIllustration` |
|
| `EmptyStateIllustration` | — not onboarding | `EmptyStateIllustration` |
|
||||||
|
|
||||||
Each stem exists as `Light/<stem>_light.webp` and `Dark/<stem>_dark.webp`, at
|
Each stem exists as `Light/<stem>_light.webp` and `Dark/<stem>_dark.webp`, at
|
||||||
**identical dimensions per card**, so a theme switch swaps the image without
|
the **same aspect ratio**, so a theme switch swaps the image without moving the
|
||||||
moving the layout.
|
layout. Fifteen are 2048 × 1365; `07_Forecast` dark is 1536 × 1024, which is the
|
||||||
|
same 3:2 to within 0.02% — 274.00 dp tall against 273.93 at a 411 dp hero.
|
||||||
|
|
||||||
|
**They are 3:2 landscape, composed for a full-bleed hero.** That is the second
|
||||||
|
attempt. The first delivery met the canvas size by upscaling the old portrait
|
||||||
|
art ~2.8× and padding the sides with a blurred copy of itself: measured edge
|
||||||
|
detail fell 2.1×–8.8× in the outer quarters on 15 of 16 files, and at real hero
|
||||||
|
size a hard seam showed around the sharp centre. The canvas was right and the
|
||||||
|
composition was still portrait.
|
||||||
|
|
||||||
|
The set here is natively wide — real painted content to all four edges, verified
|
||||||
|
by measuring detail across each image and looking for a step change that would
|
||||||
|
betray a pasted rectangle. None has one.
|
||||||
|
|
||||||
`EmptyStateIllustration` is the odd one and deliberately unnumbered: it is
|
`EmptyStateIllustration` is the odd one and deliberately unnumbered: it is
|
||||||
Today's "nothing logged yet" state, not an onboarding step, and it is also drawn
|
Today's "nothing logged yet" state, not an onboarding step, and it is also drawn
|
||||||
|
|
@ -112,7 +124,22 @@ sources rendered their rounded corners against black.
|
||||||
|
|
||||||
## Format
|
## Format
|
||||||
|
|
||||||
WebP at the delivered resolution — 312 KB for all sixteen, against 6.8 MB as
|
WebP at the delivered resolution — 4.2 MB for all sixteen, and the same format
|
||||||
PNG, and the same format [`../../data/img/`](../../data/img/) uses for the marks
|
[`../../data/img/`](../../data/img/) uses for the marks privacyllc.dev renders.
|
||||||
privacyllc.dev renders. The delivery `.zip` archives are deliberately not
|
The delivery `.zip` archives are deliberately not tracked; see
|
||||||
tracked; see [`.gitignore`](.gitignore).
|
[`.gitignore`](.gitignore).
|
||||||
|
|
||||||
|
**These are sources, not shipping assets, and the size is why that matters.** A
|
||||||
|
2048 px file dropped into a density-less `drawable/` is decoded at the device's
|
||||||
|
bucket and costs ~11 MB of heap on every device. The shipped copies are
|
||||||
|
downscaled into `drawable-*dpi` buckets — see the KDoc in `Illustrations.kt`.
|
||||||
|
|
||||||
|
## Two things left unmatched, deliberately
|
||||||
|
|
||||||
|
- **`07_Forecast` light and dark are different compositions.** Light draws a
|
||||||
|
partial ring of hollow beads; dark draws a full arc of dashed circles ending
|
||||||
|
in an arrow. Dark states "predicted" more clearly, so it is the one to copy if
|
||||||
|
they are ever reconciled — not the other way round.
|
||||||
|
- **Eight of the sixteen have a busy bottom quarter**, mostly the dark set,
|
||||||
|
where foliage and water reach into the band the fade covers. The fade still
|
||||||
|
works; it simply covers more drawing than intended.
|
||||||
|
|
|
||||||