diff --git a/docs/DOC_TRUST_MAP.md b/docs/DOC_TRUST_MAP.md index 1c4429e..e42d37f 100644 --- a/docs/DOC_TRUST_MAP.md +++ b/docs/DOC_TRUST_MAP.md @@ -81,7 +81,7 @@ Where the two disagree, `PRODUCT_PLAN.md` is the specification and | `docs/planning/` | `PRODUCT_PLAN` — the V1 specification. `PROJECT_PLAN` — the vision. Neither is the schedule; that is the tracker. | | `docs/qa/` | `ClaudeQAPlan` (playbook, passes A–H), `ClaudeQACoverage` (what each pass reached), `ClaudeReport` (the verdict) | | `docs/architecture/` | modules, boundaries, data shapes, the migration table; `GUARDS.md`; `githooks/README.md` | -| `docs/design/` | `README.md` — tone, the four rules that settle arguments, and which specification sections own each surface. `BRAND_GUIDE.md` — the owner-supplied visual identity, which outranks `PRODUCT_PLAN.md` §39 on colour. `brand/` — the owner's source art, including the emblem the launcher icon is cut from. `dist/` — the onboarding illustration sources, and `splash.png`, the lockup `docs/data/img/logo.webp` and `banner.webp` are generated from | +| `docs/design/` | `README.md` — tone, the four rules that settle arguments, and which specification sections own each surface. `BRAND_GUIDE.md` — the owner-supplied visual identity, which outranks `PRODUCT_PLAN.md` §39 on colour. `brand/` — the owner's source art, including the emblem the launcher icon is cut from. `dist/` — the onboarding illustration sources, and `splash.webp`, the lockup `docs/data/img/logo.webp` and `banner.webp` are generated from. `screenshots/` — captured app screenshots, for the product page on privacyllc.dev and the Play listing | | `docs/security/` | `SECURITY` — threat model, the advertising boundary, logging rules. `SECURITY_CHECKLIST` — the pre-release list | | `docs/history/` | `DEVELOPMENT_LOG` (dated, append-only), `HISTORY` (decisions and their reasons), `BATCH_LEDGER` (archived) | | `docs/data/` | `README.md` — the rule, and why this folder cannot be exempted. `img/README.md` — the three required names, their dimensions and the 512 KB ceiling. `img/icon.webp`, `img/logo.webp`, `img/banner.webp` — the marks privacyllc.dev renders | diff --git a/docs/design/README.md b/docs/design/README.md index 8039595..beb2d65 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -232,7 +232,13 @@ shipping in the app. [`dist/`](dist/) holds the sources and the reasoning — no text painted into the pixels, no step numbers, and a forecast illustration that names no fields so it cannot contradict the live one beside it. -The art still outstanding is tracked as issues #30 to #32, not listed here. +The art still outstanding is tracked as issues #31, #32 and #44, not listed here. + +**Screenshots of the running app live in [`screenshots/`](screenshots/)** — +eleven frames from a seeded demo history, for the product page on privacyllc.dev +and for the Play listing. Its README carries the seeded dates, the capture +recipe, and the rules every frame has to satisfy; the first of those is that a +screenshot of a period tracker is a screenshot of health data. The visual language is deliberately narrow — **overlapping circular forms** and nothing else. §42's forbidden list (blood drops, tampons, pads, uterus imagery, diff --git a/docs/design/screenshots/01-onboarding-welcome.webp b/docs/design/screenshots/01-onboarding-welcome.webp new file mode 100644 index 0000000..ba304e2 Binary files /dev/null and b/docs/design/screenshots/01-onboarding-welcome.webp differ diff --git a/docs/design/screenshots/02-onboarding-last-period.webp b/docs/design/screenshots/02-onboarding-last-period.webp new file mode 100644 index 0000000..8f0f122 Binary files /dev/null and b/docs/design/screenshots/02-onboarding-last-period.webp differ diff --git a/docs/design/screenshots/03-onboarding-period-end.webp b/docs/design/screenshots/03-onboarding-period-end.webp new file mode 100644 index 0000000..a34cbda Binary files /dev/null and b/docs/design/screenshots/03-onboarding-period-end.webp differ diff --git a/docs/design/screenshots/04-onboarding-history.webp b/docs/design/screenshots/04-onboarding-history.webp new file mode 100644 index 0000000..d69666b Binary files /dev/null and b/docs/design/screenshots/04-onboarding-history.webp differ diff --git a/docs/design/screenshots/05-privacy-promise.webp b/docs/design/screenshots/05-privacy-promise.webp new file mode 100644 index 0000000..1e39c95 Binary files /dev/null and b/docs/design/screenshots/05-privacy-promise.webp differ diff --git a/docs/design/screenshots/06-reminder-privacy.webp b/docs/design/screenshots/06-reminder-privacy.webp new file mode 100644 index 0000000..bf43212 Binary files /dev/null and b/docs/design/screenshots/06-reminder-privacy.webp differ diff --git a/docs/design/screenshots/07-first-forecast.webp b/docs/design/screenshots/07-first-forecast.webp new file mode 100644 index 0000000..72195a3 Binary files /dev/null and b/docs/design/screenshots/07-first-forecast.webp differ diff --git a/docs/design/screenshots/08-today-forecast.webp b/docs/design/screenshots/08-today-forecast.webp new file mode 100644 index 0000000..cc926fe Binary files /dev/null and b/docs/design/screenshots/08-today-forecast.webp differ diff --git a/docs/design/screenshots/09-calendar.webp b/docs/design/screenshots/09-calendar.webp new file mode 100644 index 0000000..bb6abc7 Binary files /dev/null and b/docs/design/screenshots/09-calendar.webp differ diff --git a/docs/design/screenshots/10-insights.webp b/docs/design/screenshots/10-insights.webp new file mode 100644 index 0000000..86c9cb3 Binary files /dev/null and b/docs/design/screenshots/10-insights.webp differ diff --git a/docs/design/screenshots/11-settings-privacy.webp b/docs/design/screenshots/11-settings-privacy.webp new file mode 100644 index 0000000..507762b Binary files /dev/null and b/docs/design/screenshots/11-settings-privacy.webp differ diff --git a/docs/design/screenshots/README.md b/docs/design/screenshots/README.md new file mode 100644 index 0000000..6500137 --- /dev/null +++ b/docs/design/screenshots/README.md @@ -0,0 +1,98 @@ +# App screenshots + +``` +Status: Current +Owner: _null +Last reviewed: 2026-08-19 +Governs: docs/design/screenshots/** — the captured app screenshots and the state + they were taken from +Review trigger: Any screen in the set changing enough that its shot is no longer + what the app looks like; any new screen worth showing +``` + +> Eleven frames of the real app, captured from a **seeded demo history**. They +> exist for the product page on privacyllc.dev, where every other Privacy LLC +> product already has a captioned portrait gallery and this one has no page at +> all. The same frames are the phone screenshots [issue #32](https://dream.scheller.ltd/null/Privacy-Period-Tracker/issues/32) +> needs for the Play listing. + +## The set, in gallery order + +| File | Screen | Suggested caption | +| --- | --- | --- | +| `01-onboarding-welcome.webp` | Onboarding, step 1 | Full-bleed artwork and a plain promise | +| `02-onboarding-last-period.webp` | Onboarding, step 2 | One date to begin with | +| `03-onboarding-period-end.webp` | Onboarding, step 3 | "Still going" and "I'm not sure" are real answers | +| `04-onboarding-history.webp` | Onboarding, step 4 | Earlier dates make the first forecast better | +| `05-privacy-promise.webp` | Onboarding, step 5 | Your cycle belongs to you | +| `06-reminder-privacy.webp` | Onboarding, step 6 | You choose what a reminder says | +| `07-first-forecast.webp` | Onboarding, step 7 | A window and a confidence, never a bare date | +| `08-today-forecast.webp` | Today | The forecast, and what it will not claim | +| `09-calendar.webp` | Calendar | States that differ in shape, not colour | +| `10-insights.webp` | Insights | Learned from your history, and says how much | +| `11-settings-privacy.webp` | Settings | Delete my data, and it means it | + +The site's other product pages run six or seven images. If the gallery takes +seven, **05, 06, 08, 09, 10, 11 and 01** are the set — those carry the argument. +02, 03 and 04 are the data-entry steps and are the first to drop. + +## The state they were captured from + +Six invented period starts — **8 March, 5 April, 3 May, 31 May, 28 June and +26 July 2026** — giving cycle gaps of 28, 29, 28, 28 and 29 days. On a device +clock of 19 August 2026 that is cycle day 25, and the engine earns *period likely +in 4 days, most likely 23 August, expected 22–24 August, confidence High*. + +**Nothing here is real data.** That is not a nicety: a screenshot of a period +tracker is a screenshot of health data, and #32 says so in as many words. + +Today was reshot once. The first seeding put the capture day *on* the estimated +ovulation date, so the hero read "estimated ovulation in 0 days" — true, and a +poor lead for a gallery. Shifting the history ten days earlier gives the period +countdown instead, which is the screen the app is built around. + +## Reproducing them + +Light mode throughout: it matches the site's light aesthetic, and it avoids #44, +where dark mode's Welcome illustration is still a forecast scene. + +The status bar is SysUI demo mode, so all eleven are identical — 9:30, wifi, full +battery, nothing else: + +```bash +adb shell settings put global sysui_demo_allowed 1 +adb shell am broadcast -a com.android.systemui.demo -e command enter +adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 0930 +adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4 -e fully true +adb shell am broadcast -a com.android.systemui.demo -e command network -e mobile hide +adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false +# … capture … +adb shell am broadcast -a com.android.systemui.demo -e command exit +``` + +Seeding is faster through the date picker's **text input mode** than by tapping +across months: its toggle is `content-desc="Switch to text input mode"`, and the +field then accepts `MM/DD/YYYY` typed straight in. + +## What must be true of every frame + +Each is a rule #32 states, and each was checked on this set rather than assumed: + +- **No real history.** Seed deliberately, every time. +- **Nothing in the status bar but the demo furniture.** A reminder visible in a + published screenshot is a privacy failure at scale — the top strip of all + eleven was cropped and compared in one image to confirm it. +- **No medical, diagnostic or contraceptive claim.** The not-contraception line + is visible in `08` and `09`, which is the honest direction to err in. +- **PRODUCT_PLAN.md §42's forbidden list applies**, as it does to all artwork. + +## Format + +WebP quality 86 at native 1080 × 2400, 520 KB for the set. Play's own required +sizes and counts are **confirmed in the Play Console at submission time**, not +from this file — the same rule the security checklist applies to the target-API +deadline. + +These are not the three marks privacyllc.dev renders for the project card. Those +live in [`../../data/img/`](../../data/img/) under fixed names, and that folder +says plainly that screenshots do not belong in it.