v2.0.0 - Choose Your Loadout
Major release. The plugin transitions from a passive achievement tracker into an active progression game. Earn score by watching, spend it in the shop on power-ups + cosmetics, use them to accelerate progression.
New: Power-ups (consumable boosts)
Three types of single-use power-ups, earned via daily play or bought from the shop:
- XP Boost - doubles score gains for the next 60 minutes. Refreshes the timer if re-applied while active (no waste).
- Double Credit - your next watched item counts as +2 toward badge progress (the
TotalItemsWatched/MoviesWatched/EpisodesByDatecounters all double for that one item). - Streak Freeze - auto-protects your watch streak from one missed day. Max 1 banked.
Inventory cap of 20 per type. Manual Use button for XP Boost and Double Credit; Streak Freeze is auto-consumed by the streak calculator.
New: Score Shop
Spend earned score on:
- Power-up refills - single (50-100 score) or 3-pack bundles with a small discount
- Profile themes (5) - Default, Sunset, Cyberpunk, Pastel, Monochrome. 200-500 score.
- Badge frames (4) - Default, Gilded, Holographic, Frosted. 300-400 score.
- Custom rank titles (6) - 3 score-milestone auto-unlocks (Cinephile @ 1000, Marathoner @ 2500, Curator @ 5000) + 3 shop-only (Night Owl, Archivist, Tastemaker).
Cosmetics are equipped via the Loadout UI and persist across sessions. Score-milestone cosmetics auto-unlock when you cross the threshold - no purchase needed.
New: Daily login bonus
First >=80% real watch of each UTC day grants:
- +10 score
- 1 random power-up (XP Boost, Double Credit, or Streak Freeze)
Integrity-consistent with the v1.9.8 playback-credit gate: only real watches qualify.
New: Daily quest reroll
Don't like today's daily quest? Reroll it once per UTC day. Rerolled quests use a fresh deterministic seed so you get different picks (when the quest pool has enough variety).
New: 8 hidden / easter-egg badges
Discovered only after unlock - they don't appear in the catalog until you've earned them:
- First Anniversary - Watch on 365 separate days (Legendary)
- Late-Night Sage - 100 late-night sessions (Mythic)
- Quadruple Feature - 4 films in a single day (Epic)
- Dawn Chorus - 50 early-morning sessions (Legendary)
- Universal Watcher - 15 different genres (Legendary)
- Archivist Supreme - 100 series completed (Mythic)
- Deep Cut - items from 10 different decades (Mythic)
- Saga Marathon - single item over 5 hours (Mythic)
New REST endpoints
GET /Plugins/AchievementBadges/users/{userId}/powerups- inventory + active statePOST /Plugins/AchievementBadges/users/{userId}/powerups/use/{type}- activate a power-upGET /Plugins/AchievementBadges/shop/catalog- full shop catalogPOST /Plugins/AchievementBadges/users/{userId}/shop/purchase- buy an item (body:{"ItemId":"..."})GET /Plugins/AchievementBadges/users/{userId}/cosmetics- owned + equipped statePOST /Plugins/AchievementBadges/users/{userId}/cosmetics/equip- equip a cosmetic (body:{"CosmeticId":"..."})POST /Plugins/AchievementBadges/users/{userId}/cosmetics/unequip?kind=...- clear a cosmetic slotPOST /Plugins/AchievementBadges/users/{userId}/quests/daily/reroll- reroll today's daily quest
All audit-logged.
UI
A new "Loadout" section appears on the user-facing achievements page. It has three tabs:
- Power-ups - your inventory + Use buttons
- Shop - browse + buy power-ups and cosmetics
- Cosmetics - equip/unequip what you own
Plus a "Reroll daily quest" button at the top of the Loadout section.
Themes apply by adding a CSS class to the achievements page root (theme-sunset, theme-cyberpunk, etc.) which repaints the hero and Loadout containers via the new theme styles in styles-revamp.css.
Schema additions
UserAchievementProfile gains 12 new fields (all default-constructed, old badges.json files load cleanly):
PowerUpInventory: Dictionary<string,int>keyed by power-up typeActiveXpBoostUntil: DateTimeOffset?DoubleCreditPending: boolStreakFreezesBanked: intOwnedCosmetics: List<string>EquippedThemeId / EquippedBadgeFrameId / EquippedCustomTitleId: string?LifetimeScoreSpent: intLastLoginBonusDate: string?DailyQuestRerollsUsed / DailyQuestRerollDate
Package checksums
- MD5: see
Jellyfin.Plugin.AchievementBadges_2.0.0.0.md5 - SHA256: see
Jellyfin.Plugin.AchievementBadges_2.0.0.0.sha256
Sigstore-signed + SLSA build-provenance attested. Verify with cosign verify-blob or gh attestation verify.