SPB Git

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.6 KB · 64 lines typescript
Raw Blame History
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