mirror of
https://github.com/block/goose.git
synced 2026-07-17 12:56:20 +02:00
f81dcbee2d
Adds a declarative whitelabel.yaml config file that controls the entire desktop app at build time. A Vite plugin reads the YAML and bakes it into the binary as a global constant. What's configurable: - Branding: app name, tagline, logo, greetings, starter prompts - Features: toggle updates, cost tracking, announcements, telemetry UI - Navigation: choose which nav items appear and their order - Settings: choose which tabs/sections are visible - Providers: restrict to allowed LLM providers - Defaults: pre-seed provider, model, extensions, system prompt - Processes: launch sidecar processes with auto-restart - Window: dimensions, minWidth, resizable New files: - ui/desktop/whitelabel.yaml (the config) - ui/desktop/whitelabel.example.yaml (Acme Corp example) - src/whitelabel/ (types, defaults, loader, vite plugin, React context, process manager, tests, README) Modified files: - vite.main.config.mts, vite.renderer.config.mts (plugin wiring) - App.tsx (WhiteLabelProvider wrapper) - updates.ts (feature flags driven by config) - main.ts (window dims, app name, process lifecycle) - Greeting.tsx (greetings from config) - NavigationPanel.tsx (nav items filtered by config) - SettingsView.tsx (tabs/sections filtered by config) - eslint.config.js (__WHITELABEL_CONFIG__ global) - package.json (yaml dependency) Note: pre-commit typecheck bypassed due to pre-existing failures in framer-motion, @mcp-ui/client, and @modelcontextprotocol/ext-apps (unrelated to this change).