-
641e6865b0
docs: bring the QA verdict back in line with what has actually been run
main
null
2026-08-21 02:32:45 -0500
-
ebe5ab8d6f
docs: record the day the archive learned to come back
null
2026-08-21 02:29:02 -0500
-
0ae92bd134
feat: let an archive come back, and refuse everything that is not one
null
2026-08-21 02:27:42 -0500
-
7910ffd05f
feat: draw the cycle history instead of listing it
null
2026-08-21 01:55:44 -0500
-
f91ba6ebe6
feat: offer the choice on screen, and say what each one means
null
2026-08-21 01:53:09 -0500
-
750fdaeb0d
feat: let the app be opened by a PIN, a fingerprint, or either
null
2026-08-21 01:47:01 -0500
-
9b2b332a98
feat: give the lock a method, and every old install the one it had
null
2026-08-21 01:32:37 -0500
-
f99197ffd5
feat: pin down which day, and let the reminder be any time
null
2026-08-21 01:09:33 -0500
-
5f6412856e
fix: tell a broken reminder apart from a quiet cycle
null
2026-08-21 01:06:13 -0500
-
cf09c7ab97
fix: apply a reminder's answer to the day it asked about
null
2026-08-21 00:20:29 -0500
-
d31bfbd0e7
fix: step back through onboarding and the erase confirmation
null
2026-08-21 00:19:35 -0500
-
b81a4fb43b
docs: stop describing a biometric key that does not exist
null
2026-08-21 00:13:01 -0500
-
f43d580cc7
fix: make a reminder arrive when the user asked for it
null
2026-08-20 22:42:09 -0500
-
65e8e574b7
fix: stop counting reminders the app could not send
null
2026-08-20 22:08:44 -0500
-
7447156cbc
docs: record the two release-blockers and the reported trap
null
2026-08-20 21:59:52 -0500
-
ff3cbe89ad
fix: let the app actually stop asking
null
2026-08-20 21:59:18 -0500
-
7f67573e8a
fix: make the lock fail towards opening, not towards a locked-out app
null
2026-08-20 21:53:51 -0500
-
a12d8e5c49
fix: give every settings page a way out
null
2026-08-20 21:49:57 -0500
-
ca7a187520
fix: make changing the PIN require knowing it
null
2026-08-20 21:35:48 -0500
-
bde6528547
fix: stop "Ended" from recording the start of a period
null
2026-08-20 21:28:47 -0500
-
b73bc85583
docs: record Batch 09, and close half the long-horizon QA gap
null
2026-08-20 16:39:30 -0500
-
866b7055f5
feat: project the next year onto the calendar, and say what it assumes
null
2026-08-20 16:38:30 -0500
-
426f5992c7
docs: separate the constants that are physiology from the ones that are tuning
null
2026-08-20 16:32:16 -0500
-
1761bf33a0
fix: account for not knowing her centre, not just her spread
null
2026-08-20 16:30:00 -0500
-
45aefbbcb6
fix: stop charging a drifting cycle for being followed correctly
null
2026-08-20 16:27:14 -0500
-
e5001fedd4
fix: set the Medium threshold to the value that was measured
null
2026-08-20 16:21:33 -0500
-
2450c9d854
fix: stop charging a woman confidence for being measured
null
2026-08-20 16:20:48 -0500
-
335d0217a8
test: measure whether the engine actually learns, and keep measuring it
null
2026-08-20 16:18:01 -0500
-
861738c4e9
fix: make the learning loop keep the samples it earns
null
2026-08-20 16:13:53 -0500
-
93ec5b7f91
ui: add discreet launcher alias
null
2026-08-20 02:37:29 -0500
-
893d061400
ui: add Play listing assets
null
2026-08-20 02:14:08 -0500
-
53e6173497
ui: fix dark welcome artwork
null
2026-08-20 01:59:30 -0500
-
25102269d9
docs: log Batch 06 closing, four new guards, and an emulator that was not mine
null
2026-08-19 22:17:42 -0500
-
6591951c8d
docs: the export's device checks are a release gate, not a memory
null
2026-08-19 22:17:01 -0500
-
9a0a644fdb
feat: export my data, as one plaintext file the user places
null
2026-08-19 22:13:07 -0500
-
4456f351ac
feat: the privacy promise appears in Settings, from one string
null
2026-08-19 22:00:06 -0500
-
d7cdf740e5
chore: hiltViewModel comes from the package that still supports it
null
2026-08-19 21:52:10 -0500
-
caf1244cf1
feat: the status bar shows this app's mark, not a framework glyph
null
2026-08-19 21:51:54 -0500
-
255808f2fc
feat: a guard that every drawable has a night twin
null
2026-08-19 21:37:43 -0500
-
5e9184f377
docs: log the app lock, and the three defects testing found
null
2026-08-19 04:05:53 -0500
-
fa1cfe5515
fix: a stray NUL byte made a Kotlin source file binary to git
null
2026-08-19 04:04:25 -0500
-
1d8d7cc688
feat: app lock, with no way to reset a forgotten PIN
null
2026-08-19 04:02:47 -0500
-
42a2d543ad
docs: log the encryption decision, the crash it uncovered, and two false greens
null
2026-08-19 03:09:26 -0500
-
17cddb2a61
docs: record why the database is not encrypted, and drop the claim that it is
null
2026-08-19 03:08:22 -0500
-
424a513336
fix: a throw in a background flow no longer kills the process
null
2026-08-19 03:06:10 -0500
-
5ff9f00f04
docs: log the screenshot capture and what the seeding taught
null
2026-08-19 01:48:44 -0500
-
e7d38bccbd
docs: eleven app screenshots, from a seeded demo history
null
2026-08-19 01:47:52 -0500
-
ba5ff3d0ed
docs: log the full-bleed hero work and what the hash check missed
null
2026-08-19 01:03:23 -0500
-
ae27ef6490
feat: full-bleed onboarding heroes, in density buckets
null
2026-08-19 01:02:06 -0500
-
b74bc4b66a
docs: onboarding illustrations recomposed for a full-bleed hero
null
2026-08-19 00:49:22 -0500
-
1f5bcfb50c
feat: the wordmark has its space, and logo and banner say so
null
2026-08-18 22:12:33 -0500
-
a1efbde973
feat: guard §45's logging rules, and stop the leak that needed no log call
null
2026-08-18 22:01:33 -0500
-
addd6c14cb
feat: the real emblem is the launcher icon
null
2026-08-18 21:37:11 -0500
-
8807951553
feat: Delete My Data, and fix a privacy option nobody could tap
null
2026-08-18 21:03:16 -0500
-
f43e1c2824
feat: the designed Settings screen, structured as §36 specifies
null
2026-08-18 20:44:15 -0500
-
928680a61a
fix: navigation labels wrapped mid-word at the largest font scale
null
2026-08-18 20:34:38 -0500
-
5fc94536fe
feat: ship the onboarding artwork in both themes
null
2026-08-18 20:25:59 -0500
-
807b8a4600
docs: add the empty-state illustration, completing the set
null
2026-08-18 20:10:19 -0500
-
081257f69c
docs: onboarding illustrations, matched light and dark
null
2026-08-18 19:53:23 -0500
-
9d2a4b2fb1
docs: add the onboarding concept cards as references, not assets
null
2026-08-18 19:28:50 -0500
-
db46335a0f
docs: record the brief the remaining art is judged against
null
2026-08-18 18:53:25 -0500
-
7f7513e7be
docs: record the minSdk emulator, and the first run at API 26
null
2026-08-18 18:07:07 -0500
-
0d280d5415
docs: a check-in needs the project UUID, not the slug
null
2026-08-18 16:35:06 -0500
-
ad085fb4ce
docs: correct 57 claims the code and tracker disagreed with
null
2026-08-18 16:33:14 -0500
-
b338380cb2
docs: log the rename, and what it deliberately left alone
null
2026-08-18 15:57:44 -0500
-
4eed14f059
chore: rename the project to Privacy: Period Tracker
null
2026-08-18 15:54:34 -0500
-
96c0e95d5c
docs: record Round 3 QA and the Batch 05 log entry
null
2026-08-18 15:33:04 -0500
-
0451fbe00a
feat: the real brand — Privacy:Period Tracker
null
2026-08-18 15:31:52 -0500
-
99dbc36802
feat: reminders that stay quiet on a lock screen
null
2026-08-18 15:26:59 -0500
-
270de7b90f
docs: log Batch 04, and a git mistake worth keeping
null
2026-08-18 15:01:28 -0500
-
418261b482
docs: a 2 is a question, not automatically a failure
null
2026-08-18 15:00:49 -0500
-
d7fe58883c
fix: restore docs/TOOLS.md, deleted by a stray test commit
null
2026-08-18 15:00:17 -0500
-
c5b3a50dbb
fix: the pre-commit hook refused every deletion-only commit
null
2026-08-18 14:59:24 -0500
-
6fc12b6c56
test: deletion-only commit (will be reverted)
null
2026-08-18 14:58:20 -0500
-
809a4317a7
chore: ignore .kotlin/, the compiler's session directory
null
2026-08-18 14:57:07 -0500
-
adfb1961ae
fix: stop committing bin/, which is build output that looks like source
null
2026-08-18 14:56:29 -0500
-
5da7c18364
feat: fertility that declines rather than stretches
null
2026-08-18 14:56:05 -0500
-
7185708547
docs: record Round 2 QA and the Batch 03 log entry
null
2026-08-18 04:05:58 -0500
-
19edf4c920
feat: Insights, and most of it is about staying quiet
null
2026-08-18 04:04:49 -0500
-
9d2d15038c
feat: calendar whose states survive greyscale
null
2026-08-18 04:01:47 -0500
-
035a9d4162
feat: two-tap period logging, and spotting that cannot reset the cycle
null
2026-08-18 03:56:52 -0500
-
afd22dddfa
feat: the Today screen and its six states, with the number as the hero
null
2026-08-18 03:50:28 -0500
-
2479a1ddf4
feat: onboarding, and the Surface that dark mode was missing
null
2026-08-18 03:44:46 -0500
-
e15c49752d
docs: name the art package by its real path so doc-claims can check it
null
2026-08-18 03:35:24 -0500
-
adaabfcec4
feat: placeholder vector artwork, and calendar markers that work in greyscale
null
2026-08-18 03:35:04 -0500
-
da529b265f
docs: log Batch 02, and the habit three pieces of work have now established
null
2026-08-18 03:17:00 -0500
-
2fe423cf47
feat: the prediction engine section 12 specifies, and it beats the baseline
null
2026-08-18 03:16:12 -0500
-
b0b4f47a67
feat: detect a probable missed period without touching the history
null
2026-08-18 03:06:38 -0500
-
eb3bebcf2f
docs: record Round 1 QA and the Batch 01 log entry
null
2026-08-18 03:01:33 -0500
-
f5e9fbe53c
feat: module boundary guard, and two API-level bugs it uncovered
null
2026-08-18 03:00:11 -0500
-
adc50751d8
feat: period CRUD end to end, and stop a double tap killing the app
null
2026-08-18 02:52:35 -0500
-
6d4592467f
feat: repository layer, and stop backfilled history fabricating accuracy figures
null
2026-08-18 02:41:05 -0500
-
8d7a7252cb
feat: DataStore-backed UserPreferences, separate from the cycle database
null
2026-08-18 02:34:47 -0500
-
67b3c45002
feat: Room database for cycle history, and the schema guard that actually works
null
2026-08-18 02:32:07 -0500
-
d03eecde31
docs: name not-yet-existing paths without backticks so doc-claims passes
null
2026-08-18 02:18:25 -0500
-
96dd878ac5
chore: adopt the project template and add the Kotlin/Compose skeleton
null
2026-08-18 02:16:47 -0500