add habit leveling/XP system, explicit fail marking for missed habits, and scrollable habit tabs
- Habits and the account now accumulate XP and levels from check streaks, with streak/level-up celebration banners and push notifications. - The "yesterday missed" banner on /today now lets a habit be explicitly marked failed (not just checked done), backed by a new HabitLog.status column so completion-rate/streak calculations never count a failed day as done. - The habit management tabs scroll horizontally on narrow screens instead of wrapping to two lines, with a pure-CSS edge shadow indicating more content.
This commit is contained in:
@@ -17,6 +17,16 @@ def is_milestone_streak(streak: int) -> bool:
|
||||
return streak in MILESTONE_STREAKS
|
||||
|
||||
|
||||
def level_tier_emoji(level: int) -> str:
|
||||
if level >= 20:
|
||||
return "💎"
|
||||
if level >= 10:
|
||||
return "⭐"
|
||||
if level >= 5:
|
||||
return "🔥"
|
||||
return "🌱"
|
||||
|
||||
|
||||
def weekday_label(mask: int) -> str:
|
||||
if mask == ALL_WEEKDAYS_MASK:
|
||||
return "매일"
|
||||
|
||||
Reference in New Issue
Block a user