diff --git a/build.py b/build.py
index 21251fb..fbe83db 100755
--- a/build.py
+++ b/build.py
@@ -212,13 +212,13 @@ def execute_extract():
def execute_build():
enter_srcdir()
- #exec("bash -c \"MACH_USE_SYSTEM_PYTHON=1 ./mach build\"")
- exec("bash -c \"./mach build\"")
+ exec("bash -c \"MACH_USE_SYSTEM_PYTHON=1 ./mach build\"")
+ #exec("bash -c \"./mach build\"")
leave_srcdir()
def execute_package():
enter_srcdir()
- exec("bash -c \"./mach package\"")
+ exec("bash -c \"MACH_USE_SYSTEM_PYTHON=1 ./mach package\"")
leave_srcdir()
@@ -389,8 +389,8 @@ def execute_lw_artifacts():
if options.distro != 'osx':
if options.distro == 'win':
exec("mv -v {}/firefox{} {}/librewolf{}".format(librewolfdir,exe,librewolfdir,exe));
- exec("rm -rf {}/default-browser-agent* {}/maintainanceservice* {}/pingsender* {}/firefox.*.xml {}/precomplete {}/removed-files {}/uninstall"
- .format(librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir))
+# exec("rm -rf {}/default-browser-agent* {}/maintainanceservice* {}/pingsender* {}/firefox.*.xml {}/precomplete {}/removed-files {}/uninstall"
+# .format(librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir,librewolfdir))
exec("cp -v common/source_files/browser/branding/librewolf/firefox.ico {}/librewolf.ico".format(librewolfdir))
if options.distro != 'win':
exec("cp -v files/register-librewolf files/start-librewolf files/start-librewolf.desktop.in librewolf")
diff --git a/common b/common
index 7b345f3..5baa16f 160000
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 7b345f392fc28c8868de2edcadd4681d1be123aa
+Subproject commit 5baa16f8fbceef6ec48ce3cfa4f5d3a9b082a240
diff --git a/mk.py b/mk.py
index fbdac9f..6617647 100755
--- a/mk.py
+++ b/mk.py
@@ -39,8 +39,8 @@ def build():
with open('version','r') as file:
version = file.read().rstrip()
os.chdir('librewolf-{}'.format(version))
- exec('./mach build')
- exec('./mach package')
+ exec('MACH_USE_SYSTEM_PYTHON=1 ./mach build')
+ exec('MACH_USE_SYSTEM_PYTHON=1 ./mach package')
def artifact():
bash('# you gotta figure that out from the previous ./build.py')
diff --git a/patches/librewolf-pref-pane.patch b/patches/librewolf-pref-pane.patch
index 370742c..91922a1 100644
--- a/patches/librewolf-pref-pane.patch
+++ b/patches/librewolf-pref-pane.patch
@@ -12,10 +12,10 @@ index 4f3babe..97c7ec2 100644
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 0000000..74395a0
+index 0000000..a4c5313
--- /dev/null
+++ b/browser/components/preferences/librewolf.inc.xhtml
-@@ -0,0 +1,381 @@
+@@ -0,0 +1,219 @@
+# 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/.
@@ -55,41 +55,12 @@ index 0000000..74395a0
+
+
+
-+
+
+
+
+
+
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
@@ -97,8 +68,6 @@ index 0000000..74395a0
+
+
+
-+
-+
+
+
+
@@ -113,10 +82,25 @@ index 0000000..74395a0
+
+
+
-+
+
-+
-+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+
@@ -124,104 +108,20 @@ index 0000000..74395a0
+
+
+
-+
+
+
-+
-+
++
++
+
+
-+
++
+
-+
-+
-+
-+
++
++
++
+
+
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
@@ -237,34 +137,50 @@ index 0000000..74395a0
+
+
+
-+
-+
++
++
+
+
-+
++
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
++
++
++
+
+
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+
-+
++
+
+
+
@@ -275,7 +191,6 @@ index 0000000..74395a0
+
+
+
-+
+
+
+
@@ -301,83 +216,6 @@ index 0000000..74395a0
+
+
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
@@ -399,10 +237,10 @@ index 0000000..74395a0
+
diff --git a/browser/components/preferences/librewolf.js b/browser/components/preferences/librewolf.js
new file mode 100644
-index 0000000..6a1f974
+index 0000000..a633730
--- /dev/null
+++ b/browser/components/preferences/librewolf.js
-@@ -0,0 +1,381 @@
+@@ -0,0 +1,238 @@
+/* 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/. */
@@ -423,37 +261,16 @@ index 0000000..6a1f974
+ { id: "network.dns.disableIPv6", type: "bool" },
+ // WebGL
+ { id: "webgl.disabled", type: "bool" },
-+ { id: "webgl.enable-webgl2", type: "bool" },
-+ // Video Conferencing
-+ { id: "media.peerconnection.enabled", type: "bool" },
-+ { id: "media.peerconnection.ice.no_host", type: "bool" },
-+ { id: "dom.webaudio.enabled", type: "bool" },
-+ // Screensharing
-+ { id: "media.getusermedia.screensharing.enabled", type: "bool" },
-+ // DRM
-+ //{ id: "media.eme.enabled", type: "bool" }, //already added
-+ { id: "media.gmp-widevinecdm.visible", type: "bool" },
-+ { id: "media.gmp-widevinecdm.enabled", type: "bool" },
-+ { id: "media.gmp-provider.enabled", type: "bool" },
-+ { id: "media.gmp-manager.url", type: "string" },
++ // 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" },
-+ // Search Suggestions //This is in the FAQ but it is also in about:preferences#search so I don't think it should be included here
-+ //{ id: "browser.search.suggest.enabled", type: "bool" },
-+ //{ id: "browser.urlbar.suggest.searches", type: "bool" },
+ // Harden
-+ { id: "javascript.options.asmjs", type: "bool" },
-+ { id: "javascript.options.wasm", type: "bool" },
+ { id: "privacy.resistFingerprinting.letterboxing", type: "bool" },
-+ { id: "dom.event.clipboardevents.enabled", type: "bool" },
-+ // OCSP certificate revocation
-+ //{ id: "security.OCSP.enabled", type: "int" }, //Already enabled
-+ { id: "security.OCSP.require", type: "bool" },
-+ { id: "security.pki.crlite_mode", type: "int" },
+ // Google Safe Browsing
+ //{ id: "browser.safebrowsing.malware.enabled", type: "bool" }, // Already loaded
+ //{ id: "browser.safebrowsing.phishing.enabled", type: "bool" },
@@ -462,31 +279,14 @@ index 0000000..6a1f974
+ { id: "browser.safebrowsing.provider.google4.updateURL", type: "string" },
+ { id: "browser.safebrowsing.provider.google.gethashURL", type: "string" },
+ { id: "browser.safebrowsing.provider.google.updateURL", type: "string" },
-+ // Restore Previous Session
-+ //{ id: "browser.startup.page", type: "int" }, //Already added
-+ { id: "privacy.clearOnShutdown.history", type: "bool" },
+ /**** Prefs that require changing a lockPref ****/
+ // Google safe browsing check downloads
+ //{ id: "browser.safebrowsing.downloads.enabled", type: "bool" }, //Also already added
-+ // Mozilla Tracking Protection
-+ //{ id: "privacy.trackingprotection.enabled", type: "bool" }, //Already added
-+ //{ id: "privacy.trackingprotection.pbmode.enabled", type: "bool" }, //already added
-+ { id: "browser.contentblocking.cryptomining.preferences.ui.enabled", type: "bool" },
-+ { id: "browser.contentblocking.fingerprinting.preferences.ui.enabled", type: "bool" },
-+ { id: "browser.safebrowsing.provider.mozilla.updateURL", type: "string" },
-+ { id: "browser.safebrowing.provider.mozilla.gethashURL", type: "string" },
-+ //{ id: "privacy.trackingprotection.cryptomining.enabled", type: "bool" }, //Already added
-+ //{ id: "privacy.trackingprotection.fingerprinting.enabled", type: "bool" }, //Already added
-+ //{ id: "privacy.trackingprotection.socialtracking.enabled", type: "bool" }, //Already added
+ { id: "toolkit.legacyUserProfileCustomizations.stylesheets", type: "bool" },
-+ { id: "layout.css.backdrop-filter.enabled", type: "bool" },
-+ { id: "svg.context-properties.content.enabled", type: "bool" },
+ // Install language packs
+ { id: "extensions.getAddons.langpacks.url", type: "string" },
+ // Canvas UI when blocked
+ { id: "privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", type: "bool" },
-+ // Geolocation data
-+ { id: "geo.enabled", type: "bool" },
+]);
+
+var gLibrewolfPane = {
@@ -507,13 +307,6 @@ index 0000000..6a1f974
+ ["network.dns.disableIPv6"],
+ [false, ],
+ );
-+ setSyncListeners(
-+ "librewolf-restore-session-checkbox",
-+ ["browser.startup.page", "privacy.clearOnShutdown.history", ],
-+ [3, false, ],
-+ [1, true, ],
-+ );
-+ setSyncListeners("librewolf-restore-session-startup-page", ["browser.startup.page"], [3], [1]);
+ setBoolSyncListeners(
+ "librewolf-autocopy-checkbox",
+ ["clipboard.autocopy", "middlemouse.paste"],
@@ -521,45 +314,31 @@ index 0000000..6a1f974
+ );
+ setBoolSyncListeners(
+ "librewolf-styling-checkbox",
-+ ["toolkit.legacyUserProfileCustomizations.stylesheets", "layout.css.backdrop-filter.enabled", "svg.context-properties.content.enabled"],
-+ [true, true, true ],
++ ["toolkit.legacyUserProfileCustomizations.stylesheets"],
++ [true, ],
+ );
+
+ setBoolSyncListeners(
+ "librewolf-webgl-checkbox",
-+ ["webgl.disabled", "webgl.enable-webgl2"],
-+ [false, true ],
++ ["webgl.disabled"],
++ [false ],
+ );
+ setBoolSyncListeners(
-+ "librewolf-conferencing-checkbox",
-+ ["media.peerconnection.enabled", "media.peerconnection.ice.no_host"],
-+ [true, true, ],
-+ );
-+ setBoolSyncListeners(
-+ "librewolf-screensharing-checkbox",
-+ ["media.getusermedia.screensharing.enabled"],
-+ [true ],
++ "librewolf-rfp-checkbox",
++ ["privacy.resistFingerprinting"],
++ [true ],
+ );
+ setBoolSyncListeners(
+ "librewolf-auto-decline-canvas-checkbox",
+ ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts"],
+ [true ],
+ );
-+ setSyncListeners(
-+ "librewolf-drm-checkbox",
-+ ["media.eme.enabled", "media.gmp-widevinecdm.visible", "media.gmp-widevinecdm.enabled", "media.gmp-provider.enabled", "media.gmp-manager.url"],
-+ [true, true, true, true, "https://aus5.mozilla.org/update/3/GMP/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml"],
-+ [false, false, false, false, "" ],
-+ );
-+ setSyncListeners("librewolf-drm-url", ["media.gmp-manager.url"], ["https://aus5.mozilla.org/update/3/GMP/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml"], [""]);
+
+ setBoolSyncListeners(
-+ "librewolf-hardened-master-checkbox",
-+ ["privacy.resistFingerprinting.letterboxing", "javascript.options.asmjs", "javascript.options.wasm"],
-+ [true, false, false ],
++ "librewolf-letterboxing-checkbox",
++ ["privacy.resistFingerprinting.letterboxing"],
++ [true ],
+ );
-+ setBoolSyncListeners("librewolf-web-applications-checkbox", ["javascript.options.asmjs"], [false]);
-+ setBoolSyncListeners("librewolf-wasm-checkbox", ["javascript.options.wasm"], [false]);
+
+ setSyncListeners(
+ "librewolf-goog-safe-checkbox",
@@ -591,54 +370,9 @@ index 0000000..6a1f974
+ "",
+ ]
+ );
-+ /* TODO commented out because lockpref and also unsure what we want to do with it
-+ setSyncListeners(
-+ "librewolf-moz-track-prot-checkbox",
-+ [
-+ "privacy.trackingprotection.enabled",
-+ "browser.contentblocking.cryptomining.preferences.ui.enabled",
-+ "browser.contentblocking.fingerprinting.preferences.ui.enabled",
-+ "privacy.trackingprotection.cryptomining.enabled",
-+ "privacy.trackingprotection.fingerprinting.enabled",
-+ "privacy.trackingprotection.socialtracking.enabled",
-+ "browser.safebrowsing.provider.mozilla.updateURL",
-+ "browser.safebrowing.provider.mozilla.gethashURL",
-+ ],
-+ [
-+ true,
-+ true,
-+ true,
-+ true,
-+ true,
-+ true,
-+ "https://shavar.services.mozilla.com/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2",
-+ "https://shavar.services.mozilla.com/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2",
-+ ],
-+ [
-+ false,
-+ false,
-+ false,
-+ false,
-+ false,
-+ false,
-+ "",
-+ "",
-+ ]
-+ );
-+ */
+ setSyncListeners("librewolf-language-checkbox", ["extensions.getAddons.langpacks.url"], ["https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%"], [""]);
+ setSyncListeners("librewolf-language-url", ["extensions.getAddons.langpacks.url"], ["https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%"], [""]);
+
-+ // Set event listeners on the radio buttons for OCSP
-+ /* TODO commented out because not ready yet
-+ syncFromOCSP();
-+ setEventListener("librewolf-OCSP-radiogroup", "command", syncToOCSP);
-+ // Update radio-value when the pref changes
-+ Preferences.get("security.pki.crlite_mode").on("change", syncFromOCSP);
-+ Preferences.get("security.OCSP.enabled").on("change", syncFromOCSP);
-+ Preferences.get("security.OCSP.require").on("change", syncFromOCSP);
-+ */
-+
+ // Set event listener on open profile directory button
+ setEventListener("librewolf-open-profile-button", "command", openProfileDirectory);
+ // Set event listener on open about:config button
@@ -745,45 +479,6 @@ index 0000000..6a1f974
+ return writeArr[0];
+}
+
-+function syncFromOCSP() {
-+ let OCSPpolicy = getPref("security.OCSP.enabled");
-+ let OCSPrequire = getPref("security.OCSP.require");
-+ let crlitePolicy = getPref("security.pki.crlite_mode");
-+ let radioButtons = document.getElementById("librewolf-OCSP-radiogroup");
-+
-+ if (OCSPpolicy == 0 && OCSPrequire == false && crlitePolicy == 0) {
-+ radioButtons.value = "0";
-+ } else if (OCSPpolicy == 0 && OCSPrequire == false && crlitePolicy == 1) {
-+ radioButtons.value = "1";
-+ } else if (OCSPpolicy == 1 && OCSPrequire == true && crlitePolicy == 1) {
-+ radioButtons.value = "2";
-+ } else if (OCSPpolicy == 1 && OCSPrequire == true && crlitePolicy == 0) {
-+ radioButtons.value = "3";
-+ } else {
-+ radioButtons.value = "unknown";
-+ }
-+ console.log(radioButtons.value);
-+}
-+function syncToOCSP() {
-+ let value = document.getElementById("librewolf-OCSP-radiogroup").value;
-+ if (value == "0") {
-+ Services.prefs.setBoolPref("security.OCSP.require", false);
-+ Services.prefs.setIntPref("security.OCSP.enabled", 0);
-+ Services.prefs.setIntPref("security.pki.crlite_mode", 0);
-+ } else if (value == "1") {
-+ Services.prefs.setBoolPref("security.OCSP.require", false);
-+ Services.prefs.setIntPref("security.OCSP.enabled", 0);
-+ Services.prefs.setIntPref("security.pki.crlite_mode", 1);
-+ } else if (value == "2") {
-+ Services.prefs.setBoolPref("security.OCSP.require", true);
-+ Services.prefs.setIntPref("security.OCSP.enabled", 1);
-+ Services.prefs.setIntPref("security.pki.crlite_mode", 1);
-+ } else if (value == "3") {
-+ Services.prefs.setBoolPref("security.OCSP.require", true);
-+ Services.prefs.setIntPref("security.OCSP.enabled", 1);
-+ Services.prefs.setIntPref("security.pki.crlite_mode", 0);
-+ } // else value == "unknown" and do nothing
-+}
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 91e9e46..763ab49 100644
--- a/browser/components/preferences/preferences.js
@@ -843,10 +538,10 @@ index aab4a9e..907a631 100644
#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 d276f7a..9a3bcd3 100644
+index d276f7a..938bec3 100644
--- a/browser/locales/en-US/browser/preferences/preferences.ftl
+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
-@@ -1347,3 +1347,152 @@ choose-download-folder-title = Choose Download Folder:
+@@ -1347,3 +1347,83 @@ choose-download-folder-title = Choose Download Folder:
# $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 }
@@ -866,134 +561,65 @@ index d276f7a..9a3bcd3 100644
+# Page Layout
+librewolf-general-heading = Browser Behavior
+librewolf-extension-update-checkbox =
-+ .label = Extensions & Themes auto-update
++ .label = Update add-ons automatically
++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-restore-session-checkbox =
-+ .label = Restore previous session
-+librewolf-autocopy-checkbox =
-+ .label = Enable Linux-style copy/paste
-+librewolf-styling-checkbox =
-+ .label = Advanced CSS styling
-+librewolf-search-suggest-checkbox = Search Suggestions
+
-+librewolf-broken-heading = Restricted Content
-+librewolf-broken-description = There is a reason these are all turned off by default, and unless you require them for some reason, they should probably stay that way.
++librewolf-broken-heading = Fingerprinting
+librewolf-webgl-checkbox =
+ .label = Enable WebGL
-+librewolf-conferencing-checkbox =
-+ .label = Peer Connections
-+librewolf-screensharing-checkbox =
-+ .label = Screensharing
-+librewolf-geolocation-checkbox =
-+ .label = Geolocation Data
++librewolf-rfp-checkbox =
++ .label = Enable ResistFingerprinting
+librewolf-auto-decline-canvas-checkbox =
-+ .label = Hide canvas request popups
-+
-+librewolf-drm-checkbox =
-+ .label = Serve DRM-restricted content
-+
-+librewolf-hardened-heading = Hardened Privacy and Security
-+librewolf-hardened-master-checkbox =
-+ .label = Select all hardening options
++ .label = Silently block canvas access requests
+librewolf-letterboxing-checkbox =
-+ .label = Window Letterboxing
-+librewolf-web-applications-checkbox =
-+ .label = Disable asm.js
-+librewolf-wasm-checkbox =
-+ .label = Disable Web Assembly
++ .label = Enable letterboxing
+
-+librewolf-misc-heading = Miscellaneous Options
++librewolf-security-heading = Security
+librewolf-goog-safe-checkbox =
+ .label = Enable Google Safe Browsing
+librewolf-goog-safe-download-checkbox =
-+ .label = Allow Google Safe Browsing to view your downloads
-+librewolf-moz-track-prot-checkbox =
-+ .label = Enable Mozilla Tracking Protection
-+librewolf-moz-track-prot-private-checkbox =
-+ .label = Mozilla Tracking Protection in private windows
++ .label = Scan downloads
+librewolf-language-checkbox =
-+ .label = Allow installation of other language packs
-+librewolf-OCSP-checkbox =
-+ .label = Change OCSP options
++ .label = Allow the installation of other language packs
+
+# In-depth descriptions
-+librewolf-extension-update-description = Keep Extensions and Themes up to date without manual intervention (recommended)
-+librewolf-extension-update-warning1 = When you automatically install anything, you can't review the code before installation
-+librewolf-extension-update-warning2 = Will trigger network activity periodically without user input
++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 = IPv6 is often configured in a way that leaks your MAC address, and sometimes doesn't work properly through a VPN
++librewolf-ipv6-description = Allow { -brand-short-name } to connect using IPv6.
++librewolf-ipv6-warning1 = Before you change this, make sure your OS uses the IPv6 privacy extension.
+
-+librewolf-restore-session-description = Restores previously opened tabs when you close your browser
-+librewolf-restore-session-warning1 = Anyone who may have physical access to your device may see your browsing history
-+librewolf-restore-session-warning2 = Forces { -brand-short-name } to store history
++librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
+
-+librewolf-autocopy-description = Selecting text copies it to your clipboard; middle-mouse pastes text
-+librewolf-autocopy-warning1 = Any data copied to the clipboard may be observed by any native applications on your computer
-+librewolf-autocopy-warning2 = Highlighting or pasting the wrong information could leak it to a malicious actor
++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-styling-description = Allow { -brand-short-name } to load `chrome/userChrome.css` and customize the UI
-+librewolf-styling-warning1 = Ensure that you trust any providers of stylesheets that you use
-+librewolf-styling-warning2 = The librewolf team has not thoroughly researched these preferences and cannot guarantee there are no security/privacy risks, keep off if you don't use this
++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-webgl-description = Run Javascript code that uses WebGL
-+librewolf-webgl-warning1 = WebGL can be used for fingerprinting - extensions like Canvas Blocker can help if you need this on
++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-conferencing-description = These preferences are required to use certain websites, typically Video Conferencing ones
-+librewolf-conferencing-warning1 = WebRTC can leak your IP address, even behind a VPN
++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-screensharing-description = Allow websites to share your screen
-+librewolf-screensharing-warning1 = Be mindful of which websites you allow to view your screen as that information can be used in ways you may not approve
-+librewolf-screensharing-warning2 = You will likely have to enable canvas access after granting permission to screenshare
++librewolf-letterboxing-description = Letterboxing applies margins around your windows, in order to return a limited set of rounded resolutions.
+
-+librewolf-geolocation-description = TODO Enabling this allows websites to access your physical location if they request it
-+librewolf-geolocation-warning1 = TODO This may significantly reduce your privacy and give websites information you don't want them to know
++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-auto-decline-canvas-description = Remove "Allow X to use your HTML5 canvas image data" popups. Instead, automatically block them.
-+librewolf-auto-decline-canvas-warning1 = There is no reason not to select this, it just will require you to click the icon in the URL bar if you want to enable canvas.
-+librewolf-auto-decline-canvas-warning2 = Enabling canvas should always be done with caution, as websites can very easily fingerprint your computer via the way it draws a canvas.
++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.
+
-+librewolf-drm-description = Allow your browser to work against you :(
-+librewolf-drm-warning1 = Digital Rights Management does not protect your own digital rights, and it limits the freedom for everyone to share information
-+
-+librewolf-letterboxing-description = Letterboxing dynamically resizes the inner window by applying margins in stepped ranges, creating a fixed resolution
-+librewolf-web-applications-description = asm.js is an older specification, which allows JavaScript to software written in languages like C, C++ etc. It is deprecated in favor of WebAssembly. This preference disables it to improve security.
-+librewolf-wasm-description = WebAssembly has powerful low-level access, making certain attacks (brute-force, crytopmining, malware) and security exploits more possible. This preference disables it.
-+
-+librewolf-goog-safe-description = Enable Google Safe Browsing
-+librewolf-goog-safe-warning1 = Turning this preference on may give corporations the power to censor the internet or control what content you view
-+librewolf-goog-safe-warning2 = If you are worried about malware, phishing, or do not trust yourself to keep yourself safe, it can be useful
-+
-+librewolf-goog-safe-download-description = Have Google scan all the files you download to verify their security
-+librewolf-goog-safe-download-warning1 = Who does the server really serve?
-+
-+librewolf-moz-track-prot-description = Enable Mozilla Tracking Protection
-+librewolf-moz-track-prot-warning1 = uBlock Origin already provides most of the useful functionality that turning this on will provide
-+librewolf-moz-track-prot-private-description = Run Mozilla Tracking Protection in private windows
-+
-+librewolf-language-description = Enable installation of other language packs from Mozilla
-+librewolf-language-warning1 = ResistFingerprinting is used by many en_US users, but not many other users. Changing your language pack will most likely result in a unique fingerprint.
-+librewolf-language-warning2 = You are recommended NOT to do this unless you absolutely need to for any reason.
-+
-+# OCSP settings
-+librewolf-OCSP-header = Change OCSP Options
-+librewolf-OCSP-description = These settings control how Librewolf tests the certificates of the websites you visit
-+librewolf-OCSP-warning1 = This is a tradeoff between security and privacy
-+librewolf-OCSP-warning2 = Going to unsigned websites may expose you to a Man-In-The-Middle attack
-+librewolf-OCSP-warning3 = Using OCSP will leak information about the sites you visit to the Certificate Authority, though crlite does not
-+librewolf-OCSP-prefs = The preferences affected are 'security.pki.crlite_mode', 'security.OCSP.enabled', and 'security.OCSP.require'
-+
-+librewolf-OCSP-option0 =
-+ .label = Do not require signing of certificates
-+librewolf-OCSP-option1 =
-+ .label = Use crlite, fall back to trusting an unknown certificate
-+librewolf-OCSP-option2 =
-+ .label = Use crlite, fall back to requiring OCSP verification
-+librewolf-OCSP-option3 =
-+ .label = Always use OCSP to verify certificates
-+librewolf-OCSP-unknown =
-+ .label = Unknown (selecting this does nothing)
++librewolf-language-description = Enable this if you want to install language packs from the settings.
++librewolf-language-warning1 = LibreWolf forces everything to en-US, so changing your language might make you stand out.
+
+# Footer
+librewolf-footer = Useful links
diff --git a/release b/release
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/release
@@ -0,0 +1 @@
+3