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
FriendsEnablednow tracked in a separate flag (_friendsAdminEnabled). syncFriendsBtnVisibilitychecks BOTH gates (admin enabled AND not-dashboard AND not-playback).- Reconcile loop just calls
syncinstead of setting display directly. shouldHideFriendsBtnalso checkslocation.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):
/client-script/{name}endpoint sendsCache-Control: no-cache, must-revalidate— forces browser revalidation.WebInjectionServicenow 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.