diff --git a/CHANGELOG.md b/CHANGELOG.md index 00d7b21f3..ee35ee8b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,67 @@ All notable changes to CC Switch will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +--- + +## [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 @@ -63,6 +124,34 @@ Third beta release with important bug fixes for Windows compatibility, UI improv --- +## [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 @@ -555,8 +644,8 @@ v3.7.0 represents a major evolution from "Provider Switcher" to **"All-in-One AI ### ⚠ Breaking Changes -- Tauri 命令仅接受参数 `app`(取值:`claude`/`codex`);移除对 `app_type`/`appType` 的兼容。 -- 前端类型命名统一为 `AppId`(移除 `AppType` 导出),变量命名统一为 `appId`。 +- 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 @@ -799,40 +888,3 @@ For users upgrading from v2.x (Electron version): - Basic provider management - Claude Code integration - Configuration file handling - -## [Unreleased] - -### ⚠️ Breaking Changes - -- **Runtime auto-migration from v1 to v2 config format has been removed** - - `MultiAppConfig::load()` no longer automatically migrates v1 configs - - When a v1 config is detected, the app now returns a clear error with migration instructions - - **Migration path**: Install v3.2.x to perform one-time auto-migration, OR manually edit `~/.cc-switch/config.json` to v2 format - - **Rationale**: Separates concerns (load() should be read-only), fail-fast principle, simplifies maintenance - - Related: `app_config.rs` (v1 detection improved with structural analysis), `app_config_load.rs` (comprehensive test coverage added) - -- **Legacy v1 copy file migration logic has been removed** - - Removed entire `migration.rs` module (435 lines) that handled one-time migration from v3.1.0 to v3.2.0 - - No longer scans/merges legacy copy files (`settings-*.json`, `auth-*.json`, `config-*.toml`) - - No longer archives copy files or performs automatic deduplication - - **Migration path**: Users upgrading from v3.1.0 must first upgrade to v3.2.x to automatically migrate their configurations - - **Benefits**: Improved startup performance (no file scanning), reduced code complexity, cleaner codebase - -- **Tauri commands now only accept `app` parameter** - - Removed legacy `app_type`/`appType` compatibility paths - - Explicit error with available values when unknown `app` is provided - -### 🔧 Improvements - -- Unified `AppType` parsing: centralized to `FromStr` implementation, command layer no longer implements separate `parse_app()`, reducing code duplication and drift -- Localized and user-friendly error messages: returns bilingual (Chinese/English) hints for unsupported `app` values with a list of available options -- Simplified startup logic: Only ensures config structure exists, no migration overhead - -### 🧪 Tests - -- Added unit tests covering `AppType::from_str`: case sensitivity, whitespace trimming, unknown value error messages -- Added comprehensive config loading tests: - - `load_v1_config_returns_error_and_does_not_write` - - `load_v1_with_extra_version_still_treated_as_v1` - - `load_invalid_json_returns_parse_error_and_does_not_write` - - `load_valid_v2_config_succeeds` diff --git a/README.md b/README.md index e3ba6fcb9..3cd98c41b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # All-in-One Assistant for Claude Code, Codex & Gemini CLI -[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases) [![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/) [![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 ## Features -### Current Version: v3.8.3 | [Full Changelog](CHANGELOG.md) | [Release Notes](docs/release-note-v3.8.0-en.md) +### Current Version: v3.9.0 | [Full Changelog](CHANGELOG.md) | [Release Notes](docs/release-note-v3.9.0-en.md) **v3.8.0 Major Update (2025-11-28)** diff --git a/README_JA.md b/README_JA.md index d20d8adb3..d93eb9691 100644 --- a/README_JA.md +++ b/README_JA.md @@ -2,14 +2,14 @@ # Claude Code / Codex / Gemini CLI オールインワン・アシスタント -[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases) [![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/) [![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) farion1231%2Fcc-switch | Trendshift -[English](README.md) | [中文](README_ZH.md) | 日本語 | [Changelog](CHANGELOG.md) | [v3.8.0 リリースノート](docs/release-note-v3.8.0-en.md) +[English](README.md) | [中文](README_ZH.md) | 日本語 | [Changelog](CHANGELOG.md) | [v3.9.0 リリースノート](docs/release-note-v3.9.0-ja.md) @@ -52,7 +52,7 @@ ## 特長 -### 現在のバージョン:v3.8.3 | [完全な更新履歴](CHANGELOG.md) | [リリースノート](docs/release-note-v3.8.0-en.md) +### 現在のバージョン:v3.9.0 | [完全な更新履歴](CHANGELOG.md) | [リリースノート](docs/release-note-v3.9.0-ja.md) **v3.8.0 メジャーアップデート (2025-11-28)** diff --git a/README_ZH.md b/README_ZH.md index 67ba56b52..f5dd431a6 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -2,14 +2,14 @@ # Claude Code / Codex / Gemini CLI 全方位辅助工具 -[![Version](https://img.shields.io/badge/version-3.8.3-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Version](https://img.shields.io/badge/version-3.9.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases) [![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/) [![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) farion1231%2Fcc-switch | Trendshift -[English](README.md) | 中文 | [日本語](README_JA.md) | [更新日志](CHANGELOG.md) | [v3.8.0 发布说明](docs/release-note-v3.8.0-zh.md) +[English](README.md) | 中文 | [日本語](README_JA.md) | [更新日志](CHANGELOG.md) | [v3.9.0 发布说明](docs/release-note-v3.9.0-zh.md) @@ -52,7 +52,7 @@ ## 功能特性 -### 当前版本:v3.8.3 | [完整更新日志](CHANGELOG.md) +### 当前版本:v3.9.0 | [完整更新日志](CHANGELOG.md) | [发布说明](docs/release-note-v3.9.0-zh.md) **v3.8.0 重大更新(2025-11-28)** diff --git a/docs/release-note-v3.9.0-en.md b/docs/release-note-v3.9.0-en.md new file mode 100644 index 000000000..93429dfa6 --- /dev/null +++ b/docs/release-note-v3.9.0-en.md @@ -0,0 +1,132 @@ +# CC Switch v3.9.0 + +> Local API Proxy, Auto Failover, Universal Provider, and a more complete multi-app workflow + +**[中文版 →](release-note-v3.9.0-zh.md) | [日本語版 →](release-note-v3.9.0-ja.md)** + +--- + +## Overview + +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`). +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. + +**Release Date**: 2026-01-07 + +--- + +## Highlights + +- Local API Proxy for Claude Code / Codex / Gemini CLI +- Auto Failover with circuit breaker and per-app failover queues +- Universal Provider: one shared config synced across apps (ideal for API gateways like NewAPI) +- Skills improvements: multi-app support, unified management with SSOT + React Query +- Common config snippets: extract reusable snippets from the editor or the current provider +- MCP import: import MCP servers from installed apps +- Usage improvements: auto-refresh, cache hit/creation metrics, and timezone fixes +- Linux packaging: RPM and Flatpak artifacts + +--- + +## Major Features + +### Local API Proxy + +- Runs a local high-performance HTTP proxy server (Axum-based) +- Supports Claude Code, Codex, and Gemini CLI with a unified proxy +- Per-app takeover: you can independently decide which app routes through the proxy +- Live config takeover: backs up and redirects the CLI live config to the local proxy when takeover is enabled +- Monitoring: request logging and usage statistics for easier debugging and cost tracking +- Error request logging: keep detailed logs for failed proxy requests to simplify debugging (#401, thanks @yovinchen) + +### Auto Failover (Circuit Breaker) + +- Automatically detects provider failures and triggers protection (circuit breaker) +- Automatically switches to a backup provider when the current one is unhealthy +- Tracks provider health in real time, and keeps independent failover queues per app +- When failover is disabled, timeout/retry related settings no longer affect normal request flow + +### Skills Management + +- Multi-app Skills support for Claude Code and Codex, with smoother migration from older skill layouts (#365, #378, thanks @yovinchen) +- Unified Skills management architecture (SSOT + React Query) for more consistent state and refresh behavior +- Better discovery UX and performance: + - Skip hidden directories during discovery + - Faster discovery with long-lived caching for discoverable skills + - Clear loading indicators and more discoverable header actions (import/refresh) + - Fix wrong skill repo branch (#505, thanks @kjasn) + +### Universal Provider + +- Add a shared provider configuration that can sync to Claude/Codex/Gemini (#348, thanks @Calcium-Ion) +- Designed for API gateways that support multiple protocols (e.g., NewAPI) +- Allows per-app default model mapping under a single provider + +### Common Config Snippets (Claude/Codex/Gemini) + +- Maintain a reusable "common config" snippet and merge/append it into providers that enable it +- New extraction workflow: + - Extract from the editor content (what you are currently editing) + - Or extract from the current active provider when the editor content is not provided +- Codex extraction is safer: + - Removes provider-specific sections like `model_provider`, `model`, and the entire `model_providers` table + - Preserves `base_url` under `[mcp_servers.*]` so MCP configs are not accidentally broken + +### MCP Management + +- Import MCP servers from installed apps +- Improve robustness: skip sync when the target CLI app is not installed; handle invalid Codex `config.toml` gracefully (#461, thanks @majiayu000) +- Windows compatibility: wrap npx/npm commands with `cmd /c` for MCP export + +### Usage & Pricing + +- Usage & pricing improvements: auto-refresh, cache hit/creation metrics, timezone handling fixes, and refreshed built-in pricing table (#508, thanks @yovinchen) +- DeepLink support: import usage query configuration via deeplink (#400, thanks @qyinter) +- Model extraction for usage statistics (#455, thanks @yovinchen) +- Usage query credentials can fall back to provider config (#360, thanks @Sirhexs) + +--- + +## UX Improvements + +- Provider search filter: quickly find providers by name (#435, thanks @TinsFox) +- Provider icon colors: customize provider icon colors for quicker visual identification (#385, thanks @yovinchen) +- Keyboard shortcut: `Cmd/Ctrl + ,` opens Settings (#436, thanks @TinsFox) +- Skip Claude Code first-run confirmation dialog (optional) +- Closable toasts: close buttons for switch toast and all success toasts (#350, thanks @ForteScarlet) +- Update badge navigation: clicking the update badge opens the About tab +- Settings page tab style improvements (#342, thanks @wenyuanw) +- Smoother transitions: fade transitions for app/view switching and exit animations for panels +- Proxy takeover active theme: apply an emerald theme while takeover is active +- Dark mode readability improvements for forms and labels +- Better window dragging area for full-screen panels (#525, thanks @zerob13) + +--- + +## Platform Notes + +### Windows + +- Prevent terminal windows from appearing during version checks +- Improve window sizing defaults (minimum width/height) +- Fix black screen on startup by using the system titlebar +- Add a fallback for `crypto.randomUUID()` on older WebViews + +### macOS + +- Use `.app` bundle path for autostart to avoid terminal window popups (#462, thanks @majiayu000) +- Improve tray/icon behavior and header alignment + +--- + +## Packaging + +- Linux: RPM and Flatpak packaging targets are now available for building release artifacts + +--- + +## Notes + +- Security improvements for the JavaScript executor and usage script execution (#151, thanks @luojiyin1987). +- SQL import is restricted to CC Switch exported backups to reduce the risk of importing unsafe or incompatible SQL dumps. +- 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. diff --git a/docs/release-note-v3.9.0-ja.md b/docs/release-note-v3.9.0-ja.md new file mode 100644 index 000000000..168c7b6c8 --- /dev/null +++ b/docs/release-note-v3.9.0-ja.md @@ -0,0 +1,132 @@ +# CC Switch v3.9.0 + +> ローカル API プロキシ、自動フェイルオーバー、Universal Provider、多アプリ対応の強化 + +**[English →](release-note-v3.9.0-en.md) | [中文版 →](release-note-v3.9.0-zh.md)** + +--- + +## 概要 + +CC Switch v3.9.0 は v3.9 ベータ(`3.9.0-1`、`3.9.0-2`、`3.9.0-3`)の安定版です。 +ローカル API プロキシ(アプリ別テイクオーバー対応)、自動フェイルオーバー、Universal Provider を追加し、Claude Code / Codex / Gemini CLI の安定性と操作性を大きく改善しました。 + +**リリース日**:2026-01-07 + +--- + +## ハイライト + +- ローカル API プロキシ:Claude Code / Codex / Gemini CLI を統一的にプロキシ +- 自動フェイルオーバー:サーキットブレーカーとアプリ別のフェイルオーバーキュー +- Universal Provider:1つの設定を複数アプリへ同期(NewAPI などのゲートウェイ向け) +- Skills の改善:マルチアプリ対応、SSOT + React Query による管理の統一 +- 共通設定スニペット:エディタ内容または現在のプロバイダから抽出 +- MCP インポート:インストール済みアプリから MCP servers を取り込み +- 使用量の改善:自動更新、キャッシュ指標、タイムゾーン修正 +- Linux パッケージ:RPM / Flatpak の成果物を追加 + +--- + +## 主要機能 + +### ローカル API プロキシ(Local API Proxy) + +- ローカルで高性能な HTTP プロキシサーバーを起動(Axum ベース) +- Claude Code / Codex / Gemini CLI の API リクエストを統一的に扱う +- アプリ別テイクオーバー:アプリごとにプロキシ経由にするかを個別に切り替え可能 +- Live 設定テイクオーバー:有効化時に CLI の live 設定をバックアップし、ローカルプロキシへリダイレクト +- 監視:リクエストログと使用量統計でデバッグとコスト把握を支援 +- エラーリクエストのログ:失敗したプロキシリクエストも詳細に記録してデバッグを容易に(#401、@yovinchen に感謝) + +### 自動フェイルオーバー(Auto Failover / サーキットブレーカー) + +- 障害を検知して保護(サーキットブレーカー)を自動で発動 +- 現在のプロバイダが不調な場合、バックアッププロバイダへ自動切り替え +- アプリごとに独立したフェイルオーバーキューとヘルス状態を管理 +- フェイルオーバーを無効化している場合、タイムアウト/リトライ関連の設定は通常フローに影響しません + +### Skills 管理 + +- Claude Code と Codex の Skills をマルチアプリで利用可能にし、旧レイアウトからの移行もよりスムーズに(#365、#378、@yovinchen に感謝) +- SSOT + React Query による Skills 管理の統一で、状態の一貫性と更新挙動を改善 +- Discovery の体験と性能を改善: + - スキャン時に隠しディレクトリをスキップ + - Discoverable skills に長寿命キャッシュを適用して高速化 + - ローディング表示の改善と、インポート/更新などの操作導線を整理 + - Skills リポジトリのブランチ設定を修正(#505、@kjasn に感謝) + +### Universal Provider + +- 複数アプリで共有できるプロバイダ設定を追加(Claude/Codex/Gemini へ同期)(#348、@Calcium-Ion に感謝) +- NewAPI のような複数プロトコル対応の API ゲートウェイを想定 +- 1つのプロバイダ内でアプリ別にデフォルトモデルを割り当て可能 + +### 共通設定スニペット(Claude/Codex/Gemini) + +- 「共通設定スニペット」を保持し、有効化したプロバイダへマージ/追記 +- 新しい抽出フロー: + - エディタの現在内容から抽出(編集している内容) + - エディタ内容がない場合は、現在アクティブなプロバイダから抽出 +- Codex の抽出はより安全: + - `model_provider`、`model`、および `model_providers` テーブル全体など、プロバイダ固有の設定を除去 + - `[mcp_servers.*]` 配下の `base_url` は保持し、MCP 設定を壊しにくくしています + +### MCP 管理 + +- インストール済みアプリから MCP servers をインポート +- 安定性向上:対象 CLI が未インストールなら同期をスキップし、無効な Codex `config.toml` も適切に扱います(#461、@majiayu000 に感謝) +- Windows 互換性:MCP エクスポート時の npx/npm 呼び出しを `cmd /c` でラップ + +### 使用量と価格データ + +- 使用量/価格の改善:自動更新、キャッシュ指標、タイムゾーン修正、内蔵価格テーブル更新(#508、@yovinchen に感謝) +- DeepLink 対応:deeplink から使用量クエリ設定をインポート(#400、@qyinter に感謝) +- 使用量統計からモデル情報を抽出(#455、@yovinchen に感謝) +- 使用量クエリ資格情報はプロバイダ設定へフォールバック可能(#360、@Sirhexs に感謝) + +--- + +## 使い勝手の改善 + +- プロバイダ検索フィルター(名前で素早く検索)(#435、@TinsFox に感謝) +- プロバイダのアイコン色:アイコンに任意の色を設定して見分けやすく(#385、@yovinchen に感謝) +- ショートカット:`Cmd/Ctrl + ,` で設定を開く(#436、@TinsFox に感謝) +- Claude Code の初回確認ダイアログをスキップ可能(任意) +- トースト通知のクローズボタン:切り替え通知と成功通知を閉じられるように(#350、@ForteScarlet に感謝) +- 更新バッジをクリックすると About タブへ移動 +- 設定ページのタブスタイル改善(#342、@wenyuanw に感謝) +- アプリ/ビュー切り替えのフェードとパネル終了アニメーション +- プロキシテイクオーバー中はエメラルド系テーマを適用して状態を分かりやすく +- ダークモードの視認性改善 +- FullScreenPanel のウィンドウドラッグ領域を改善(#525、@zerob13 に感謝) + +--- + +## プラットフォーム別メモ + +### Windows + +- バージョンチェック時にターミナルが表示されないよう改善 +- ウィンドウ最小サイズのデフォルトを調整 +- 起動時の黒画面を避けるため、システムタイトルバー方式を採用 +- 古い WebView 向けに `crypto.randomUUID()` のフォールバックを追加 + +### macOS + +- 自動起動で `.app` バンドルパスを使用し、ターミナル表示を回避(#462、@majiayu000 に感謝) +- トレイとヘッダー周りの体験を改善 + +--- + +## パッケージ + +- Linux:RPM と Flatpak のパッケージングを追加し、リリース成果物の生成に対応 + +--- + +## 注意事項 + +- セキュリティ強化:JavaScript 実行器と使用量スクリプト実行に関するセキュリティ問題を修正(#151、@luojiyin1987 に感謝)。 +- SQL インポートは CC Switch がエクスポートしたバックアップのみに制限されます(安全性のため)。 +- プロキシのテイクオーバーは CLI の live 設定を変更します。CC Switch はリダイレクト前に live 設定をバックアップします。元に戻す場合はテイクオーバー無効化/プロキシ停止を行い、必要に応じてバックアップから復元してください。 diff --git a/docs/release-note-v3.9.0-zh.md b/docs/release-note-v3.9.0-zh.md new file mode 100644 index 000000000..fa82d6068 --- /dev/null +++ b/docs/release-note-v3.9.0-zh.md @@ -0,0 +1,132 @@ +# CC Switch v3.9.0 + +> 本地 API 代理、自动故障切换、统一供应商与多应用工作流增强 + +**[English →](release-note-v3.9.0-en.md) | [日本語版 →](release-note-v3.9.0-ja.md)** + +--- + +## 概览 + +CC Switch v3.9.0 是 v3.9 测试版序列(`3.9.0-1`、`3.9.0-2`、`3.9.0-3`)的稳定版。 +本次更新带来本地 API 代理(支持按应用接管)、自动故障切换、统一供应商(Universal Provider),并对 Claude Code / Codex / Gemini CLI 的稳定性与使用体验做了大量改进。 + +**发布日期**:2026-01-07 + +--- + +## 重点内容 + +- 本地 API 代理:Claude Code / Codex / Gemini CLI 统一接入 +- 自动故障切换:熔断保护 + 每个应用独立的 failover 队列 +- 统一供应商:一份配置可同步到多个应用(适合 NewAPI 等网关) +- Skills 相关增强:支持多应用、管理架构统一(SSOT + React Query) +- 通用配置片段:支持从编辑器内容或当前供应商提取可复用片段 +- MCP 导入:支持从已安装应用导入 MCP servers +- 用量增强:自动刷新、缓存命中/创建指标、时区修复 +- Linux 打包:新增 RPM 与 Flatpak 制品 + +--- + +## 主要功能 + +### 本地 API 代理(Local API Proxy) + +- 运行一个本地高性能 HTTP 代理服务(基于 Axum) +- 统一代理 Claude Code、Codex、Gemini CLI 的 API 请求 +- 按应用接管:你可以分别控制每个应用是否走本地代理 +- Live 配置接管:启用接管时,会备份并重定向 CLI 的 live 配置到本地代理 +- 监控能力:记录请求日志与用量统计,便于排错与成本分析 +- 错误请求日志:代理会记录失败请求的详细信息,便于定位问题(#401,感谢 @yovinchen) + +### 自动故障切换(Auto Failover / 熔断) + +- 自动检测供应商异常并触发熔断保护 +- 当前供应商不可用时自动切换到备用供应商 +- 每个应用维护独立的 failover 队列,并实时追踪健康状态 +- 当关闭故障切换时,超时/重试相关配置不会影响正常请求流程 + +### Skills 管理 + +- Skills 支持 Claude Code 与 Codex 多应用使用,并提供旧结构到新结构的平滑迁移(#365、#378,感谢 @yovinchen) +- Skills 管理架构统一(SSOT + React Query),状态刷新与数据一致性更稳定 +- 发现(Discovery)体验与性能改进: + - 扫描时跳过隐藏目录 + - Discoverable skills 使用长生命周期缓存提升性能 + - 增加加载状态提示,导入/刷新等操作入口更显眼 + - 修复 Skills 仓库分支配置错误(#505,感谢 @kjasn) + +### 统一供应商(Universal Provider) + +- 新增“跨应用共享”的供应商配置,可同步到 Claude/Codex/Gemini(#348,感谢 @Calcium-Ion) +- 适配支持多协议的 API 网关(例如 NewAPI) +- 同一个供应商下可按应用分别设置默认模型映射 + +### 通用配置片段(Claude/Codex/Gemini) + +- 维护一段“通用配置片段”,并将其合并/追加到启用该功能的供应商配置中 +- 新增“提取通用配置片段”工作流: + - 优先从编辑器当前内容提取(你正在编辑的内容) + - 若未提供编辑器内容,则从当前激活的供应商提取 +- Codex 场景提取更安全: + - 自动移除 `model_provider`、`model` 以及整个 `model_providers` 表等供应商相关内容 + - 会保留 `[mcp_servers.*]` 下的 `base_url`,避免误伤 MCP 配置 + +### MCP 管理 + +- 支持从已安装应用导入 MCP servers +- 同步更稳健:目标 CLI 未安装则跳过;无效的 Codex `config.toml` 可更优雅处理(#461,感谢 @majiayu000) +- Windows 兼容性:MCP 导出相关的 npx/npm 调用使用 `cmd /c` 包裹 + +### 用量与计费数据 + +- 用量与计费增强:自动刷新、缓存命中/创建指标、时区修复,以及内置价格表更新(#508,感谢 @yovinchen) +- 深链支持:可通过 deeplink 导入用量查询配置(#400,感谢 @qyinter) +- 用量统计支持提取模型信息(#455,感谢 @yovinchen) +- 用量查询凭证支持从供应商配置回退(#360,感谢 @Sirhexs) + +--- + +## 体验优化 + +- 供应商搜索过滤:按名称快速查找(#435,感谢 @TinsFox) +- 供应商图标颜色:支持为供应商图标设置自定义颜色,便于快速区分(#385,感谢 @yovinchen) +- 快捷键:`Cmd/Ctrl + ,` 打开设置(#436,感谢 @TinsFox) +- 可跳过 Claude Code 首次确认弹窗(可选) +- Toast 通知可关闭:切换提示与成功提示都支持关闭按钮(#350,感谢 @ForteScarlet) +- 点击更新徽章会自动跳转到 About 标签页 +- 设置页 Tab 样式改进(#342,感谢 @wenyuanw) +- 更顺滑的切换动效:应用/视图淡入淡出与面板退出动画 +- 代理接管激活时应用翡翠绿主题,便于一眼识别当前状态 +- 深色模式可读性增强(表单与标签对比度等) +- FullScreenPanel 的窗口拖拽区域优化(#525,感谢 @zerob13) + +--- + +## 平台说明 + +### Windows + +- 版本检查不再弹出终端窗口 +- 改进窗口尺寸默认值(最小宽高) +- 修复部分设备启动黑屏问题(使用系统标题栏方案) +- 兼容旧 WebView:为 `crypto.randomUUID()` 增加降级方案 + +### macOS + +- 自启动使用 `.app bundle` 路径,避免弹出终端窗口(#462,感谢 @majiayu000) +- 托盘与标题栏相关体验优化 + +--- + +## 打包 + +- Linux:新增 RPM 与 Flatpak 打包目标,用于生成发布制品 + +--- + +## 说明与注意事项 + +- 安全增强:修复 JavaScript 执行器与用量脚本相关的安全问题(#151,感谢 @luojiyin1987)。 +- 为降低导入风险,SQL 导入被限制为仅允许导入 CC Switch 自己导出的备份。 +- Proxy 接管会修改 CLI 的 live 配置;CC Switch 会在重定向前自动备份 live 配置。如需回退,可关闭接管/停止代理,并在必要时从备份恢复。 diff --git a/package.json b/package.json index 1c7f3ed26..c4ceeafc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cc-switch", - "version": "3.9.0-3", + "version": "3.9.0", "description": "All-in-One Assistant for Claude Code, Codex & Gemini CLI", "type": "module", "scripts": { @@ -87,4 +87,4 @@ "zod": "^4.1.12" }, "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" -} \ No newline at end of file +} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index a363fde87..51a67662e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -701,7 +701,7 @@ dependencies = [ [[package]] name = "cc-switch" -version = "3.9.0-3" +version = "3.9.0" dependencies = [ "anyhow", "async-stream", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 81d1400a1..19e4345d1 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cc-switch" -version = "3.9.0-3" +version = "3.9.0" description = "All-in-One Assistant for Claude Code, Codex & Gemini CLI" authors = ["Jason Young"] license = "MIT" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8173d9052..eb8835998 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.9.0-3", + "version": "3.9.0", "identifier": "com.ccswitch.desktop", "build": { "frontendDist": "../dist",