From aa4f2d5aec904086ada2a08d4456545eb190a65f Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 13:10:06 +0300 Subject: [PATCH 1/6] fix empty extranotifications kaomoji --- src/components/extra_notifications/extra_notifications.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/extra_notifications/extra_notifications.vue b/src/components/extra_notifications/extra_notifications.vue index 6a54bd28e..fa64ce1fa 100644 --- a/src/components/extra_notifications/extra_notifications.vue +++ b/src/components/extra_notifications/extra_notifications.vue @@ -87,6 +87,11 @@ flex-direction: column; align-items: stretch; + &.panel-body::before { + content: ''; + padding: 0; + } + .notification { width: 100%; border-bottom: 1px solid; From 51161de0e9ba024a45730c49c154dd41c66d3a7c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 13:10:17 +0300 Subject: [PATCH 2/6] fix firefox again (my bad) --- src/services/style_setter/style_setter.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js index 72ac617cf..6ed60400b 100644 --- a/src/services/style_setter/style_setter.js +++ b/src/services/style_setter/style_setter.js @@ -32,16 +32,17 @@ export const createStyleSheet = (id, priority = 1000) => { newRule = newRule.replace(/backdrop-filter:[^;]+;/g, '') // Remove backdrop-filter } - // firefox doesn't like invalid selectors - if ( - !CSS.supports?.('selector(::-webkit-scrollbar)') && - !CSS.supports?.('selector(::-webkit-scrollbar-button)') && - !CSS.supports?.('selector(::-webkit-resizer)') && - !CSS.supports?.('selector(::-webkit-scrollbar-thumb)') && - newRule.startsWith('::-webkit') - ) { - return + if (newRule.startsWith('::-webkit')) { + if (typeof CSS.supports !== 'function') return + // firefox doesn't like invalid selectors + const fullWebkitScrollbarSupport = + CSS.supports('selector(::-webkit-scrollbar)') && + CSS.supports('selector(::-webkit-scrollbar-button)') && + CSS.supports('selector(::-webkit-resizer)') && + CSS.supports('selector(::-webkit-scrollbar-thumb)') + if (!fullWebkitScrollbarSupport) return } + this.rules.push( newRule.replace(/var\(--shadowFilter\)[^;]*;/g, ''), // Remove shadowFilter references ) From 4c288d7095e51009a7560388c0a24e8f24930417 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 13:15:53 +0300 Subject: [PATCH 3/6] fix font component showing objects --- src/stores/interface.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/interface.js b/src/stores/interface.js index 951811c62..da0e6d4f5 100644 --- a/src/stores/interface.js +++ b/src/stores/interface.js @@ -246,7 +246,7 @@ export const useInterfaceStore = defineStore('interface', { } }, setFontsList(value) { - this.localFonts = [...new Set(value.map((font) => font)).values()] + this.localFonts = [...new Set(value.map(({ family }) => family)).values()] }, queryLocalFonts() { if (this.localFonts !== null) return From e0ff4270b457048cbd14c40e1e0c048d437b453f Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 13:38:53 +0300 Subject: [PATCH 4/6] fix generic fonts not being set --- src/stores/interface.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/stores/interface.js b/src/stores/interface.js index da0e6d4f5..eb129567b 100644 --- a/src/stores/interface.js +++ b/src/stores/interface.js @@ -17,6 +17,16 @@ import { } from 'src/services/theme_data/theme_data.service.js' import { convertTheme2To3 } from 'src/services/theme_data/theme2_to_theme3.js' +const GENERIC_FONT_NAMES = new Set([ + 'serif', + 'sans-serif', + 'system-ui', + 'cursive', + 'fantasy', + 'math', + 'monospace', +]) + export const useInterfaceStore = defineStore('interface', { state: () => ({ localFonts: null, @@ -706,11 +716,12 @@ export const useInterfaceStore = defineStore('interface', { Object.entries(fontMap).forEach(([font, component]) => { const family = mergedConfig[`font${font}`] const variable = font === 'Monospace' ? '--monoFont' : '--font' - if (family) { + if (typeof family === 'string') { + const familyString = GENERIC_FONT_NAMES.has(family) ? family : `"${family}"` hacks.push({ component, directives: { - [variable]: `generic | "${family}"`, + [variable]: `generic | ${familyString}`, }, }) } From a7b1519a3ebff58ba1d9e2c22a822e93d9b57ef9 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 13:39:10 +0300 Subject: [PATCH 5/6] fix toggling font setting using incorrect fallback value --- src/components/settings_modal/tabs/general_tab.vue | 4 ++-- src/components/settings_modal/tabs/posts_tab.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue index 76710bec9..9ccde0b2c 100644 --- a/src/components/settings_modal/tabs/general_tab.vue +++ b/src/components/settings_modal/tabs/general_tab.vue @@ -68,7 +68,7 @@ :model-value="mergedConfig.fontInterface" name="ui" :label="$t('settings.style.fonts.components_inline.interface')" - :fallback="{ family: 'sans-serif' }" + fallback="sans-serif" no-inherit="1" @update:model-value="v => updateFont('fontInterface', v)" /> @@ -77,7 +77,7 @@ diff --git a/src/components/settings_modal/tabs/posts_tab.vue b/src/components/settings_modal/tabs/posts_tab.vue index cbba67f12..1f909d31d 100644 --- a/src/components/settings_modal/tabs/posts_tab.vue +++ b/src/components/settings_modal/tabs/posts_tab.vue @@ -58,7 +58,7 @@ @@ -67,7 +67,7 @@ From 0cd604a7b83726dc42d2ccc9664e3c2de8c48ae0 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 30 Jul 2026 14:30:23 +0300 Subject: [PATCH 6/6] lint & changelog --- changelog.d/2-11-2.fix | 4 ++++ src/modules/users.js | 2 +- src/services/style_setter/style_setter.js | 8 ++++---- src/stores/interface.js | 4 +++- 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 changelog.d/2-11-2.fix diff --git a/changelog.d/2-11-2.fix b/changelog.d/2-11-2.fix new file mode 100644 index 000000000..2bb1e9869 --- /dev/null +++ b/changelog.d/2-11-2.fix @@ -0,0 +1,4 @@ +Fixed crashing on Firefox 153 +Fixed serif-fonts being used by default in some cases +Fixed font select component showing and using objects instead of strings +Fixed generic ('sans-serif', 'monospace' etc) fonts not working diff --git a/src/modules/users.js b/src/modules/users.js index 05a161c6f..38eb6032c 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -44,10 +44,10 @@ import { } from 'src/api/public.js' import { blockUser as apiBlockUser, + editUserNote as apiEditUserNote, muteUser as apiMuteUser, unblockUser as apiUnblockUser, unmuteUser as apiUnmuteUser, - editUserNote as apiEditUserNote, fetchBlocks, fetchDomainMutes, fetchMutes, diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js index 6ed60400b..974d75ec0 100644 --- a/src/services/style_setter/style_setter.js +++ b/src/services/style_setter/style_setter.js @@ -36,10 +36,10 @@ export const createStyleSheet = (id, priority = 1000) => { if (typeof CSS.supports !== 'function') return // firefox doesn't like invalid selectors const fullWebkitScrollbarSupport = - CSS.supports('selector(::-webkit-scrollbar)') && - CSS.supports('selector(::-webkit-scrollbar-button)') && - CSS.supports('selector(::-webkit-resizer)') && - CSS.supports('selector(::-webkit-scrollbar-thumb)') + CSS.supports('selector(::-webkit-scrollbar)') && + CSS.supports('selector(::-webkit-scrollbar-button)') && + CSS.supports('selector(::-webkit-resizer)') && + CSS.supports('selector(::-webkit-scrollbar-thumb)') if (!fullWebkitScrollbarSupport) return } diff --git a/src/stores/interface.js b/src/stores/interface.js index eb129567b..48d7cb061 100644 --- a/src/stores/interface.js +++ b/src/stores/interface.js @@ -717,7 +717,9 @@ export const useInterfaceStore = defineStore('interface', { const family = mergedConfig[`font${font}`] const variable = font === 'Monospace' ? '--monoFont' : '--font' if (typeof family === 'string') { - const familyString = GENERIC_FONT_NAMES.has(family) ? family : `"${family}"` + const familyString = GENERIC_FONT_NAMES.has(family) + ? family + : `"${family}"` hacks.push({ component, directives: {