Anki add-on: Friends Leaderboard - Scores, Streaks & Achievements

Turn your daily reviews into a friendly competition. Friends Leaderboard adds a private, friends-only scoreboard right inside Anki's deck browser, plus a full motivation layer - levels, achievement badges, a daily goal, streak nudges, and a weekly recap - all computed from your own review history. Built for small groups (friends, classmates, study partners) on Anki Desktop. Studying on AnkiMobile/iPad counts automatically once it syncs to your desktop. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ THE LEADERBOARD ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Renders in the deck browser - no separate window to open. • Day / Week / Month / All-time filters. • Ranked table with gold/silver/bronze medals for the top three. • Your own row is pinned and highlighted, with per-row review counts. • A live current-streak flame and a footer with today's points. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SCORING ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ You earn points for completing reviews. A scoring event is the first non-"Again" answer a card gets on a given day, worth base × answer × performance: • Base by card maturity - New/Learning 0.7, Young 1.0, Mature (≥21d) 1.2 • Button - Again 0 (no event), Hard ×0.5, Good ×1.0, Easy ×1.1 • Performance - your card ease, clamped to 0.7–1.3 • Daily bonus - 5 × √(events), ×1.5 if you clear every due + new card • A day with ≥50 points keeps your streak alive. The in-app "How Scoring Works" screen is generated from the live engine, so it can never drift from the real math. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ MOTIVATION & ACHIEVEMENTS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • Levels & XP - earn levels from lifetime points, with titles from Novice all the way to Grandmaster of Recall. Your level shows on the leaderboard. • 16 achievement badges - streaks (7/30/100/365 days), card milestones (1k/10k/50k), big days, perfect weeks, comebacks, and more. Your rarest earned badge appears next to your name on the board. • Daily goal ring - set a points target and watch a progress ring fill in. • Streak-at-risk banner - a gentle nudge when today's streak isn't safe yet, turning urgent in the evening. • Weekly recap - a once-a-week summary of your points, days completed, best day, and badges earned. • 🏆 My Progress screen - level + XP bar, the full badge shelf, a GitHub-style study heatmap, and your weekly recap. Open it from the trophy button on the board or Tools → Friends Leaderboard → My Progress. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PRIVACY ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ All scoring happens locally. The server only ever receives small aggregate numbers (per-day points, streak, review count, your level, and one badge). Card content, deck names, note text, and your raw review history never leave your computer. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ GETTING STARTED ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Install and restart Anki. You'll be asked to pick a username. You get a friend code (e.g. ABCD-1234). Share it with friends. Add friends by their code: Tools → Friends Leaderboard → Friends → Add Friend. That's it — your leaderboard appears in the deck browser. Use Export/Import Identity (My Code tab) to reuse the same account across multiple computers. Note: this add-on connects to a small shared server for a private friend group. It is meant to be used with people you've shared the friend code with. Requirements: Anki Desktop (recent Qt6 builds). Found a bug or have a feature idea? Reach out to the person who shared this with you. What's new in this version (paste into the changelog/version-notes field) v2 — Motivation update • Levels & XP with titles (Novice → Grandmaster of Recall); your level now shows on the board. • 16 achievement badges; your rarest earned badge appears next to your name. • Daily goal ring on the board with a settable points target. • Streak-at-risk nudge so you don't lose a streak by accident. • Weekly recap summary. • New 🏆 My Progress screen: level + XP, full badge shelf, study heatmap, weekly recap. • Privacy unchanged - only your level and one badge slug are added to the data sent.