Privacy-Period-Tracker/app
null 035a9d4162 feat: two-tap period logging, and spotting that cannot reset the cycle
§23's path exactly: "Started period" opens a sheet, "Yes — today" closes it and
the forecast has already moved. No symptoms, no mood, no notes, no survey — §23
lists all four as things not to force, and each one is a reason somebody stops
logging at all. Confirmed on a device: two taps, then "Logged ✓ Your predictions
have been updated."

Spotting sits in the same sheet rather than behind another tap, because it is
the answer to the same question the user just asked themselves, and one more tap
is how it stops being recorded.

§25's question, and both halves of it

The paragraph that permits "was this your period or spotting?" also says not to
over-question. Both are tests: a one-day entry asks, a five-day entry does not,
and a dismissed question is not asked again for that record. Answering "Period"
is a complete answer — there is no "ask me later", which is the option that
turns one question into three.

Reclassifying deletes the period record and keeps the day as spotting, and the
test that matters asserts the FORECAST is unchanged either way. That is §25's
real requirement — spotting must not reset the cycle — and a forecast is the
only thing that can prove it. Verified on a device too: the screen went straight
back to cycle day 26 with the same 21 August forecast it had before.

§24's "Updated ✓" acknowledgement on ending a period, because a silent write
reads as a failed tap.

135 tests, all passing. ./gradlew check green.

closes #18
2026-08-18 03:56:52 -05:00
..
src feat: two-tap period logging, and spotting that cannot reset the cycle 2026-08-18 03:56:52 -05:00
build.gradle.kts feat: onboarding, and the Surface that dark mode was missing 2026-08-18 03:44:46 -05:00
proguard-rules.pro chore: adopt the project template and add the Kotlin/Compose skeleton 2026-08-18 02:16:47 -05:00