⚙️ Configuración (Desktop)
Esta página documenta dónde y cómo se guardan los ajustes de Context Code Desktop: providers, modelos, secretos, apariencia, voices y atajos. Para la configuración por chat (permisos por sesión, modo plan, providers por chat) consulta: /desktop/permisos.
🗂️ Dónde se guardan los ajustes
La app usa dos niveles de persistencia:
Frontend — localStorage (preferencias de UI)
Ubicado en el perfil del WebView. Claves principales (en src/App.tsx:161-689):
desktop_panels_reset_v8— estado de reset de paneles.desktop_sidebar_width,desktop_dock_width,desktop_terminal_dock_width— anchos de paneles laterales.desktop_sidebar_collapsed— sidebar plegado.desktop_show_floating_panel,desktop_show_token_usage_panel— visibilidad de paneles flotantes.desktop_pinned_workspace_ids— workspaces fijados.desktop_window_maximized— estado maximizado.desktop_allow_no_cli,desktop_core_runtime_enabled— modos de motor.context-code-bridge-linked-chat,context-code-bridge-allowlist-whatsapp— bridges (WhatsApp/Telegram).
Backend Rust — SQLite cifrado
Ubicado en %LOCALAPPDATA%/ContextCodeDesktop/ (Windows) o ~/.local/share/ContextCodeDesktop/ (Linux/Mac).
Archivos:
provider-state.sqlite3— perfiles de proveedores, modelos, base_url,last_model, perfil activo.secure_storage(tabla) — API keys cifradas con AES-256-GCM (core/auth.rs:3,75). El bridge (WhatsApp/Telegram) usa campos propios dentro de la misma tabla (commands/bridge.rs:34,93)..mcp.jsonysettings.json— configuración de servidores MCP y skills; editados directamente por la UI de Skills/MCP (commands/mcp_skills.rs:94-316).
🧠 Panel de Configuración por Chat (ChatConfigEditor)
src/components/ChatConfigEditor.tsx ofrece 5 pestañas para configurar el chat activo:
1. Models (proveedor + modelo)
- Selector de proveedor estilo "tema": dropdown agrupado (Nube OAuth / API Keys / Local) con logos, descripciones y estado de conexión (
ProviderSelector). - Selector de modelo: dropdown con recomendados, disponibles y opción "personalizado" (
ModelSelector). - Configuración de credencial: API key inline (cifrada al guardar), botón de OAuth para Claude/OpenAI/Gemini, base URL custom para Ollama/LM Studio/Bedrock/Vertex/Foundry.
Lista de proveedores soportados (src/components/chatConfig/providerMeta.tsx):
- OAuth (☁️): Anthropic Claude, OpenAI GPT, Gemini Google.
- API Key (🔑): FreeModel, Gemini API, OpenRouter, Nvidia NIM, Zhipu AI (ZAI), MiniMax AI, Amazon Bedrock, Google Vertex AI, Azure AI Foundry, DeepSeek, xAI (Grok), GMI Cloud, NovitaAI, StepFun, HuggingFace, OpenCode Zen, Arcee AI, Alibaba (Qwen), Kimi (Moonshot).
- Local (💻): Ollama, LM Studio.
2. TTS (text-to-speech)
TtsSettingscon catálogo de voces del sistema y Edge TTS.- Configuración: voz por defecto, velocidad, tono, idioma preferido.
- Almacenamiento:
lib/speechUtils.ts.
3. STT (speech-to-text)
SttSettingscon Whisper local y Edge.- Whisper descarga el modelo bajo demanda (evento
whisper://download); Edge usa el servicio de Microsoft. - Permisos: requiere acceso a micrófono (Windows:
WebView2/ Mac:TCC).
4. Permissions
- Toggles
filesystem | shell | network | confirmations. - Presets:
ReadOnly,SafeEdit(default),FullPower. - Ver: /desktop/permisos.
5. Appearance (tema, fuente)
- Selector de tema (
ThemeSelector): 28+ built-in (Context Code, Light, Dark, Solarized, Dracula, Nord, High-Contrast, Sepia, Midnight, Forest, Monokai, Gruvbox, Tokyo Night, Catppuccin, One Dark, GitHub Light/Dark/Dimmed/High-Contrast, Rose Pine, Ayu Dark, Material, Synthwave, Cobalt, Everforest). - Crear / editar / borrar temas personalizados (vía
upsertCustomTheme/deleteCustomTheme). - Fuente y tamaño de fuente:
FONT_FAMILY_OPTIONSyFONT_SIZE_OPTIONS.
🔐 Gestión de secretos
- API keys: se almacenan en la tabla
secure_storagecifradas con AES-256-GCM. La passphrase se deriva del perfil de usuario (no expuesta al frontend). - Variables de entorno: si defines
ANTHROPIC_API_KEY,OPENAI_API_KEY, etc., tienen prioridad sobre el almacenamiento seguro (env_api_keyencore/config.rs:540). - Bridge tokens (WhatsApp/Telegram): cifrados en
secure_storagecon un campo por bridge; gestión desde el panelBridgesPanel.
No uses tauri-plugin-stronghold ni keyring del sistema: el cifrado es local-first (no depende del llavero del SO).
🧾 Settings y MCP
La app lee/escribe directamente settings.json y .mcp.json del workspace activo. Estos archivos siguen la convención del CLI:
settings.json—permissions,enableAllProjectMcpServers, etc..mcp.json— declaración de servidores MCP (stdio/sse).
Edítalos desde la UI de Skills/MCP (SkillsMcpPanel.tsx + SkillsGallery.tsx); los cambios se sincronizan con el CLI embebido y con el motor nativo.
Ver: /desktop/mcp.
