Commit Graph

4 Commits

Author SHA1 Message Date
null 53e6173497 ui: fix dark welcome artwork
closes #44
2026-08-20 01:59:30 -05:00
null b74bc4b66a 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>
2026-08-19 00:49:22 -05:00
null 807b8a4600 docs: add the empty-state illustration, completing the set
EmptyStateIllustration in both themes — Today's "nothing logged yet" state, and
the one illustration the onboarding set did not cover. Without it, onboarding
would have shipped real art while Today kept a placeholder a user sees in the
same session.

Deliberately unnumbered: it is not an onboarding step. Its ring is empty because
nothing has been logged, which is the same ring the other illustrations fill with
cycle-day markers — that is what makes the empty state read as waiting rather
than broken.

Two things recorded in dist/README.md for whoever redraws these as vectors:

- The fourteen onboarding illustrations are contained cards with a rounded
  frame; these two are full-bleed with none. The frame should be consistent
  across the set or deliberately absent from all of it.
- TodayScreen.kt calls EmptyStateIllustration(color = ..., size = ...) with a
  single colour. These are full-colour drawings, so the vector version takes no
  colour parameter and that call site changes with it.

Both were checked at the 110-160 dp the illustrations are actually drawn at, by
rendering them at that size rather than assuming: the detail survives, including
the five faint dots under the ring.

WebP at delivered resolution: 312 KB for all sixteen against 6.8 MB as PNG.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 20:10:19 -05:00
null 081257f69c docs: onboarding illustrations, matched light and dark
Seven illustrations in a matched pair, replacing the single light-only concept
set added in 9d2a4b2. Named for the composables they replace, and identical in
dimensions per card so a theme switch swaps the image without moving the layout.

Three corrections happened during review and each is easy to reintroduce by
regenerating carelessly, so dist/README.md records them:

- No text painted into the pixels. The app renders all seven titles through
  Heading(...) already; art carrying its own title prints every heading twice,
  cannot be translated, cannot scale with font size, and is invisible to
  TalkBack.
- No step-number badge. LearningIllustration is also the Insights empty state,
  where a "4" means nothing, and baked numbers freeze a running order that has
  already changed once.
- 07_Forecast names no fields. One draft listed Fertile window and Ovulation,
  which the first-forecast screen deliberately withholds — on a fresh install it
  reports confidence Low and Today reads "Not enough history to estimate". A
  later draft named the right fields but painted "Confidence — Low"
  permanently, 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 rather than the light one dimmed, on the
midnight-plum ground BRAND_GUIDE.md §22 specifies.

WebP at the delivered resolution: 204 KB for all fourteen against 3.4 MB as PNG.
Delivery .zip archives are gitignored; the superseded concept set is removed and
remains recoverable at 9d2a4b2.

#29 stays open — these are references, and the vectors that ship are drawn from
them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 19:53:23 -05:00