All notable changes to CC Switch will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Windows Home Dir Regression: Prevent providers/settings “disappearing” after upgrading from v3.10.2 → v3.10.3 when
HOMEdiffers from the real user profile directory; restore default path resolution and auto-detect the v3.10.3 legacy database location.
This release introduces a generic API format selector, pricing configuration enhancements, and multiple UX improvements.
- API Key Link for OpenCode: API key link support for OpenCode provider form, enabling quick access to provider key management pages
- AICodeMirror Partner Preset: Added AICodeMirror partner preset for all apps (Claude, Codex, Gemini, OpenCode)
- API Format Selector: Generic API format chooser for Claude providers, replacing the OpenRouter-specific toggle. Supports Anthropic Messages (native) and OpenAI Chat Completions format
- API Format Presets: Allow preset providers to specify API format (anthropic or openai_chat) for third-party proxy services
- Proxy Hint: Display info toast when switching to OpenAI Chat format provider, reminding users to enable proxy
- Pricing Config Enhancement: Per-provider cost multiplier, pricing model source (request/response), request model logging, and enriched usage UI (#781)
- Skills ZIP Install: Install skills directly from local ZIP files with recursive scanning support
- Preferred Terminal: Choose preferred terminal app per platform (macOS: Terminal.app/iTerm2/Alacritty/Kitty/Ghostty; Windows: cmd/PowerShell/Windows Terminal; Linux: GNOME Terminal/Konsole/Xfce4/Alacritty/Kitty/Ghostty)
- Silent Startup: Option to prevent window popup on launch (#713)
- OpenCode Environment Check: Version detection with Go path scanning and one-click install from GitHub Releases
- OpenCode Directory Sync: Auto-sync all providers to live config on directory change with additive mode support
- NVIDIA NIM Preset: New provider preset for Claude and OpenCode with nvidia.svg icon
- n1n.ai Preset: New provider preset (#667)
- Update Badge Icon: Replace update badge dot with ArrowUpCircle icon
- Linux ARM64: CI build support for Linux ARM64 architecture
- API Format Migration: Migrate api_format from settings_config to ProviderMeta to prevent polluting ~/.claude/settings.json
- DeepSeek max_tokens: Remove max_tokens clamp from proxy transform layer
- Terminal Functions: Consolidate redundant terminal launch functions
- Home Dir Utility: Consolidate get_home_dir into single public function
- Kimi/Moonshot: Upgrade provider presets to k2.5 model
- Codex 404 & Timeout: Fix 404 errors and connection timeout with custom base_url; improve /v1 prefix handling and system proxy detection (#760)
- Proxy URL Building: Fix duplicate /v1/v1 in URL; extend ?beta=true to /v1/chat/completions endpoint
- OpenRouter Compat Mode: Improve backward compatibility supporting number and string types
- Gemini Visibility: Correct Gemini default visibility to true (#818)
- Footer Layout: Correct footer layout in advanced settings tab
- Claude Code Detection: Prioritize native install path for detection
- Tray Menu: Simplify title labels and optimize menu separators (#796)
- Duplicate Skills: Prevent duplicate skill installation from different repos (#778)
- Windows Tests: Stabilize test environment (#644)
- i18n: Update apiFormatOpenAIChat label to mention proxy requirement
- Error Display: Use extractErrorMessage for complete error display in mutations
- Sponsors: Add AICodeMirror and reorder sponsor list
This maintenance release adds skill sync options and includes important bug fixes.
- Skills: Add skill sync method setting with symlink/copy options
- Partners: Add RightCode as official partner
- Prompts: Clear prompt file when all prompts are disabled
- OpenCode: Preserve extra model fields during serialization
- Provider Form: Backfill model fields when editing Claude provider
This maintenance release includes important bug fixes for Windows platform, UI improvements, and code quality enhancements.
- Provider Icons: Updated RightCode provider icon with improved visual design
- Proxy Rectifier: Changed rectifier default state to disabled for better stability
- Window Settings: Reordered window settings and updated default values for improved UX
- UI Layout: Increased app icon collapse threshold from 3 to 4 icons
- Code Quality: Simplified
RectifierConfigimplementation using#[derive(Default)]
- Windows Platform:
- Fixed terminal window closing immediately after execution on Windows
- Corrected OpenCode config path resolution on Windows
- UI Improvements:
- Fixed ProviderIcon color validation to prevent black icons from appearing
- Unified layout padding across all panels for consistent spacing
- Fixed panel content alignment with header constraints
- Code Quality: Resolved Rust Clippy warnings and applied consistent formatting
This release introduces OpenCode support and brings improvements across proxy, usage tracking, and overall UX.
- OpenCode Support - Manage OpenCode providers, MCP servers, and Skills, with first-launch import and full internationalization (#695)
- Global Proxy - Add global proxy settings for outbound network requests (#596)
- Claude Rectifier - Add thinking signature rectifier for Claude API (#595)
- Health Check Enhancements - Configurable prompt and CLI-compatible requests for stream health check (#623)
- Per-Provider Config - Support provider-specific configuration and persistence (#663)
- App Visibility Controls - Show/hide apps and keep tray menu in sync (Gemini hidden by default)
- Takeover Compact Mode - Use a compact AppSwitcher layout when showing 3+ visible apps
- Keyboard Shortcut - Press
ESCto quickly go back/close panels (#670) - Terminal Improvements - Provider-specific terminal button,
fnmpath support, and safer cross-platform launching (#564) - WSL Tool Detection - Detect tool versions in WSL with additional security hardening (#627)
- Skills Presets - Add
baoyu-skillspreset repo and auto-supplement missing default repos
- Proxy Logging - Simplify proxy log output (#585)
- Pricing Editor UX - Unify pricing edit modal with
FullScreenPanel - Advanced Settings Layout - Move rectifier section below failover for better flow
- OpenRouter Compat Mode - Disable OpenRouter compatibility mode by default and hide UI toggle
- Auto Failover - Switch to P1 immediately when enabling auto failover
- Provider Edit Dialog - Fix stale data when reopening provider editor after save (#654)
- Deeplink - Support multiple endpoints and prioritize
GOOGLE_GEMINI_BASE_URLoverGEMINI_BASE_URL(#597) - MCP (WSL) - Skip
cmd /cwrapper for WSL target paths (#592) - Usage Templates - Add variable hints and validation fixes; prevent config leaking between providers (#628)
- Gemini Timeout Format - Convert timeout params to Gemini CLI format (#580)
- UI - Fix Select dropdown rendering in
FullScreenPanel; auto-apply default icon color when unset - Usage UI - Auto-adapt usage block offset based on action buttons width (#613)
- Provider Endpoint - Persist endpoint auto-select state (#611)
- Provider Form - Reset baseUrl and apiKey states when switching presets
This release focuses on stability improvements and crash prevention.
- Crash Logging - Panic hook captures crash info to
~/.cc-switch/crash.logwith full stack traces (#562) - Release Logging - Enable logging for release builds with automatic rotation (keeps 2 most recent files)
- AIGoCode Icon - Added colored icon for AIGoCode provider preset
- Proxy Panic Prevention - Graceful degradation when HTTP client initialization fails due to invalid proxy settings; falls back to no_proxy mode (#560)
- UTF-8 Safety - Fix potential panic when masking API keys or truncating logs containing multi-byte characters (Chinese, emoji, etc.) (#560)
- Default Proxy Port - Change default port from 5000 to 15721 to avoid conflict with macOS AirPlay Receiver (#560)
- Windows Title - Display "CC Switch" instead of default "Tauri app" in window title
- Windows/Linux Spacing - Remove extra 28px blank space below native titlebar introduced in v3.9.0
- Flatpak Tray Icon - Bundle libayatana-appindicator for tray icon support on Flatpak (#556)
- Provider Preset - Correct casing from "AiGoCode" to "AIGoCode" to match official branding
This stable release includes all changes from 3.9.0-1, 3.9.0-2, and 3.9.0-3.
- Local API Proxy - High-performance local HTTP proxy for Claude Code, Codex, and Gemini CLI (Axum-based)
- Per-App Takeover - Independently route each app through the proxy with automatic live-config backup/redirect
- Auto Failover - Circuit breaker + smart failover with independent queues and health tracking per app
- Universal Provider - Shared provider configurations that can sync to Claude/Codex/Gemini (ideal for API gateways like NewAPI)
- Provider Search Filter - Quick filter to find providers by name (#435)
- Keyboard Shortcut - Open settings with Command+comma / Ctrl+comma (#436)
- Deeplink Usage Config - Import usage query config via deeplink (#400)
- Provider Icon Colors - Customize provider icon colors (#385)
- Skills Multi-App Support - Skills now support both Claude Code and Codex (#365)
- Closable Toasts - Close button for switch toast and all success toasts (#350)
- Skip First-Run Confirmation - Option to skip Claude Code first-run confirmation dialog
- MCP Import - Import MCP servers from installed apps
- Common Config Snippet Extraction - Extract reusable common config snippets from the current provider or editor content (Claude/Codex/Gemini)
- Usage Enhancements - Model extraction, request logging improvements, cache hit/creation metrics, and auto-refresh (#455, #508)
- Error Request Logging - Detailed logging for proxy requests (#401)
- Linux Packaging - Added RPM and Flatpak packaging targets
- Provider Presets & Icons - Added/updated partner presets and icons (e.g., MiMo, DMXAPI, Cubence)
- Usage Terminology - Rename "Cache Read/Write" to "Cache Hit/Creation" across all languages (#508)
- Model Pricing Data - Refresh built-in model pricing table (Claude full version IDs, GPT-5 series, Gemini ID formats, and Chinese models) (#508)
- Proxy Header Forwarding - Switch to a blacklist approach and improve header passthrough compatibility (#508)
- Failover Behavior - Bypass timeout/retry configs when failover is disabled; update default failover timeout and circuit breaker values (#508, #521)
- Provider Presets - Update default model versions and change the default Qwen base URL (#517)
- Skills Management - Unify Skills management architecture with SSOT + React Query; improve caching for discoverable skills
- Settings UX - Reorder items in the Advanced tab for better discoverability
- Proxy Active Theme - Apply emerald theme when proxy takeover is active
- Security - Security fixes for JavaScript executor and usage script (#151)
- Usage Timezone & Parsing - Fix datetime picker timezone handling; improve token parsing/billing for Gemini and Codex formats (#508)
- Windows Compatibility - Improve MCP export and version check behavior to avoid terminal popups
- Windows Startup - Use system titlebar to prevent black screen on startup
- WebView Compatibility - Add fallback for crypto.randomUUID() on older WebViews
- macOS Autostart - Use
.appbundle path to prevent terminal window popups - Database - Add missing schema migrations; show an error dialog on initialization failure with a retry option
- Import/Export - Restrict SQL import to CC Switch exported backups only; refresh providers immediately after import
- Prompts - Allow saving prompts with empty content
- MCP Sync - Skip sync when the target CLI app is not installed
- Common Config (Codex) - Preserve MCP server
base_urlduring extraction and remove provider-specificmodel_providersblocks - Proxy - Improve takeover detection and stability; clean up model override env vars when switching providers in takeover mode (#508)
- Skills - Skip hidden directories during discovery; fix wrong skill repo branch
- Settings Navigation - Navigate to About tab when clicking update badge
- UI - Fix dialogs not opening on first click and improve window dragging area in
FullScreenPanel
Third beta release with important bug fixes for Windows compatibility, UI improvements, and new features.
- Universal Provider - Support for universal provider configurations (#348)
- Provider Search Filter - Quick filter to find providers by name (#435)
- Keyboard Shortcut - Open settings with Command+comma / Ctrl+comma (#436)
- Xiaomi MiMo Icon - Added MiMo icon and Claude provider configuration (#470)
- Usage Model Extraction - Extract model info from usage statistics (#455)
- Skip First-Run Confirmation - Option to skip Claude Code first-run confirmation dialog
- Exit Animations - Added exit animation to FullScreenPanel dialogs
- Fade Transitions - Smooth fade transitions for app/view/panel switching
- Wrap npx/npm commands with
cmd /cfor MCP export - Prevent terminal windows from appearing during version check
- Use .app bundle path for autostart to prevent terminal window popup
- Resolve Dialog/Modal not opening on first click (#492)
- Improve dark mode text contrast for form labels
- Reduce header spacing and fix layout shift on view switch
- Prevent header layout shift when switching views
- Add missing base columns migration for proxy_config
- Add backward compatibility check for proxy_config seed insert
- Use local timezone and robust DST handling in usage stats (#500)
- Remove deprecated
sync_enabled_to_codexcall - Gracefully handle invalid Codex config.toml during MCP sync
- Add missing translations for reasoning model and OpenRouter compat mode
- macOS Tray - Use macOS tray template icon
- Header Alignment - Remove macOS titlebar tint, align custom header
- Shadow Removal - Cleaner UI by removing shadow styles
- Code Inspector - Added code-inspector-plugin for development
- i18n - Complete internationalization for usage panel and settings
- Sponsor Logos - Made sponsor logos clickable
- 35 commits since v3.9.0-2
- 5 files changed in test/lint fixes
Second beta release focusing on proxy stability, import safety, and provider preset polish.
- DMXAPI Partner - Added DMXAPI as an official partner provider preset
- Provider Icons - Added provider icons for OpenRouter, LongCat, ModelScope, and AiHubMix
- Proxy (OpenRouter) - Switched OpenRouter to passthrough mode for native Claude API
- Import/Export - Restrict SQL import to CC Switch exported backups only; refresh providers immediately after import
- Proxy - Respect existing Claude token when syncing; add fallback recovery for orphaned takeover state; remove global auto-start flag
- Windows - Add minimum window size to Windows platform config
- UI - Improve About section UI (#419) and unify header toolbar styling
- 13 commits since v3.9.0-1
This beta release introduces the Local API Proxy feature, along with Skills multi-app support, UI improvements, and numerous bug fixes.
- Local HTTP Proxy - High-performance proxy server built on Axum framework
- Multi-app Support - Unified proxy for Claude Code, Codex, and Gemini CLI API requests
- Per-app Takeover - Independent control over which apps route through the proxy
- Live Config Takeover - Automatically backs up and redirects CLI configurations to local proxy
- Circuit Breaker - Automatically detects provider failures and triggers protection
- Smart Failover - Automatically switches to backup provider when current one is unavailable
- Health Tracking - Real-time monitoring of provider availability
- Independent Failover Queues - Each app maintains its own failover queue
- Request Logging - Detailed logging of all proxy requests
- Usage Statistics - Token consumption, latency, success rate metrics
- Real-time Status - Frontend displays proxy status and statistics
- Multi-app Support - Skills now support both Claude and Codex (#365)
- Multi-app Migration - Existing Skills auto-migrate to multi-app structure (#378)
- Installation Path Fix - Use directory basename for skill installation path (#358)
- Provider Icon Colors - Customize provider icon colors (#385)
- Deeplink Usage Config - Import usage query config via deeplink (#400)
- Error Request Logging - Detailed logging for proxy requests (#401)
- Closable Toast - Added close button to switch notification toast (#350)
- Icon Color Component - ProviderIcon component supports color prop (#384)
- Takeover Codex base_url via model_provider
- Harden crash recovery with fallback detection
- Sync UI when active provider differs from current setting
- Resolve circuit breaker race condition and error classification
- Stabilize live takeover and provider editing
- Reset health badges when proxy stops
- Retry failover for all HTTP errors including 4xx
- Fix HalfOpen counter underflow and config field inconsistencies
- Resolve circuit breaker state persistence and HalfOpen deadlock
- Auto-recover live config after abnormal exit
- Update live backup when hot-switching provider in proxy mode
- Wait for server shutdown before exiting app
- Disable auto-start on app launch by resetting enabled flag on stop
- Sync live config tokens to database before takeover
- Resolve 404 error and auto-setup proxy targets
- Skip sync when target CLI app is not installed
- Improve upsert and import robustness
- Use browser-compatible platform detection for MCP presets
- Restore fade transition for Skills button
- Add close button to all success toasts
- Prevent card jitter when health badge appears
- Update SettingsPage tab styles (#342)
- Fix Azure website link (#407)
- Add fallback to provider config for usage credentials (#360)
- Fix Windows black screen on startup (use system titlebar)
- Add fallback for crypto.randomUUID() on older WebViews
- Use correct npm package for Codex CLI version check
- Security fixes for JavaScript executor and usage script (#151)
- Proxy Active Theme - Apply emerald theme when proxy takeover is active
- Card Animation - Improved provider card hover animation
- Remove Restart Prompt - No longer prompts restart when switching providers
- Implement per-app takeover mode
- Proxy module contains 20+ Rust files with complete layered architecture
- Add 5 new database tables for proxy functionality
- Modularize handlers.rs to reduce code duplication
- Remove is_proxy_target in favor of failover_queue
- 55 commits since v3.8.2
- 164 files changed
- +22,164 / -570 lines
- Persistence architecture upgrade - Moved from single JSON storage to SQLite + JSON dual-layer; added schema versioning, transactions, and SQL import/export; first launch auto-migrates
config.jsonto SQLite while keeping originals safe. - Brand new UI - Full layout redesign, unified component/ConfirmDialog styles, smoother animations, overscroll disabled; Tailwind CSS downgraded to v3.4 for compatibility.
- Japanese language support - UI now localized in Chinese/English/Japanese.
- Skills recursive scanning - Discovers nested
SKILL.mdfiles across multi-level directories; same-name skills allowed by full-path dedup. - Provider icons - Presets ship with default icons; custom icon colors; icons retained when duplicating providers.
- Auto launch on startup - One-click enable/disable using Registry/LaunchAgent/XDG autostart.
- Provider preset - Added MiniMax partner preset.
- Form validation - Required fields get real-time validation and unified toast messaging.
- Custom endpoints loss - Switched provider updates to
UPDATEto avoid cascade deletes fromINSERT OR REPLACE. - Gemini config writing - Correctly writes custom env vars to
.envand keeps auth configs isolated. - Provider validation - Handles missing current provider IDs and preserves icon fields on duplicate.
- Linux rendering - Fixed WebKitGTK DMA-BUF rendering and preserved user
.desktopcustomizations. - Misc - Removed redundant usage queries; corrected DMXAPI auth token field; restored missing deeplink translations; fixed usage script template init.
- Database modules - Added
schema,backup,migration, and DAO layers for providers/MCP/prompts/skills/settings. - Service modularization - Split provider service into live/auth/endpoints/usage modules; deeplink parsing/import logic modularized.
- Code cleanup - Removed legacy JSON-era import/export, unused MCP types; unified error handling; tests migrated to SQLite backend and MSW handlers updated.
- First launch auto-migrates data from
config.jsonto SQLite and device settings tosettings.json; originals kept; error dialog on failure; dry-run supported.
- 51 commits since v3.7.1; 207 files changed; +17,297 / -6,870 lines. See release-note-v3.8.0 for details.
- Skills third-party repository installation (#268) - Fixed installation failure for skills repositories with custom subdirectories (e.g.,
ComposioHQ/awesome-claude-skills) - Gemini configuration persistence - Resolved issue where settings.json edits were lost when switching providers
- Dialog overlay click protection - Prevented dialogs from closing when clicking outside, avoiding accidental form data loss (affects 11 dialog components)
- Gemini configuration directory support (#255) - Added custom configuration directory option for Gemini in settings
- ArchLinux installation support (#259) - Added AUR installation via
paru -S cc-switch-bin
- Skills error messages i18n - Added 28+ detailed error messages (English & Chinese) with specific resolution suggestions
- Download timeout - Extended from 15s to 60s to reduce network-related false positives
- Code formatting - Applied unified Rust (
cargo fmt) and TypeScript (prettier) formatting standards
- Auto-launch on system startup - Temporarily reverted feature pending further testing and optimization
- Complete Gemini CLI support - Third major application added alongside Claude Code and Codex
- Dual-file configuration - Support for both
.envandsettings.jsonfile formats - Environment variable detection - Auto-detect
GOOGLE_GEMINI_BASE_URL,GEMINI_MODEL, etc. - MCP management - Full MCP configuration capabilities for Gemini
- Provider presets
- Google Official (OAuth authentication)
- PackyCode (partner integration)
- Custom endpoint support
- Deep link support - Import Gemini providers via
ccswitch://protocol - System tray integration - Quick-switch Gemini providers from tray menu
- Backend modules - New
gemini_config.rs(20KB) andgemini_mcp.rs
- Unified management panel - Single interface for Claude/Codex/Gemini MCP servers
- SSE transport type - New Server-Sent Events support alongside stdio/http
- Smart JSON parser - Fault-tolerant parsing of various MCP config formats
- Extended field support - Preserve custom fields in Codex TOML conversion
- Codex format correction - Proper
[mcp_servers]format (auto-cleanup of incorrect[mcp.servers]) - Import/export system - Unified import from Claude/Codex/Gemini live configs
- UX improvements
- Default app selection in forms
- JSON formatter for config validation
- Improved layout and visual hierarchy
- Better validation error messages
- GitHub repository integration - Auto-scan and discover skills from GitHub repos
- Pre-configured repositories
ComposioHQ/awesome-claude-skills(curated collection)anthropics/skills(official Anthropic skills)cexll/myclaude(community, with subdirectory scanning)
- Lifecycle management
- One-click install to
~/.claude/skills/ - Safe uninstall with state tracking
- Update checking (infrastructure ready)
- One-click install to
- Custom repository support - Add any GitHub repo as a skill source
- Subdirectory scanning - Optional
skillsPathfor repos with nested skill directories - Backend architecture -
SkillService(526 lines) with GitHub API integration - Frontend interface
- SkillsPage: Browse and manage skills
- SkillCard: Visual skill presentation
- RepoManager: Repository management dialog
- State persistence - Installation state stored in
skills.json - Full i18n support - Complete Chinese/English translations (47+ keys)
- Multi-preset management - Create, edit, and switch between multiple system prompts
- Cross-app support
- Claude:
~/.claude/CLAUDE.md - Codex:
~/.codex/AGENTS.md - Gemini:
~/.gemini/GEMINI.md
- Claude:
- Markdown editor - Full-featured CodeMirror 6 editor with syntax highlighting
- Smart synchronization
- Auto-write to live files on enable
- Content backfill protection (save current before switching)
- First-launch auto-import from live files
- Single-active enforcement - Only one prompt can be active at a time
- Delete protection - Cannot delete active prompts
- Backend service -
PromptService(213 lines) with CRUD operations - Frontend components
- PromptPanel: Main management interface (177 lines)
- PromptFormModal: Edit dialog with validation (160 lines)
- MarkdownEditor: CodeMirror integration (159 lines)
- usePromptActions: Business logic hook (152 lines)
- Full i18n support - Complete Chinese/English translations (41+ keys)
- Protocol registration -
ccswitch://URL scheme for one-click imports - Provider import - Import provider configurations from URLs or shared links
- Lifecycle integration - Deep link handling integrated into app startup
- Cross-platform support - Works on Windows, macOS, and Linux
- Claude & Codex detection - Identify conflicting environment variables
- Gemini auto-detection - Automatic environment variable discovery
- Conflict management - UI for resolving configuration conflicts
- Prevention system - Warn before overwriting existing configurations
- DouBaoSeed preset - Added ByteDance's DouBao provider
- Kimi For Coding - Moonshot AI coding assistant
- BaiLing preset - BaiLing AI integration
- Removed AnyRouter preset - Discontinued provider
- Model configuration - Support for custom model names in Codex and Gemini
- Provider notes field - Add custom notes to providers for better organization
- Common config migration - Moved Claude common config snippets from localStorage to
config.json - Unified persistence - Common config snippets now shared across all apps
- Auto-import on first launch - Automatically import configs from live files on first run
- Backfill priority fix - Correct priority handling when enabling prompts
- macOS native design - Migrated color scheme to macOS native design system
- Window centering - Default window position centered on screen
- Password input fixes - Disabled Edge/IE reveal and clear buttons
- URL overflow prevention - Fixed overflow in provider cards
- Error notification enhancement - Copy-to-clipboard for error messages
- Tray menu sync - Real-time sync after drag-and-drop sorting
- MCP v3.7.0 cleanup - Removed legacy code and warnings
- Unified structure - Default initialization with v3.7.0 unified structure
- Backward compatibility - Compilation fixes for older configs
- Code formatting - Applied consistent formatting across backend and frontend
- Windows fix - Resolved winreg API compatibility issue (v0.52)
- Safe pattern matching - Replaced
unwrap()with safe patterns in tray menu
- MCP sync on switch - Sync MCP configs for all apps when switching providers
- Gemini form sync - Fixed form fields syncing with environment editor
- Gemini config reading - Read from both
.envandsettings.json - Validation improvements - Enhanced input validation and boundary checks
- JSON syntax fixes - Resolved syntax errors in locale files
- App name i18n - Added internationalization support for app names
- Deduplicated labels - Reused providerForm keys to reduce duplication
- Gemini MCP title - Added missing Gemini MCP panel title
- Usage script validation - Added input validation and boundary checks
- Gemini validation - Relaxed validation when adding providers
- TOML quote normalization - Handle CJK quotes to prevent parsing errors
- MCP field preservation - Preserve custom fields in Codex TOML editor
- Password input - Fixed white screen crash (FormLabel → Label)
- Tray menu safety - Replaced unwrap with safe pattern matching
- Error isolation - Tray menu update failures don't block main operations
- Import classification - Set category to custom for imported default configs
- Model placeholders - Removed misleading model input placeholders
- Base URL population - Auto-fill base URL for non-official providers
- Drag sort sync - Fixed tray menu order after drag-and-drop
- Type safety - Complete TypeScript type coverage across codebase
- Test improvements - Simplified boolean assertions in tests
- Clippy warnings - Fixed
uninlined_format_argswarnings - Code refactoring - Extracted templates, optimized logic flows
- Tauri - Updated to 2.8.x series
- Rust dependencies - Added
anyhow,zip,serde_yaml,tempfilefor Skills - Frontend dependencies - Added CodeMirror 6 packages for Markdown editor
- winreg - Updated to v0.52 (Windows compatibility)
- Startup optimization - Removed legacy migration scanning
- Lock management - Improved RwLock usage to prevent deadlocks
- Background query - Enabled background mode for usage polling
- Total commits: 85 commits from v3.6.0 to v3.7.0
- Code changes: 152 files changed, 18,104 insertions(+), 3,732 deletions(-)
- New modules:
- Skills: 2,034 lines (21 files)
- Prompts: 1,302 lines (20 files)
- Gemini: ~1,000 lines (multiple files)
- MCP refactor: ~3,000 lines (refactored)
v3.7.0 represents a major evolution from "Provider Switcher" to "All-in-One AI CLI Management Platform":
- Capability Extension - Skills provide external ability integration
- Behavior Customization - Prompts enable AI personality presets
- Configuration Unification - MCP v3.7.0 eliminates app silos
- Ecosystem Openness - Deep links enable community sharing
- Multi-AI Support - Claude/Codex/Gemini trinity
- Intelligent Detection - Auto-discovery of environment conflicts
- Users upgrading from v3.1.0 or earlier should first upgrade to v3.2.x for one-time migration
- Skills and Prompts management are new features requiring no migration
- Gemini CLI support requires Gemini CLI to be installed separately
- MCP v3.7.0 unified structure is backward compatible with previous configs
- Provider Duplicate - Quick duplicate existing provider configurations for easy variant creation
- Edit Mode Toggle - Show/hide drag handles to optimize editing experience
- Custom Endpoint Management - Support multi-endpoint configuration for aggregator providers
- Usage Query Enhancements
- Auto-refresh interval: Support periodic automatic usage query
- Test Script API: Validate JavaScript scripts before execution
- Template system expansion: Custom blank template, support for access token and user ID parameters
- Configuration Editor Improvements
- Add JSON format button
- Real-time TOML syntax validation for Codex configuration
- Auto-sync on Directory Change - When switching Claude/Codex config directories (e.g., WSL environment), automatically sync current provider to new directory without manual operation
- Load Live Config When Editing Active Provider - When editing the currently active provider, prioritize displaying the actual effective configuration to protect user manual modifications
- New Provider Presets - DMXAPI, Azure Codex, AnyRouter, AiHubMix, MiniMax
- Partner Promotion Mechanism - Support ecosystem partner promotion (e.g., Zhipu GLM Z.ai)
- Configuration Directory Switching
- Introduced unified post-change sync utility (
postChangeSync.ts) - Auto-sync current providers to new directory when changing Claude/Codex config directories
- Perfect support for WSL environment switching
- Auto-sync after config import to ensure immediate effectiveness
- Use Result pattern for graceful error handling without blocking main flow
- Distinguish "fully successful" and "partially successful" states for precise user feedback
- Introduced unified post-change sync utility (
- UI/UX Enhancements
- Provider cards: Unique icons and color identification
- Unified border design system across all components
- Drag interaction optimization: Push effect animation, improved handle icons
- Enhanced current provider visual feedback
- Dialog size standardization and layout consistency
- Form experience: Optimized model placeholders, simplified provider hints, category-specific hints
- Complete Internationalization Coverage
- Error messages internationalization
- Tray menu internationalization
- All UI components internationalization
- Usage Display Moved Inline - Usage display moved next to enable button
- Configuration Sync
- Fixed
apiKeyUrlpriority issue - Fixed MCP sync-to-other-side functionality failure
- Fixed sync issues after config import
- Prevent silent fallback and data loss on config error
- Fixed
- Usage Query
- Fixed auto-query interval timing issue
- Ensure refresh button shows loading animation on click
- UI Issues
- Fixed name collision error (
get_init_errorcommand) - Fixed language setting rollback after successful save
- Fixed language switch state reset (dependency cycle)
- Fixed edit mode button alignment
- Fixed name collision error (
- Configuration Management
- Fixed Codex API Key auto-sync
- Fixed endpoint speed test functionality
- Fixed provider duplicate insertion position (next to original provider)
- Fixed custom endpoint preservation in edit mode
- Startup Issues
- Force exit on config error (no silent fallback)
- Eliminate code duplication causing initialization errors
Backend Refactoring (Rust) - Completed 5-phase refactoring:
- Phase 1: Unified error handling (
AppError+ i18n error messages) - Phase 2: Command layer split by domain (
commands/{provider,mcp,config,settings,plugin,misc}.rs) - Phase 3: Integration tests and transaction mechanism (config snapshot + failure rollback)
- Phase 4: Extracted Service layer (
services/{provider,mcp,config,speedtest}.rs) - Phase 5: Concurrency optimization (
RwLockinstead ofMutex, scoped guard to avoid deadlock)
Frontend Refactoring (React + TypeScript) - Completed 4-stage refactoring:
- Stage 1: Test infrastructure (vitest + MSW + @testing-library/react)
- Stage 2: Extracted custom hooks (
useProviderActions,useMcpActions,useSettings,useImportExport, etc.) - Stage 3: Component splitting and business logic extraction
- Stage 4: Code cleanup and formatting unification
Testing System:
- Hooks unit tests 100% coverage
- Integration tests covering key processes (App, SettingsDialog, MCP Panel)
- MSW mocking backend API to ensure test independence
Code Quality:
- Unified parameter format: All Tauri commands migrated to camelCase (Tauri 2 specification)
AppTyperenamed toAppId: Semantically clearer- Unified parsing with
FromStrtrait: Centralizedappparameter parsing - Eliminate code duplication: DRY violations cleanup
- Remove unused code:
missing_paramhelper function, deprecatedtauri-api.ts, redundantKimiModelSelectorcomponent
Internal Optimizations:
- Removed Legacy Migration Logic: v3.6 removed v1 config auto-migration and copy file scanning logic
- ✅ Impact: Improved startup performance, cleaner code
- ✅ Compatibility: v2 format configs fully compatible, no action required
⚠️ Note: Users upgrading from v3.1.0 or earlier should first upgrade to v3.2.x or v3.5.x for one-time migration, then upgrade to v3.6
- Command Parameter Standardization: Backend unified to use
appparameter (values:claudeorcodex)- ✅ Impact: More standardized code, friendlier error prompts
- ✅ Compatibility: Frontend fully adapted, users don't need to care about this change
- Updated to Tauri 2.8.x
- Updated to TailwindCSS 4.x
- Updated to TanStack Query v5.90.x
- Maintained React 18.2.x and TypeScript 5.3.x
- Tauri commands only accept the
appparameter (claude/codex); removedapp_type/appTypecompatibility. - Frontend types are standardized to
AppId(removedAppTypeexport); variable naming is standardized toappId.
- MCP (Model Context Protocol) Management - Complete MCP server configuration management system
- Add, edit, delete, and toggle MCP servers in
~/.claude.json - Support for stdio and http server types with command validation
- Built-in templates for popular MCP servers (mcp-fetch, etc.)
- Real-time enable/disable toggle for MCP servers
- Atomic file writing to prevent configuration corruption
- Add, edit, delete, and toggle MCP servers in
- Configuration Import/Export - Backup and restore your provider configurations
- Export all configurations to JSON file with one click
- Import configurations with validation and automatic backup
- Automatic backup rotation (keeps 10 most recent backups)
- Progress modal with detailed status feedback
- Endpoint Speed Testing - Test API endpoint response times
- Measure latency to different provider endpoints
- Visual indicators for connection quality
- Help users choose the fastest provider
- Complete internationalization (i18n) coverage for all UI components
- Enhanced error handling and user feedback throughout the application
- Improved configuration file management with better validation
- Added new provider presets: Longcat, kat-coder
- Updated GLM provider configurations with latest models
- Refined UI/UX with better spacing, icons, and visual feedback
- Enhanced tray menu functionality and responsiveness
- Standardized release artifact naming - All platform releases now use consistent version-tagged filenames:
- macOS:
CC-Switch-v{version}-macOS.tar.gz/.zip - Windows:
CC-Switch-v{version}-Windows.msi/-Portable.zip - Linux:
CC-Switch-v{version}-Linux.AppImage/.deb
- macOS:
- Fixed layout shifts during provider switching
- Improved config file path handling across different platforms
- Better error messages for configuration validation failures
- Fixed various edge cases in configuration import/export
- Enhanced
import_export.rsmodule with backup management - New
claude_mcp.rsmodule for MCP configuration handling - Improved state management and lock handling in Rust backend
- Better TypeScript type safety across the codebase
- Enable internationalization via i18next with a Chinese default and English fallback, plus an in-app language switcher
- Add Claude plugin sync while retiring the legacy VS Code integration controls (Codex no longer requires settings.json edits)
- Extend provider presets with optional API key URLs and updated models, including DeepSeek-V3.1-Terminus and Qwen3-Max
- Support portable mode launches and enforce a single running instance to avoid conflicts
- Allow minimizing the window to the system tray and add macOS Dock visibility management for tray workflows
- Refresh the Settings modal with a scrollable layout, save icon, and cleaner language section
- Smooth provider toggle states with consistent button widths/icons and prevent layout shifts when switching between Claude and Codex
- Adjust the Windows MSI installer to target per-user LocalAppData and improve component tracking reliability
- Remove the unnecessary OpenAI auth requirement from third-party provider configurations
- Fix layout shifts while switching app types with Claude plugin sync enabled
- Align Enable/In Use button states to avoid visual jank across app views
- Add “Apply to VS Code / Remove from VS Code” actions on provider cards, writing settings for Code/Insiders/VSCodium variants (Removed in 3.4.x)
- Enable VS Code auto-sync by default with window broadcast and tray hooks so Codex switches sync silently (Removed in 3.4.x)
- Extend the Codex provider wizard with display name, dedicated API key URL, and clearer guidance
- Introduce shared common config snippets with JSON/TOML reuse, validation, and consistent error surfaces
- Keep the tray menu responsive when the window is hidden and standardize button styling and copy
- Disable modal backdrop blur on Linux (WebKitGTK/Wayland) to avoid freezes; restore the window when clicking the macOS Dock icon
- Support overriding config directories on WSL, refine placeholders/descriptions, and fix VS Code button wrapping on Windows
- Add a
created_attimestamp to provider records for future sorting and analytics
- Correct regex escapes and common snippet trimming in the Codex wizard to prevent validation issues
- Harden the VS Code sync flow with more reliable TOML/JSON parsing while reducing layout jank
- Bundle
@codemirror/lintto reinstate live linting in config editors
- System tray provider switching with dynamic menu for Claude/Codex
- Frontend receives
provider-switchedevents and refreshes active app - Built-in update flow via Tauri Updater plugin with dismissible UpdateBadge
- Single source of truth for provider configs; no duplicate copy files
- One-time migration imports existing copies into
config.jsonand archives originals - Duplicate provider de-duplication by name + API key at startup
- Atomic writes for Codex
auth.json+config.tomlwith rollback on failure - Logging standardized (Rust): use
log::{info,warn,error}instead of stdout prints - Tailwind v4 integration and refined dark mode handling
- Remove/minimize debug console logs in production builds
- Fix CSS minifier warnings for scrollbar pseudo-elements
- Prettier formatting across codebase for consistent style
- Tauri: 2.8.x (core, updater, process, opener, log plugins)
- React: 18.2.x · TypeScript: 5.3.x · Vite: 5.x
connect-srcCSP remains permissive for compatibility; can be tightened later as needed
- Fixed the default codex config.toml to match the latest modifications
- Improved provider configuration UX with custom option
- Updated README with latest information
- Added Codex application support - Now supports both Claude Code and Codex configuration management
- Manage auth.json and config.toml for Codex
- Support for backup and restore operations
- Preset providers for Codex (Official, PackyCode)
- API Key auto-write to auth.json when using presets
- New UI components
- App switcher with segmented control design
- Dual editor form for Codex configuration
- Pills-style app switcher with consistent button widths
- Enhanced configuration management
- Multi-app config v2 structure (claude/codex)
- Automatic v1→v2 migration with backup
- OPENAI_API_KEY validation for non-official presets
- TOML syntax validation for config.toml
- Unified Tauri command API with app_type parameter
- Backward compatibility for app/appType parameters
- Added get_config_status/open_config_folder/open_external commands
- Improved error handling for empty config.toml
- Fixed config path reporting and folder opening for Codex
- Corrected default import behavior when main config is missing
- Fixed non_snake_case warnings in commands.rs
- Complete migration from Electron to Tauri 2.0 - The application has been completely rewritten using Tauri, resulting in:
- 90% reduction in bundle size (from ~150MB to ~15MB)
- Significantly improved startup performance
- Native system integration without Chromium overhead
- Enhanced security with Rust backend
- Native window controls with transparent title bar on macOS
- Improved file system operations using Rust for better performance
- Enhanced security model with explicit permission declarations
- Better platform detection using Tauri's native APIs
- Migrated from Electron IPC to Tauri command system
- Replaced Node.js file operations with Rust implementations
- Implemented proper CSP (Content Security Policy) for enhanced security
- Added TypeScript strict mode for better type safety
- Integrated Rust cargo fmt and clippy for code quality
- Fixed bundle identifier conflict on macOS (changed from .app to .desktop)
- Resolved platform detection issues
- Improved error handling in configuration management
- Tauri: 2.8.2
- React: 18.2.0
- TypeScript: 5.3.0
- Vite: 5.0.0
For users upgrading from v2.x (Electron version):
- Configuration files remain compatible - no action required
- The app will automatically migrate your existing provider configurations
- Window position and size preferences have been reset to defaults
- When the app detects an old v1 config structure at
~/.cc-switch/config.json, it now creates a timestamped backup before writing the new v2 structure. - Backup location:
~/.cc-switch/config.v1.backup.<timestamp>.json - This only concerns cc-switch's own metadata file; your actual provider files under
~/.claude/and~/.codex/are untouched.
- Added
pnpm typecheckcommand for TypeScript validation - Added
pnpm formatandpnpm format:checkfor code formatting - Rust code now uses cargo fmt for consistent formatting
- Multi-provider configuration management
- Quick provider switching
- Import/export configurations
- Preset provider templates
- Basic provider management
- Claude Code integration
- Configuration file handling