github ZL154/AchievementBadges_for_Jellyfin v1.7.12
v1.7.12 - force-hide CSS + friends visibility conflict + cache-busting

latest releases: v2.4.0, v2.3.1, v2.3.0...
5 months ago

What I actually fixed this time

🏆 Force-hide — CSS double-safety

The 250 ms watchdog was removing the DOM but some stale inline script was re-creating it between sweeps. Now removeShowcaseDom() also installs a <style> tag with

#ab-sidebar-showcase, #ab-header-badges { display: none !important; visibility: hidden !important; }

So even if the DOM does come back, it's invisible. The tag is removed when the showcase is re-enabled.

👥 Friends button conflict

v1.7.11's 15-second reconcile was setting btn.style.display = '' every tick, which undid the dashboard/playback auto-hide logic — button kept reappearing on admin pages.

Fix:

  • Admin's FriendsEnabled now tracked in a separate flag (_friendsAdminEnabled).
  • syncFriendsBtnVisibility checks BOTH gates (admin enabled AND not-dashboard AND not-playback).
  • Reconcile loop just calls sync instead of setting display directly.
  • shouldHideFriendsBtn also checks location.pathname — Jellyfin's config pages live at /web/ConfigurationPage, not pure hashes.

⚙️ Simple friends mode — tabs actually hide now

Requests + Find tabs were conditionally rendered at mount time. Toggling simple mode at runtime left the old buttons around until a refresh.

Fix: tabs always rendered with a data-ab-hide-in-simple attribute, toggled via display:none when simple mode flips. If the active tab was Requests/Find when simple mode came on, drops back to Friends.

💾 Cache-busting — fixes "STILL broken after update"

Every recent release hit the same pattern: user updates the plugin, reports "STILL broken". Root cause was browsers serving pre-update JS from disk cache.

Fix (two layers):

  1. /client-script/{name} endpoint sends Cache-Control: no-cache, must-revalidate — forces browser revalidation.
  2. WebInjectionService now appends ?v=<plugin-version> to every injected script URL. On every plugin upgrade the URL changes, so the browser treats it as a different resource and fetches fresh.

MD5: DA9FF9086D6C8323EDC2C50A1267FFCC

If this one still doesn't fix your force-hide, please do one hard refresh (Ctrl+Shift+R) after install — your browser may have the pre-v1.7.12 sidebar.js cached. The cache-bust only takes effect on future upgrades.

Don't miss a new AchievementBadges_for_Jellyfin release

NewReleases is sending notifications on new releases.