- Bump version to 3.6.1 across all config files - package.json, Cargo.toml, tauri.conf.json - README.md and README_ZH.md version badges - Auto-updated Cargo.lock - Add release notes documentation - docs/release-note-v3.6.0-en.md (archive) - docs/release-note-v3.6.1-zh.md (cumulative format) - docs/release-note-v3.6.1-en.md (cumulative format) - Enlarge PackyCode sponsor logo by 50% (100px → 150px) - Update roadmap checklist (homebrew support marked as done)
15 KiB
CC Switch v3.6.1
Stability improvements and user experience optimization (based on v3.6.0)
中文更新说明 Chinese Documentation →
📦 What's New in v3.6.1 (2025-11-10)
This release focuses on user experience optimization and configuration parsing robustness, fixing several critical bugs and enhancing the usage query system.
✨ New Features
Usage Query System Enhancements
- Credential Decoupling - Usage queries can now use independent API Key and Base URL, no longer dependent on provider configuration
- Support for different query endpoints and authentication methods
- Automatically displays credential input fields based on template type
- General template: API Key + Base URL
- NewAPI template: Base URL + Access Token + User ID
- Custom template: Fully customizable
- UI Component Upgrade - Replaced native checkbox with shadcn/ui Switch component for modern experience
- Form Unification - Unified use of shadcn/ui Input components, consistent styling with the application
- Password Visibility Toggle - Added show/hide password functionality (API Key, Access Token)
Form Validation Infrastructure
- Common Schema Library - New JSON/TOML generic validators to reduce code duplication
jsonConfigSchema: Generic JSON object validatortomlConfigSchema: Generic TOML format validatormcpJsonConfigSchema: MCP-specific JSON validator
- MCP Conditional Field Validation - Strict type checking
- stdio type requires
commandfield - http type requires
urlfield
- stdio type requires
Partner Integration
- PackyCode - New official partner
- Added to Claude and Codex provider presets
- 10% discount promotion support
- New logo and partner identification
🔧 Improvements
User Experience
- Drag Sort Sync - Tray menu order now syncs with drag-and-drop sorting in real-time
- Enhanced Error Notifications - Provider switch failures now display copyable error messages
- Removed Misleading Placeholders - Deleted example text from model input fields to avoid user confusion
- Auto-fill Base URL - All non-official provider categories automatically populate the Base URL input field
Configuration Parsing
- CJK Quote Normalization - Automatically handles IME-input fullwidth quotes to prevent TOML parsing errors
- Supports automatic conversion of Chinese quotes (" " ' ') to ASCII quotes
- Applied in TOML input handlers
- Disabled browser auto-correction in Textarea component
- Preserve Custom Fields - Editing Codex MCP TOML configuration now preserves unknown fields
- Supports extension fields like timeout_ms, retry_count
- Forward compatibility with future MCP protocol extensions
🐛 Bug Fixes
Critical Fixes
- Fixed usage script panel white screen crash - FormLabel component missing FormField context caused entire app to crash
- Replaced with standalone Label component
- Root cause: FormLabel internally calls useFormField() hook which requires FormFieldContext
- Fixed CJK input quote parsing failure - IME-input fullwidth quotes caused TOML parsing errors
- Added textNormalization utility function
- Automatically normalizes quotes before parsing
- Fixed drag sort tray desync (#179) - Tray menu order not updated after drag-and-drop sorting
- Automatically calls updateTrayMenu after sorting completes
- Ensures UI and tray menu stay consistent
- Fixed MCP custom field loss - Custom fields silently dropped when editing Codex MCP configuration
- Uses spread operator to retain all fields
- Preserves unknown fields in normalizeServerConfig
Stability Improvements
- Error Isolation - Tray menu update failures no longer affect main operations
- Decoupled tray update errors from main operations
- Provides warning when main operation succeeds but tray update fails
- Safe Pattern Matching - Replaced
unwrap()with safe pattern matching- Avoids panic-induced app crashes
- Tray menu event handling uses match patterns
- Import Config Classification - Importing from default config now automatically sets category to
custom- Avoids imported configs being mistaken for official presets
- Provides clearer configuration source identification
📊 Technical Statistics
Commits: 17 commits
Code Changes: 31 files
- Additions: 1,163 lines
- Deletions: 811 lines
- Net Growth: +352 lines
Contributors: Jason (16), ZyphrZero (1)
By Module:
- UI/User Interface: 3 commits
- Usage Query System: 3 commits
- Configuration Parsing: 2 commits
- Form Validation: 1 commit
- Other Improvements: 8 commits
📥 Installation
macOS
Via Homebrew (Recommended):
brew tap farion1231/ccswitch
brew install --cask cc-switch
Manual Download:
- Download
CC-Switch-v3.6.1-macOS.zipfrom Assets below
Note
: Due to lack of Apple Developer account, you may see "unidentified developer" warning. Go to System Settings → Privacy & Security → Click "Open Anyway"
Windows
- Installer:
CC-Switch-v3.6.1-Windows.msi - Portable:
CC-Switch-v3.6.1-Windows-Portable.zip
Linux
- AppImage:
CC-Switch-v3.6.1-Linux.AppImage - Debian:
CC-Switch-v3.6.1-Linux.deb
📚 Documentation
🙏 Acknowledgments
Special thanks to:
- Zhipu AI - For sponsoring this project with GLM CODING PLAN
- PackyCode - New official partner
- ZyphrZero - For contributing tray menu sync fix (#179)
Full Changelog: https://github.com/farion1231/cc-switch/compare/v3.6.0...v3.6.1
📜 v3.6.0 Complete Feature Review
Content below is from v3.6.0 (2025-11-07), helping you understand the complete feature set
Click to expand v3.6.0 detailed content →
What's New
Edit Mode & Provider Management
- Provider Duplication - Quickly duplicate existing provider configurations to create variants with one click
- Manual Sorting - Drag and drop to reorder providers, with visual push effect animations. Thanks to @ZyphrZero
- Edit Mode Toggle - Show/hide drag handles to optimize editing experience
Custom Endpoint Management
- Multi-Endpoint Configuration - Support for aggregator providers with multiple API endpoints
- Endpoint Input Visibility - Shows endpoint field for all non-official providers automatically
Usage Query Enhancements
- Auto-Refresh Interval - Configure periodic automatic usage queries with customizable intervals
- Test Script API - Validate JavaScript usage query scripts before execution
- Enhanced Templates - Custom blank templates with access token and user ID parameter support Thanks to @Sirhexs
Custom Configuration Directory (Cloud Sync)
- Customizable Storage Location - Customize CC Switch's configuration storage directory
- Cloud Sync Support - Point to cloud sync folders (Dropbox, OneDrive, iCloud Drive, etc.) to enable automatic config synchronization across devices
- Independent Management - Managed via Tauri Store for better isolation and reliability Thanks to @ZyphrZero
Configuration Directory Switching (WSL Support)
- Auto-Sync on Directory Change - When switching Claude/Codex config directories (e.g., WSL environment), automatically sync current provider to the new directory without manual operation
- Post-Change Sync Utility - Unified
postChangeSync.tsutility for graceful error handling without blocking main flow - Import Config Auto-Sync - Automatically sync after config import to ensure immediate effectiveness
- Smart Conflict Resolution - Distinguishes "fully successful" and "partially successful" states for precise user feedback
Configuration Editor Improvements
- JSON Format Button - One-click JSON formatting in configuration editors
- Real-Time TOML Validation - Live syntax validation for Codex configuration with error highlighting
Load Live Config When Editing
- Protect Manual Modifications - When editing the currently active provider, prioritize displaying the actual effective configuration from live files
- Dual-Source Strategy - Automatically loads from live config for active provider, SSOT for inactive ones
Claude Configuration Data Structure Enhancements
- Granular Model Configuration - Migrated from dual-key to quad-key system for better model tier differentiation
- New fields:
ANTHROPIC_DEFAULT_HAIKU_MODEL,ANTHROPIC_DEFAULT_SONNET_MODEL,ANTHROPIC_DEFAULT_OPUS_MODEL,ANTHROPIC_MODEL - Replaces legacy
ANTHROPIC_SMALL_FAST_MODELwith automatic migration - Backend normalizes old configs on first read/write with smart fallback chain
- UI expanded from 2 to 4 model input fields with intelligent defaults
- New fields:
- ANTHROPIC_API_KEY Support - Providers can now use
ANTHROPIC_API_KEYfield in addition toANTHROPIC_AUTH_TOKEN - Template Variable System - Support for dynamic configuration replacement (e.g., KAT-Coder's
ENDPOINT_IDparameter) - Endpoint Candidates - Predefined endpoint list for speed testing and endpoint management
- Visual Theme Configuration - Custom icons and colors for provider cards
Updated Provider Models
- Kimi k2 - Updated to latest
kimi-k2-thinkingmodel
New Provider Presets
Added 5 new provider presets:
- DMXAPI - Multi-model aggregation service
- Azure Codex - Microsoft Azure OpenAI endpoint
- AnyRouter - None-profit routing service
- AiHubMix - Multi-model aggregation service
- MiniMax - Open source AI model provider
Partner Promotion Mechanism
- Support for ecosystem partner promotion (Zhipu GLM Z.ai)
- Sponsored banner integration in README
Improvements
Configuration & Sync
- Unified Error Handling - AppError with internationalized error messages throughout backend
- Fixed apiKeyUrl Priority - Correct priority order for API key URL resolution
- Fixed MCP Sync Issues - Resolved sync-to-other-side functionality failures
- Import Config Sync - Fixed sync issues after configuration import
- Config Error Handling - Force exit on config error to prevent silent fallback and data loss
UI/UX Enhancements
- Unique Provider Icons - Each provider card now has unique icons and color identification
- Unified Border System - Consistent border design across all components
- Drag Interaction - Push effect animation and improved drag handle icons
- Enhanced Visual Feedback - Better current provider visual indication
- Dialog Standardization - Unified dialog sizes and layout consistency
- Form Improvements - Optimized model placeholders, simplified provider hints, category-specific hints
- Usage Display Inline - Usage info moved next to enable button for better space utilization
Complete Internationalization
- Error Messages i18n - All backend error messages support Chinese/English
- Tray Menu i18n - System tray menu fully internationalized
- UI Components i18n - 100% coverage across all user-facing components
Bug Fixes
Configuration Management
- Fixed
apiKeyUrlpriority issue - Fixed MCP sync-to-other-side functionality failure
- Fixed sync issues after config import
- Fixed Codex API Key auto-sync
- Fixed endpoint speed test functionality
- Fixed provider duplicate insertion position (now inserts next to original)
- Fixed custom endpoint preservation in edit mode
- Prevent silent fallback and data loss on config error
Usage Query
- Fixed auto-query interval timing issue
- Ensured 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
Startup Issues
- Force exit on config error (no silent fallback)
- Eliminated code duplication causing initialization errors
Architecture Refactoring
Backend (Rust) - 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 (React + TypeScript) - 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 for all custom hooks
- Integration Tests - Coverage for key processes (App, SettingsDialog, MCP Panel)
- MSW Mocking - Backend API mocking to ensure test independence
- Test Infrastructure - vitest + MSW + @testing-library/react
Code Quality
- Unified Parameter Format - All Tauri commands migrated to camelCase (Tauri 2 specification)
- Semantic Clarity -
AppTyperenamed toAppIdfor better semantics - Centralized Parsing - Unified
appparameter parsing withFromStrtrait - DRY Violations Cleanup - Eliminated code duplication throughout codebase
- Dead Code Removal - Removed unused
missing_paramhelper, deprecatedtauri-api.ts, redundantKimiModelSelector
Internal Optimizations (User Transparent)
Removed Legacy Migration Logic
v3.6.0 removed v1 config auto-migration and copy file scanning logic:
- Impact: Improved startup performance, cleaner codebase
- 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.0
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
🌟 About CC Switch
CC Switch is a cross-platform desktop application for managing and switching between different provider configurations for Claude Code and Codex. Built with Tauri 2.0 + React 18 + TypeScript, supporting Windows, macOS, and Linux.
Core Features:
- 🔄 One-click switching between multiple AI providers
- 📦 Support for both Claude Code and Codex applications
- 🎨 Modern UI with complete Chinese/English internationalization
- 🔐 Local storage, secure and reliable data
- ☁️ Support for cloud sync configurations
- 🧩 Unified MCP server management
Project Repository: https://github.com/farion1231/cc-switch