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