From e8de28b335952398431bb09f3bb42445828f3990 Mon Sep 17 00:00:00 2001 From: dodo-md Date: Sat, 12 Sep 2026 22:22:20 +0300 Subject: [PATCH 1/3] gh-15387: Fix #writeToDom crash when mod has checkbox preferences --- src/zen/mods/ZenMods.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zen/mods/ZenMods.mjs b/src/zen/mods/ZenMods.mjs index 11c002bfed..6c48a96403 100644 --- a/src/zen/mods/ZenMods.mjs +++ b/src/zen/mods/ZenMods.mjs @@ -187,7 +187,7 @@ class nsZenMods extends nsZenPreloadedFeature { type, sanitizedProperty: property?.replaceAll(DOT_RE, "-"), value: - enabled === undefined || enabled + (enabled === undefined || enabled) && type !== "checkbox" ? Services.prefs.getStringPref(property, "") : "", })), From 02cb590748fdc7347694f174a532af381e55fe87 Mon Sep 17 00:00:00 2001 From: dodo-md Date: Sun, 13 Sep 2026 14:34:01 +0300 Subject: [PATCH 2/3] gh-15387: Fetch boolean value for checkbox preferences in #writeToDom --- src/zen/mods/ZenMods.mjs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/zen/mods/ZenMods.mjs b/src/zen/mods/ZenMods.mjs index 6c48a96403..94b38588ed 100644 --- a/src/zen/mods/ZenMods.mjs +++ b/src/zen/mods/ZenMods.mjs @@ -187,9 +187,13 @@ class nsZenMods extends nsZenPreloadedFeature { type, sanitizedProperty: property?.replaceAll(DOT_RE, "-"), value: - (enabled === undefined || enabled) && type !== "checkbox" - ? Services.prefs.getStringPref(property, "") - : "", + enabled === undefined || enabled + ? type === "checkbox" + ? Services.prefs.getBoolPref(property, false) + : Services.prefs.getStringPref(property, "") + : type === "checkbox" + ? false + : "", })), }) ); From 0d3f046ba778abb88401d6da876b561e9700bba0 Mon Sep 17 00:00:00 2001 From: dodo-md Date: Sun, 13 Sep 2026 14:54:22 +0300 Subject: [PATCH 3/3] gh-15387: Flatten nested ternary when reading mod preference values --- src/zen/mods/ZenMods.mjs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/zen/mods/ZenMods.mjs b/src/zen/mods/ZenMods.mjs index 94b38588ed..a836f483a2 100644 --- a/src/zen/mods/ZenMods.mjs +++ b/src/zen/mods/ZenMods.mjs @@ -182,19 +182,21 @@ class nsZenMods extends nsZenPreloadedFeature { ({ enabled, preferences, name }) => ({ enabled, sanitizedName: this.sanitizeModName(name), - prefs: preferences.map(({ property, type }) => ({ - property, - type, - sanitizedProperty: property?.replaceAll(DOT_RE, "-"), - value: - enabled === undefined || enabled - ? type === "checkbox" - ? Services.prefs.getBoolPref(property, false) - : Services.prefs.getStringPref(property, "") - : type === "checkbox" - ? false - : "", - })), + prefs: preferences.map(({ property, type }) => { + const isEnabled = enabled === undefined || enabled; + const getPref = + type === "checkbox" + ? Services.prefs.getBoolPref + : Services.prefs.getStringPref; + const fallback = type === "checkbox" ? false : ""; + + return { + property, + type, + sanitizedProperty: property?.replaceAll(DOT_RE, "-"), + value: isEnabled ? getPref(property, fallback) : fallback, + }; + }), }) );