Files
farion1231_cc-switch/CHANGELOG.md
Jason 0ef670325b chore: release v3.10.1
- Bump version to 3.10.1 across all config files
- Update CHANGELOG with all fixes since v3.10.0
- Fix Rust Clippy warning by using derive(Default)
- Apply code formatting
2026-01-23 10:41:38 +08:00

44 KiB

Changelog

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.

[Unreleased]


[3.10.1] - 2026-01-23

Patch Release

This maintenance release includes important bug fixes for Windows platform, UI improvements, and code quality enhancements.

Added

  • Provider Icons: Updated RightCode provider icon with improved visual design

Changed

  • 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 RectifierConfig implementation using #[derive(Default)]

Fixed

  • 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

[3.10.0] - 2026-01-21

Feature Release

This release introduces OpenCode support and brings improvements across proxy, usage tracking, and overall UX.

Added

  • 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 ESC to quickly go back/close panels (#670)
  • Terminal Improvements - Provider-specific terminal button, fnm path support, and safer cross-platform launching (#564)
  • WSL Tool Detection - Detect tool versions in WSL with additional security hardening (#627)
  • Skills Presets - Add baoyu-skills preset repo and auto-supplement missing default repos

Changed

  • 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

Fixed

  • 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_URL over GEMINI_BASE_URL (#597)
  • MCP (WSL) - Skip cmd /c wrapper 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

[3.9.1] - 2026-01-09

Bug Fix Release

This release focuses on stability improvements and crash prevention.

Added

  • Crash Logging - Panic hook captures crash info to ~/.cc-switch/crash.log with 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

Fixed

  • 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

[3.9.0] - 2026-01-07

Stable Release

This stable release includes all changes from 3.9.0-1, 3.9.0-2, and 3.9.0-3.

Added

  • 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)

Changed

  • 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

Fixed

  • 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 .app bundle 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_url during extraction and remove provider-specific model_providers blocks
  • 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

[3.9.0-3] - 2025-12-29

Beta Release

Third beta release with important bug fixes for Windows compatibility, UI improvements, and new features.

Added

  • 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

Fixed

Windows

  • Wrap npx/npm commands with cmd /c for MCP export
  • Prevent terminal windows from appearing during version check

macOS

  • Use .app bundle path for autostart to prevent terminal window popup

UI

  • 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

Database & Schema

  • Add missing base columns migration for proxy_config
  • Add backward compatibility check for proxy_config seed insert

Other

  • Use local timezone and robust DST handling in usage stats (#500)
  • Remove deprecated sync_enabled_to_codex call
  • Gracefully handle invalid Codex config.toml during MCP sync
  • Add missing translations for reasoning model and OpenRouter compat mode

Improved

  • 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

Stats

  • 35 commits since v3.9.0-2
  • 5 files changed in test/lint fixes

[3.9.0-2] - 2025-12-20

Beta Release

Second beta release focusing on proxy stability, import safety, and provider preset polish.

Added

  • DMXAPI Partner - Added DMXAPI as an official partner provider preset
  • Provider Icons - Added provider icons for OpenRouter, LongCat, ModelScope, and AiHubMix

Changed

  • Proxy (OpenRouter) - Switched OpenRouter to passthrough mode for native Claude API

Fixed

  • 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

Stats

  • 13 commits since v3.9.0-1

[3.9.0-1] - 2025-12-18

Beta Release

This beta release introduces the Local API Proxy feature, along with Skills multi-app support, UI improvements, and numerous bug fixes.

Major Features

Local Proxy Server

  • 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

Auto Failover

  • 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

Monitoring

  • 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

Skills Multi-App Support

  • 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)

Added

  • 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)

Fixed

  • 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)

Other

  • 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)

Improved

  • 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

Technical

  • 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

Stats

  • 55 commits since v3.8.2
  • 164 files changed
  • +22,164 / -570 lines

[3.8.0] - 2025-11-28

Major Updates

  • 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.json to 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.

Added

  • Skills recursive scanning - Discovers nested SKILL.md files 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.

