Compare commits

..
Author SHA1 Message Date
Lotus CIandClaude Opus 5.5 37372b215a fix(fonts): the app uses Inter again (#320)
CI / Build & Quality Checks (pull_request) Successful in 3m49s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 13s
CI / Playwright smoke (e2e) (pull_request) Successful in 14m34s
Since the switch to @fontsource-variable/inter 5 (May), the package
registers the family 'Inter Variable', but the app still asked for the
4.x name 'InterVariable', so every user got their platform's default
sans-serif (Arial / Helvetica / DejaVu) and Settings → Appearance →
font "Inter" did nothing.

--font-secondary (index.css) and the App font map now ask for
'Inter Variable' first, keeping 'InterVariable' as a fallback for a
locally installed old version.

Verified headless: before, 0 Inter faces loaded and
document.fonts.check('16px "Inter Variable"') false; now the face loads
and the check is true.

Fixes #320

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-16 22:01:05 -04:00
10 changed files with 14 additions and 25 deletions
+1 -1
View File
@@ -297,7 +297,7 @@ export function AccountDataEditor({
</Chip> </Chip>
</Box> </Box>
<Box shrink="No"> <Box shrink="No">
<IconButton type="button" onClick={requestClose} variant="Surface" aria-label="Close"> <IconButton onClick={requestClose} variant="Surface" aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Box> </Box>
@@ -315,7 +315,7 @@ export const DeviceVerificationSetup = forwardRef<HTMLDivElement, DeviceVerifica
Setup Device Verification Setup Device Verification
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" radii="300" onClick={onCancel} aria-label="Cancel"> <IconButton size="300" radii="300" onClick={onCancel} aria-label="Cancel">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
@@ -361,7 +361,7 @@ export const DeviceVerificationReset = forwardRef<HTMLDivElement, DeviceVerifica
Reset Device Verification Reset Device Verification
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" radii="300" onClick={onCancel} aria-label="Cancel"> <IconButton size="300" radii="300" onClick={onCancel} aria-label="Cancel">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
@@ -275,7 +275,7 @@ export function StateEventEditor({ type, stateKey, requestClose }: StateEventEdi
</Chip> </Chip>
</Box> </Box>
<Box shrink="No"> <Box shrink="No">
<IconButton type="button" onClick={requestClose} variant="Surface" aria-label="Close"> <IconButton onClick={requestClose} variant="Surface" aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Box> </Box>
+1 -1
View File
@@ -143,7 +143,7 @@ export function PollCreator({ roomId, threadRootId, onClose }: PollCreatorProps)
Create Poll Create Poll
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" radii="300" onClick={onClose} aria-label="Close"> <IconButton size="300" radii="300" onClick={onClose} aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
+1 -1
View File
@@ -118,7 +118,7 @@ export function ReportRoomModal({ roomId, onClose }: ReportRoomModalProps) {
Report Room Report Room
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" onClick={onClose} radii="300" aria-label="Close"> <IconButton size="300" onClick={onClose} radii="300" aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
+1 -1
View File
@@ -124,7 +124,7 @@ export function ReportUserModal({ userId, onClose }: ReportUserModalProps) {
Report User Report User
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" onClick={onClose} radii="300" aria-label="Close"> <IconButton size="300" onClick={onClose} radii="300" aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
@@ -202,7 +202,7 @@ export function ScheduleMessageModal({
{title} {title}
</Text> </Text>
</Box> </Box>
<IconButton type="button" size="300" radii="300" onClick={onClose} aria-label="Close"> <IconButton size="300" radii="300" onClick={onClose} aria-label="Close">
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
+2 -14
View File
@@ -710,13 +710,7 @@ export const MessageDeleteItem = as<
Delete Message Delete Message
</Text> </Text>
</Box> </Box>
<IconButton <IconButton size="300" onClick={handleClose} radii="300" aria-label="Close">
type="button"
size="300"
onClick={handleClose}
radii="300"
aria-label="Close"
>
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
@@ -856,13 +850,7 @@ export const MessageReportItem = as<
Report Message Report Message
</Text> </Text>
</Box> </Box>
<IconButton <IconButton size="300" onClick={handleClose} radii="300" aria-label="Close">
type="button"
size="300"
onClick={handleClose}
radii="300"
aria-label="Close"
>
<Icon src={Icons.Cross} /> <Icon src={Icons.Cross} />
</IconButton> </IconButton>
</Header> </Header>
+1 -1
View File
@@ -48,7 +48,7 @@ import {
const EMOJI_FONTS = 'var(--font-flags), var(--font-emoji)'; const EMOJI_FONTS = 'var(--font-flags), var(--font-emoji)';
const FONT_MAP: Record<string, string> = { const FONT_MAP: Record<string, string> = {
system: `system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', ${EMOJI_FONTS}, sans-serif`, system: `system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', ${EMOJI_FONTS}, sans-serif`,
inter: `'InterVariable', ${EMOJI_FONTS}, sans-serif`, inter: `'Inter Variable', 'InterVariable', ${EMOJI_FONTS}, sans-serif`,
'jetbrains-mono': `'JetBrains Mono', ${EMOJI_FONTS}, monospace`, 'jetbrains-mono': `'JetBrains Mono', ${EMOJI_FONTS}, monospace`,
'fira-code': `'Fira Code', ${EMOJI_FONTS}, monospace`, 'fira-code': `'Fira Code', ${EMOJI_FONTS}, monospace`,
}; };
+3 -2
View File
@@ -42,7 +42,8 @@
--font-emoji: 'Twemoji_DISABLED'; --font-emoji: 'Twemoji_DISABLED';
--font-flags: 'TwemojiFlags_DISABLED'; --font-flags: 'TwemojiFlags_DISABLED';
--font-secondary: 'InterVariable', var(--font-flags), var(--font-emoji), sans-serif; --font-secondary:
'Inter Variable', 'InterVariable', var(--font-flags), var(--font-emoji), sans-serif;
} }
.dark-theme, .dark-theme,
@@ -66,7 +67,7 @@
--mx-uc-7: hsl(243, 100%, 80%); --mx-uc-7: hsl(243, 100%, 80%);
--mx-uc-8: hsl(94, 100%, 80%); --mx-uc-8: hsl(94, 100%, 80%);
--font-secondary: 'InterVariable', var(--font-emoji), sans-serif; --font-secondary: 'Inter Variable', 'InterVariable', var(--font-emoji), sans-serif;
} }
html { html {