github n00bcodr/Jellyfin-Enhanced 11.5.0.0
v11.5.0.0 - Faster Tags, Weblate for translations and many more improvements!

12 hours ago

✨ New Features

  • Add a server-side tag cache that pre-computes all tag data (genres, ratings, languages, quality stream info) for every item in your library. Clients load the full cache in a single GET request on session start — tags render instantly with zero per-page API calls. #515 Huge work from @4eh5xitv6787h645ebv!
  • Add "Hide Tags on Hover" toggle (per-admin config + per-user override) so tags step back when you're interacting with a card. #515

⚙️ Improvements

  • Tag system rewritten from the ground up — 4 independent scan/fetch/queue loops consolidated into a single unified pipeline with cache-first rendering, chunked idle processing via requestIdleCallback, and progressive render. 29 body-wide MutationObserver instances collapsed into 1 shared multiplexed observer. #515

    Page Before After Improvement
    Movies Library 1502ms, 70 tags 200ms, 101 tags 87% faster
    Movie Detail 5010ms, 23 tags 803ms, 88 tags 84% faster
    TV Shows Library 1501ms, 66 tags 401ms, 97 tags 73% faster
    TV Show Detail 3030ms, 22 tags 2049ms, 96 tags 32% faster
    Metric Before After
    MutationObserver instances ~29 1 shared + 7 dedicated
    API calls per page (server cache on) 2–5 POST batches 0
    Cache build time (500 items) N/A ~3 seconds
    Cache survives server restart N/A ✅ (loads from disk instantly)
  • Language dropdown now makes 2 local API calls instead of 100+ GitHub HEAD requests on every cache miss. External dependency on raw.githubusercontent.com eliminated entirely — language selection now works offline and is immune to GitHub rate-limiting. #527 Credit to @4eh5xitv6787h645ebv!

  • Zero hover jank on tags — genre pill expansion (which triggered layout reflow on every hover) replaced with a GPU-composited floating label. Tags now use CSS containment and sit naturally behind Jellyfin's hover overlay in DOM order. #515

  • Dashboard activity icons now match localized Jellyfin activity messages across more languages using regex-based matching and normalized text, making the colored Material icon replacements far more reliable outside English.

  • Stale UseCustomTabs/UsePluginPages config flags are now automatically cleared on startup when the respective plugins are not installed, preventing silent navigation failures after uninstalling a plugin. #522

  • Add sidebar navigation for Bookmarks and full Custom Tabs support so bookmarks are reachable from all navigation modes. #523

🐞 Bug Fixes

  • Fix Reviews and Elsewhere features being unavailable to non-admin users — non-sensitive derived values were only returned by the private-config endpoint (which returns {} for non-admins). #514 #517
  • Fix Seerr failing to connect on Jellyfin 10.11.6 — a race condition where accessToken() wasn't yet available when waitForUserAndInitialize() checked for a user ID caused the Seerr init to fire with no valid token. #516 #518 Nice catch by @4eh5xitv6787h645ebv!
  • Fix language not adapting to user settings — a regression in buildLanguageChain() dropped the primary language from the fallback chain for simple codes (de, fr, es, it, etc.), causing all non-English simple languages to resolve to English only. #513 #519
  • Fix Bookmarks tab permanently empty when loaded via Plugin Pages — the page had removed its own .sections.bookmarks container and the poster click handler targeted the wrong CSS class. Also fix Delete All not persisting. #523
  • Fix non-admin users seeing the full Radarr/Sonarr download queue including content requested by other users — the GetDownloadQueue endpoint now filters to only the requesting user's items for non-admins. #524
  • Fix browsers (especially Firefox) accumulating hundreds of gigabytes in temp files from repeated avatar proxy downloads — deduplicate identical avatar requests so each URL is fetched only once. #504 Props to @4eh5xitv6787h645ebv!
  • Fix season cards showing empty placeholders for shows that lack individual season posters (e.g. long-running shows) — fall back to the show-level poster when no season artwork is available in Seerr or TMDB. #505

🌐 Translations

  • Translation contributions are now centered on Weblate, making it easier to translate in the browser and sync changes back to GitHub. https://hosted.weblate.org/projects/jellyfinenhanced/
  • Add Weblate translation badges to the README and docs so contributors can quickly find the live translation project.
  • Add a new GET /JellyfinEnhanced/locales server endpoint that enumerates available translation files directly from the plugin DLL — new locale files are now auto-detected on rebuild with no hardcoded lists to maintain. #527 Nice one, @4eh5xitv6787h645ebv!
  • Add Catalan, Basque, and Galician flag code support so those language indicators resolve correctly in the UI. #501
  • Add Czech (cs) and Slovak (sk) locale files. #521 Díky, @markrieder!
  • Fix multiple Catalan (ca) and Basque/Galician translation keys that weren't loading due to case mismatches. #506 #507 Thanks @Kisnov!

P.S. Enjoying the plugin?
Fuel development (and my storage addiction) with a coffee!

Buy Me a Coffee at ko-fi.com

Don't miss a new Jellyfin-Enhanced release

NewReleases is sending notifications on new releases.