Privacy-Period-Tracker/core
null 2479a1ddf4 feat: onboarding, and the Surface that dark mode was missing
Seven screens, §19 and §56 verbatim: welcome, last period, period end, previous
history, the privacy promise, notification privacy, first forecast. Verified end
to end on a device — the flow produces a forecast, the record persists, and a
relaunch goes straight to Today.

Three decisions with tests behind them:

  - Nothing is written until the final step. Somebody who abandons onboarding
    halfway has not asked this app to remember anything about them.
  - Notification privacy is Discreet before the user touches anything (§28), and
    Direct is last and never pre-selected. Checked on the device, not only in a
    unit test.
  - "Still going" and "I'm not sure" both mean no end date. §24: never invent
    one. The date picker refuses future dates by not offering them rather than
    by rejecting a tap it allowed.

DARK MODE WAS BROKEN FOR ALL OF BATCH 01

PeriodTheme never wrapped its content in a Surface, so every Text without an
explicit colour inherited Material's default — black — and the app background
never painted. In light mode that looked correct by accident, because dark text
on cream is what was wanted anyway. In dark mode the onboarding headings
rendered near-black on charcoal.

No test caught it and no test easily would have. It was found by opening the
app on a device and looking at it.

The Surface now lives in the theme, so a screen without a Scaffold cannot
forget, and every illustration has a light/dark preview pair. A preview is not
a test, but it is the cheapest thing that puts the failure in front of whoever
is editing the screen.

closes #16
2026-08-18 03:44:46 -05:00
..
data feat: the prediction engine section 12 specifies, and it beats the baseline 2026-08-18 03:16:12 -05:00
database feat: the prediction engine section 12 specifies, and it beats the baseline 2026-08-18 03:16:12 -05:00
datastore feat: DataStore-backed UserPreferences, separate from the cycle database 2026-08-18 02:34:47 -05:00
designsystem feat: onboarding, and the Surface that dark mode was missing 2026-08-18 03:44:46 -05:00