From b97d097d5d2f6c53cc76ca4aed774daadc909ea3 Mon Sep 17 00:00:00 2001 From: HighImKevin Date: Fri, 25 Sep 2026 05:05:45 -0400 Subject: [PATCH] Improve handling of Version Preferences --- .../versionPreferences-configuration.js | 12 ++------- scripts/versionPreferences.js | 25 ++++++++----------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/configuration/versionPreferences-configuration.js b/configuration/versionPreferences-configuration.js index ed07d93..809ab21 100644 --- a/configuration/versionPreferences-configuration.js +++ b/configuration/versionPreferences-configuration.js @@ -142,9 +142,6 @@
${escapeHtml(title)}
${escapeHtml(hint)}
-
- None = sources with no matching terms in this list. It cannot be edited or deleted, but you can change its priority. -
${terms.map((term, i) => buildTermRowHTML(term, i, listKey)).join('')}
@@ -180,12 +177,7 @@ [data-name="kefin-modal-content"]:has(.kefin-vp-lists-grid) > div { height: 100% !important; } - - [data-name="kefin-modal-content"]:has(.kefin-vp-lists-grid) > div > div { - height: 100%; - } .listItem.kefin-vp-list-section { - height: calc(100% - 1.5em); align-items: start; } .kefin-vp-label-order-card { @@ -283,13 +275,13 @@
${buildListSectionHTML( 'Version Terms', - 'Resolution / quality labels (e.g. 4k, 1080p). Order is priority.', + 'Resolution / quality labels (e.g. 4k, 1080p).', 'versions', config.versions )} ${buildListSectionHTML( 'Edition Terms', - 'Edition labels (e.g. Theatrical, Director\'s Cut). Order is priority.', + 'Edition labels (e.g. Theatrical, Director\'s Cut).', 'editions', config.editions )} diff --git a/scripts/versionPreferences.js b/scripts/versionPreferences.js index 4a13d00..4414114 100644 --- a/scripts/versionPreferences.js +++ b/scripts/versionPreferences.js @@ -259,7 +259,6 @@ applyScheduled = true; requestAnimationFrame(() => { applyScheduled = false; - if (!observer) return; tryApply(); }); } @@ -287,26 +286,26 @@ return false; } - function observeForSelect() { - disconnectObserver(); + /** Long-lived document observer; gates on unbound visible details select. */ + function ensureDocumentObserver() { + if (observer) return; tryApply(); - const container = document.querySelector(CONTAINER_SELECTOR); - if (!container) { - return; - } + const root = document.body || document.documentElement; + if (!root) return; observer = new MutationObserver((mutations) => { if (isApplying) return; if (!isRelevantMutation(mutations)) return; scheduleTryApply(); }); - observer.observe(container, { childList: true, subtree: true }); + observer.observe(root, { childList: true, subtree: true }); } function onDetailsPage() { - observeForSelect(); + ensureDocumentObserver(); + tryApply(); } function init() { @@ -315,6 +314,8 @@ return; } + ensureDocumentObserver(); + window.KefinTweaksUtils.onViewPage(() => { try { onDetailsPage(); @@ -323,12 +324,6 @@ } }, { pages: ['details'] }); - window.KefinTweaksUtils.onViewPage((_view, _element, hash) => { - if (!isDetailsHash(hash)) { - disconnectObserver(); - } - }); - LOG('Initialized'); }