diff --git a/README.md b/README.md
index 2bb3c2380..3fa641ecc 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
# Claude Code & Codex Provider Switcher
-[](https://github.com/farion1231/cc-switch/releases)
+[](https://github.com/farion1231/cc-switch/releases)
[](https://github.com/farion1231/cc-switch/releases)
[](https://tauri.app/)
@@ -26,7 +26,7 @@ Get 10% OFF the GLM CODING PLAN with [this link](https://z.ai/subscribe?ic=8JVLJ
- |
+ |
Thanks to PackyCode for sponsoring this project! PackyCode is a reliable and efficient API relay service provider, offering relay services for Claude Code, Codex, Gemini, and more. PackyCode provides special discounts for our software users: register using this link and enter the "cc-switch" promo code during recharge to get 10% off. |
@@ -39,7 +39,7 @@ Get 10% OFF the GLM CODING PLAN with [this link](https://z.ai/subscribe?ic=8JVLJ
## Features
-### Current Version: v3.6.0 | [Full Changelog](CHANGELOG.md)
+### Current Version: v3.6.1 | [Full Changelog](CHANGELOG.md)
**Core Capabilities**
diff --git a/README_ZH.md b/README_ZH.md
index ad4eb3707..46a5d4498 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -2,7 +2,7 @@
# Claude Code & Codex 供应商管理器
-[](https://github.com/farion1231/cc-switch/releases)
+[](https://github.com/farion1231/cc-switch/releases)
[](https://github.com/farion1231/cc-switch/releases)
[](https://tauri.app/)
@@ -26,7 +26,7 @@ CC Switch 已经预设了智谱GLM,只需要填写 key 即可一键导入编
- |
+ |
感谢 PackyCode 赞助了本项目!PackyCode 是一家稳定、高效的API中转服务商,提供 Claude Code、Codex、Gemini 等多种中转服务。PackyCode 为本软件的用户提供了特别优惠,使用此链接注册并在充值时填写"cc-switch"优惠码,可以享受9折优惠。 |
@@ -39,7 +39,7 @@ CC Switch 已经预设了智谱GLM,只需要填写 key 即可一键导入编
## 功能特性
-### 当前版本:v3.6.0 | [完整更新日志](CHANGELOG.md)
+### 当前版本:v3.6.1 | [完整更新日志](CHANGELOG.md)
**核心功能**
diff --git a/docs/release-note-v3.6.0-en.md b/docs/release-note-v3.6.0-en.md
new file mode 100644
index 000000000..e2512d298
--- /dev/null
+++ b/docs/release-note-v3.6.0-en.md
@@ -0,0 +1,249 @@
+## Major architecture refactoring with enhanced config sync and data protection
+
+**[中文更新说明 Chinese Documentation →](https://github.com/farion1231/cc-switch/blob/main/docs/release-note-v3.6.0-zh.md)**
+
+---
+
+## 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.ts` utility 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_MODEL` with 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
+- **ANTHROPIC_API_KEY Support** - Providers can now use `ANTHROPIC_API_KEY` field in addition to `ANTHROPIC_AUTH_TOKEN`
+- **Template Variable System** - Support for dynamic configuration replacement (e.g., KAT-Coder's `ENDPOINT_ID` parameter)
+- **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-thinking` model
+
+### 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 `apiKeyUrl` priority 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_error` command)
+- 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
+
+1. **Phase 1**: Unified error handling (`AppError` + i18n error messages)
+2. **Phase 2**: Command layer split by domain (`commands/{provider,mcp,config,settings,plugin,misc}.rs`)
+3. **Phase 3**: Integration tests and transaction mechanism (config snapshot + failure rollback)
+4. **Phase 4**: Extracted Service layer (`services/{provider,mcp,config,speedtest}.rs`)
+5. **Phase 5**: Concurrency optimization (`RwLock` instead of `Mutex`, scoped guard to avoid deadlock)
+
+### Frontend (React + TypeScript) - 4 Stage Refactoring
+
+1. **Stage 1**: Test infrastructure (vitest + MSW + @testing-library/react)
+2. **Stage 2**: Extracted custom hooks (`useProviderActions`, `useMcpActions`, `useSettings`, `useImportExport`, etc.)
+3. **Stage 3**: Component splitting and business logic extraction
+4. **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** - `AppType` renamed to `AppId` for better semantics
+- **Centralized Parsing** - Unified `app` parameter parsing with `FromStr` trait
+- **DRY Violations Cleanup** - Eliminated code duplication throughout codebase
+- **Dead Code Removal** - Removed unused `missing_param` helper, deprecated `tauri-api.ts`, redundant `KimiModelSelector`
+
+---
+
+## 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**
+
+---
+
+## Installation
+
+### macOS
+
+**Via Homebrew (Recommended):**
+
+```bash
+brew tap farion1231/ccswitch
+brew install --cask cc-switch
+```
+
+**Manual Download:**
+
+- Download `CC-Switch-v3.6.0-macOS.zip` from [Assets](#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.0-Windows.msi`
+- **Portable**: `CC-Switch-v3.6.0-Windows-Portable.zip`
+
+### Linux
+
+- **AppImage**: `CC-Switch-v3.6.0-Linux.AppImage`
+- **Debian**: `CC-Switch-v3.6.0-Linux.deb`
+
+---
+
+## Documentation
+
+- [中文文档 (Chinese)](https://github.com/farion1231/cc-switch/blob/main/README_ZH.md)
+- [English Documentation](https://github.com/farion1231/cc-switch/blob/main/README.md)
+- [完整更新日志 (Full Changelog)](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md)
+
+---
+
+## Acknowledgments
+
+Special thanks to **Zhipu AI** for sponsoring this project with their GLM CODING PLAN!
+
+---
+
+**Full Changelog**: https://github.com/farion1231/cc-switch/compare/v3.5.1...v3.6.0
diff --git a/docs/release-note-v3.6.1-en.md b/docs/release-note-v3.6.1-en.md
new file mode 100644
index 000000000..a291f927b
--- /dev/null
+++ b/docs/release-note-v3.6.1-en.md
@@ -0,0 +1,391 @@
+# CC Switch v3.6.1
+
+> Stability improvements and user experience optimization (based on v3.6.0)
+
+**[中文更新说明 Chinese Documentation →](https://github.com/farion1231/cc-switch/blob/main/docs/release-note-v3.6.1-zh.md)**
+
+---
+
+## 📦 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 validator
+ - `tomlConfigSchema`: Generic TOML format validator
+ - `mcpJsonConfigSchema`: MCP-specific JSON validator
+- **MCP Conditional Field Validation** - Strict type checking
+ - stdio type requires `command` field
+ - http type requires `url` field
+
+#### 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):**
+
+```bash
+brew tap farion1231/ccswitch
+brew install --cask cc-switch
+```
+
+**Manual Download:**
+
+- Download `CC-Switch-v3.6.1-macOS.zip` from [Assets](#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
+
+- [中文文档 (Chinese)](https://github.com/farion1231/cc-switch/blob/main/README_ZH.md)
+- [English Documentation](https://github.com/farion1231/cc-switch/blob/main/README.md)
+- [完整更新日志 (Full Changelog)](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md)
+
+---
+
+### 🙏 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.ts` utility 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_MODEL` with 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
+- **ANTHROPIC_API_KEY Support** - Providers can now use `ANTHROPIC_API_KEY` field in addition to `ANTHROPIC_AUTH_TOKEN`
+- **Template Variable System** - Support for dynamic configuration replacement (e.g., KAT-Coder's `ENDPOINT_ID` parameter)
+- **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-thinking` model
+
+### 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 `apiKeyUrl` priority 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_error` command)
+- 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
+
+1. **Phase 1**: Unified error handling (`AppError` + i18n error messages)
+2. **Phase 2**: Command layer split by domain (`commands/{provider,mcp,config,settings,plugin,misc}.rs`)
+3. **Phase 3**: Integration tests and transaction mechanism (config snapshot + failure rollback)
+4. **Phase 4**: Extracted Service layer (`services/{provider,mcp,config,speedtest}.rs`)
+5. **Phase 5**: Concurrency optimization (`RwLock` instead of `Mutex`, scoped guard to avoid deadlock)
+
+### Frontend (React + TypeScript) - 4 Stage Refactoring
+
+1. **Stage 1**: Test infrastructure (vitest + MSW + @testing-library/react)
+2. **Stage 2**: Extracted custom hooks (`useProviderActions`, `useMcpActions`, `useSettings`, `useImportExport`, etc.)
+3. **Stage 3**: Component splitting and business logic extraction
+4. **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** - `AppType` renamed to `AppId` for better semantics
+- **Centralized Parsing** - Unified `app` parameter parsing with `FromStr` trait
+- **DRY Violations Cleanup** - Eliminated code duplication throughout codebase
+- **Dead Code Removal** - Removed unused `missing_param` helper, deprecated `tauri-api.ts`, redundant `KimiModelSelector`
+
+---
+
+## 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
diff --git a/docs/release-note-v3.6.1-zh.md b/docs/release-note-v3.6.1-zh.md
new file mode 100644
index 000000000..76943f455
--- /dev/null
+++ b/docs/release-note-v3.6.1-zh.md
@@ -0,0 +1,389 @@
+# CC Switch v3.6.1
+
+> 稳定性提升与用户体验优化(基于 v3.6.0)
+
+**[English Version →](../release-note-v3.6.1.md)**
+
+---
+
+## 📦 v3.6.1 新增内容 (2025-11-10)
+
+本次更新主要聚焦于**用户体验优化**和**配置解析健壮性**,修复了多个关键 Bug,并增强了用量查询系统。
+
+### ✨ 新增功能
+
+#### 用量查询系统增强
+
+- **凭证解耦** - 用量查询可使用独立的 API Key 和 Base URL,不再依赖供应商配置
+ - 支持不同的查询端点和认证方式
+ - 根据模板类型自动显示对应的凭证输入框
+ - General 模板:API Key + Base URL
+ - NewAPI 模板:Base URL + Access Token + User ID
+ - Custom 模板:完全自定义
+- **UI 组件升级** - 使用 shadcn/ui Switch 替代原生 checkbox,体验更现代
+- **表单统一化** - 统一使用 shadcn/ui 输入组件,样式与应用保持一致
+- **密码显示切换** - 添加查看/隐藏密码功能(API Key、Access Token)
+
+#### 表单验证基础设施
+
+- **通用 Schema 库** - 新增 JSON/TOML 通用验证器,减少重复代码
+ - `jsonConfigSchema`:通用 JSON 对象验证器
+ - `tomlConfigSchema`:通用 TOML 格式验证器
+ - `mcpJsonConfigSchema`:MCP 专用 JSON 验证器
+- **MCP 条件字段验证** - 严格的类型检查
+ - stdio 类型强制要求 `command` 字段
+ - http 类型强制要求 `url` 字段
+
+#### 合作伙伴集成
+
+- **PackyCode** - 新增官方合作伙伴
+ - 添加到 Claude 和 Codex 供应商预设
+ - 支持 10% 折扣优惠(促销信息集成)
+ - 新增 Logo 和合作伙伴标识
+
+---
+
+### 🔧 改进优化
+
+#### 用户体验
+
+- **拖拽排序同步** - 托盘菜单顺序实时同步拖拽排序结果
+- **错误通知增强** - 切换供应商失败时显示可复制的错误信息
+- **移除误导性占位符** - 删除模型输入框的示例文本,避免用户混淆
+- **Base URL 自动填充** - 所有非官方供应商类别自动填充 Base URL 输入框
+
+#### 配置解析
+
+- **中文引号规范化** - 自动处理 IME 输入的全角引号,防止 TOML 解析错误
+ - 支持中文引号(" " ' ')自动转换为 ASCII 引号
+ - 在 TOML 输入处理器中应用
+ - Textarea 组件禁用浏览器自动纠正
+- **自定义字段保留** - 编辑 Codex MCP TOML 配置时保留未知字段
+ - 支持 timeout_ms、retry_count 等扩展字段
+ - 向前兼容未来的 MCP 协议扩展
+
+---
+
+### 🐛 Bug 修复
+
+#### 关键修复
+
+- **修复用量脚本面板白屏崩溃** - FormLabel 组件缺少 FormField context 导致整个应用崩溃
+ - 替换为独立的 Label 组件
+ - 根本原因:FormLabel 内部调用 useFormField() hook 需要 FormFieldContext
+- **修复中文输入法引号解析失败** - IME 输入的全角引号导致 TOML 解析错误
+ - 新增 textNormalization 工具函数
+ - 在解析前自动规范化引号
+- **修复拖拽排序托盘不同步** (#179) - 拖拽排序后托盘菜单顺序未更新
+ - 在排序完成后自动调用 updateTrayMenu
+ - 确保 UI 和托盘菜单保持一致
+- **修复 MCP 自定义字段丢失** - 编辑 Codex MCP 配置时自定义字段被静默丢弃
+ - 使用 spread 操作符保留所有字段
+ - normalizeServerConfig 中保留未知字段
+
+#### 稳定性改进
+
+- **错误隔离** - 托盘菜单更新失败不再影响主操作流程
+ - 将托盘更新错误与主操作解耦
+ - 主操作成功但托盘更新失败时给出警告
+- **安全模式匹配** - 替换 `unwrap()` 为安全的 pattern matching
+ - 避免 panic 导致应用崩溃
+ - 托盘菜单事件处理使用 match 模式
+- **导入配置分类** - 从默认配置导入时自动设置 category 为 `custom`
+ - 避免导入的配置被误认为官方预设
+ - 提供更清晰的配置来源标识
+
+---
+
+### 📊 技术统计
+
+```
+提交数: 17 commits
+代码变更: 31 个文件
+ - 新增: 1,163 行
+ - 删除: 811 行
+ - 净增长: +352 行
+贡献者: Jason (16), ZyphrZero (1)
+```
+
+**按模块分类**:
+- UI/用户界面:3 commits
+- 用量查询系统:3 commits
+- 配置解析:2 commits
+- 表单验证:1 commit
+- 其他改进:8 commits
+
+---
+
+### 📥 安装方式
+
+#### macOS
+
+**通过 Homebrew 安装(推荐):**
+
+```bash
+brew tap farion1231/ccswitch
+brew install --cask cc-switch
+```
+
+**手动下载:**
+
+- 从下方 [Assets](#assets) 下载 `CC-Switch-v3.6.1-macOS.zip`
+
+> **注意**:由于作者没有苹果开发者账号,首次打开可能出现"未知开发者"警告。请前往"系统设置" → "隐私与安全性" → 点击"仍要打开"
+
+#### Windows
+
+- **安装包**:`CC-Switch-v3.6.1-Windows.msi`
+- **便携版**:`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`
+
+---
+
+### 📚 文档
+
+- [中文文档](https://github.com/farion1231/cc-switch/blob/main/README_ZH.md)
+- [English Documentation](https://github.com/farion1231/cc-switch/blob/main/README.md)
+- [完整更新日志](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md)
+
+---
+
+### 🙏 致谢
+
+特别感谢:
+- **智谱 AI** - 通过 GLM CODING PLAN 赞助本项目
+- **PackyCode** - 新加入的官方合作伙伴
+- **ZyphrZero** - 贡献托盘菜单同步修复 (#179)
+
+---
+
+**完整变更记录**: https://github.com/farion1231/cc-switch/compare/v3.6.0...v3.6.1
+
+---
+---
+
+## 📜 v3.6.0 完整功能回顾
+
+> 以下内容来自 v3.6.0 (2025-11-07),帮助您了解完整的功能集
+
+
+点击展开 v3.6.0 的详细内容 →
+
+## 新增功能
+
+### 编辑模式与供应商管理
+
+- **供应商复制功能** - 一键快速复制现有供应商配置,轻松创建变体配置
+- **手动排序功能** - 通过拖拽对供应商进行重新排序,带有视觉推送效果动画
+- **编辑模式切换** - 显示/隐藏拖拽手柄,优化编辑体验
+
+### 自定义端点管理
+
+- **多端点配置** - 支持聚合类供应商的多 API 端点配置
+- **端点输入可见性** - 为所有非官方供应商自动显示端点字段
+
+### 自定义配置目录(云同步)
+
+- **自定义存储位置** - 自定义 CC Switch 的配置存储目录
+- **云同步支持** - 指定到云同步文件夹(Dropbox、OneDrive、iCloud Drive、坚果云等)即可实现跨设备配置自动同步
+- **独立管理** - 通过 Tauri Store 管理,更好的隔离性和可靠性
+
+### 使用量查询增强
+
+- **自动刷新间隔** - 配置定时自动使用量查询,支持自定义间隔时间
+- **测试脚本 API** - 在执行前验证 JavaScript 使用量查询脚本
+- **增强模板系统** - 自定义空白模板,支持 access token 和 user ID 参数
+
+### 配置目录切换(WSL 支持)
+
+- **目录变更自动同步** - 切换 Claude/Codex 配置目录(如 WSL 环境)时,自动同步当前供应商到新目录,无需手动操作
+- **后置同步工具** - 统一的 `postChangeSync.ts` 工具,优雅处理错误而不阻塞主流程
+- **导入配置自动同步** - 配置导入后自动同步,确保立即生效
+- **智能冲突解决** - 区分"完全成功"和"部分成功"状态,提供精确的用户反馈
+
+### 配置编辑器改进
+
+- **JSON 格式化按钮** - 配置编辑器中一键 JSON 格式化
+- **实时 TOML 验证** - Codex 配置的实时语法验证,带有错误高亮
+
+### 编辑时加载 Live 配置
+
+- **保护手动修改** - 编辑当前激活的供应商时,优先显示来自 live 文件的实际生效配置
+- **双源策略** - 活动供应商自动从 live 配置加载,非活动供应商从 SSOT 加载
+
+### Claude 配置数据结构增强
+
+- **细粒度模型配置** - 从双键系统升级到四键系统,以匹配官方最新数据结构
+ - 新增字段:`ANTHROPIC_DEFAULT_HAIKU_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL`、`ANTHROPIC_DEFAULT_OPUS_MODEL`、`ANTHROPIC_MODEL`
+ - 替换旧版 `ANTHROPIC_SMALL_FAST_MODEL`,支持自动迁移
+ - 后端在首次读写时自动规范化旧配置,带有智能回退链
+ - UI 从 2 个模型输入字段扩展到 4 个,具有智能默认值
+- **ANTHROPIC_API_KEY 支持** - 供应商现可使用 `ANTHROPIC_API_KEY` 字段(除 `ANTHROPIC_AUTH_TOKEN` 外)
+- **模板变量系统** - 支持动态配置替换(如 KAT-Coder 的 `ENDPOINT_ID` 参数)
+- **端点候选列表** - 预定义端点列表,用于速度测试和端点管理
+- **视觉主题配置** - 供应商卡片自定义图标和颜色
+
+### 供应商模型更新
+
+- **Kimi k2** - 更新到最新的 `kimi-k2-thinking` 模型
+
+### 新增供应商预设
+
+新增 5 个供应商预设:
+
+- **DMXAPI** - 多模型聚合服务
+- **Azure Codex** - 微软 Azure OpenAI 端点
+- **AnyRouter** - API 路由服务
+- **AiHubMix** - AI 模型集合
+- **MiniMax** - 国产 AI 模型提供商
+
+### 合作伙伴推广机制
+
+- 支持生态合作伙伴推广(智谱 GLM Z.ai)
+- README 中集成赞助商横幅
+
+---
+
+## 改进优化
+
+### 配置与同步
+
+- **统一错误处理** - 后端全面使用 AppError 与国际化错误消息
+- **修复 apiKeyUrl 优先级** - 修正 API key URL 解析的优先级顺序
+- **修复 MCP 同步问题** - 解决同步到另一端功能失效的问题
+- **导入配置同步** - 修复配置导入后的同步问题
+- **配置错误处理** - 配置错误时强制退出,防止静默回退和数据丢失
+
+### UI/UX 增强
+
+- **独特的供应商图标** - 每个供应商卡片现在都有独特的图标和颜色识别
+- **统一边框系统** - 所有组件采用一致的边框设计
+- **拖拽交互** - 推送效果动画和改进的拖拽手柄图标
+- **增强视觉反馈** - 更好的当前供应商视觉指示
+- **对话框标准化** - 统一的对话框尺寸和布局一致性
+- **表单改进** - 优化模型占位符,简化供应商提示,分类特定提示
+- **使用量内联显示** - 使用量信息移至启用按钮旁边,更好地利用空间
+
+### 完整国际化
+
+- **错误消息国际化** - 所有后端错误消息支持中英文
+- **托盘菜单国际化** - 系统托盘菜单完全国际化
+- **UI 组件国际化** - 所有面向用户的组件 100% 覆盖
+
+---
+
+## Bug 修复
+
+### 配置管理
+
+- 修复 `apiKeyUrl` 优先级问题
+- 修复 MCP 同步到另一端功能失效
+- 修复配置导入后的同步问题
+- 修复 Codex API Key 自动同步
+- 修复端点速度测试功能
+- 修复供应商复制插入位置(现在插入到原供应商旁边)
+- 修复编辑模式下自定义端点保留问题
+- 防止配置错误时的静默回退和数据丢失
+
+### 使用量查询
+
+- 修复自动查询间隔时间问题
+- 确保刷新按钮点击时显示加载动画
+
+### UI 问题
+
+- 修复名称冲突错误(`get_init_error` 命令)
+- 修复保存成功后语言设置回滚
+- 修复语言切换状态重置(依赖循环)
+- 修复编辑模式按钮对齐
+
+### 启动问题
+
+- 配置错误时强制退出(不再静默回退)
+- 消除导致初始化错误的代码重复
+
+---
+
+## 架构重构
+
+### 后端(Rust)- 5 阶段重构
+
+1. **阶段 1**:统一错误处理(`AppError` + 国际化错误消息)
+2. **阶段 2**:命令层按领域拆分(`commands/{provider,mcp,config,settings,plugin,misc}.rs`)
+3. **阶段 3**:集成测试和事务机制(配置快照 + 失败回滚)
+4. **阶段 4**:提取 Service 层(`services/{provider,mcp,config,speedtest}.rs`)
+5. **阶段 5**:并发优化(`RwLock` 替代 `Mutex`,作用域 guard 避免死锁)
+
+### 前端(React + TypeScript)- 4 阶段重构
+
+1. **阶段 1**:测试基础设施(vitest + MSW + @testing-library/react)
+2. **阶段 2**:提取自定义 hooks(`useProviderActions`、`useMcpActions`、`useSettings`、`useImportExport` 等)
+3. **阶段 3**:组件拆分和业务逻辑提取
+4. **阶段 4**:代码清理和格式化统一
+
+### 测试体系
+
+- **Hooks 单元测试** - 所有自定义 hooks 100% 覆盖
+- **集成测试** - 关键流程覆盖(App、SettingsDialog、MCP 面板)
+- **MSW 模拟** - 后端 API 模拟确保测试独立性
+- **测试基础设施** - vitest + MSW + @testing-library/react
+
+### 代码质量
+
+- **统一参数格式** - 所有 Tauri 命令迁移到 camelCase(Tauri 2 规范)
+- **语义清晰** - `AppType` 重命名为 `AppId` 以获得更好的语义
+- **集中解析** - 使用 `FromStr` trait 统一 `app` 参数解析
+- **DRY 违规清理** - 消除整个代码库中的代码重复
+- **死代码移除** - 移除未使用的 `missing_param` 辅助函数、废弃的 `tauri-api.ts`、冗余的 `KimiModelSelector`
+
+---
+
+## 内部优化(用户无感知)
+
+### 移除遗留迁移逻辑
+
+v3.6.0 移除了 v1 配置自动迁移和副本文件扫描逻辑:
+
+- **影响**:提升启动性能,代码更简洁
+- **兼容性**:v2 格式配置完全兼容,无需任何操作
+- **注意**:从 v3.1.0 或更早版本升级的用户,请先升级到 v3.2.x 或 v3.5.x 进行一次性迁移,然后再升级到 v3.6.0
+
+### 命令参数标准化
+
+后端统一使用 `app` 参数(取值:`claude` 或 `codex`):
+
+- **影响**:代码更规范,错误提示更友好
+- **兼容性**:前端已完全适配,用户无需关心此变更
+
+---
+
+## 依赖更新
+
+- 更新到 **Tauri 2.8.x**
+- 更新到 **TailwindCSS 4.x**
+- 更新到 **TanStack Query v5.90.x**
+- 保持 **React 18.2.x** 和 **TypeScript 5.3.x**
+
+
+
+---
+
+## 🌟 关于 CC Switch
+
+CC Switch 是一个跨平台桌面应用,用于管理和切换 Claude Code 与 Codex 的不同供应商配置。基于 Tauri 2.0 + React 18 + TypeScript 构建,支持 Windows、macOS、Linux。
+
+**核心特性**:
+- 🔄 一键切换多个 AI 供应商
+- 📦 支持 Claude Code 和 Codex 双应用
+- 🎨 现代化 UI,完整的中英文国际化
+- 🔐 本地存储,数据安全可靠
+- ☁️ 支持云同步配置
+- 🧩 MCP 服务器统一管理
+
+---
+
+**项目地址**: https://github.com/farion1231/cc-switch
diff --git a/docs/roadmap.md b/docs/roadmap.md
index 014cdeb58..ede2d515f 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -3,7 +3,8 @@
- mcp 管理器 ✅
- i18n ✅
- gemini cli
-- homebrew 支持
+- homebrew 支持 ✅
- memory 管理
- codex 更多预设供应商
- 云同步
+- 本地代理
diff --git a/package.json b/package.json
index b721d6bae..a1ac252f1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "cc-switch",
- "version": "3.6.0",
+ "version": "3.6.1",
"description": "Claude Code & Codex 供应商切换工具",
"scripts": {
"dev": "pnpm tauri dev",
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 89e8c11d8..08edb9117 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -563,7 +563,7 @@ dependencies = [
[[package]]
name = "cc-switch"
-version = "3.6.0"
+version = "3.6.1"
dependencies = [
"chrono",
"dirs 5.0.1",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 4b91c89cd..d842159bd 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "cc-switch"
-version = "3.6.0"
+version = "3.6.1"
description = "Claude Code & Codex 供应商配置管理工具"
authors = ["Jason Young"]
license = "MIT"
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index ca4e66492..5a37832aa 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "CC Switch",
- "version": "3.6.0",
+ "version": "3.6.1",
"identifier": "com.ccswitch.desktop",
"build": {
"frontendDist": "../dist",