github ZL154/AchievementBadges_for_Jellyfin v2.0.0

latest releases: v2.3.1, v2.3.0, v2.2.0...
3 months ago

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 / EpisodesByDate counters 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 state
  • POST /Plugins/AchievementBadges/users/{userId}/powerups/use/{type} - activate a power-up
  • GET /Plugins/AchievementBadges/shop/catalog - full shop catalog
  • POST /Plugins/AchievementBadges/users/{userId}/shop/purchase - buy an item (body: {"ItemId":"..."})
  • GET /Plugins/AchievementBadges/users/{userId}/cosmetics - owned + equipped state
  • POST /Plugins/AchievementBadges/users/{userId}/cosmetics/equip - equip a cosmetic (body: {"CosmeticId":"..."})
  • POST /Plugins/AchievementBadges/users/{userId}/cosmetics/unequip?kind=... - clear a cosmetic slot
  • POST /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 type
  • ActiveXpBoostUntil: DateTimeOffset?
  • DoubleCreditPending: bool
  • StreakFreezesBanked: int
  • OwnedCosmetics: List<string>
  • EquippedThemeId / EquippedBadgeFrameId / EquippedCustomTitleId: string?
  • LifetimeScoreSpent: int
  • LastLoginBonusDate: 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.

Don't miss a new AchievementBadges_for_Jellyfin release

NewReleases is sending notifications on new releases.