Fixed

  • Custom endpoints loss - Switched provider updates to UPDATE to avoid cascade deletes from INSERT OR REPLACE.
  • Gemini config writing - Correctly writes custom env vars to .env and 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 .desktop customizations.
  • Misc - Removed redundant usage queries; corrected DMXAPI auth token field; restored missing deeplink translations; fixed usage script template init.

Technical

  • 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.

Migration Notes

  • First launch auto-migrates data from config.json to SQLite and device settings to settings.json; originals kept; error dialog on failure; dry-run supported.

Stats

  • 51 commits since v3.7.1; 207 files changed; +17,297 / -6,870 lines. See release-note-v3.8.0 for details.

[3.7.1] - 2025-11-22

Fixed

  • 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)

Added

  • 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

Improved

  • 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

Reverted

  • Auto-launch on system startup - Temporarily reverted feature pending further testing and optimization

[3.7.0] - 2025-11-19

Major Features

Gemini CLI Integration

  • Complete Gemini CLI support - Third major application added alongside Claude Code and Codex
  • Dual-file configuration - Support for both .env and settings.json file 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) and gemini_mcp.rs

MCP v3.7.0 Unified Architecture

  • 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

Claude Skills Management System

  • 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)
  • Custom repository support - Add any GitHub repo as a skill source
  • Subdirectory scanning - Optional skillsPath for 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)

Prompts (System Prompts) Management

  • 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
  • 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

Environment Variable Conflict Detection

  • 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

New Features

Provider Management

  • 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

Configuration Management

  • 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

UI/UX Improvements

  • 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

Improvements

Architecture

  • 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

Platform Compatibility

  • Windows fix - Resolved winreg API compatibility issue (v0.52)
  • Safe pattern matching - Replaced unwrap() with safe patterns in tray menu

Configuration

  • 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 .env and settings.json
  • Validation improvements - Enhanced input validation and boundary checks

Internationalization

  • 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

Bug Fixes

Critical Fixes

  • 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)

Stability

  • 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

UI Fixes

  • 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

Technical Improvements

Code Quality

  • Type safety - Complete TypeScript type coverage across codebase
  • Test improvements - Simplified boolean assertions in tests
  • Clippy warnings - Fixed uninlined_format_args warnings
  • Code refactoring - Extracted templates, optimized logic flows

Dependencies

  • Tauri - Updated to 2.8.x series
  • Rust dependencies - Added anyhow, zip, serde_yaml, tempfile for Skills
  • Frontend dependencies - Added CodeMirror 6 packages for Markdown editor
  • winreg - Updated to v0.52 (Windows compatibility)

Performance

  • Startup optimization - Removed legacy migration scanning
  • Lock management - Improved RwLock usage to prevent deadlocks
  • Background query - Enabled background mode for usage polling

Statistics

  • 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)

Strategic Positioning

v3.7.0 represents a major evolution from "Provider Switcher" to "All-in-One AI CLI Management Platform":

  1. Capability Extension - Skills provide external ability integration
  2. Behavior Customization - Prompts enable AI personality presets
  3. Configuration Unification - MCP v3.7.0 eliminates app silos
  4. Ecosystem Openness - Deep links enable community sharing
  5. Multi-AI Support - Claude/Codex/Gemini trinity
  6. Intelligent Detection - Auto-discovery of environment conflicts

Notes

  • 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

[3.6.0] - 2025-11-07

New Features

  • 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)

🔧 Improvements

  • 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
  • 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

🐛 Bug Fixes

  • Configuration Sync
    • Fixed apiKeyUrl priority issue
    • Fixed MCP sync-to-other-side functionality failure
    • Fixed sync issues after config import
    • Prevent silent fallback and data loss on config error
  • Usage Query
    • Fixed auto-query interval timing issue
    • Ensure refresh button shows loading animation on click
  • UI Issues
    • Fixed name collision error (get_init_error command)
    • Fixed language setting rollback after successful save
    • Fixed language switch state reset (dependency cycle)
    • Fixed edit mode button alignment
  • 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

