Skip to content

The streak ring fills the week; the milestone beats stay #498

Description

@maximsan

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

  • At streak 2 the ring shows 2/7; at streak 7 it reads full; at 8 the fill starts over at 1/7 — streak_week_ring_test.dart, plus the screen's own two tests at 7 and 8
  • Only the fill wraps — the centre keeps the full count (day 10 reads "10 DAY STREAK", fill 3/7) and the freeze cadence keeps running (day 10 reads "Next freeze in 4 days") — streak_screen_test.dart "only the fill wraps"
  • The badge caption renders nowhere; the freeze line still does — same file, "the ring fills over the week, and says so nowhere else"
  • Hitting 7 days still plays the milestone celebration once — the beat and acknowledgement tests, untouched, both run at streak 7

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    design-parityCloses a finding in the app-vs-prototype divergence registerenhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions