v2.0.1 — Compatibility + admin UX polish
Drop-in upgrade from v2.0.0. No data migration. All existing badges, profiles, friends, messaging, quest state, and v2.0 cosmetics carry over untouched.
Fixed
- Jellyfin 10.11.9+ support. Adds an ABI compatibility shim that survives the removal of
IUserManager.Usersfrom the interface. Friends widget, messaging name resolution, library-completion recompute, and watch-history backfill all work again on 10.11.9 / 10.11.10. The same DLL still runs on 10.11.6, 10.11.7, and 10.11.8 — older hosts fall through to the legacyUsersproperty automatically. - Streak Freeze on multi-day gaps. Earlier releases only consumed a freeze when exactly one day was missed. A 2+ day gap silently bypassed the freeze and reset the streak, so banked freezes appeared to "persist forever." A multi-day gap now spends one freeze per missed day (up to the number banked) and backfills each, matching Duolingo's model. If you don't have enough freezes to cover the whole gap, the freezes you DO have still get spent for the days they can cover.
- Admin page testing tools default-collapsed. The "v2.0 testing tools" section no longer auto-expands on every page load — it now defaults to closed like the other admin sections. Click the summary to expand.
- Admin page: full badge grid loads on first open. A transient failure in any one of the four ancillary loads (summary / equipped / leaderboard / server-stats) was suppressing the main badge grid on initial page load, so users sometimes only saw their equipped row until they refreshed. Each ancillary load is now independent — the main grid renders as soon as its own fetch resolves.
Standalone pages (carried forward from internal v2.0 work)
The standalone HTML page endpoints first added during v2.0 development ship in this build for native client integration. Custom Jellyfin clients (mobile apps, smart-TV launchers, embedded WebViews) can now host the full Achievement Badges UI without the surrounding Jellyfin Web shell — same data, same REST API, just rendered standalone. Pass auth via ?token= and ?userId= query params and the page seeds Jellyfin Web's normal credential storage on load. Existing Jellyfin Web users see zero behavior change.
Package
- Jellyfin ABI: 10.11.0.0 (works across 10.11.6 → 10.11.10)
- Asset:
Jellyfin.Plugin.AchievementBadges_2.0.1.0.zip - Sigstore-signed + SLSA build-provenance attested.