# feat\(web\): configurable font families under Settings → Appearance · stienswout/t3code

[View on GitCafe](https://git.cafe/stienswout/t3code/commit/316c0019e273b855d93509c9b3b72d57a463b9f1)

Repository: [stienswout/t3code](https://git.cafe/stienswout/t3code)

Visibility: public

Requested revision: 316c0019e273b855d93509c9b3b72d57a463b9f1

Requested commit: 316c0019e273b855d93509c9b3b72d57a463b9f1

Commit: 316c0019e273b855d93509c9b3b72d57a463b9f1

Tree: a4f25ecd3c40131f0431a6ce857cadc1c053faa4

Author: Wout Stiens

Committer: Wout Stiens

## Message

```
feat(web): configurable font families under Settings → Appearance

Adds a Fonts section to Appearance with four client-persisted
preferences — interface (sans), composer, code, and terminal font
families. Family only; sizing is deliberately left for a follow-up.

- contracts: four FontFamilyPreference client settings (empty string
  means default), patchable per key
- the font theme tokens move out of the inline Tailwind theme so
  utilities reference the variables, and a FontAppearanceSync applies
  custom families as CSS variable overrides with the default stacks
  kept as fallbacks
- the composer gets its own --font-composer variable (defaults to the
  sans stack) applied on the editor surface, so prompt writers can use
  a mono face without changing the rest of the app
- the terminal preference feeds the Ghostty surface's font option and
  live setFont from #4860's groundwork; the bundled Nerd Font symbols
  fallback keeps prompt glyphs on any custom face
- each settings row shows a live preview rendered in the resolved
  stack, with per-row reset; custom names are normalized and quoted
  through tested pure helpers

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

```

## Parents

- [acf761b2f511e1918260a8043e151bbc2849e29a](https://git.cafe/stienswout/t3code/commit/acf761b2f511e1918260a8043e151bbc2849e29a?format=markdown)

[Source at this commit](https://git.cafe/stienswout/t3code/tree/316c0019e273b855d93509c9b3b72d57a463b9f1?format=markdown)
