✨ New Features
- Admin: Opt-in Community Usage Analytics: A new "Usage Statistics" section on the Admin tab lets admins opt in to periodically report an anonymous snapshot (which features are toggled on, a handful of usage counts, and a couple of data-file sizes) to a public community analytics dashboard which can be found here. Off by default, three independently toggleable categories, and a live preview of the exact payload before anything is sent. #791 #788
- Calendar: Shoko Anime Source: Adds Shoko as a calendar source for anime, with a configurable AniDB episode-type filter (Episode, Special, Credits, Trailer, Parody, Other; defaults to Episodes only) and an "open in Shoko" link on calendar cards. Thanks to @Jurrer! #776 #592
- Home Videos & Photos: Quality Tags: Quality tags can now be shown on Home Videos and Photos libraries, not just Movies/Shows. Thanks to @MatrixNeoKozak! #778 #775
⚙️ Improvements
- Startup: The tag cache now builds as its own dedicated scheduled task instead of inline during startup, so a slow or stuck build shows up clearly instead of hiding under the generic startup task. Analytics reporting also fires its due-check on startup, so a version bump is reported immediately instead of waiting for the next daily run.
- Tag Cache: Switched from no-store to ETag-based conditional caching, so an unchanged tag cache now costs a lightweight 304 instead of a full multi-MB re-download on every page load. #783
🐞 Bug Fixes
- Tags: Embedded Matroska
LanguageBCP47/LanguageIETFregion tags (e.g.zh-Hans-CN) are now read directly instead of falling back to Jellyfin/FFmpeg's legacy base-language value. Thanks to @maghuro! #790 #789This bumps the tag cache schema and invalidates existing entries, so the tag cache will fully rebuild on first load after upgrading, which may take a while on larger libraries.
- Jellyseerr Search: Fixed a crash (
removeChildon a React-owned node) that could occur when typing, deleting, and retyping a query that returned no results. Thanks to @4eh5xitv6787h645ebv! #795 - Jellyseerr Search: Fixed a search-page freeze caused by a positioning fix that re-triggered its own MutationObserver in a loop, pegging the tab on any query with zero native Jellyfin matches. In-flight Seerr searches and collection lookups are now also cancelled when superseded by a newer keystroke.
- Settings: Stopped redundant
settings.jsonwrites on every load; admin status is now computed fresh server-side instead of being persisted client-side. #781 - Tag Pipeline: Fixed the search page freezing on fast typing in large libraries, from stale cards still being fetched/rendered, redundant per-card layout reflows, and the batch render loop blocking the main thread without yielding. #787
- Tags: Quality/genre/rating/language overlays no longer render on small list-row thumbnails (playlists, albums), where they overlapped each other and covered the cover art. #786
- Jellyseerr Search: Search results now reliably place after the Movies/Series row on every server language, by detecting the row via each card's
data-typeattribute instead of matching translated section titles. #784
🌍 Translations
Thanks to noob translator and @akhi07rx for Persian and Malayalam translation updates this cycle!
🛠️ Maintenance
- chore(ci)(deps): bump the github-actions group with 3 updates (#777)
Important
If you are on Jellyfin version 12, remove the existing plugin manifest and add new manifest for version 12 of the plugin
https://raw.githubusercontent.com/n00bcodr/jellyfin-plugins/main/12/manifest.json
If you are on 10.11.x, no action needed.
https://raw.githubusercontent.com/n00bcodr/jellyfin-plugins/main/10.11/manifest.json
P.S. Enjoying the plugin?
Fuel development (and my storage addiction) with a coffee!