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/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; 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 @@ 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 72ac617cf..974d75ec0 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 ) diff --git a/src/stores/interface.js b/src/stores/interface.js index 951811c62..48d7cb061 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, @@ -246,7 +256,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 @@ -706,11 +716,14 @@ 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}`, }, }) }