spb/zyquo-cloud-web Public MIT
Zyquo Cloud Web — every cloud model, one beautiful chat, entirely in your browser.
TypeScript 81.9%
CSS 8.9%
JavaScript 7.5%
Shell 1.1%
HTML 0.6%
1/*2 * settings.ts3 * Zyquo Cloud Web4 *5 * Author: Simon-Pierre Boucher6 * Mail: contact@spboucher.ai7 *8 * App settings — localStorage under zyquo.cloud.web.settings. Light theme is9 * the flagship default (never dark-auto). Proxy base-URL overrides per10 * provider live here (CORS fallback / Zyquo Router).11 */1213import type { Settings } from '../types'14import { defaultModel } from '../providers/catalog'1516const SETTINGS_KEY = 'zyquo.cloud.web.settings'1718export function defaultSettings(): Settings {19 const model = defaultModel()20 return {21 theme: 'light',22 accent: 'indigo',23 chatFontSize: 13.5,24 density: 'comfortable',25 defaultModelID: model.id,26 defaultProvider: model.provider,27 defaultSystemPrompt: '',28 defaultParameters: {},29 proxyBaseURLs: {},30 streamingEnabled: true,31 aliases: {},32 favoriteModelIDs: [],33 recentModelIDs: [],34 firstRunAcknowledged: false,35 focusMode: false,36 }37}3839export function loadSettings(): Settings {40 try {41 const raw = localStorage.getItem(SETTINGS_KEY)42 if (!raw) return defaultSettings()43 const parsed: unknown = JSON.parse(raw)44 if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {45 return { ...defaultSettings(), ...(parsed as Partial<Settings>) }46 }47 return defaultSettings()48 } catch {49 return defaultSettings()50 }51}5253export function saveSettings(settings: Settings): void {54 localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings))55}5657export function clearSettings(): void {58 localStorage.removeItem(SETTINGS_KEY)59}6061export function rawSettingsRecord(): string | null {62 return localStorage.getItem(SETTINGS_KEY)63}64