Feature Requests
Archived
[G4] Profile progression display: level, XP and the hide setting
First user-visible surface: the level itself. Kept separate from the achievements screen ([G5]) so it can ship on its own.
Depends on: [G1] XP ledger, scoring model and level curve.
Scope
- Level and progress-to-next-level on your own profile, computed client-side from stored XP through the shared pure function.
- Level shown next to the pseudo where it makes sense (reviews, comments, profile), following the same rules as the existing streak indicator.
- Privacy rules, non-negotiable: progression derives from library and social data, so its visibility follows the target's
LIBRARY/ACTIVITYaudience per domain, and a GHOST (Figurant) shows no level and no achievements. The precedent already exists —withStreakDays()inapps/api/src/stats/streak.util.tsrefuses to attach a streak to an anonymised pseudo for exactly this reason. - User setting "hide my progression", which turns the whole surface off for that account. Separate from the
GAMIFICATION_ENABLEDinstance flag. - The existing day streak is already displayed but under-exposed — give it a proper place here.
Out of scope
Achievements grid and showcase (G5), animations (G6), leaderboard (G7).
1 Comment
Sign in to comment

Audit 2026-09-03, after this shipped in PR #181: four of the five scope bullets are delivered, the fifth is not.
Delivered and verified on main:
Not delivered: "the existing day streak is already displayed but under-exposed — give it a proper place here." StreakBadge.svelte has not been touched since PR #168, well before any gamification work, and it was already rendered in ProfileView before G1 merged. Nothing about its exposure changed. Arguably it is now relatively less prominent, since LevelBadge sits right beside it in the same three spots.
Split out to [G10] Give the day streak a proper place — post_01m1m0tvgsexyrw0jj26k6ktwh. It carries the open question ("a proper place" was never defined), the anti-loss-pressure constraint, and one thing worth knowing before designing it: the streak is still episode-only, so books, games and music do not keep it alive — making it more prominent would make that gap much more visible.