From 95fffb089e04ac2023b2a175267d801260098017 Mon Sep 17 00:00:00 2001 From: HighImKevin Date: Wed, 23 Sep 2026 05:41:56 -0400 Subject: [PATCH] Prevent user home screen preferences from being overwritten --- .../homeScreen-user-configuration.js | 4 ++++ scripts/homeScreenSectionConfigure.js | 20 ++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/configuration/homeScreen-user-configuration.js b/configuration/homeScreen-user-configuration.js index f84fe79..a73c77c 100644 --- a/configuration/homeScreen-user-configuration.js +++ b/configuration/homeScreen-user-configuration.js @@ -201,6 +201,10 @@ } function appendBoolPrefField(fields, value, serverValue) { + if (value === undefined) { + fields.push(''); + return; + } const normalized = value === true; const serverNormalized = serverValue === true; fields.push(normalized === serverNormalized ? '' : (normalized ? 'true' : 'false')); diff --git a/scripts/homeScreenSectionConfigure.js b/scripts/homeScreenSectionConfigure.js index 6047e3e..eec0c81 100644 --- a/scripts/homeScreenSectionConfigure.js +++ b/scripts/homeScreenSectionConfigure.js @@ -398,7 +398,7 @@ const renderMode = defaults.renderMode || 'Normal'; cfg.renderMode = renderMode; cfg.spotlight = renderMode === 'Spotlight'; - cfg.order = defaults.order; + // Keep cfg.order — restore should not move the section on the page cfg.ttl = defaults.ttl; cfg.cardFormat = defaults.cardFormat; cfg.cardTitlePosition = defaults.cardTitlePosition; @@ -542,7 +542,11 @@ async function restoreSectionToServerDefaults(entry, serverDefaults) { const defaults = serverDefaults || entry.serverDefaults || {}; + const preservedOrder = entry.effectiveConfig?.order; applyServerDefaultsToConfig(entry.effectiveConfig, defaults); + if (preservedOrder != null) { + entry.effectiveConfig.order = preservedOrder; + } pendingSaves.delete(entry.sectionId); clearTimeout(saveTimeout); @@ -562,19 +566,17 @@ }); pendingSaves.clear(); } - const storedId = resolveStoredSectionPrefId(entry.sectionId, entry.effectiveConfig); - homeScreen.sections = (homeScreen.sections || []).filter( - (s) => api.parseSectionPrefString?.(s)?.id !== storedId + const prefStr = api.serializeSectionPref( + resolveStoredSectionPrefId(entry.sectionId, entry.effectiveConfig), + entry.effectiveConfig.enabled !== false, + buildPrefOverrides(entry.effectiveConfig), + defaults ); + homeScreen = api.upsertSectionPref(homeScreen, prefStr); pendingHomeScreen = homeScreen; await api.saveKefinTweaksHomeScreen(homeScreen); pendingHomeScreen = null; - if (entry.element && defaults.order != null) { - entry.element.style.order = defaults.order; - entry.element.dataset.order = String(defaults.order); - } - applyPresentationToElement(entry); rerenderSection(entry); closePopover();