v1.4.8 - Fix live playback + Explorer library detection
Fixes
Live playback silently dropping every event
On Jellyfin 10.11, PlaybackProgressEventArgs exposes Session (SessionInfo) and Users (IReadOnlyList) — not UserId or SessionInfo as flat properties. The reflection-based extractor in v1.4.7 looked for the old names and returned null on every event, so nothing was ever recorded. Tracker now consumes the typed event args directly and uses Session.UserId with a Users[0].Id fallback.
Explorer badge stuck at 1/3 despite 3 libraries
WatchHistoryBackfillService.GetLibraryName walked item.GetParent() looking for a class literally named CollectionFolder. On 10.11 this fails for most items because the parent chain resolves through UserViews. Both backfill and the live tracker now use ILibraryManager.GetCollectionFolders(item) directly.
Live playback now feeds Explorer too
Previously PlaybackCompletionService.RecordCompletion hardcoded libraryName: null when calling the badge service, so even a working live tracker would never have contributed to UniqueLibrariesVisited. Library name now flows through end-to-end.
Upgrade
Install from the plugin catalog or drop the zip in and restart. Re-run Scan watch history once to fix any stale Explorer progress from earlier scans that saw empty library names.