Closer/app
null 368d8c455f fix(streak): gentle day-based streak with a grace day + earlier milestones
The live couple streak used a raw 48h rule that reset on any 48h gap AND
inflated the count by incrementing on every answer (several a day counted
several times). Replace with StreakCalculator.nextCount: once per calendar day,
one forgiving grace day (a single missed day still continues), reset only after
2+ missed days; skip the redundant write on a same-day answer.

Celebration milestones now include the habit-building early tiers
(1/3/7/14/30/100/365), single-sourced from StreakCalculator so the count and the
celebration can't drift; the milestone dialog handles day 1 grammatically.

Tested (StreakCountTest): same-day idempotency, consecutive, grace, reset, and
partner timezone-skew (never breaks a same-boundary streak). Existing 24
StreakCalculator tests still pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:46:14 -05:00
..
schemas fix: use sex column for Desire Sync question filtering instead of fragile ID pattern 2026-06-18 00:32:39 -05:00
src fix(streak): gentle day-based streak with a grace day + earlier milestones 2026-07-06 20:46:14 -05:00
build.gradle.kts feat(widget): Glance "Today" home-screen widget 2026-07-06 20:40:28 -05:00
proguard-rules.pro feat: settings polish, privacy strings, home partner state, proguard rules 2026-06-21 09:49:02 -05:00