diff --git a/patches/pref-pane/README.md b/patches/pref-pane/README.md
index f58427d..bfa5a63 100644
--- a/patches/pref-pane/README.md
+++ b/patches/pref-pane/README.md
@@ -9,3 +9,6 @@ librewolf.inc.xhtml
librewolf.js
-> browser/components/preferences/librewolf.js
+
+preferences.ftl
+-- append to --> browser/locales/en-US/browser/preferences.ftl
diff --git a/patches/pref-pane/pref-pane-original-big.patch b/patches/pref-pane/pref-pane-original-big.patch
deleted file mode 100644
index a39a2a0..0000000
--- a/patches/pref-pane/pref-pane-original-big.patch
+++ /dev/null
@@ -1,920 +0,0 @@
-From 058054ef4648971a4cf72fa5f42553786df7336a Mon Sep 17 00:00:00 2001
-From: ohfp <1813007-ohfp@users.noreply.gitlab.com>
-Date: Tue, 12 Apr 2022 11:57:53 +0200
-Subject: [PATCH] port pref-pane patch changes to gecko-dev
-
-fix xorigin pref init and handling
-
-[LW] Ask to Restart Browser if Sync Pref in LW Settings is changed
----
- browser/components/preferences/jar.mn | 1 +
- .../preferences/librewolf.inc.xhtml | 254 ++++++++++++++++
- browser/components/preferences/librewolf.js | 287 ++++++++++++++++++
- browser/components/preferences/preferences.js | 2 +
- .../components/preferences/preferences.xhtml | 13 +
- .../en-US/browser/preferences/preferences.ftl | 95 ++++++
- browser/themes/shared/jar.inc.mn | 2 +
- .../shared/preferences/category-librewolf.svg | 96 ++++++
- .../themes/shared/preferences/librewolf.css | 23 ++
- .../themes/shared/preferences/preferences.css | 4 +
- 10 files changed, 777 insertions(+)
- create mode 100644 browser/components/preferences/librewolf.inc.xhtml
- create mode 100644 browser/components/preferences/librewolf.js
- create mode 100644 browser/themes/shared/preferences/category-librewolf.svg
- create mode 100644 browser/themes/shared/preferences/librewolf.css
-
-diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
-index 2131a15ceef7..0b97dc14b42e 100644
---- a/browser/components/preferences/jar.mn
-+++ b/browser/components/preferences/jar.mn
-@@ -11,6 +11,7 @@ browser.jar:
- content/browser/preferences/home.js
- content/browser/preferences/search.js
- content/browser/preferences/privacy.js
-+ content/browser/preferences/librewolf.js
- content/browser/preferences/containers.js
- content/browser/preferences/sync.js
- content/browser/preferences/experimental.js
-diff --git a/browser/components/preferences/librewolf.inc.xhtml b/browser/components/preferences/librewolf.inc.xhtml
-new file mode 100644
-index 000000000000..c2dfea6d0858
---- /dev/null
-+++ b/browser/components/preferences/librewolf.inc.xhtml
-@@ -0,0 +1,254 @@
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/browser/components/preferences/librewolf.js b/browser/components/preferences/librewolf.js
-new file mode 100644
-index 000000000000..c8cbb075d59b
---- /dev/null
-+++ b/browser/components/preferences/librewolf.js
-@@ -0,0 +1,287 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
-+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+/* import-globals-from extensionControlled.js */
-+/* import-globals-from preferences.js */
-+
-+var { AppConstants } = ChromeUtils.import( "resource://gre/modules/AppConstants.jsm");
-+XPCOMUtils.defineLazyGetter(this, "L10n", () => {
-+ return new Localization([
-+ "branding/brand.ftl",
-+ "browser/preferences/preferences.ftl",
-+ ]);
-+});
-+
-+Preferences.addAll([
-+ // IPv6
-+ { id: "network.dns.disableIPv6", type: "bool" },
-+ // ocsp hard-fail
-+ { id: "security.OCSP.require", type: "bool" },
-+ // ocsp hard-fail
-+ { id: "identity.fxaccounts.enabled", type: "bool" },
-+ // WebGL
-+ { id: "webgl.disabled", type: "bool" },
-+ // RFP
-+ { id: "privacy.resistFingerprinting", type: "bool" },
-+ // Automatically Update Extensions
-+ { id: "extensions.update.enabled", type: "bool" },
-+ { id: "extensions.update.autoUpdateDefault", type: "bool" },
-+ // Clipboard autocopy/paste
-+ { id: "clipboard.autocopy", type: "bool" },
-+ { id: "middlemouse.paste", type: "bool" },
-+ // XOrigin referrers
-+ { id: "network.http.referer.XOriginPolicy", type: "int" },
-+ // Harden
-+ { id: "privacy.resistFingerprinting.letterboxing", type: "bool" },
-+ // Google Safe Browsing
-+ //{ id: "browser.safebrowsing.malware.enabled", type: "bool" }, // Already loaded
-+ //{ id: "browser.safebrowsing.phishing.enabled", type: "bool" },
-+ { id: "browser.safebrowsing.blockedURIs.enabled", type: "bool" },
-+ { id: "browser.safebrowsing.provider.google4.gethashURL", type: "string" },
-+ { id: "browser.safebrowsing.provider.google4.updateURL", type: "string" },
-+ { id: "browser.safebrowsing.provider.google.gethashURL", type: "string" },
-+ { id: "browser.safebrowsing.provider.google.updateURL", type: "string" },
-+ /**** Prefs that require changing a lockPref ****/
-+ // Google safe browsing check downloads
-+ //{ id: "browser.safebrowsing.downloads.enabled", type: "bool" }, //Also already added
-+ { id: "toolkit.legacyUserProfileCustomizations.stylesheets", type: "bool" },
-+ // Canvas UI when blocked
-+ {
-+ id: "privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts",
-+ type: "bool",
-+ },
-+]);
-+
-+var gLibrewolfPane = {
-+ _pane: null,
-+
-+ // called when the document is first parsed
-+ init() {
-+ this._pane = document.getElementById("paneLibrewolf");
-+
-+ // Set all event listeners on checkboxes
-+ setBoolSyncListeners(
-+ "librewolf-extension-update-checkbox",
-+ ["extensions.update.autoUpdateDefault", "extensions.update.enabled"],
-+ [true, true ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-ipv6-checkbox",
-+ ["network.dns.disableIPv6"],
-+ [false, ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-ocsp-checkbox",
-+ ["security.OCSP.require"],
-+ [true, ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-sync-checkbox",
-+ ["identity.fxaccounts.enabled"],
-+ [true, ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-autocopy-checkbox",
-+ ["clipboard.autocopy", "middlemouse.paste"],
-+ [true, true ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-styling-checkbox",
-+ ["toolkit.legacyUserProfileCustomizations.stylesheets"],
-+ [true, ],
-+ );
-+
-+ setBoolSyncListeners(
-+ "librewolf-webgl-checkbox",
-+ ["webgl.disabled"],
-+ [false ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-rfp-checkbox",
-+ ["privacy.resistFingerprinting"],
-+ [true ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-auto-decline-canvas-checkbox",
-+ ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts"],
-+ [true ],
-+ );
-+
-+ setBoolSyncListeners(
-+ "librewolf-letterboxing-checkbox",
-+ ["privacy.resistFingerprinting.letterboxing"],
-+ [true ],
-+ );
-+
-+ setSyncListeners(
-+ "librewolf-goog-safe-checkbox",
-+ [
-+ "browser.safebrowsing.malware.enabled",
-+ "browser.safebrowsing.phishing.enabled",
-+ "browser.safebrowsing.blockedURIs.enabled",
-+ "browser.safebrowsing.provider.google4.gethashURL",
-+ "browser.safebrowsing.provider.google4.updateURL",
-+ "browser.safebrowsing.provider.google.gethashURL",
-+ "browser.safebrowsing.provider.google.updateURL",
-+ ],
-+ [
-+ true,
-+ true,
-+ true,
-+ "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
-+ "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
-+ "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2",
-+ "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%",
-+ ],
-+ [
-+ false,
-+ false,
-+ false,
-+ "",
-+ "",
-+ "",
-+ "",
-+ ]
-+ );
-+
-+ setXOriginPolicySyncListeners(
-+ "librewolf-xorigin-ref-checkbox",
-+ "network.http.referer.XOriginPolicy",
-+ [1, 2],
-+ [0]
-+ );
-+
-+ // Set event listener on open profile directory button
-+ setEventListener("librewolf-open-profile", "command", openProfileDirectory);
-+ // Set event listener on open about:config button
-+ setEventListener("librewolf-config-link", "click", openAboutConfig);
-+
-+ // Notify observers that the UI is now ready
-+ Services.obs.notifyObservers(window, "librewolf-pane-loaded");
-+ },
-+};
-+
-+function setXOriginPolicySyncListeners(checkboxid, pref, onVals, offVals) {
-+ setSyncFromPrefListener(checkboxid, () => onVals.includes(getPref(pref)));
-+ setSyncToPrefListener(checkboxid, () =>
-+ writeGenericPrefs([pref], [2], [0], document.getElementById(checkboxid).checked)
-+ );
-+ Preferences.get(pref).on("change", () =>
-+ makeMasterCheckboxesReactive(checkboxid, () =>
-+ onVals.includes(getPref(pref))
-+ )
-+ );
-+}
-+
-+function openProfileDirectory() {
-+ // Get the profile directory.
-+ let currProfD = Services.dirsvc.get("ProfD", Ci.nsIFile);
-+ let profileDir = currProfD.path;
-+
-+ // Show the profile directory.
-+ let nsLocalFile = Components.Constructor(
-+ "@mozilla.org/file/local;1",
-+ "nsIFile",
-+ "initWithPath"
-+ );
-+ new nsLocalFile(profileDir).reveal();
-+}
-+
-+function openAboutConfig() {
-+ window.open("about:config", "_blank");
-+}
-+
-+function setBoolSyncListeners(checkboxid, opts, vals) {
-+ setSyncFromPrefListener(checkboxid, () => readGenericBoolPrefs(opts, vals));
-+ setSyncToPrefListener(checkboxid, () => writeGenericBoolPrefs(opts, vals, document.getElementById(checkboxid).checked));
-+ for (let i = 1; i < opts.length; i++) {
-+ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericBoolPrefs(opts, vals)));
-+ }
-+}
-+function setSyncListeners(checkboxid, opts, onVals, offVals) {
-+ setSyncFromPrefListener(checkboxid, () => readGenericPrefs(opts, onVals, offVals));
-+ setSyncToPrefListener(checkboxid, () => writeGenericPrefs(opts, onVals, offVals, document.getElementById(checkboxid).checked));
-+ for (let i = 1; i < opts.length; i++) {
-+ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericPrefs(opts, onVals, offVals)));
-+ }
-+}
-+
-+function makeMasterCheckboxesReactive(checkboxid, func) {
-+ const shouldBeChecked = func();
-+ document.getElementById(checkboxid).checked = shouldBeChecked;
-+}
-+
-+// Wrapper function in case something more is required (as I suspected in the first iteration of this)
-+function getPref(pref) {
-+ const retval = Preferences.get(pref);
-+/* if (retval === undefined) {
-+ return defaultValue;
-+ } */
-+ return retval._value;
-+}
-+// Returns true if all the preferences in prefs are equal to onVals, false otherwise TODO may need a third array for their default values because mozilla is dumb, after testing though pretty sure this was misinformation being spread by comments in default FF code that has long since been fixed
-+function readGenericBoolPrefs(prefs, onVals) {
-+ for (let i = 0; i < prefs.length; i++) {
-+ if (getPref(prefs[i]) != onVals[i]) {
-+ return false;
-+ }
-+ }
-+ return true;
-+}
-+function writeGenericBoolPrefs(opts, vals, changeToOn) {
-+ valsCopy = [...vals];
-+ if (!changeToOn) {
-+ for (let i = 0; i < vals.length; i++) {
-+ valsCopy[i] = !vals[i];
-+ }
-+ }
-+ // Start at 1 because returning sets the last one
-+ for (let i = 1; i < vals.length; i++) {
-+ Services.prefs.setBoolPref(opts[i], valsCopy[i]);
-+ }
-+ return valsCopy[0];
-+}
-+
-+// Returns true if all the preferences in prefs are equal to onVals, false otherwise... currently the same as for Bool as offVals is ignored
-+function readGenericPrefs(prefs, onVals, offVals) {
-+ for (let i = 0; i < prefs.length; i ++) {
-+ let temp = getPref(prefs[i]);
-+ if (getPref(prefs[i]) != onVals[i]) {
-+ return false;
-+ }
-+ }
-+ return true;
-+}
-+function writeGenericPrefs(opts, onVals, offVals, changeToOn) {
-+ let writeArr = (changeToOn) ? onVals : offVals;
-+ for (let i = 1; i < opts.length; i++) {
-+ let type = typeof(writeArr[i]);
-+ if (type == "number") {
-+ Services.prefs.setIntPref(opts[i], writeArr[i]);
-+ } else if (type == "boolean") {
-+ Services.prefs.setBoolPref(opts[i], writeArr[i]);
-+ } else if (type == "string") {
-+ Services.prefs.setCharPref(opts[i], writeArr[i]);
-+ } else {
-+ console.log("BADNESS 10000");
-+ }
-+ }
-+ return writeArr[0];
-+}
-+
-+Preferences.get("identity.fxaccounts.enabled").on("change", () => {
-+ confirmRestartPrompt(
-+ Services.prefs.getBoolPref("identity.fxaccounts.enabled"), // Restart is required to *enable* / *disable* the pref
-+ 1, // Default Button Index
-+ true, // Cancel instead of Revert Button
-+ false // No Restart Later button
-+ ).then(buttonIndex => {
-+ if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
-+ Services.startup.quit(
-+ Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart
-+ );
-+ return;
-+ }
-+ });
-+});
-diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
-index 19dda7cf39eb..f5e67b637b49 100644
---- a/browser/components/preferences/preferences.js
-+++ b/browser/components/preferences/preferences.js
-@@ -8,6 +8,7 @@
- /* import-globals-from search.js */
- /* import-globals-from containers.js */
- /* import-globals-from privacy.js */
-+/* import-globals-from librewolf.js */
- /* import-globals-from sync.js */
- /* import-globals-from experimental.js */
- /* import-globals-from moreFromMozilla.js */
-@@ -196,6 +197,7 @@ function init_all() {
- register_module("paneHome", gHomePane);
- register_module("paneSearch", gSearchPane);
- register_module("panePrivacy", gPrivacyPane);
-+ register_module("paneLibrewolf", gLibrewolfPane);
- register_module("paneContainers", gContainersPane);
- if (Services.prefs.getBoolPref("browser.preferences.experimental")) {
- // Set hidden based on previous load's hidden value.
-diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
-index 6ee14eec9b2e..a0d768dce307 100644
---- a/browser/components/preferences/preferences.xhtml
-+++ b/browser/components/preferences/preferences.xhtml
-@@ -13,6 +13,7 @@
-
-
-
-+
-
-
-
-@@ -129,6 +130,17 @@
-
-
-
-+
-+
-+
-+
-+
-
-+
-+
-+-->
-+
-+
-+
-diff --git a/browser/themes/shared/preferences/librewolf.css b/browser/themes/shared/preferences/librewolf.css
-new file mode 100644
-index 000000000000..12f926ab7018
---- /dev/null
-+++ b/browser/themes/shared/preferences/librewolf.css
-@@ -0,0 +1,23 @@
-+.librewolf-collapse > input {
-+ display: none;
-+}
-+.librewolf-collapse > input ~ .librewolf-collapsed {
-+ display: none;
-+ /* max-height: 0; */
-+ transition: max-height 0.25s ease-in-out;
-+}
-+.librewolf-collapse > input:checked ~ .librewolf-collapsed {
-+ display: block;
-+ /* max-height: 20rem; */
-+}
-+.librewolf-warning {
-+ display: inline;
-+ font-size: 0.8em;
-+}
-+.librewolf-button-icon {
-+ width: 16px;
-+ height: 16px;
-+ margin-right: 8px;
-+ -moz-context-properties: fill, fill-opacity;
-+ fill: currentColor;
-+}
-diff --git a/browser/themes/shared/preferences/preferences.css b/browser/themes/shared/preferences/preferences.css
-index 1968b68a1245..d0da141868e2 100644
---- a/browser/themes/shared/preferences/preferences.css
-+++ b/browser/themes/shared/preferences/preferences.css
-@@ -206,6 +206,10 @@ checkbox {
- list-style-image: url("chrome://browser/skin/preferences/category-privacy-security.svg");
- }
-
-+#category-librewolf > .category-icon {
-+ list-style-image: url("chrome://browser/skin/preferences/category-librewolf.svg");
-+}
-+
- #category-sync > .category-icon {
- list-style-image: url("chrome://browser/skin/preferences/category-sync.svg");
- }
---
-2.37.3
-
diff --git a/patches/pref-pane/pref-pane-small.patch b/patches/pref-pane/pref-pane-small.patch
index 8f26946..ee2dd3c 100644
--- a/patches/pref-pane/pref-pane-small.patch
+++ b/patches/pref-pane/pref-pane-small.patch
@@ -68,109 +68,6 @@ index 6ee14eec9b2e..a0d768dce307 100644
#include containers.inc.xhtml
#include sync.inc.xhtml
#include experimental.inc.xhtml
-diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl
-index a1e414697e71..8eeb594ca17d 100644
---- a/browser/locales/en-US/browser/preferences/preferences.ftl
-+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
-@@ -1420,3 +1420,98 @@ httpsonly-radio-disabled =
- desktop-folder-name = Desktop
- downloads-folder-name = Downloads
- choose-download-folder-title = Choose Download Folder:
-+
-+# Variables:
-+# $service-name (String) - Name of a cloud storage provider like Dropbox, Google Drive, etc...
-+save-files-to-cloud-storage =
-+ .label = Save files to { $service-name }
-+
-+## LibreWolf preferences
-+
-+# Sidebar
-+pane-librewolf-title = LibreWolf
-+category-librewolf =
-+ .tooltiptext = about:config changes, logically grouped and easily accessible
-+
-+# Main content
-+librewolf-header = LibreWolf Preferences
-+librewolf-warning-title = Heads up!
-+librewolf-warning-description = We carefully choose default settings to focus on privacy and security. When changing these settings, read the descriptions to understand the implications of those changes.
-+
-+# Page Layout
-+librewolf-general-heading = Browser Behavior
-+librewolf-extension-update-checkbox =
-+ .label = Update add-ons automatically
-+librewolf-sync-checkbox =
-+ .label = Enable Firefox Sync
-+librewolf-autocopy-checkbox =
-+ .label = Enable middle click paste
-+librewolf-styling-checkbox =
-+ .label = Allow userChrome.css customization
-+
-+librewolf-network-heading = Networking
-+librewolf-ipv6-checkbox =
-+ .label = Enable IPv6
-+
-+librewolf-privacy-heading = Privacy
-+librewolf-xorigin-ref-checkbox =
-+ .label = Limit cross-origin referrers
-+
-+librewolf-broken-heading = Fingerprinting
-+librewolf-webgl-checkbox =
-+ .label = Enable WebGL
-+librewolf-rfp-checkbox =
-+ .label = Enable ResistFingerprinting
-+librewolf-auto-decline-canvas-checkbox =
-+ .label = Silently block canvas access requests
-+librewolf-letterboxing-checkbox =
-+ .label = Enable letterboxing
-+
-+librewolf-security-heading = Security
-+librewolf-ocsp-checkbox =
-+ .label = Enforce OCSP hard-fail
-+librewolf-goog-safe-checkbox =
-+ .label = Enable Google Safe Browsing
-+librewolf-goog-safe-download-checkbox =
-+ .label = Scan downloads
-+
-+# In-depth descriptions
-+librewolf-extension-update-description = Keep extensions up to date without manual intervention. A good choice for your security.
-+librewolf-extension-update-warning1 = If you don't review the code of your extensions before every update, you should enable this option.
-+
-+librewolf-ipv6-description = Allow { -brand-short-name } to connect using IPv6.
-+librewolf-ipv6-warning1 = Instead of blocking IPv6 in the browser, we suggest enabling the IPv6 privacy extension in your OS.
-+librewolf-ocsp-description = Prevent connecting to a website if the OCSP check cannot be performed.
-+librewolf-ocsp-warning1 = This increases security, but it will cause breakage when an OCSP server is down.
-+librewolf-sync-description = Sync your data with other browsers. Requires restart.
-+librewolf-sync-warning1 = Firefox Sync encrypts data locally before transmitting it to the server.
-+
-+librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
-+
-+librewolf-styling-description = Enable this if you want to customize the UI with a manually loaded theme.
-+librewolf-styling-warning1 = Make sure you trust the provider of the theme.
-+
-+librewolf-xorigin-ref-description = Send a referrer only on same-origin.
-+librewolf-xorigin-ref-warning1 = This causes breakage. Additionally, even when sent referrers will still be trimmed.
-+
-+librewolf-webgl-description = WebGL is a strong fingerprinting vector.
-+librewolf-webgl-warning1 = If you need to enable it, consider using an extension like Canvas Blocker.
-+
-+librewolf-rfp-description = ResistFingerprinting is the best in class anti-fingerprinting tool.
-+librewolf-rfp-warning1 = If you need to disable it, consider using an extension like Canvas Blocker.
-+
-+librewolf-auto-decline-canvas-description = Automatically deny canvas access to websites, without prompting the user.
-+librewolf-auto-decline-canvas-warning1 = It is still possible to allow canvas access from the urlbar.
-+
-+librewolf-letterboxing-description = Letterboxing applies margins around your windows, in order to return a limited set of rounded resolutions.
-+
-+librewolf-goog-safe-description = If you are worried about malware and phishing, consider enabling it.
-+librewolf-goog-safe-warning1 = Disabled over censorship concerns but recommended for less advanced users. All the checks happen locally.
-+
-+librewolf-goog-safe-download-description = Allow Safe Browsing to scan your downloads to identify suspicious files.
-+librewolf-goog-safe-download-warning1 = All the checks happen locally.
-+
-+# Footer
-+librewolf-footer = Useful links
-+librewolf-config-link = All advanced settings (about:config)
-+librewolf-open-profile = Open user profile directory
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 146764d56081..52326c00bdfe 100644
--- a/browser/themes/shared/jar.inc.mn
diff --git a/patches/pref-pane/preferences.ftl b/patches/pref-pane/preferences.ftl
new file mode 100644
index 0000000..233391c
--- /dev/null
+++ b/patches/pref-pane/preferences.ftl
@@ -0,0 +1,89 @@
+## LibreWolf preferences
+
+# Sidebar
+pane-librewolf-title = LibreWolf
+category-librewolf =
+ .tooltiptext = about:config changes, logically grouped and easily accessible
+
+# Main content
+librewolf-header = LibreWolf Preferences
+librewolf-warning-title = Heads up!
+librewolf-warning-description = We carefully choose default settings to focus on privacy and security. When changing these settings, read the descriptions to understand the implications of those changes.
+
+# Page Layout
+librewolf-general-heading = Browser Behavior
+librewolf-extension-update-checkbox =
+ .label = Update add-ons automatically
+librewolf-sync-checkbox =
+ .label = Enable Firefox Sync
+librewolf-autocopy-checkbox =
+ .label = Enable middle click paste
+librewolf-styling-checkbox =
+ .label = Allow userChrome.css customization
+
+librewolf-network-heading = Networking
+librewolf-ipv6-checkbox =
+ .label = Enable IPv6
+
+librewolf-privacy-heading = Privacy
+librewolf-xorigin-ref-checkbox =
+ .label = Limit cross-origin referrers
+
+librewolf-broken-heading = Fingerprinting
+librewolf-webgl-checkbox =
+ .label = Enable WebGL
+librewolf-rfp-checkbox =
+ .label = Enable ResistFingerprinting
+librewolf-auto-decline-canvas-checkbox =
+ .label = Silently block canvas access requests
+librewolf-letterboxing-checkbox =
+ .label = Enable letterboxing
+
+librewolf-security-heading = Security
+librewolf-ocsp-checkbox =
+ .label = Enforce OCSP hard-fail
+librewolf-goog-safe-checkbox =
+ .label = Enable Google Safe Browsing
+librewolf-goog-safe-download-checkbox =
+ .label = Scan downloads
+
+# In-depth descriptions
+librewolf-extension-update-description = Keep extensions up to date without manual intervention. A good choice for your security.
+librewolf-extension-update-warning1 = If you don't review the code of your extensions before every update, you should enable this option.
+
+librewolf-ipv6-description = Allow { -brand-short-name } to connect using IPv6.
+librewolf-ipv6-warning1 = Instead of blocking IPv6 in the browser, we suggest enabling the IPv6 privacy extension in your OS.
+librewolf-ocsp-description = Prevent connecting to a website if the OCSP check cannot be performed.
+librewolf-ocsp-warning1 = This increases security, but it will cause breakage when an OCSP server is down.
+librewolf-sync-description = Sync your data with other browsers. Requires restart.
+librewolf-sync-warning1 = Firefox Sync encrypts data locally before transmitting it to the server.
+
+librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
+
+librewolf-styling-description = Enable this if you want to customize the UI with a manually loaded theme.
+librewolf-styling-warning1 = Make sure you trust the provider of the theme.
+
+librewolf-xorigin-ref-description = Send a referrer only on same-origin.
+librewolf-xorigin-ref-warning1 = This causes breakage. Additionally, even when sent referrers will still be trimmed.
+
+librewolf-webgl-description = WebGL is a strong fingerprinting vector.
+librewolf-webgl-warning1 = If you need to enable it, consider using an extension like Canvas Blocker.
+
+librewolf-rfp-description = ResistFingerprinting is the best in class anti-fingerprinting tool.
+librewolf-rfp-warning1 = If you need to disable it, consider using an extension like Canvas Blocker.
+
+librewolf-auto-decline-canvas-description = Automatically deny canvas access to websites, without prompting the user.
+librewolf-auto-decline-canvas-warning1 = It is still possible to allow canvas access from the urlbar.
+
+librewolf-letterboxing-description = Letterboxing applies margins around your windows, in order to return a limited set of rounded resolutions.
+
+librewolf-goog-safe-description = If you are worried about malware and phishing, consider enabling it.
+librewolf-goog-safe-warning1 = Disabled over censorship concerns but recommended for less advanced users. All the checks happen locally.
+
+librewolf-goog-safe-download-description = Allow Safe Browsing to scan your downloads to identify suspicious files.
+librewolf-goog-safe-download-warning1 = All the checks happen locally.
+
+# Footer
+librewolf-footer = Useful links
+librewolf-config-link = All advanced settings (about:config)
+librewolf-open-profile = Open user profile directory
diff --git a/patches/librewolf-pref-pane.patch b/patches/removed-patches/librewolf-pref-pane.patch
similarity index 100%
rename from patches/librewolf-pref-pane.patch
rename to patches/removed-patches/librewolf-pref-pane.patch
diff --git a/scripts/librewolf-patches.py b/scripts/librewolf-patches.py
index 7532de1..9de1a55 100755
--- a/scripts/librewolf-patches.py
+++ b/scripts/librewolf-patches.py
@@ -122,18 +122,25 @@ def librewolf_patches():
exec('wget -q https://codeberg.org/librewolf/settings/raw/branch/master/defaults/pref/local-settings.js')
leave_srcdir();
+
+
#
# pref-pane patches
#
-
+
+ # 1) patch it in
patch('../patches/pref-pane/pref-pane-small.patch')
+ # 2) new files
+ exec('cp ../patches/pref-pane/category-librewolf.svg browser/themes/shared/preferences/category-librewolf.svg')
+ exec('cp ../patches/pref-pane/librewolf.css browser/themes/shared/preferences/librewolf.css')
+ exec('cp ../patches/pref-pane/librewolf.inc.xhtml browser/components/preferences/librewolf.inc.xhtml')
+ exec('cp ../patches/pref-pane/librewolf.js browser/components/preferences/librewolf.js')
+ # 3) append our locale string values to preferences.ftl
+ exec('cat browser/locales/en-US/browser/preferences.ftl ../patches/pref-pane/preferences.ftl > preferences.ftl')
+ exec('mv preferences.ftl browser/locales/en-US/browser/preferences.ftl')
+
+
- exec('cp -v ../patches/pref-pane/category-librewolf.svg browser/themes/shared/preferences/category-librewolf.svg')
- exec('cp -v ../patches/pref-pane/librewolf.css browser/themes/shared/preferences/librewolf.css')
- exec('cp -v ../patches/pref-pane/librewolf.inc.xhtml browser/components/preferences/librewolf.inc.xhtml')
- exec('cp -v ../patches/pref-pane/librewolf.js browser/components/preferences/librewolf.js')
-
-
# provide a script that fetches and bootstraps Nightly and some mozconfigs
exec('cp -v ../scripts/mozfetch.sh lw/')
exec('cp -v ../assets/mozconfig.new ../assets/mozconfig.new.without-bootstrap ../scripts/setup-wasi-linux.sh lw/')