[G10] Give the day streak a proper place
Split out of [G4] Profile progression display (post_01m1f97kavexyrvzpq7xtzx1qm), whose last scope bullet — "the existing day streak is already displayed but under-exposed, give it a proper place here" — was not delivered.
Verified on main (2026-09-03): StreakBadge.svelte has not been touched since PR #168, well before any gamification work, and it was already rendered in ProfileView before [G1] merged. G4 changed nothing about its exposure. If anything it made it relatively less prominent, since LevelBadge now sits right beside it in the same three places (profile header, review author line, comment author line).
What actually needs deciding
"A proper place" was never defined, and that is the real work here — the code change is small once the answer exists. Open questions:
- Where does a streak belong? Beside the pseudonym is where it lives today, competing with the level badge for the same spot. Candidates: its own block on the profile (next to
LevelCard), a line on the home page, or something in the media flow where the streak is actually earned. - What does it say? Today it is a bare day count. A streak is about today: whether it is still alive, and what keeps it alive. "12 jours" answers neither.
- Does it stay on reviews and comments? It rides along with the author line everywhere the level does. That may be one place too many now that both exist.
Constraints, non-negotiable
- No loss pressure. The streak is displayed; its loss is never notified, there is no streak-freeze token, and nothing may be built whose purpose is to bring the user back. Giving the streak a bigger place must not turn into a countdown that pressures.
- Whatever ships must respect the same visibility rules the streak already follows — see
withStreakDays()inapps/api/src/stats/streak.util.ts, which refuses to attach a streak to an anonymised (Figurant) pseudonym. - [G6] already animates the badge on increase only (a decrease updates silently, never announced). Build on that; do not add a second animation path.
Worth knowing before designing this
The streak is currently episode-only — fetchStreaksByUser reads EpisodeWatch and nothing else, so reading a book or finishing a game does not keep it alive. Logan's stated intent (2026-09-03) is that it should eventually count every domain, which needs a per-domain "significant day" signal that does not exist yet: BookEntry.currentPage and GameEntry.playtimeMinutes are running totals with no session history. Giving the streak more prominence while it silently ignores three domains would make that gap much more visible. That may make this ticket depend on session tracking, or may argue for fixing the signal first.
0 Comments
Sign in to comment
No comments yet. Be the first to share your thoughts!
