From d8802ad20dbef76b61fa0c6c8f26e61a62846a8d Mon Sep 17 00:00:00 2001
From: Lain Soykaf <lain@lain.com>
Date: Sun, 9 Mar 2025 12:00:06 +0400
Subject: [PATCH 1/3] Main: Add polyfill for toSorted (Palemoon fix)

---
 src/main.js | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/main.js b/src/main.js
index 514dd0a0e3..6b8ccf35a4 100644
--- a/src/main.js
+++ b/src/main.js
@@ -5,6 +5,13 @@ import { createPinia } from 'pinia'
 import 'custom-event-polyfill'
 import './lib/event_target_polyfill.js'
 
+// Polyfill for Array.prototype.toSorted (ES2023)
+if (!Array.prototype.toSorted) {
+  Array.prototype.toSorted = function(compareFn) {
+    return [...this].sort(compareFn)
+  }
+}
+
 import vuexModules from './modules/index.js'
 
 import { createI18n } from 'vue-i18n'
-- 
GitLab


From 5d7aabe7ad07f32a41016b4189f8583d851403fc Mon Sep 17 00:00:00 2001
From: Lain Soykaf <lain@lain.com>
Date: Sun, 9 Mar 2025 12:01:02 +0400
Subject: [PATCH 2/3] StyleSetter: Better handling of unsupported CSS rules
 (Palemoon fix)

---
 src/services/style_setter/style_setter.js | 29 ++++++++++++++++++-----
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js
index 5eb8108848..50be544437 100644
--- a/src/services/style_setter/style_setter.js
+++ b/src/services/style_setter/style_setter.js
@@ -124,16 +124,33 @@ export const applyTheme = (
   const lazyStyles = createStyleSheet(LAZY_STYLE_ID)
 
   const insertRule = (styles, rule) => {
-    if (rule.indexOf('webkit') >= 0) {
+    try {
+      // Try to use modern syntax first
       try {
         styles.sheet.insertRule(rule, 'index-max')
         styles.rules.push(rule)
-      } catch (e) {
-        console.warn('Can\'t insert rule due to lack of support', e)
+      } catch {
+        // Fallback for older browsers that don't support 'index-max'
+        styles.sheet.insertRule(rule, styles.sheet.cssRules.length)
+        styles.rules.push(rule)
+      }
+    } catch (e) {
+      console.warn('Can\'t insert rule due to lack of support', e, rule)
+
+      // Try to sanitize the rule for better compatibility
+      try {
+        // Remove any potentially problematic CSS features
+        let sanitizedRule = rule
+          .replace(/backdrop-filter:[^;]+;/g, '') // Remove backdrop-filter
+          .replace(/var\(--shadowFilter\)[^;]*;/g, '') // Remove shadowFilter references
+
+        if (sanitizedRule !== rule) {
+          styles.sheet.insertRule(sanitizedRule, styles.sheet.cssRules.length)
+          styles.rules.push(sanitizedRule)
+        }
+      } catch (e2) {
+        console.error('Failed to insert even sanitized rule', e2)
       }
-    } else {
-      styles.sheet.insertRule(rule, 'index-max')
-      styles.rules.push(rule)
     }
   }
 
-- 
GitLab


From 081890be7cfe599ef83add3ea552b48916b61d69 Mon Sep 17 00:00:00 2001
From: Lain Soykaf <lain@lain.com>
Date: Sun, 9 Mar 2025 12:08:42 +0400
Subject: [PATCH 3/3] Add changelog

---
 changelog.d/palemoon-css-compatibility.fix | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 changelog.d/palemoon-css-compatibility.fix

diff --git a/changelog.d/palemoon-css-compatibility.fix b/changelog.d/palemoon-css-compatibility.fix
new file mode 100644
index 0000000000..8afa056548
--- /dev/null
+++ b/changelog.d/palemoon-css-compatibility.fix
@@ -0,0 +1 @@
+Fix CSS compatibility issues in style_setter.js for older browsers like Palemoon
\ No newline at end of file
-- 
GitLab