diff --git a/docs/release-notes/v3.13.0-en.md b/docs/release-notes/v3.13.0-en.md new file mode 100644 index 000000000..a6d13524a --- /dev/null +++ b/docs/release-notes/v3.13.0-en.md @@ -0,0 +1,353 @@ +# CC Switch v3.13.0 + +> Lightweight Mode, Quota & Balance Visibility, Provider Model Auto-Fetch, Codex OAuth Reverse Proxy, and Tray Per-App Submenus + +**[中文版 →](v3.13.0-zh.md) | [日本語版 →](v3.13.0-ja.md)** + +--- + +## Overview + +CC Switch v3.13.0 is a major feature release centered on observability, provider workflow ergonomics, and proxy compatibility. It adds inline **quota and balance displays** across official Claude / Codex / Gemini providers plus Token Plan, Copilot, and third-party balance APIs; introduces a **Lightweight Mode** that keeps CC Switch running from the system tray without a main window; delivers **automatic model discovery** via OpenAI-compatible `/v1/models` across all five supported applications; ships a **Codex OAuth reverse proxy** for ChatGPT Plus / Pro subscribers; reorganizes the tray menu into **per-app submenus**; rebuilds the proxy forwarding stack on a **Hyper-based client**; and overhauls the **Skills workflow** with discovery, batch updates, and storage-location toggling. Additional improvements include full URL endpoint mode, session-log usage tracking without proxy interception, the Copilot interaction optimizer, a UTF-8 streaming chunk boundary fix for multi-byte output, and a Linux startup UI responsiveness fix. + +**Release Date**: 2026-04-08 + +**Update Scale**: 98 commits | 229 files changed | +23,891 / -2,305 lines + +--- + +## Highlights + +- **Lightweight Mode**: Tray-only operating mode that destroys the main window on exit to tray and recreates it on demand, reducing CC Switch's desktop footprint to near zero when idle +- **Quota & Balance Visibility**: Inline quota or balance readout across provider cards — official Claude / Codex / Gemini subscriptions, GitHub Copilot premium interactions, Codex OAuth, Token Plan providers (Kimi / Zhipu GLM / MiniMax), plus official balance queries for DeepSeek, StepFun, SiliconFlow, OpenRouter, and Novita AI +- **Provider Model Auto-Fetch**: OpenAI-compatible `/v1/models` discovery across Claude, Codex, Gemini, OpenCode, and OpenClaw provider forms, with grouped dropdown selection and failure-specific error messages +- **Codex OAuth Reverse Proxy**: ChatGPT Plus / Pro Codex reverse proxy exposed as a new Claude provider card with managed OAuth login and inline subscription quota display ([⚠️ Risk Notice](#️-risk-notice)) +- **Tray Per-App Submenus**: Reworked the tray menu into per-application submenus so it never overflows the screen and background provider switching scales to dozens of providers per app +- **Skills Discovery & Batch Updates**: SHA-256-based skill update detection, per-skill and "Update All" batch actions, public `skills.sh` search integration, and a storage-location toggle between CC Switch storage and `~/.agents/skills` +- **Session Workflow Upgrades**: Batch session deletion, a directory picker before launching Claude terminal restore, usage import from Claude / Codex / Gemini session logs without proxy interception, precise Codex JSONL parsing, and per-app usage filtering +- **OpenCode / OpenClaw Stream Check Coverage**: OpenCode detection via npm package mapping, OpenClaw `openai-completions` support, and the remaining OpenClaw protocol variants — with custom-header passthrough and auth-header detection fixes +- **Full URL Endpoint Mode**: Provider option that treats `base_url` as a complete upstream endpoint, unblocking vendors that require nonstandard URL layouts +- **Hyper-based Proxy Forwarding Stack**: Refactored proxy forwarding onto a Hyper-based client with transparent header forwarding, improved endpoint rewriting, and better support for dynamic upstream endpoints +- **Copilot Interaction Optimizer**: Request classification and routing logic that reduces unnecessary GitHub Copilot premium interaction consumption +- **UTF-8 Stream Chunk Boundary Fix**: All four SSE streaming paths now preserve incomplete multi-byte UTF-8 sequences across TCP chunks, eliminating intermittent U+FFFD garbled output via the Copilot reverse proxy +- **Linux Startup UI Fix**: Fixed the long-standing issue where the window UI couldn't receive clicks on Linux until the user manually maximized and restored the window + +--- + +## New Features + +### Lightweight Mode + +A tray-only operating mode that dramatically reduces CC Switch's desktop footprint when idle. + +- Destroys the main window on exit-to-tray instead of hiding it, freeing UI resources and memory +- Recreates the window on demand when the user reopens CC Switch from the tray, a deeplink, or single-instance activation +- Integrated into every window-re-show path: normal startup, deeplink, single_instance, tray `show_main`, and the lightweight-exit round-trip + +### Quota & Balance Visibility + +Added inline quota and balance readouts to provider cards so users can see remaining capacity without leaving the card. + +- **Official subscriptions**: Inline quota display for Claude, Codex, and Gemini official providers +- **GitHub Copilot**: Premium interactions quota display on the Copilot provider card +- **Codex OAuth**: ChatGPT Plus / Pro subscription quota inline with the Codex OAuth provider card +- **Token Plan providers**: Kimi, Zhipu GLM, and MiniMax with corrected quota math and consistent 0% → 100% usage progression +- **Third-party balances**: Official balance queries for DeepSeek, StepFun, SiliconFlow, OpenRouter, and Novita AI +- Health-check and usage-config buttons are hidden for official providers to keep the card clean + +### Provider Model Auto-Fetch + +Added OpenAI-compatible model discovery to every provider form, removing the manual copy-paste loop for model IDs. + +- Queries the configured provider endpoint's `/v1/models` +- Groups models in the dropdown by category for easier selection +- Failure-specific error messages distinguish network / authentication / endpoint issues +- Supported across all five applications: Claude, Codex, Gemini, OpenCode, and OpenClaw + +### Codex OAuth Reverse Proxy + +Added a reverse proxy path for ChatGPT Plus / Pro subscribers who want to route their Codex OAuth session through CC Switch. + +- Managed OAuth login flow with ChatGPT Plus / Pro authentication +- Surfaces as a new Claude provider card type alongside API-key providers +- Inline subscription quota display +- Integrated into the Auth Center with tightened copy, layout, and icon presentation +- Bumped the Codex OAuth preset to the GPT-5.4 model family +- See the [⚠️ Risk Notice](#️-risk-notice) below before enabling + +### Tray Per-App Submenus + +Reorganized the tray menu so providers are grouped under each application instead of living in a flat list. + +- Per-application submenus for Claude, Codex, Gemini, OpenCode, and OpenClaw +- Prevents the tray menu from overflowing the screen when users have many providers +- Background provider switching scales cleanly to long provider lists + +### Skills Discovery & Batch Updates + +Upgraded the Skills management panel into a complete discovery plus maintenance workflow. + +- **SHA-256 update detection**: Skills are content-hashed so the UI knows exactly which ones have upstream changes +- **Per-skill and batch updates**: Individual "Update" buttons plus an animated "Update All" batch action +- **Storage-location toggle**: Switch between CC Switch storage and `~/.agents/skills` without losing skill state +- **Public registry search**: `skills.sh` search integrated directly into the dialog for discovering community skills + +### Session Workflow Upgrades + +Multiple session management improvements that reduce friction when working with Claude / Codex / Gemini sessions. + +- **Batch session deletion**: Select and delete multiple sessions at once from Session Manager (#1693, thanks @Alexlangl) +- **Directory picker before restore**: Claude terminal restore now prompts for the working directory up front (#1752, thanks @yovinchen) +- **Usage from session logs without proxy**: Usage data imported directly from Claude / Codex / Gemini session logs — no proxy interception required +- **Precise Codex JSONL parsing**: Replaced estimated Codex usage with precise JSONL session-log parsing plus Codex model name normalization for consistent pricing lookup +- **Gemini CLI session log integration**: Gemini usage now syncs accurately from Gemini CLI session logs +- **Per-app usage filtering**: Filter the usage dashboard by Claude, Codex, or Gemini independently + +### OpenCode / OpenClaw Stream Check Coverage + +Extended the Stream Check panel to cover the full OpenCode and OpenClaw surface area. + +- OpenCode detection via npm package mapping +- Support for the OpenClaw `openai-completions` protocol +- Support for the remaining three OpenClaw protocol variants +- Edge-case handling for custom-header passthrough, OpenClaw custom auth-header detection, Bedrock error messaging, and OpenCode default `baseURL` fallback + +### Full URL Endpoint Mode + +Added a provider option that treats `base_url` as a complete upstream endpoint instead of a base URL with path appending (#1561, thanks @yovinchen). + +- Proxy forwarding and Stream Check both honor the full-URL mode +- Unblocks vendors that require nonstandard URL layouts +- Configurable per-provider on the provider form + +### OpenCode StepFun Step Plan Preset + +- Added a StepFun Step Plan provider preset for OpenCode with sensible defaults (#1668, thanks @sky-wang-salvation) + +### Copilot Interaction Optimizer + +Added request classification and routing logic that reduces unnecessary GitHub Copilot premium interaction consumption. + +- Classifies incoming requests by intent and weight +- Routes low-value requests away from premium interaction consumption paths +- Designed to extend the usable lifetime of a Copilot subscription + +--- + +## Changes + +### Tray Menu Organization + +- Reworked the tray menu into per-application submenus (Claude / Codex / Gemini / OpenCode / OpenClaw) +- Prevents overflow and scales to long provider lists + +### Proxy Forwarding Stack + +Rebuilt the proxy forwarding layer on a Hyper-based HTTP client (#1714, thanks @yovinchen). + +- Transparent header forwarding: headers are forwarded without aggressive filtering +- Improved endpoint rewriting logic +- Better support for dynamic upstream endpoints +- Paired with the new Full URL Endpoint Mode to unblock vendors with nonstandard URL layouts + +### OAuth Auth Center UI Polish + +- Tightened the Auth Center copy, layout, and icon presentation so the Codex OAuth login flow feels cleaner and less cluttered + +### Provider Key Lifecycle & Live Sync + +Reworked the additive provider create / rename / duplicate flows so live config writes, cleanup, and rollback stay consistent across OpenCode / OpenClaw and takeover scenarios (#1724, thanks @yovinchen). + +- Additive-mode highlight behavior made persistent across refreshes (#1747, thanks @yovinchen) +- Consistent live config writes across OpenCode / OpenClaw +- Rollback behavior preserved when operations fail + +### Codex OAuth Defaults + +- Updated the Codex OAuth preset to the GPT-5.4 model family + +--- + +## Bug Fixes + +### Copilot Authentication & Proxy Compatibility + +- Fixed GitHub Copilot authentication regressions (#1854, thanks @Mason-mengze) +- Corrected enterprise and dynamic endpoint handling +- Repaired clipboard verification-code copying on macOS and Linux +- Fixed Responses routing when Copilot-backed Claude providers target OpenAI models (#1735, thanks @Mason-mengze) + +### UTF-8 Stream Chunk Boundaries + +Fixed intermittent garbled output (U+FFFD replacement characters) in Claude Code when multi-byte UTF-8 sequences such as Chinese characters and emoji were split across TCP stream chunks via the Copilot reverse proxy (#1923, thanks @Cod1ng). + +- Replaced `String::from_utf8_lossy` with a new `append_utf8_safe` helper across all four SSE streaming paths +- Preserves incomplete trailing bytes in a remainder buffer and merges them with the next chunk before decoding +- Not reproducible with direct Copilot connections that pass through raw bytes without format conversion + +### Fragmented System Prompt Normalization + +Fixed strict OpenAI-compatible chat backends (Nvidia, Qwen-style) rejecting requests when converted Claude payloads contained multiple system messages (#1942, thanks @yovinchen). + +- Normalized system content into a single leading system message during the Anthropic → OpenAI chat transformation +- Leaves the rest of the message stream unchanged + +### Streaming Parser Compatibility + +- Fixed SSE parsing to accept fields with optional spaces, improving compatibility with non-strict streaming implementations (#1664, thanks @Alexlangl) + +### Provider Switch State Corruption + +- Serialized per-app provider switches to prevent concurrent failover or hot-switch operations from leaving `is_current`, settings state, and live backup state out of sync + +### Claude Takeover Live Config Drift + +- Fixed provider edits while Claude takeover is active so live settings remain aligned with the latest provider state without breaking takeover restore behavior (#1828, thanks @geekdada) + +### WebDAV Password Retention & Validation + +- Fixed the WebDAV password field so saved credentials remain visible after refresh +- Treated `MKCOL 405` responses correctly during connection validation (#1685, thanks @Alexlangl) + +### Provider Card Action States + +- Fixed additive-mode highlight behavior (#1747, thanks @yovinchen) +- Aligned usage display layout across provider cards by always rendering action buttons +- Replaced hard proxy-switch blocking with a warning path +- Disabled unsupported test and usage actions for Copilot and Codex OAuth cards +- Hid usage-config and health-check buttons for official providers +- Removed the hover-push animation from provider cards + +### Usage Accuracy & Pricing + +- Fixed MiniMax quota math and 0% → 100% progression +- Corrected CNY → USD pricing plus missing model definitions +- Improved Gemini session-log syncing accuracy +- Resolved session-based usage entries being shown as unknown providers + +### Usage Editor & Skills UI Regressions + +- Fixed usage query fields being reset while editing extractor code (#1771, thanks @if-nil) +- Corrected broken `skills.sh` links and empty descriptions +- Fixed auto-query default interval (5 min) and number-input clearing in usage configuration + +### Chinese Skills Terminology + +- Unified Skills-related labels across settings panels in the `zh` locale so storage and sync options use consistent wording + +### Environment & Preset Compatibility + +- Added Bun global bin detection in CLI scan (#1742, thanks @makoMakoGo) +- Adapted to the oh-my-openagent rename with backward compatibility (#1746, thanks @yovinchen) +- Corrected the OpenCode `kimi-for-coding` preset (#1738, thanks @makoMakoGo) +- Gated Gemini keychain parsing to macOS only +- Fixed an OpenClaw serializer panic on empty collections (#1724, thanks @yovinchen) + +### Linux UI Unresponsive on Startup + +Fixed a long-standing Linux bug where the window UI (including native title bar buttons) couldn't receive clicks until the user manually maximized and restored the window. + +- **Root causes**: (1) Tauri webview did not acquire keyboard focus after `show()` on Linux, so the first click was consumed by X11/Wayland click-to-activate (Tauri #10746, wry #637); (2) GTK surface's input region failed to renegotiate on the `visible:false → show()` path under some WebKitGTK/compositor combinations, leaving the entire window unresponsive +- **Mitigations**: Set `WEBKIT_DISABLE_COMPOSITING_MODE=1` at startup, and added a new `linux_fix::nudge_main_window` helper that performs `set_focus` + a ±1px no-op resize ~200ms after show, equivalent to a visually invisible "maximize-and-restore" +- **Coverage**: Wired into all window-re-show paths — normal startup, deeplink, single_instance, tray `show_main`, and lightweight-mode exit + +### Linux Drag Region on Header + +- Removed `data-tauri-drag-region` from the top header bar on Linux to avoid triggering `gtk_window_begin_move_drag` paths affected by Tauri #13440 under Wayland +- macOS drag behavior is preserved + +### OpenCode / OpenClaw Stream Check Edge Cases + +- Fixed custom-header passthrough +- OpenClaw custom auth-header detection +- Bedrock error messaging +- OpenCode default `baseURL` fallback handling + +--- + +## Documentation + +### User Manual Refresh + +- Updated the EN / ZH / JA user manuals to cover tray submenus, lightweight mode, provider model fetching, session management, workspace files, WebDAV v2 behavior, OpenCode / OpenClaw activation, and other provider workflow improvements + +### Community & Contribution Docs + +- Added `CONTRIBUTING.md`, `SECURITY.md`, and `CODE_OF_CONDUCT.md` +- Added bilingual GitHub issue and PR templates +- Added Dependabot configuration (#1829, thanks @bengbengbalabalabeng) and a stale-bot workflow for inactive issues +- Added a PR / push quality-checks CI workflow + +### Release Notes Risk Notice Backport + +- Added a Copilot reverse proxy risk notice and anchored highlight links in the v3.12.3 release notes across all three languages + +--- + +## ⚠️ Risk Notice + +**Codex OAuth Reverse Proxy Disclaimer** + +The Codex OAuth reverse proxy introduced in this release accesses ChatGPT Plus / Pro Codex services through reverse-engineered OAuth flows. Please be aware of the following risks before enabling this feature: + +1. **Terms of Service**: Using reverse-engineered OAuth flows to access OpenAI services may violate OpenAI's terms of service, which prohibit unauthorized automated access, service reproduction, and circumventing intended access paths. +2. **Account Risk**: OpenAI may flag unusual usage patterns as suspicious automated activity, potentially resulting in temporary or permanent restrictions on ChatGPT Plus / Pro access. +3. **No Guarantee**: OpenAI may update its authentication and detection mechanisms at any time, and usage patterns that work today may be flagged in the future. + +The **GitHub Copilot reverse proxy** introduced in v3.12.3 also remains subject to its existing risk notice — see the [v3.12.3 release notes](v3.12.3-en.md#️-risk-notice) for the full disclosure. + +Users enable these features **at their own risk**. CC Switch is not responsible for any account restrictions, warnings, or service suspensions resulting from the use of these features. + +--- + +## Download & Installation + +Visit [Releases](https://github.com/farion1231/cc-switch/releases/latest) to download the appropriate version. + +### System Requirements + +| System | Minimum Version | Architecture | +| ------- | ------------------------------- | ----------------------------------- | +| Windows | Windows 10 or later | x64 | +| macOS | macOS 12 (Monterey) or later | Intel (x64) / Apple Silicon (arm64) | +| Linux | See table below | x64 | + +### Windows + +| File | Description | +| ------------------------------------------ | ---------------------------------------------------- | +| `CC-Switch-v3.13.0-Windows.msi` | **Recommended** - MSI installer with auto-update | +| `CC-Switch-v3.13.0-Windows-Portable.zip` | Portable version, extract and run, no registry write | + +### macOS + +| File | Description | +| ---------------------------------- | -------------------------------------------------------------------- | +| `CC-Switch-v3.13.0-macOS.dmg` | **Recommended** - DMG installer, drag to Applications, Universal Binary | +| `CC-Switch-v3.13.0-macOS.zip` | ZIP archive, extract and drag to Applications, Universal Binary | +| `CC-Switch-v3.13.0-macOS.tar.gz` | For Homebrew installation and auto-update | + +> macOS builds are code-signed and notarized by Apple for a seamless install experience. + +### Homebrew (macOS) + +```bash +brew tap farion1231/ccswitch +brew install --cask cc-switch +``` + +Update: + +```bash +brew upgrade --cask cc-switch +``` + +### Linux + +| Distribution | Recommended Format | Installation Method | +| --------------------------------------- | ------------------ | ---------------------------------------------------------------------- | +| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` or `sudo apt install ./CC-Switch-*.deb` | +| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` or `sudo dnf install ./CC-Switch-*.rpm` | +| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` | +| Arch Linux / Manjaro | `.AppImage` | Add execute permission and run directly, or use AUR | +| Other distributions / Unsure | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` | diff --git a/docs/release-notes/v3.13.0-ja.md b/docs/release-notes/v3.13.0-ja.md new file mode 100644 index 000000000..a15c0fdff --- /dev/null +++ b/docs/release-notes/v3.13.0-ja.md @@ -0,0 +1,353 @@ +# CC Switch v3.13.0 + +> 軽量モード、クォータ・残高の可視化、プロバイダーモデル自動取得、Codex OAuth リバースプロキシ、トレイのアプリ別サブメニュー + +**[中文版 →](v3.13.0-zh.md) | [English →](v3.13.0-en.md)** + +--- + +## 概要 + +CC Switch v3.13.0 は、可観測性、プロバイダーワークフローの使いやすさ、プロキシ互換性を中心とした大型機能リリースです。Claude / Codex / Gemini の公式プロバイダー、Token Plan、Copilot、サードパーティ残高 API にわたる**クォータと残高のインライン表示**を追加し、メインウィンドウなしでシステムトレイから CC Switch を動作させる**軽量モード**を導入しました。OpenAI 互換の `/v1/models` による**自動モデル発見**を 5 つのサポート対象アプリケーションすべてに提供し、ChatGPT Plus / Pro サブスクライバー向けの **Codex OAuth リバースプロキシ**を同梱しています。トレイメニューを**アプリ別サブメニュー**に再編成し、プロキシ転送スタックを **Hyper ベースのクライアント**に再構築し、**Skills ワークフロー**を発見、バッチ更新、ストレージ位置切り替えで刷新しました。さらに、フル URL エンドポイントモード、プロキシ傍受なしのセッションログ用量追跡、Copilot インタラクション最適化、マルチバイト UTF-8 ストリームチャンク境界修正、Linux 起動時の UI 応答性修正なども含まれます。 + +**リリース日**: 2026-04-08 + +**更新規模**: 98 commits | 229 files changed | +23,891 / -2,305 lines + +--- + +## ハイライト + +- **軽量モード**: トレイ専用の動作モード。トレイへの終了時にメインウィンドウを破棄し、必要時に再作成することで、アイドル時の CC Switch のデスクトップフットプリントを最小化 +- **クォータと残高の可視化**: プロバイダーカードでのインラインクォータ/残高表示 — Claude / Codex / Gemini 公式サブスクリプション、GitHub Copilot premium interactions、Codex OAuth、Token Plan プロバイダー(Kimi / Zhipu GLM / MiniMax)、および DeepSeek / StepFun / SiliconFlow / OpenRouter / Novita AI の公式残高クエリをカバー +- **プロバイダーモデル自動取得**: Claude / Codex / Gemini / OpenCode / OpenClaw のプロバイダーフォームに OpenAI 互換の `/v1/models` 発見機能を追加。グループ化ドロップダウンと失敗時の具体的なエラーメッセージ付き +- **Codex OAuth リバースプロキシ**: ChatGPT Plus / Pro の Codex リバースプロキシを新しい Claude プロバイダーカードタイプとして追加。マネージド OAuth ログインとサブスクリプションクォータのインライン表示を提供([⚠️ リスクに関する注意事項](#️-リスクに関する注意事項)) +- **トレイのアプリ別サブメニュー**: トレイメニューをアプリ別サブメニューに再編成し、プロバイダー数が多くてもメニューがオーバーフローせず、バックグラウンドのプロバイダー切り替えが長いリストでもスケール +- **Skills 発見とバッチ更新**: SHA-256 ベースの skill 更新検出、各 skill および「すべて更新」のバッチ更新、公開 `skills.sh` 検索統合、CC Switch ストレージと `~/.agents/skills` の間のストレージ位置切り替え +- **セッションワークフローの改善**: Session Manager でのバッチ削除、Claude ターミナル復元前のディレクトリピッカー、プロキシ傍受なしでの Claude / Codex / Gemini セッションログからの用量インポート、正確な Codex JSONL 解析、アプリ別の用量フィルタリング +- **OpenCode / OpenClaw Stream Check カバレッジ**: OpenCode の npm パッケージマッピング検出、OpenClaw `openai-completions` サポート、および残りの OpenClaw プロトコルバリアント +- **フル URL エンドポイントモード**: `base_url` を完全な上流エンドポイントとして扱うプロバイダーオプションを追加し、非標準 URL レイアウトを要求するベンダーに対応 +- **Hyper ベースのプロキシ転送スタック**: プロキシ転送層を Hyper ベースのクライアントに再構築し、透過的なヘッダー転送、改善されたエンドポイントリライト、および動的上流エンドポイントのサポートを強化 +- **Copilot インタラクション最適化**: GitHub Copilot premium interaction の不要な消費を削減するリクエスト分類とルーティングロジックを追加 +- **UTF-8 ストリームチャンク境界修正**: マルチバイト UTF-8 シーケンスが TCP チャンクを跨いで分割された際の Copilot リバースプロキシ経由での文字化け(U+FFFD 置換文字)を解消するため、すべての 4 つの SSE ストリーミングパスを修正 +- **Linux 起動時 UI 修正**: ユーザーが手動でウィンドウを最大化・復元するまでウィンドウ UI がクリックを受け付けない長年の問題を修正 + +--- + +## 新機能 + +### 軽量モード + +CC Switch のアイドル時のデスクトップフットプリントを大幅に削減するトレイ専用動作モード。 + +- トレイへの終了時にメインウィンドウを隠すのではなく破棄し、UI リソースとメモリを解放 +- トレイ、ディープリンク、またはシングルインスタンスアクティベーションからユーザーが CC Switch を再オープンしたときにウィンドウを再作成 +- 通常起動、ディープリンク、シングルインスタンス、トレイ `show_main`、軽量モード終了など、すべてのウィンドウ再表示パスに統合 + +### クォータと残高の可視化 + +プロバイダーカードにクォータと残高の表示を追加し、カードから離れずに残容量を確認できるようにしました。 + +- **公式サブスクリプション**: Claude / Codex / Gemini 公式プロバイダーのサブスクリプションクォータ表示 +- **GitHub Copilot**: Copilot プロバイダーカードに premium interactions 残量を表示 +- **Codex OAuth**: Codex OAuth カードに ChatGPT Plus / Pro サブスクリプションクォータをインライン表示 +- **Token Plan プロバイダー**: Kimi、Zhipu GLM、MiniMax。クォータ計算と 0% → 100% 使用量進行を修正 +- **サードパーティ残高**: DeepSeek、StepFun、SiliconFlow、OpenRouter、Novita AI に公式残高クエリを追加 +- 公式プロバイダーではヘルスチェックと用量設定ボタンを非表示にし、カードをクリーンに保つ + +### プロバイダーモデル自動取得 + +すべてのプロバイダーフォームに OpenAI 互換のモデル発見機能を追加し、モデル ID の手動コピー&ペーストを不要に。 + +- 設定された API キーを使ってプロバイダーの `/v1/models` エンドポイントをクエリ +- ドロップダウンでモデルをカテゴリ別にグループ化 +- ネットワーク / 認証 / エンドポイント未検出 / パース失敗を区別する具体的なエラーメッセージを提供 +- 5 つのアプリケーション(Claude / Codex / Gemini / OpenCode / OpenClaw)すべてをサポート + +### Codex OAuth リバースプロキシ + +ChatGPT Plus / Pro のサブスクライバーが Codex OAuth セッションを CC Switch 経由で利用できるリバースプロキシパスを追加。 + +- ChatGPT Plus / Pro 認証を使ったマネージド OAuth ログインフロー +- API キー型プロバイダーと並ぶ新しい Claude プロバイダーカードタイプとして表示 +- サブスクリプションクォータのインライン表示 +- Auth Center との緊密な統合と、コピー・レイアウト・アイコンの調整 +- Codex OAuth プリセットを GPT-5.4 モデルファミリーに更新 +- 有効化前に下記の [⚠️ リスクに関する注意事項](#️-リスクに関する注意事項) をご確認ください + +### トレイのアプリ別サブメニュー + +トレイメニューを、フラットリストの代わりにアプリケーション別にプロバイダーをグループ化する構造に再編成しました。 + +- Claude / Codex / Gemini / OpenCode / OpenClaw のアプリ別サブメニュー +- プロバイダーが多い場合にトレイメニューが画面からはみ出すことを防止 +- バックグラウンドのプロバイダー切り替えが長いリストでもクリーンにスケール + +### Skills 発見とバッチ更新 + +Skills 管理パネルを、発見と保守を備えた完全なワークフローにアップグレード。 + +- **SHA-256 更新検出**: Skill をコンテンツハッシュ化することで、どれが上流で変更されたかを UI が正確に把握 +- **各 skill およびバッチ更新**: 個別の「更新」ボタンと、スライドインアニメーション付きの「すべて更新」バッチアクション +- **ストレージ位置切り替え**: CC Switch ストレージと `~/.agents/skills` の間を skill 状態を失わずに切り替え +- **公開レジストリ検索**: `skills.sh` 検索をダイアログに直接統合し、コミュニティ skill を発見しやすく + +### セッションワークフローの改善 + +Claude / Codex / Gemini セッションでの作業を効率化する複数のセッション管理改善。 + +- **セッションのバッチ削除**: Session Manager で複数のセッションを選択し、1 つのアクションで削除 (#1693, @Alexlangl に感謝) +- **復元前のディレクトリピッカー**: Claude ターミナルの復元時、事前に作業ディレクトリを選択 (#1752, @yovinchen に感謝) +- **プロキシなしのセッションログ用量**: Claude / Codex / Gemini セッションログから直接用量データをインポート — プロキシ傍受は不要 +- **正確な Codex JSONL 解析**: Codex の推定用量を、JSONL セッションログの正確な解析に置き換え。Codex モデル名の正規化により料金ルックアップが一貫 +- **Gemini CLI セッションログ統合**: Gemini 用量が Gemini CLI セッションログから正確に同期 +- **アプリ別の用量フィルタリング**: 用量ダッシュボードを Claude / Codex / Gemini ごとに独立してフィルタリング可能 + +### OpenCode / OpenClaw Stream Check カバレッジ + +Stream Check パネルのカバレッジを OpenCode と OpenClaw のサーフェス全体に拡張。 + +- npm パッケージマッピングによる OpenCode 検出 +- OpenClaw `openai-completions` プロトコルのサポート +- 残りの 3 つの OpenClaw プロトコルバリアントのサポート +- カスタムヘッダー透過、OpenClaw カスタム auth-header 検出、Bedrock エラーメッセージ、OpenCode デフォルト `baseURL` フォールバックのエッジケース処理 + +### フル URL エンドポイントモード + +`base_url` をパス付加を伴わない完全な上流エンドポイントとして扱うプロバイダーオプションを追加 (#1561, @yovinchen に感謝)。 + +- プロキシ転送と Stream Check の両方がフル URL モードに対応 +- 非標準 URL レイアウトを要求するベンダーをアンブロック +- プロバイダーフォームでプロバイダー単位で設定可能 + +### OpenCode StepFun Step Plan プリセット + +- OpenCode 向けに StepFun Step Plan プロバイダープリセットと適切なデフォルト値を追加 (#1668, @sky-wang-salvation に感謝) + +### Copilot インタラクション最適化 + +GitHub Copilot premium interaction の不要な消費を削減するリクエスト分類とルーティングロジックを追加。 + +- 受信リクエストを意図と重要度で分類 +- 価値の低いリクエストを premium interaction 消費パスから迂回 +- Copilot サブスクリプションの使用可能期間を延長することを目的 + +--- + +## 変更 + +### トレイメニュー構成 + +- トレイメニューをアプリ別サブメニュー(Claude / Codex / Gemini / OpenCode / OpenClaw)に再編成 +- オーバーフローを防ぎ、長いプロバイダーリストでもスケール + +### プロキシ転送スタック + +プロキシ転送層を Hyper ベースの HTTP クライアント上に再構築 (#1714, @yovinchen に感謝)。 + +- 透過的なヘッダー転送: ヘッダーをアグレッシブにフィルタせずに転送 +- 改善されたエンドポイントリライトロジック +- 動的上流エンドポイントへのより良いサポート +- 新しいフル URL エンドポイントモードと組み合わせ、非標準 URL レイアウトのベンダーをアンブロック + +### OAuth Auth Center UI 調整 + +- Auth Center のコピー、レイアウト、アイコンの表現を調整し、Codex OAuth ログインフローをよりクリーンに + +### プロバイダーキーライフサイクルと Live 同期 + +アディティブプロバイダーの作成/名前変更/複製フローを再構築し、OpenCode / OpenClaw およびテイクオーバーシナリオで Live 設定の書き込み、クリーンアップ、ロールバックが一貫するように (#1724, @yovinchen に感謝)。 + +- アディティブモードのハイライト動作がリフレッシュ後も保持 (#1747, @yovinchen に感謝) +- OpenCode / OpenClaw 全体で Live 設定の書き込みが一貫 +- 操作失敗時のロールバック動作を保持 + +### Codex OAuth デフォルト + +- Codex OAuth プリセットを GPT-5.4 モデルファミリーに更新 + +--- + +## バグ修正 + +### Copilot 認証とプロキシ互換性 + +- GitHub Copilot 認証の回帰を修正 (#1854, @Mason-mengze に感謝) +- エンタープライズおよび動的エンドポイントの処理を修正 +- macOS と Linux でのクリップボード検証コードコピーを修復 +- Copilot バックの Claude プロバイダーが OpenAI モデルをターゲットとする場合の Responses ルーティングを修正 (#1735, @Mason-mengze に感謝) + +### UTF-8 ストリームチャンク境界 + +Claude Code で Copilot リバースプロキシ経由時、中国語文字や絵文字などのマルチバイト UTF-8 シーケンスが TCP ストリームチャンクを跨いで分割される際の文字化け(U+FFFD 置換文字)を修正 (#1923, @Cod1ng に感謝)。 + +- すべての 4 つの SSE ストリーミングパスで `String::from_utf8_lossy` を新しい `append_utf8_safe` ヘルパーに置き換え +- 不完全な末尾バイトを残余バッファで保持し、次のチャンクとマージしてからデコード +- 直接の Copilot 接続では再現しない(フォーマット変換なしで生バイトを通すため) + +### フラグメント System Prompt の正規化 + +厳格な OpenAI 互換 chat バックエンド(Nvidia、Qwen 系)が変換後の Claude ペイロードに複数の system メッセージを含む場合にリクエストを拒否する問題を修正 (#1942, @yovinchen に感謝)。 + +- Anthropic → OpenAI chat 変換時に、system コンテンツを単一の先頭 system メッセージに正規化 +- メッセージストリームの残りは変更なし + +### ストリーミングパーサー互換性 + +- オプションのスペースを含むフィールドを受け入れるよう SSE パースを修正し、非厳格なストリーミング実装との互換性を向上 (#1664, @Alexlangl に感謝) + +### プロバイダー切り替え状態の破損 + +- アプリごとのプロバイダー切り替えを直列化し、並行フェイルオーバーやホットスイッチ操作が `is_current`、設定状態、Live バックアップ状態を不整合状態のままにすることを防止 + +### Claude テイクオーバー Live 設定のドリフト + +- Claude テイクオーバーが有効な間のプロバイダー編集で、Live 設定が最新のプロバイダー状態と整合を保つようにし、テイクオーバー復元動作を壊さない (#1828, @geekdada に感謝) + +### WebDAV パスワード保持と検証 + +- 保存済みの WebDAV パスワードがリフレッシュ後も表示されるように修正 +- 接続検証時に `MKCOL 405` レスポンスを正しく処理 (#1685, @Alexlangl に感謝) + +### プロバイダーカードのアクション状態 + +- アディティブモードのハイライト動作を修正 (#1747, @yovinchen に感謝) +- アクションボタンを常にレンダリングすることでプロバイダーカード全体の用量表示レイアウトを整列 +- ハードなプロキシ切り替えブロッキングを警告パスに置き換え +- Copilot および Codex OAuth カードでサポートされていないテスト/用量アクションを無効化 +- 公式プロバイダーでは用量設定とヘルスチェックのボタンを非表示 +- プロバイダーカードのホバープッシュアニメーションを削除 + +### 用量精度と料金 + +- MiniMax クォータの計算と 0% → 100% 進行を修正 +- CNY → USD の料金を修正し、不足モデルを追加 +- Gemini セッションログ同期の精度を改善 +- セッションベースの用量エントリが「不明なプロバイダー」として表示される問題を解決 + +### 用量エディタと Skills UI の回帰 + +- エクストラクタコード編集時に用量クエリフィールドがリセットされる問題を修正 (#1771, @if-nil に感謝) +- 壊れた `skills.sh` リンクと空の説明を修正 +- 用量設定の auto-query デフォルト間隔(5 分)と数値入力のクリア問題を修正 + +### 中国語 Skills 用語 + +- zh ロケールの設定パネルで Skills 関連ラベルを統一し、ストレージと同期オプションで一貫した表現を使用 + +### 環境とプリセット互換性 + +- CLI スキャンで Bun グローバル bin 検出を追加 (#1742, @makoMakoGo に感謝) +- oh-my-openagent のリネームに後方互換性を持って対応 (#1746, @yovinchen に感謝) +- OpenCode `kimi-for-coding` プリセットを修正 (#1738, @makoMakoGo に感謝) +- Gemini キーチェーン解析を macOS のみに制限 +- 空コレクションで発生する OpenClaw シリアライザのパニックを修正 (#1724, @yovinchen に感謝) + +### Linux 起動時の UI 応答性 + +ユーザーが手動でウィンドウを最大化・復元するまで、ウィンドウ UI(ネイティブタイトルバーボタンを含む)がクリックを受け付けないという長年の Linux 固有のバグを修正。 + +- **根本原因**: (1) Tauri webview が Linux の `show()` 後にキーボードフォーカスを取得せず、最初のクリックが X11/Wayland の click-to-activate によって消費される(Tauri #10746、wry #637); (2) GTK surface の入力領域が、一部の WebKitGTK/コンポジター組み合わせで `visible:false → show()` パスの再交渉に失敗し、ウィンドウ全体が応答しなくなる +- **緩和策**: 起動時に `WEBKIT_DISABLE_COMPOSITING_MODE=1` を設定し、新しい `linux_fix::nudge_main_window` ヘルパーを追加。show から ~200ms 後に `set_focus` + ±1px のノーオペレーションリサイズを実行し、視覚的に見えない「最大化と復元」と同等の動作を実現 +- **カバレッジ**: すべてのウィンドウ再表示パス(通常起動、ディープリンク、シングルインスタンス、トレイ `show_main`、軽量モード終了)に統合 + +### Linux ヘッダーのドラッグ領域 + +- Wayland 下で Tauri #13440 の影響を受ける `gtk_window_begin_move_drag` パスのトリガーを回避するため、Linux ではトップヘッダーバーから `data-tauri-drag-region` を削除 +- macOS のドラッグ動作は保持 + +### OpenCode / OpenClaw Stream Check のエッジケース + +- カスタムヘッダー透過を修正 +- OpenClaw カスタム auth-header 検出を修正 +- Bedrock エラーメッセージを修正 +- OpenCode デフォルト `baseURL` のフォールバック処理を修正 + +--- + +## ドキュメント + +### ユーザーマニュアルの刷新 + +- EN / ZH / JA ユーザーマニュアルで、トレイサブメニュー、軽量モード、プロバイダーモデル取得、セッション管理、ワークスペースファイル、WebDAV v2 の動作、OpenCode / OpenClaw の有効化、その他のプロバイダーワークフロー改善を更新 + +### コミュニティと貢献ドキュメント + +- `CONTRIBUTING.md`、`SECURITY.md`、`CODE_OF_CONDUCT.md` を追加 +- バイリンガル GitHub issue および PR テンプレートを追加 +- Dependabot 設定 (#1829, @bengbengbalabalabeng に感謝) と、非アクティブな issue を自動クローズする stale-bot ワークフローを追加 +- PR / push 品質チェック CI ワークフローを追加 + +### Release Notes のリスク通知バックポート + +- v3.12.3 の release notes に Copilot リバースプロキシのリスク通知とハイライトリンクのアンカーを 3 言語すべてに追加 + +--- + +## ⚠️ リスクに関する注意事項 + +**Codex OAuth リバースプロキシに関する免責事項** + +本リリースで追加された Codex OAuth リバースプロキシ機能は、リバースエンジニアリングによる OAuth フローを通じて ChatGPT Plus / Pro の Codex サービスにアクセスします。この機能を有効にする前に、以下のリスクをご確認ください: + +1. **利用規約違反の可能性**: リバースエンジニアリングされた OAuth フローを使用して OpenAI サービスにアクセスすることは、OpenAI の利用規約に違反する可能性があります。これらの規約では、未承認の自動アクセス、サービス複製、および意図されたアクセスパスの回避が禁止されています。 +2. **アカウントリスク**: OpenAI は異常な使用パターンを疑わしい自動化活動としてフラグ付けし、ChatGPT Plus / Pro へのアクセスに一時的または永久的な制限を科す可能性があります。 +3. **将来の利用保証なし**: OpenAI は認証および検出メカニズムをいつでも更新する可能性があり、現在動作する使用パターンが将来的にフラグ付けされる可能性があります。 + +v3.12.3 で導入された **GitHub Copilot リバースプロキシ**も、既存のリスク通知の対象となります — 詳細は [v3.12.3 リリースノート](v3.12.3-ja.md#️-リスクに関する注意事項) を参照してください。 + +これらの機能を有効にすることで、ユーザーは**すべてのリスクを自己責任で負う**ものとします。CC Switch は、これらの機能の使用に起因するアカウント制限、警告、またはサービス停止について一切の責任を負いません。 + +--- + +## ダウンロードとインストール + +[Releases](https://github.com/farion1231/cc-switch/releases/latest) から適切なバージョンをダウンロードしてください。 + +### システム要件 + +| システム | 最小バージョン | アーキテクチャ | +| -------- | -------------------------------- | ----------------------------------- | +| Windows | Windows 10 以降 | x64 | +| macOS | macOS 12 (Monterey) 以降 | Intel (x64) / Apple Silicon (arm64) | +| Linux | 下表参照 | x64 | + +### Windows + +| ファイル | 説明 | +| ------------------------------------------ | ---------------------------------------------------- | +| `CC-Switch-v3.13.0-Windows.msi` | **推奨** - MSI インストーラー、自動更新対応 | +| `CC-Switch-v3.13.0-Windows-Portable.zip` | ポータブル版、解凍して実行、レジストリ書き込みなし | + +### macOS + +| ファイル | 説明 | +| ---------------------------------- | ----------------------------------------------------------------- | +| `CC-Switch-v3.13.0-macOS.dmg` | **推奨** - DMG インストーラー、ドラッグ&ドロップでインストール | +| `CC-Switch-v3.13.0-macOS.zip` | 解凍して Applications にドラッグ、Universal Binary | +| `CC-Switch-v3.13.0-macOS.tar.gz` | Homebrew インストールと自動更新用 | + +> macOS 版は Apple のコード署名と公証済みで、そのままインストールしてご利用いただけます。 + +### Homebrew (macOS) + +```bash +brew tap farion1231/ccswitch +brew install --cask cc-switch +``` + +更新: + +```bash +brew upgrade --cask cc-switch +``` + +### Linux + +| ディストリビューション | 推奨形式 | インストール方法 | +| --------------------------------------- | ----------- | ---------------------------------------------------------------------- | +| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` または `sudo apt install ./CC-Switch-*.deb` | +| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` または `sudo dnf install ./CC-Switch-*.rpm` | +| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` | +| Arch Linux / Manjaro | `.AppImage` | 実行権限を追加して直接実行、または AUR を使用 | +| その他のディストリビューション / 不明 | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` | diff --git a/docs/release-notes/v3.13.0-zh.md b/docs/release-notes/v3.13.0-zh.md new file mode 100644 index 000000000..925462127 --- /dev/null +++ b/docs/release-notes/v3.13.0-zh.md @@ -0,0 +1,354 @@ +# CC Switch v3.13.0 + +> 轻量模式、配额与余额展示、供应商模型自动获取、Codex OAuth 反向代理、托盘按应用分级菜单 + +**[English →](v3.13.0-en.md) | [日本語版 →](v3.13.0-ja.md)** + +--- + +## 概览 + +CC Switch v3.13.0 是一次重要的功能版本,聚焦于可观测性、供应商工作流与代理兼容性。本版本在各主要供应商卡片上新增了**配额与余额展示**,覆盖 Claude / Codex / Gemini 官方订阅、Token Plan(Kimi / Zhipu GLM / MiniMax)、Copilot premium interactions 以及 DeepSeek / StepFun / SiliconFlow / OpenRouter / Novita AI 等第三方余额查询;引入了**轻量模式**,让 CC Switch 可以仅驻留在系统托盘中运行;通过 OpenAI 兼容的 `/v1/models` 端点在 Claude / Codex / Gemini / OpenCode / OpenClaw 五个应用的供应商表单中实现了**模型自动发现**;为 ChatGPT Plus / Pro 订阅者提供了 **Codex OAuth 反向代理**;将托盘菜单重构为**按应用分级的子菜单**;将代理转发层重建在 **Hyper 客户端**之上;并完成了 **Skills 工作流**的发现、批量更新和存储位置切换改造。其他改进还包括完整 URL 端点模式、无需代理拦截的会话日志用量追踪、Copilot 调用优化器、多字节 UTF-8 流式分片边界修复以及 Linux 启动时 UI 无响应修复等。 + +**发布日期**:2026-04-08 + +**更新规模**:98 commits | 229 files changed | +23,891 / -2,305 lines + +--- + +## 重点内容 + +- **轻量模式**:新增仅托盘运行模式,退出到托盘时销毁主窗口、按需重建,空闲时资源占用接近零 +- **配额与余额展示**:供应商卡片上直接展示配额或余额 —— 覆盖 Claude / Codex / Gemini 官方订阅、GitHub Copilot premium interactions、Codex OAuth、Token Plan(Kimi / Zhipu GLM / MiniMax),以及 DeepSeek / StepFun / SiliconFlow / OpenRouter / Novita AI 的官方余额查询 +- **供应商模型自动获取**:为 Claude / Codex / Gemini / OpenCode / OpenClaw 的供应商表单新增 OpenAI 兼容的 `/v1/models` 发现能力,按分组下拉展示并提供针对性错误提示 +- **Codex OAuth 反向代理**:新增 ChatGPT Plus / Pro 的 Codex 反向代理,作为新的 Claude 供应商卡片类型,包含受管 OAuth 登录流程和订阅配额展示([⚠️ 风险提示](#️-风险提示)) +- **托盘按应用分级菜单**:将托盘菜单重构为按应用分组的子菜单,防止供应商多时菜单溢出,让后台切换供应商在大量供应商场景下仍可用 +- **Skills 发现与批量更新**:基于 SHA-256 内容哈希的更新检测、单项和"全部更新"批量操作、`skills.sh` 公共注册表搜索集成,以及 CC Switch 与 `~/.agents/skills` 的存储位置切换 +- **会话工作流升级**:会话管理器批量删除、Claude 终端恢复前的目录选择器、无需代理拦截即可导入 Claude / Codex / Gemini 会话日志用量、精确的 Codex JSONL 解析、按应用筛选用量面板 +- **OpenCode / OpenClaw 流式检测覆盖**:新增 OpenCode 的 npm 包映射检测、OpenClaw `openai-completions` 支持,以及其余所有 OpenClaw 协议变体 +- **完整 URL 端点模式**:新增将 `base_url` 视作完整上游端点的供应商选项,支持非标准 URL 布局的厂商 +- **Hyper 代理转发栈**:将代理转发层重构到 Hyper 客户端之上,实现透明头部转发、改进的端点重写以及对动态上游端点的更好支持 +- **Copilot 调用优化器**:新增请求分类和路由逻辑,降低 GitHub Copilot premium interaction 的不必要消耗 +- **UTF-8 流式分片边界修复**:所有 4 条 SSE 流式路径改为跨分片保留残留多字节序列,消除 Copilot 反代下中文/emoji 乱码 +- **Linux 启动 UI 修复**:修复长期存在的 Linux 窗口初次无法响应点击、需用户手动最大化再还原才能操作的问题 + +--- + +## 新功能 + +### 轻量模式 + +新增仅托盘运行模式,显著降低 CC Switch 空闲时的桌面占用。 + +- 退出到托盘时销毁主窗口而非隐藏,释放 UI 资源和内存 +- 用户从托盘、深链接或单例激活时按需重建窗口 +- 覆盖所有窗口重新显示路径:正常启动、深链接、单例、托盘 `show_main` 以及轻量模式退出返程 + +### 配额与余额展示 + +在供应商卡片上新增配额和余额读数,用户无需离开卡片即可查看剩余容量。 + +- **官方订阅**:Claude / Codex / Gemini 官方供应商的订阅配额展示 +- **GitHub Copilot**:在 Copilot 供应商卡片上显示 premium interactions 剩余量 +- **Codex OAuth**:在 Codex OAuth 卡片上内联展示 ChatGPT Plus / Pro 订阅配额 +- **Token Plan 供应商**:Kimi、Zhipu GLM、MiniMax,修正配额数学与 0% → 100% 用量进度 +- **第三方余额**:为 DeepSeek、StepFun、SiliconFlow、OpenRouter、Novita AI 提供官方余额查询 +- 官方供应商的健康检查和用量配置按钮自动隐藏,保持卡片简洁 + +### 供应商模型自动获取 + +为所有供应商表单新增 OpenAI 兼容的模型发现能力,消除手动复制粘贴模型 ID 的繁琐流程。 + +- 使用配置的 API key 向供应商的 `/v1/models` 端点发起请求 +- 在下拉菜单中按类别分组展示模型 +- 对网络 / 认证 / 端点不存在 / 解析失败等场景提供具体错误消息 +- 支持全部五个应用(Claude / Codex / Gemini / OpenCode / OpenClaw) + +### Codex OAuth 反向代理 + +新增 ChatGPT Plus / Pro 订阅者的 Codex OAuth 反向代理路径,让 ChatGPT 订阅者可以在 Claude Code 中使用自己的订阅。 + +- 受管 OAuth 登录流程,通过 ChatGPT Plus / Pro 认证 +- 作为新的 Claude 供应商卡片类型出现在列表中,与 API-key 型供应商并列 +- 订阅配额内联展示 +- 与 Auth Center UI 紧密集成,统一管理 Token +- Codex OAuth 预设升级到 GPT-5.4 系列 +- 启用前请参见下文的 [⚠️ 风险提示](#️-风险提示) + +### 托盘按应用分级菜单 + +将托盘菜单重构为按应用分组的子菜单,取代原来的扁平列表。 + +- 为 Claude / Codex / Gemini / OpenCode / OpenClaw 分别建立独立的子菜单 +- 防止用户有大量供应商时托盘菜单溢出屏幕 +- 后台切换供应商的可扩展性更好 + +### Skills 发现与批量更新 + +将 Skills 管理面板升级为完整的发现 + 维护工作流。 + +- **SHA-256 更新检测**:通过内容哈希判断哪些 skill 在远端有更新 +- **单项与批量更新**:单项"更新"按钮 + 带滑入动画的"全部更新"批量操作 +- **存储位置切换**:在 CC Switch 存储和 `~/.agents/skills` 之间切换而不丢失 skill 状态 +- **公共注册表搜索**:将 `skills.sh` 搜索直接集成到对话框中,方便发现社区 skill + +### 会话工作流升级 + +多项会话管理改进,降低使用 Claude / Codex / Gemini 会话时的摩擦。 + +- **批量删除会话**:在会话管理器中选择并一次删除多个会话 (#1693, 感谢 @Alexlangl) +- **恢复前目录选择器**:Claude 终端恢复前先选择工作目录 (#1752, 感谢 @yovinchen) +- **无需代理的会话日志用量**:直接从 Claude / Codex / Gemini 会话日志导入用量数据,无需代理拦截 +- **精确的 Codex JSONL 解析**:替换 Codex 的估算用量为基于 JSONL 会话日志的精确解析,同时对模型名称做归一化以保证定价查询一致性 +- **Gemini CLI 会话日志集成**:Gemini 用量现在从 Gemini CLI 会话日志精确同步 +- **按应用筛选用量**:用量面板可按 Claude / Codex / Gemini 独立筛选 + +### OpenCode / OpenClaw 流式检测覆盖 + +将 Stream Check 面板的覆盖范围扩展到 OpenCode 和所有 OpenClaw 协议变体。 + +- 通过 npm 包映射检测 OpenCode 供应商 +- 支持 OpenClaw `openai-completions` 协议 +- 支持剩余的三个 OpenClaw 协议变体 +- 针对自定义头透传、OpenClaw 自定义 auth-header 检测、Bedrock 错误消息、OpenCode 默认 `baseURL` 回退等边界情况进行了处理 + +### 完整 URL 端点模式 + +新增将 `base_url` 视作完整上游端点的供应商选项,取代原有的 base-URL 加路径拼接模式 (#1561, 感谢 @yovinchen)。 + +- 代理转发和 Stream Check 都会遵循完整 URL 模式 +- 解锁需要非标准 URL 布局的厂商 +- 可在供应商表单中按供应商配置 + +### OpenCode StepFun Step Plan 预设 + +- 为 OpenCode 新增 StepFun Step Plan 供应商预设及合理默认值 (#1668, 感谢 @sky-wang-salvation) + +### Copilot 调用优化器 + +新增请求分类和路由逻辑,降低 GitHub Copilot premium interaction 的不必要消耗。 + +- 根据请求意图和权重进行分类 +- 将低价值请求路由到非 premium 通道 +- 旨在延长 Copilot 订阅的可用时长 + +--- + +## 变更 + +### 托盘菜单组织 + +- 将托盘菜单重构为按应用分级的子菜单(Claude / Codex / Gemini / OpenCode / OpenClaw) +- 防止菜单溢出,支持大量供应商的场景 + +### 代理转发栈 + +将代理转发层重建在 Hyper HTTP 客户端之上 (#1714, 感谢 @yovinchen)。 + +- 透明头部转发:头部透传,不做激进过滤 +- 改进的端点重写逻辑 +- 更好地支持动态上游端点 +- 与新的"完整 URL 端点模式"配合,解锁非标准 URL 布局的厂商 + +### OAuth Auth Center UI 精修 + +- 精修 Auth Center 的文案、布局和图标呈现,让 Codex OAuth 登录流程更清爽 + +### 供应商键生命周期与 Live 同步 + +重做了新增模式供应商的创建/重命名/复制流程,让 Live 配置写入、清理和回滚在 OpenCode / OpenClaw 与接管场景下保持一致 (#1724, 感谢 @yovinchen)。 + +- 新增模式高亮行为在刷新后依旧保持 (#1747, 感谢 @yovinchen) +- OpenCode / OpenClaw 的 Live 配置写入保持一致 +- 失败时正确回滚,避免半提交状态 + +### Codex OAuth 默认值 + +- Codex OAuth 预设升级到 GPT-5.4 系列 + +--- + +## Bug 修复 + +### Copilot 认证与代理兼容性 + +- 修复 GitHub Copilot 认证回归问题 (#1854, 感谢 @Mason-mengze) +- 修正企业版和动态端点处理 +- 修复 macOS 和 Linux 上的剪贴板验证码复制问题 +- 修复 Copilot 作为 Claude 供应商时 OpenAI 模型的 Responses 分流 (#1735, 感谢 @Mason-mengze) + +### UTF-8 流式分片边界 + +修复 Claude Code 在 Copilot 反代下,当中文字符或 emoji 等多字节 UTF-8 序列跨 TCP 分片传输时出现的间歇性乱码(U+FFFD 替换字符)问题 (#1923, 感谢 @Cod1ng)。 + +- 将所有 4 条 SSE 流式路径中的 `String::from_utf8_lossy` 替换为新的 `append_utf8_safe` 辅助函数 +- 通过残留缓冲区保留不完整的尾部字节,并在下一个分片合并后再解码 +- 直连 Copilot 的场景不可复现,因为直连模式透传原始字节而不做格式转换 + +### 碎片 System Prompt 规范化 + +修复严格的 OpenAI 兼容 chat 后端(Nvidia、Qwen 风格)在转换后 Claude 负载包含多条 system 消息时拒绝请求的问题 (#1942, 感谢 @yovinchen)。 + +- 在 Anthropic → OpenAI chat 转换时将 system 内容合并为单条前置 system 消息 +- 其余消息流保持不变 + +### 流式解析兼容性 + +- 修复 SSE 解析以接受包含可选空格的字段,提升对非严格流式实现的兼容性 (#1664, 感谢 @Alexlangl) + +### 供应商切换状态损坏 + +- 将按应用的供应商切换串行化,防止并发故障转移或热切换操作导致 `is_current`、设置状态和 Live 备份状态不一致 + +### Claude 接管 Live 配置漂移 + +- 修复 Claude 接管启用时供应商编辑导致 Live 设置与供应商状态失步,同时保持接管恢复行为不被破坏 (#1828, 感谢 @geekdada) + +### WebDAV 密码保留与校验 + +- 修复 WebDAV 密码字段在刷新后不可见的问题 +- 连接校验时正确处理 `MKCOL 405` 响应 (#1685, 感谢 @Alexlangl) + +### 供应商卡片动作状态 + +- 修复新增模式高亮行为 (#1747, 感谢 @yovinchen) +- 始终渲染动作按钮,对齐各卡片的用量显示布局 +- 用警告路径替换硬阻塞的代理切换 +- 禁用 Copilot 和 Codex OAuth 卡片上不受支持的测试/用量动作 +- 隐藏官方供应商的用量配置和健康检查按钮 +- 移除供应商卡片上的 hover 推送动画 + +### 用量精确性与定价 + +- 修复 MiniMax 配额数学和 0% → 100% 进度 +- 修正 CNY → USD 定价并补齐缺失模型 +- 改进 Gemini 会话日志同步的精度 +- 修复基于会话的用量条目显示为"未知供应商"的问题 + +### 用量编辑器与 Skills UI 回归 + +- 修复编辑提取器代码时用量查询字段被重置的问题 (#1771, 感谢 @if-nil) +- 修正 `skills.sh` 链接失效和空描述问题 +- 修复用量配置中的 auto-query 默认间隔(5 分钟)和 number-input 清空问题 + +### 中文 Skills 术语 + +- 统一 zh locale 下设置面板中的 Skills 相关标签,保持存储与同步选项用词一致 + +### 环境与预设兼容性 + +- 在 CLI 扫描中新增 Bun 全局 bin 检测 (#1742, 感谢 @makoMakoGo) +- 适配 oh-my-openagent 重命名并保持向后兼容 (#1746, 感谢 @yovinchen) +- 修正 OpenCode `kimi-for-coding` 预设 (#1738, 感谢 @makoMakoGo) +- 将 Gemini keychain 解析限制为仅 macOS +- 修复空集合时 OpenClaw 序列化器 panic (#1724, 感谢 @yovinchen) + +### Linux 启动时 UI 无响应 + +修复长期存在的 Linux 专属 bug:窗口 UI(包括原生标题栏按钮)在用户手动最大化再还原之前无法接收点击。 + +- **根因 1**:Tauri webview 在 Linux 上 `show()` 之后未获得键盘焦点,首次点击被 X11 / Wayland 的 click-to-activate 消费掉(Tauri #10746、wry #637) +- **根因 2**:在某些 WebKitGTK / 合成器组合下,GTK surface 的输入区域在 `visible:false → show()` 路径上未能重协商,导致整个窗口无响应 +- **缓解措施**:启动时设置 `WEBKIT_DISABLE_COMPOSITING_MODE=1`,并新增 `linux_fix::nudge_main_window` 辅助函数,在 show 之后 ~200ms 执行 `set_focus` + ±1px 无操作尺寸调整,等效于一次视觉上不可见的"最大化再还原" +- **覆盖范围**:接入所有窗口重新显示路径 —— 正常启动、深链接、单例、托盘 `show_main` 以及轻量模式退出返程 + +### Linux 标题栏拖动区域 + +- 在 Linux 上从顶部标题栏移除 `data-tauri-drag-region`,避免触发 Wayland 下受 Tauri #13440 影响的 `gtk_window_begin_move_drag` 路径 +- macOS 拖动行为保持不变 + +### OpenCode / OpenClaw 流式检测边界情况 + +- 修复自定义头透传 +- 修复 OpenClaw 自定义 auth-header 检测 +- 修复 Bedrock 错误消息 +- 修复 OpenCode 默认 `baseURL` 回退处理 + +--- + +## 文档 + +### 用户手册刷新 + +- 在 EN / ZH / JA 用户手册中覆盖托盘子菜单、轻量模式、供应商模型获取、会话管理、工作区文件、WebDAV v2 行为、OpenCode / OpenClaw 启用等供应商工作流改进 + +### 社区与贡献文档 + +- 新增 `CONTRIBUTING.md`、`SECURITY.md`、`CODE_OF_CONDUCT.md` +- 新增双语 GitHub issue 和 PR 模板 +- 新增 Dependabot 配置 (#1829, 感谢 @bengbengbalabalabeng) 和 stale-bot 工作流以自动关闭不活跃的 issue +- 新增 PR / push 质量检查 CI 工作流 + +### Release Notes 风险提示回填 + +- 在三语 v3.12.3 release notes 中新增 Copilot 反代风险提示,并为重点内容添加锚点链接 + +--- + +## ⚠️ 风险提示 + +**Codex OAuth 反向代理免责声明** + +本版本新增的 Codex OAuth 反向代理功能通过逆向工程的 OAuth 流程访问 ChatGPT Plus / Pro 的 Codex 服务。启用此功能前,请注意以下风险: + +1. **违反服务条款**:使用逆向 OAuth 流程访问 OpenAI 服务可能违反 OpenAI 的服务条款,其中禁止未经授权的自动化访问、服务复制以及绕过既定的访问路径。 +2. **账号风险**:OpenAI 可能将异常使用模式标记为可疑的自动化行为,从而对 ChatGPT Plus / Pro 访问施加临时或永久限制。 +3. **无法保证长期可用**:OpenAI 可能随时更新其认证和检测机制,当前可用的使用方式未来可能被标记。 + +v3.12.3 引入的 **GitHub Copilot 反向代理**同样适用原有风险提示 —— 详见 [v3.12.3 release notes](v3.12.3-zh.md#️-风险提示)。 + +用户启用上述功能即表示**自行承担所有风险**。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。 + +--- + +## 下载与安装 + +访问 [Releases](https://github.com/farion1231/cc-switch/releases/latest) 下载对应版本。 + +### 系统要求 + +| 系统 | 最低版本 | 架构 | +| ------- | ----------------------------- | ----------------------------------- | +| Windows | Windows 10 及以上 | x64 | +| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) | +| Linux | 见下表 | x64 | + +### Windows + +| 文件 | 说明 | +| ------------------------------------------ | ----------------------------------- | +| `CC-Switch-v3.13.0-Windows.msi` | **推荐** - MSI 安装包,支持自动更新 | +| `CC-Switch-v3.13.0-Windows-Portable.zip` | 便携版,解压即用,不写入注册表 | + +### macOS + +| 文件 | 说明 | +| ---------------------------------- | --------------------------------------------------------- | +| `CC-Switch-v3.13.0-macOS.dmg` | **推荐** - DMG 安装包,拖入 Applications 即可 | +| `CC-Switch-v3.13.0-macOS.zip` | 解压后拖入 Applications,Universal Binary | +| `CC-Switch-v3.13.0-macOS.tar.gz` | 用于 Homebrew 安装和自动更新 | + +> macOS 版本已通过 Apple 代码签名和公证,可直接安装使用。 + +### Homebrew(macOS) + +```bash +brew tap farion1231/ccswitch +brew install --cask cc-switch +``` + +更新: + +```bash +brew upgrade --cask cc-switch +``` + +### Linux + +| 发行版 | 推荐格式 | 安装方式 | +| --------------------------------------- | ----------- | ---------------------------------------------------------------------- | +| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb` | `sudo dpkg -i CC-Switch-*.deb` 或 `sudo apt install ./CC-Switch-*.deb` | +| Fedora / RHEL / CentOS / Rocky Linux | `.rpm` | `sudo rpm -i CC-Switch-*.rpm` 或 `sudo dnf install ./CC-Switch-*.rpm` | +| openSUSE | `.rpm` | `sudo zypper install ./CC-Switch-*.rpm` | +| Arch Linux / Manjaro | `.AppImage` | 添加执行权限后直接运行,或使用 AUR | +| 其他发行版 / 不确定 | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage` |