Skip to content

feat(web): use self-hosted Inter as Windows default font - #6151

Open
SlasshyOverhere wants to merge 3 commits into
pingdotgg:mainfrom
SlasshyOverhere:t3code/inter-windows-font
Open

feat(web): use self-hosted Inter as Windows default font#6151
SlasshyOverhere wants to merge 3 commits into
pingdotgg:mainfrom
SlasshyOverhere:t3code/inter-windows-font

Conversation

@SlasshyOverhere

@SlasshyOverhere SlasshyOverhere commented Aug 11, 2026

Copy link
Copy Markdown

What Changed

Self-host Inter (variable font) and use it for the Windows UI:

  • Add @fontsource-variable/inter (bundled, no CDN, works offline in Electron).
  • Gate it behind a windows class on <html>, set pre-paint in index.html, so only Windows renders Inter. macOS/Linux keep the system default stack untouched.
  • --font-sans on Windows becomes "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif. Segoe UI stays as the fallback, so a load failure degrades cleanly.
  • User-chosen fonts in Settings -> Appearance still win: the runtime writes --font-sans inline, which overrides the stylesheet.
  • Show "Inter Variable" as the resolved default family in the interface font picker on Windows, mirroring what actually renders.
  • Code/mono and terminal fonts are untouched.

Why

The Windows default UI font (Segoe UI) renders poorly in this app and looks bad . Inter is a first-party quality UI font, and the macOS/Linux defaults (SF Pro / system-ui) already look good, so the change is scoped to Windows only. Self-hosting keeps it offline-capable and consistent across installs instead of depending on a CDN.

UI Changes

Before (Windows, Segoe UI) :

t3-code-before

After (Windows, Inter) :

t3-code-after

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (needs your two screenshots)
  • I included a video for animation/interaction changes (N/A - no motion involve

Note

Low Risk
Scoped to Windows UI sans typography and appearance CSS variables; no auth, data, or business-logic changes. Slight bundle size increase from the self-hosted font.

Overview
Windows-only default UI typography now prefers bundled Inter Variable instead of Segoe UI, while macOS and Linux keep the existing system stacks.

The PR adds @fontsource-variable/inter and loads it from main.tsx. Pre-paint boot code in index.html adds a windows class on <html> when navigator.platform looks like Windows; index.css uses that to set --font-sans with Inter first and Segoe UI still in the fallback chain.

Runtime appearance wiring in appearanceFonts.ts introduces WINDOWS_SANS_FONT_STACK and makes applyAppearanceFontVariables prepend custom interface fonts to that stack on Windows so user picks in Settings stay consistent with the CSS default. The interface font picker labels the unset default as Inter Variable on Windows when probing cannot see the webfont yet. Code/mono and terminal fonts are unchanged.

Reviewed by Cursor Bugbot for commit f055535. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Use self-hosted Inter Variable as the default sans-serif font on Windows

  • Detects Windows at startup via navigator.platform and adds a windows class to <html>, which triggers an Inter Variable font stack in both the CSS defaults and the --font-sans CSS variable.
  • Loads the Inter Variable font via a side-effect import of @fontsource-variable/inter in main.tsx.
  • Updates useFontDefaultFamilies in SettingsPanels.tsx to show 'Inter Variable' as the default sans label on Windows.
  • Behavioral Change: Windows users now see Inter Variable instead of the system default sans-serif font (typically Segoe UI).

Macroscope summarized f055535.

- Add @fontsource-variable/inter and gate it behind html.windows
- Show Inter as the resolved default family on Windows in settings
Copilot AI lite review requested due to automatic review settings August 11, 2026 11:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b5376d93-5641-4d27-b716-7ed6fa4d41d5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f2453af. Configure here.

Comment thread apps/web/src/appearanceFonts.ts
Comment thread apps/web/src/components/settings/SettingsPanels.tsx
@macroscopeapp

macroscopeapp Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved fa60f14

This PR adds a self-hosted Inter font as the default for Windows users. Changes are limited to typography/appearance with test coverage included. No core logic or security implications - purely visual enhancement.

You can customize Macroscope's approvability policy. Learn more.

Custom interface fonts and the settings default label now use the
Windows Inter stack on Windows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants