/* * settings.ts * Zyquo Cloud Web * * Author: Simon-Pierre Boucher * Mail: contact@spboucher.ai * * App settings — localStorage under zyquo.cloud.web.settings. Light theme is * the flagship default (never dark-auto). Proxy base-URL overrides per * provider live here (CORS fallback / Zyquo Router). */ import type { Settings } from '../types' import { defaultModel } from '../providers/catalog' const SETTINGS_KEY = 'zyquo.cloud.web.settings' export function defaultSettings(): Settings { const model = defaultModel() return { theme: 'light', accent: 'indigo', chatFontSize: 13.5, density: 'comfortable', defaultModelID: model.id, defaultProvider: model.provider, defaultSystemPrompt: '', defaultParameters: {}, proxyBaseURLs: {}, streamingEnabled: true, aliases: {}, favoriteModelIDs: [], recentModelIDs: [], firstRunAcknowledged: false, focusMode: false, } } export function loadSettings(): Settings { try { const raw = localStorage.getItem(SETTINGS_KEY) if (!raw) return defaultSettings() const parsed: unknown = JSON.parse(raw) if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) { return { ...defaultSettings(), ...(parsed as Partial) } } return defaultSettings() } catch { return defaultSettings() } } export function saveSettings(settings: Settings): void { localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings)) } export function clearSettings(): void { localStorage.removeItem(SETTINGS_KEY) } export function rawSettingsRecord(): string | null { return localStorage.getItem(SETTINGS_KEY) }