Ruled on #489 (4 Sep 2026): the ring follows the week; the milestone schedule and celebration beat stay.
What changes
- The ring's fraction becomes the week rule —
weekDay / 7, where weekDay is streak % 7, reading 7 on a closing day (streak > 0 && streak % 7 == 0). The design's own example: "5 days on a 12-day streak = 5/7 … closes every 7th day." The minimum visible notch stays.
- The badge caption goes — "{streak} of {milestone} to your {milestone}-day badge" (
streak_screen.dart, under the ring) describes a ring that no longer measures badges. The freeze line under the week strip already carries the screen's one number.
What does not change
The milestone schedule (streak_milestones.dart) and the celebration beat with its acknowledgement stay exactly as shipped — the beats reward the long haul; the ring motivates the week.
Acceptance
Landed in PR #522, which also renames MilestoneRing to StreakRing and drops nextMilestone/milestoneRingFraction — the badge-fraction rule this ticket retires, whose only callers were the caption and the fill. The schedule and the celebration path are byte-identical.
Ruled on #489 (4 Sep 2026): the ring follows the week; the milestone schedule and celebration beat stay.
What changes
weekDay / 7, whereweekDayisstreak % 7, reading 7 on a closing day (streak > 0 && streak % 7 == 0). The design's own example: "5 days on a 12-day streak = 5/7 … closes every 7th day." The minimum visible notch stays.streak_screen.dart, under the ring) describes a ring that no longer measures badges. The freeze line under the week strip already carries the screen's one number.What does not change
The milestone schedule (
streak_milestones.dart) and the celebration beat with its acknowledgement stay exactly as shipped — the beats reward the long haul; the ring motivates the week.Acceptance
streak_week_ring_test.dart, plus the screen's own two tests at 7 and 8streak_screen_test.dart"only the fill wraps"Landed in PR #522, which also renames
MilestoneRingtoStreakRingand dropsnextMilestone/milestoneRingFraction— the badge-fraction rule this ticket retires, whose only callers were the caption and the fill. The schedule and the celebration path are byte-identical.