Climb the Ladder: New Leaderboards, Streaks, and Push Notifications

The old leaderboard was a long scrolly list of 20 names and numbers. Today's release rebuilds it around the moments that actually mean something — finishing on the podium, climbing into a new bucket, beating the person one spot above you, defending a streak. Most of it is visible the second you open the screen. Some of it is wired through to the rest of the game so every match ends with a clear answer to 'did I get anywhere?'

The top of the board is now a podium. The three highest-ranked players sit in stepped gold/silver/bronze cards with a trophy emoji, their country flag, and (if they're Pro) the shimmer on their tier badge. The cards rise into place with a small stagger animation so the page reads as a reveal, not a dump. Ranks 4 and below scroll below the podium with the chrome scrollbar hidden and a soft fade at the bottom — it doesn't feel like an infinite list anymore.

There are three time scopes now: Daily resets at 00:00 UTC and tracks today's wins and goals. Weekly resets every Sunday 00:00 UTC and aggregates the whole week. All-time is the original board, still there. A signed-in user can also toggle Friends only as a secondary filter that scopes the active board to people they've added. Anonymous players don't appear on any board — we filter them out at the database layer, and unnamed signed-in players get a pre-game prompt the next time they start a match. 'Anonymous · PRO' rows are gone for good.

Every game now ends with an answer. If you crossed into Silver tier, the postgame leads with a 'Promoted' card before the score. If you entered the Top 100 for the first time, you get a Top 100 celebration card with a trophy and a glow. If your rank changed but you didn't cross a milestone, the reward step says 'you're #842 — ↑12 from your last match' or '8 wins from passing CrazyKid42' when there's a named rival close enough to catch. The self-pin row at the bottom of the leaderboard does the same math the next time you open the screen.

Daily Challenge picked up a streak. Each day you submit a score the chain extends; miss a day and it resets, with a one-day grace window so playing right after midnight UTC doesn't break a 30-day run. The chip shows up in the postgame for challenge games and in your profile alongside the existing win streak. There's a Sunday-night cron that snapshots the weekly board's top 100 into a permanent results table, and a chip on your profile that shows every gold/silver/bronze weekly finish you've ever earned. Long-term identity, not just this-week posturing.

Push notifications are live for web (and ready for the iOS/Android builds whenever those ship — same Firebase project, same server fan-out). Open the user menu, tap 🔔 Enable notifications, grant permission, and you're subscribed. Per-category toggles control which pushes you actually get: streak warnings, daily-ends-in-two-hours, weekly-ends-soon, friend-passed-you, lost-top-100. Defaults are conservative on purpose — streak and daily/weekly only, friend activity off — and you can turn anything on or off from the same menu without re-prompting. A nightly cron at 22:00 UTC pings anyone whose streak is about to break.

All the new infrastructure lives behind feature flags and graceful fall-throughs. If the Firebase env isn't set the Enable button just doesn't render. If the weekly cron hasn't run yet you see 'No games played this week yet — be the first!' instead of a broken board. Nothing about today's release is mandatory — your old workflow still works, the new surfaces just give you more reasons to come back tomorrow. Go look at where you stand.

← All posts