feat: add global font settings with per-project override

- Add fontFamilySans and fontFamilyMono to GlobalSettings type
- Add global font state and actions to app store
- Update getEffectiveFontSans/Mono to fall back to global settings
- Add font selectors to global Settings → Appearance
- Add "Use Global Font" checkboxes in Project Settings → Theme
- Add fonts to settings sync and migration
- Include fonts in import/export JSON
This commit is contained in:
Stefan de Vogelaere
2026-01-16 23:54:35 +01:00
parent c747baaee2
commit f3b00d0f78
6 changed files with 287 additions and 77 deletions

View File

@@ -556,6 +556,8 @@ export function hydrateStoreFromSettings(settings: GlobalSettings): void {
useAppStore.setState({
theme: settings.theme as unknown as import('@/store/app-store').ThemeMode,
fontFamilySans: settings.fontFamilySans ?? null,
fontFamilyMono: settings.fontFamilyMono ?? null,
sidebarOpen: settings.sidebarOpen ?? true,
chatHistoryOpen: settings.chatHistoryOpen ?? false,
maxConcurrency: settings.maxConcurrency ?? 3,

View File

@@ -33,6 +33,8 @@ const SYNC_DEBOUNCE_MS = 1000;
// Fields to sync to server (subset of AppState that should be persisted)
const SETTINGS_FIELDS_TO_SYNC = [
'theme',
'fontFamilySans',
'fontFamilyMono',
'sidebarOpen',
'chatHistoryOpen',
'maxConcurrency',