Skip to content

Commit a0b5e3b

Browse files
committed
chore(release): prepare v3.9.0 stable release
- Bump version from 3.9.0-3 to 3.9.0 across all config files - Add comprehensive release notes in English, Chinese, and Japanese - Update CHANGELOG with v3.9.0 stable and v3.9.0-2 entries - Update README badges and release note links to v3.9.0
1 parent effb931 commit a0b5e3b

File tree

11 files changed

+500
-52
lines changed

11 files changed

+500
-52
lines changed

CHANGELOG.md

Lines changed: 91 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,67 @@ All notable changes to CC Switch will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [Unreleased]
9+
10+
---
11+
12+
## [3.9.0] - 2026-01-07
13+
14+
### Stable Release
15+
16+
This stable release includes all changes from `3.9.0-1`, `3.9.0-2`, and `3.9.0-3`.
17+
18+
### Added
19+
20+
- **Local API Proxy** - High-performance local HTTP proxy for Claude Code, Codex, and Gemini CLI (Axum-based)
21+
- **Per-App Takeover** - Independently route each app through the proxy with automatic live-config backup/redirect
22+
- **Auto Failover** - Circuit breaker + smart failover with independent queues and health tracking per app
23+
- **Universal Provider** - Shared provider configurations that can sync to Claude/Codex/Gemini (ideal for API gateways like NewAPI)
24+
- **Provider Search Filter** - Quick filter to find providers by name (#435)
25+
- **Keyboard Shortcut** - Open settings with Command+comma / Ctrl+comma (#436)
26+
- **Deeplink Usage Config** - Import usage query config via deeplink (#400)
27+
- **Provider Icon Colors** - Customize provider icon colors (#385)
28+
- **Skills Multi-App Support** - Skills now support both Claude Code and Codex (#365)
29+
- **Closable Toasts** - Close button for switch toast and all success toasts (#350)
30+
- **Skip First-Run Confirmation** - Option to skip Claude Code first-run confirmation dialog
31+
- **MCP Import** - Import MCP servers from installed apps
32+
- **Common Config Snippet Extraction** - Extract reusable common config snippets from the current provider or editor content (Claude/Codex/Gemini)
33+
- **Usage Enhancements** - Model extraction, request logging improvements, cache hit/creation metrics, and auto-refresh (#455, #508)
34+
- **Error Request Logging** - Detailed logging for proxy requests (#401)
35+
- **Linux Packaging** - Added RPM and Flatpak packaging targets
36+
- **Provider Presets & Icons** - Added/updated partner presets and icons (e.g., MiMo, DMXAPI, Cubence)
37+
38+
### Changed
39+
40+
- **Usage Terminology** - Rename "Cache Read/Write" to "Cache Hit/Creation" across all languages (#508)
41+
- **Model Pricing Data** - Refresh built-in model pricing table (Claude full version IDs, GPT-5 series, Gemini ID formats, and Chinese models) (#508)
42+
- **Proxy Header Forwarding** - Switch to a blacklist approach and improve header passthrough compatibility (#508)
43+
- **Failover Behavior** - Bypass timeout/retry configs when failover is disabled; update default failover timeout and circuit breaker values (#508, #521)
44+
- **Provider Presets** - Update default model versions and change the default Qwen base URL (#517)
45+
- **Skills Management** - Unify Skills management architecture with SSOT + React Query; improve caching for discoverable skills
46+
- **Settings UX** - Reorder items in the Advanced tab for better discoverability
47+
- **Proxy Active Theme** - Apply emerald theme when proxy takeover is active
48+
49+
### Fixed
50+
51+
- **Security** - Security fixes for JavaScript executor and usage script (#151)
52+
- **Usage Timezone & Parsing** - Fix datetime picker timezone handling; improve token parsing/billing for Gemini and Codex formats (#508)
53+
- **Windows Compatibility** - Improve MCP export and version check behavior to avoid terminal popups
54+
- **Windows Startup** - Use system titlebar to prevent black screen on startup
55+
- **WebView Compatibility** - Add fallback for crypto.randomUUID() on older WebViews
56+
- **macOS Autostart** - Use `.app` bundle path to prevent terminal window popups
57+
- **Database** - Add missing schema migrations; show an error dialog on initialization failure with a retry option
58+
- **Import/Export** - Restrict SQL import to CC Switch exported backups only; refresh providers immediately after import
59+
- **Prompts** - Allow saving prompts with empty content
60+
- **MCP Sync** - Skip sync when the target CLI app is not installed
61+
- **Common Config (Codex)** - Preserve MCP server `base_url` during extraction and remove provider-specific `model_providers` blocks
62+
- **Proxy** - Improve takeover detection and stability; clean up model override env vars when switching providers in takeover mode (#508)
63+
- **Skills** - Skip hidden directories during discovery; fix wrong skill repo branch
64+
- **Settings Navigation** - Navigate to About tab when clicking update badge
65+
- **UI** - Fix dialogs not opening on first click and improve window dragging area in `FullScreenPanel`
66+
67+
---
68+
869
## [3.9.0-3] - 2025-12-29
970

1071
### Beta Release
@@ -63,6 +124,34 @@ Third beta release with important bug fixes for Windows compatibility, UI improv
63124

64125
---
65126

127+
## [3.9.0-2] - 2025-12-20
128+
129+
### Beta Release
130+
131+
Second beta release focusing on proxy stability, import safety, and provider preset polish.
132+
133+
### Added
134+
135+
- **DMXAPI Partner** - Added DMXAPI as an official partner provider preset
136+
- **Provider Icons** - Added provider icons for OpenRouter, LongCat, ModelScope, and AiHubMix
137+
138+
### Changed
139+
140+
- **Proxy (OpenRouter)** - Switched OpenRouter to passthrough mode for native Claude API
141+
142+
### Fixed
143+
144+
- **Import/Export** - Restrict SQL import to CC Switch exported backups only; refresh providers immediately after import
145+
- **Proxy** - Respect existing Claude token when syncing; add fallback recovery for orphaned takeover state; remove global auto-start flag
146+
- **Windows** - Add minimum window size to Windows platform config
147+
- **UI** - Improve About section UI (#419) and unify header toolbar styling
148+
149+
### Stats
150+
151+
- 13 commits since v3.9.0-1
152+
153+
---
154+
66155
## [3.9.0-1] - 2025-12-18
67156

68157
### Beta Release
@@ -555,8 +644,8 @@ v3.7.0 represents a major evolution from "Provider Switcher" to **"All-in-One AI
555644

556645
### ⚠ Breaking Changes
557646

558-
- Tauri 命令仅接受参数 `app`(取值:`claude`/`codex`);移除对 `app_type`/`appType` 的兼容。
559-
- 前端类型命名统一为 `AppId`(移除 `AppType` 导出),变量命名统一为 `appId`
647+
- Tauri commands only accept the `app` parameter (`claude`/`codex`); removed `app_type`/`appType` compatibility.
648+
- Frontend types are standardized to `AppId` (removed `AppType` export); variable naming is standardized to `appId`.
560649

561650
### ✨ New Features
562651

@@ -799,40 +888,3 @@ For users upgrading from v2.x (Electron version):
799888
- Basic provider management
800889
- Claude Code integration
801890
- Configuration file handling
802-
803-
## [Unreleased]
804-
805-
### ⚠️ Breaking Changes
806-
807-
- **Runtime auto-migration from v1 to v2 config format has been removed**
808-
- `MultiAppConfig::load()` no longer automatically migrates v1 configs
809-
- When a v1 config is detected, the app now returns a clear error with migration instructions
810-
- **Migration path**: Install v3.2.x to perform one-time auto-migration, OR manually edit `~/.cc-switch/config.json` to v2 format
811-
- **Rationale**: Separates concerns (load() should be read-only), fail-fast principle, simplifies maintenance
812-
- Related: `app_config.rs` (v1 detection improved with structural analysis), `app_config_load.rs` (comprehensive test coverage added)
813-
814-
- **Legacy v1 copy file migration logic has been removed**
815-
- Removed entire `migration.rs` module (435 lines) that handled one-time migration from v3.1.0 to v3.2.0
816-
- No longer scans/merges legacy copy files (`settings-*.json`, `auth-*.json`, `config-*.toml`)
817-
- No longer archives copy files or performs automatic deduplication
818-
- **Migration path**: Users upgrading from v3.1.0 must first upgrade to v3.2.x to automatically migrate their configurations
819-
- **Benefits**: Improved startup performance (no file scanning), reduced code complexity, cleaner codebase
820-
821-
- **Tauri commands now only accept `app` parameter**
822-
- Removed legacy `app_type`/`appType` compatibility paths
823-
- Explicit error with available values when unknown `app` is provided
824-
825-
### 🔧 Improvements
826-
827-
- Unified `AppType` parsing: centralized to `FromStr` implementation, command layer no longer implements separate `parse_app()`, reducing code duplication and drift
828-
- Localized and user-friendly error messages: returns bilingual (Chinese/English) hints for unsupported `app` values with a list of available options
829-
- Simplified startup logic: Only ensures config structure exists, no migration overhead
830-
831-
### 🧪 Tests
832-
833-
- Added unit tests covering `AppType::from_str`: case sensitivity, whitespace trimming, unknown value error messages
834-
- Added comprehensive config loading tests:
835-
- `load_v1_config_returns_error_and_does_not_write`
836-
- `load_v1_with_extra_version_still_treated_as_v1`
837-
- `load_invalid_json_returns_parse_error_and_does_not_write`
838-
- `load_valid_v2_config_succeeds`

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# All-in-One Assistant for Claude Code, Codex & Gemini CLI
44

5-
[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases)
5+
[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases)
66
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases)
77
[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/)
88
[![Downloads](https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/downloads/farion1231/cc-switch/total)](https://github.com/farion1231/cc-switch/releases/latest)
@@ -52,7 +52,7 @@ This project is sponsored by Z.ai, supporting us with their GLM CODING PLAN.GLM
5252

5353
## Features
5454

55-
### Current Version: v3.8.3 | [Full Changelog](CHANGELOG.md) | [Release Notes](docs/release-note-v3.8.0-en.md)
55+
### Current Version: v3.9.0 | [Full Changelog](CHANGELOG.md) | [Release Notes](docs/release-note-v3.9.0-en.md)
5656

5757
**v3.8.0 Major Update (2025-11-28)**
5858

README_JA.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
# Claude Code / Codex / Gemini CLI オールインワン・アシスタント
44

5-
[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases)
5+
[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases)
66
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases)
77
[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/)
88
[![Downloads](https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/downloads/farion1231/cc-switch/total)](https://github.com/farion1231/cc-switch/releases/latest)
99

1010
<a href="https://trendshift.io/repositories/15372" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15372" alt="farion1231%2Fcc-switch | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
1111

12-
[English](README.md) | [中文](README_ZH.md) | 日本語 | [Changelog](CHANGELOG.md) | [v3.8.0 リリースノート](docs/release-note-v3.8.0-en.md)
12+
[English](README.md) | [中文](README_ZH.md) | 日本語 | [Changelog](CHANGELOG.md) | [v3.9.0 リリースノート](docs/release-note-v3.9.0-ja.md)
1313

1414
</div>
1515

@@ -52,7 +52,7 @@
5252

5353
## 特長
5454

55-
### 現在のバージョン:v3.8.3 | [完全な更新履歴](CHANGELOG.md) | [リリースノート](docs/release-note-v3.8.0-en.md)
55+
### 現在のバージョン:v3.9.0 | [完全な更新履歴](CHANGELOG.md) | [リリースノート](docs/release-note-v3.9.0-ja.md)
5656

5757
**v3.8.0 メジャーアップデート (2025-11-28)**
5858

README_ZH.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
# Claude Code / Codex / Gemini CLI 全方位辅助工具
44

5-
[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases)
5+
[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases)
66
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases)
77
[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/)
88
[![Downloads](https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/downloads/farion1231/cc-switch/total)](https://github.com/farion1231/cc-switch/releases/latest)
99

1010
<a href="https://trendshift.io/repositories/15372" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15372" alt="farion1231%2Fcc-switch | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
1111

12-
[English](README.md) | 中文 | [日本語](README_JA.md) | [更新日志](CHANGELOG.md) | [v3.8.0 发布说明](docs/release-note-v3.8.0-zh.md)
12+
[English](README.md) | 中文 | [日本語](README_JA.md) | [更新日志](CHANGELOG.md) | [v3.9.0 发布说明](docs/release-note-v3.9.0-zh.md)
1313

1414
</div>
1515

@@ -52,7 +52,7 @@
5252

5353
## 功能特性
5454

55-
### 当前版本:v3.8.3 | [完整更新日志](CHANGELOG.md)
55+
### 当前版本:v3.9.0 | [完整更新日志](CHANGELOG.md) | [发布说明](docs/release-note-v3.9.0-zh.md)
5656

5757
**v3.8.0 重大更新(2025-11-28)**
5858

docs/release-note-v3.9.0-en.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# CC Switch v3.9.0
2+
3+
> Local API Proxy, Auto Failover, Universal Provider, and a more complete multi-app workflow
4+
5+
**[中文版 →](release-note-v3.9.0-zh.md) | [日本語版 →](release-note-v3.9.0-ja.md)**
6+
7+
---
8+
9+
## Overview
10+
11+
CC Switch v3.9.0 is the stable release of the v3.9 beta series (`3.9.0-1`, `3.9.0-2`, `3.9.0-3`).
12+
It introduces a local API proxy with per-app takeover, automatic failover, universal providers, and many stability and UX improvements across Claude Code, Codex, and Gemini CLI.
13+
14+
**Release Date**: 2026-01-07
15+
16+
---
17+
18+
## Highlights
19+
20+
- Local API Proxy for Claude Code / Codex / Gemini CLI
21+
- Auto Failover with circuit breaker and per-app failover queues
22+
- Universal Provider: one shared config synced across apps (ideal for API gateways like NewAPI)
23+
- Skills improvements: multi-app support, unified management with SSOT + React Query
24+
- Common config snippets: extract reusable snippets from the editor or the current provider
25+
- MCP import: import MCP servers from installed apps
26+
- Usage improvements: auto-refresh, cache hit/creation metrics, and timezone fixes
27+
- Linux packaging: RPM and Flatpak artifacts
28+
29+
---
30+
31+
## Major Features
32+
33+
### Local API Proxy
34+
35+
- Runs a local high-performance HTTP proxy server (Axum-based)
36+
- Supports Claude Code, Codex, and Gemini CLI with a unified proxy
37+
- Per-app takeover: you can independently decide which app routes through the proxy
38+
- Live config takeover: backs up and redirects the CLI live config to the local proxy when takeover is enabled
39+
- Monitoring: request logging and usage statistics for easier debugging and cost tracking
40+
- Error request logging: keep detailed logs for failed proxy requests to simplify debugging (#401, thanks @yovinchen)
41+
42+
### Auto Failover (Circuit Breaker)
43+
44+
- Automatically detects provider failures and triggers protection (circuit breaker)
45+
- Automatically switches to a backup provider when the current one is unhealthy
46+
- Tracks provider health in real time, and keeps independent failover queues per app
47+
- When failover is disabled, timeout/retry related settings no longer affect normal request flow
48+
49+
### Skills Management
50+
51+
- Multi-app Skills support for Claude Code and Codex, with smoother migration from older skill layouts (#365, #378, thanks @yovinchen)
52+
- Unified Skills management architecture (SSOT + React Query) for more consistent state and refresh behavior
53+
- Better discovery UX and performance:
54+
- Skip hidden directories during discovery
55+
- Faster discovery with long-lived caching for discoverable skills
56+
- Clear loading indicators and more discoverable header actions (import/refresh)
57+
- Fix wrong skill repo branch (#505, thanks @kjasn)
58+
59+
### Universal Provider
60+
61+
- Add a shared provider configuration that can sync to Claude/Codex/Gemini (#348, thanks @Calcium-Ion)
62+
- Designed for API gateways that support multiple protocols (e.g., NewAPI)
63+
- Allows per-app default model mapping under a single provider
64+
65+
### Common Config Snippets (Claude/Codex/Gemini)
66+
67+
- Maintain a reusable "common config" snippet and merge/append it into providers that enable it
68+
- New extraction workflow:
69+
- Extract from the editor content (what you are currently editing)
70+
- Or extract from the current active provider when the editor content is not provided
71+
- Codex extraction is safer:
72+
- Removes provider-specific sections like `model_provider`, `model`, and the entire `model_providers` table
73+
- Preserves `base_url` under `[mcp_servers.*]` so MCP configs are not accidentally broken
74+
75+
### MCP Management
76+
77+
- Import MCP servers from installed apps
78+
- Improve robustness: skip sync when the target CLI app is not installed; handle invalid Codex `config.toml` gracefully (#461, thanks @majiayu000)
79+
- Windows compatibility: wrap npx/npm commands with `cmd /c` for MCP export
80+
81+
### Usage & Pricing
82+
83+
- Usage & pricing improvements: auto-refresh, cache hit/creation metrics, timezone handling fixes, and refreshed built-in pricing table (#508, thanks @yovinchen)
84+
- DeepLink support: import usage query configuration via deeplink (#400, thanks @qyinter)
85+
- Model extraction for usage statistics (#455, thanks @yovinchen)
86+
- Usage query credentials can fall back to provider config (#360, thanks @Sirhexs)
87+
88+
---
89+
90+
## UX Improvements
91+
92+
- Provider search filter: quickly find providers by name (#435, thanks @TinsFox)
93+
- Provider icon colors: customize provider icon colors for quicker visual identification (#385, thanks @yovinchen)
94+
- Keyboard shortcut: `Cmd/Ctrl + ,` opens Settings (#436, thanks @TinsFox)
95+
- Skip Claude Code first-run confirmation dialog (optional)
96+
- Closable toasts: close buttons for switch toast and all success toasts (#350, thanks @ForteScarlet)
97+
- Update badge navigation: clicking the update badge opens the About tab
98+
- Settings page tab style improvements (#342, thanks @wenyuanw)
99+
- Smoother transitions: fade transitions for app/view switching and exit animations for panels
100+
- Proxy takeover active theme: apply an emerald theme while takeover is active
101+
- Dark mode readability improvements for forms and labels
102+
- Better window dragging area for full-screen panels (#525, thanks @zerob13)
103+
104+
---
105+
106+
## Platform Notes
107+
108+
### Windows
109+
110+
- Prevent terminal windows from appearing during version checks
111+
- Improve window sizing defaults (minimum width/height)
112+
- Fix black screen on startup by using the system titlebar
113+
- Add a fallback for `crypto.randomUUID()` on older WebViews
114+
115+
### macOS
116+
117+
- Use `.app` bundle path for autostart to avoid terminal window popups (#462, thanks @majiayu000)
118+
- Improve tray/icon behavior and header alignment
119+
120+
---
121+
122+
## Packaging
123+
124+
- Linux: RPM and Flatpak packaging targets are now available for building release artifacts
125+
126+
---
127+
128+
## Notes
129+
130+
- Security improvements for the JavaScript executor and usage script execution (#151, thanks @luojiyin1987).
131+
- SQL import is restricted to CC Switch exported backups to reduce the risk of importing unsafe or incompatible SQL dumps.
132+
- Proxy takeover modifies CLI live configs; CC Switch will back up the live config before redirecting it to the local proxy. If you want to revert, disable takeover/stop the proxy and restore from the backup when needed.

0 commit comments

Comments
 (0)