🏗️ Technical Improvements (For Developers)

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 (RwLock instead of Mutex, 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)
  • AppType renamed to AppId: Semantically clearer
  • Unified parsing with FromStr trait: Centralized app parameter parsing
  • Eliminate code duplication: DRY violations cleanup
  • Remove unused code: missing_param helper function, deprecated tauri-api.ts, redundant KimiModelSelector component

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 app parameter (values: claude or codex)
    • Impact: More standardized code, friendlier error prompts
    • Compatibility: Frontend fully adapted, users don't need to care about this change

📦 Dependencies

  • 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

[3.5.0] - 2025-01-15

⚠ Breaking Changes

  • Tauri commands only accept the app parameter (claude/codex); removed app_type/appType compatibility.
  • Frontend types are standardized to AppId (removed AppType export); variable naming is standardized to appId.

New Features

  • 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
  • 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

🔧 Improvements

  • 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

🐛 Bug Fixes

  • 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

📦 Technical Details

  • Enhanced import_export.rs module with backup management
  • New claude_mcp.rs module for MCP configuration handling
  • Improved state management and lock handling in Rust backend
  • Better TypeScript type safety across the codebase

[3.4.0] - 2025-10-01

Features

  • 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

🔧 Improvements

  • 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

🐛 Fixes

  • 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

[3.3.0] - 2025-09-22

Features

  • 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

🔧 Improvements

  • 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_at timestamp to provider records for future sorting and analytics

🐛 Fixes

  • 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/lint to reinstate live linting in config editors

[3.2.0] - 2025-09-13

New Features

  • System tray provider switching with dynamic menu for Claude/Codex
  • Frontend receives provider-switched events and refreshes active app
  • Built-in update flow via Tauri Updater plugin with dismissible UpdateBadge

🔧 Improvements

  • Single source of truth for provider configs; no duplicate copy files
  • One-time migration imports existing copies into config.json and archives originals
  • Duplicate provider de-duplication by name + API key at startup
  • Atomic writes for Codex auth.json + config.toml with rollback on failure
  • Logging standardized (Rust): use log::{info,warn,error} instead of stdout prints
  • Tailwind v4 integration and refined dark mode handling

🐛 Fixes

  • Remove/minimize debug console logs in production builds
  • Fix CSS minifier warnings for scrollbar pseudo-elements
  • Prettier formatting across codebase for consistent style

📦 Dependencies

  • Tauri: 2.8.x (core, updater, process, opener, log plugins)
  • React: 18.2.x · TypeScript: 5.3.x · Vite: 5.x

🔄 Notes

  • connect-src CSP remains permissive for compatibility; can be tightened later as needed

[3.1.1] - 2025-09-03

🐛 Bug Fixes

  • Fixed the default codex config.toml to match the latest modifications
  • Improved provider configuration UX with custom option

📝 Documentation

  • Updated README with latest information

[3.1.0] - 2025-09-01

New Features

  • 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

🔧 Technical Improvements

  • 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

🐛 Bug Fixes

  • 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

[3.0.0] - 2025-08-27

🚀 Major Changes

  • 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

New Features

  • 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

🔧 Technical Improvements

  • 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

🐛 Bug Fixes

  • Fixed bundle identifier conflict on macOS (changed from .app to .desktop)
  • Resolved platform detection issues
  • Improved error handling in configuration management

📦 Dependencies

  • Tauri: 2.8.2
  • React: 18.2.0
  • TypeScript: 5.3.0
  • Vite: 5.0.0

🔄 Migration Notes

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

Backup on v1→v2 Migration (cc-switch internal config)

  • 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.

🛠️ Development

  • Added pnpm typecheck command for TypeScript validation
  • Added pnpm format and pnpm format:check for code formatting
  • Rust code now uses cargo fmt for consistent formatting

[2.0.0] - Previous Electron Release

Features

  • Multi-provider configuration management
  • Quick provider switching
  • Import/export configurations
  • Preset provider templates

[1.0.0] - Initial Release

Features

  • Basic provider management
  • Claude Code integration
  • Configuration file handling