mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-10-25 17:22:27 +08:00
docs(release): add v4.0.12 release notes
This commit is contained in:
1 parent
edf3220432
commit
51ac86f1c5
4 files changed
+225
No files matched your search
@@ -0,0 +1,64 @@
|
||||
# CC Switch v4.0.12
|
||||
|
||||
This release makes the "Apps" page a complete place to manage coding tools: install, update, uninstall and detect install conflicts. When the same tool is installed in several places, you can now choose to uninstall the extra one, so the conflict can be resolved inside CC Switch; before updating, the Node version is checked first, and when a new version needs a newer Node, an update button that is bound to fail is no longer shown; the newer Grok Build install layout can now be uninstalled too. There is also a new "Local" group for adding Ollama, LM Studio, llama.cpp and vLLM running on your own machine, plus presets for 14 cloud platforms including Ollama Cloud, Groq, Hugging Face and Vercel AI Gateway. Background scanning of session logs goes from every 60 seconds to every 10 minutes, which saves resources day to day; while the Usage page is open, it scans at the interval you choose, so new usage actually shows up sooner. The interface adds Turkish (community translation); when the system language isn't supported, first launch now uses English. It also fixes Skills restore from cloud sync never working again after failing once, and Claude Code getting an error after the reply had already finished when routed to a Responses upstream, among other issues. For everything new in 4.0, see the [v4.0 release notes](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.4-en.md).
|
||||
|
||||
---
|
||||
|
||||
## New
|
||||
|
||||
**The "Apps" page now covers install, update, uninstall and install conflict detection.** v4.0.11 added uninstall, and this release fills in the rest. When a tool is installed in several places, "Diagnose installs" lists each one and marks the "Default" one that the command line actually uses; uninstall now lets you pick any of them, so you keep the copy you want and resolve the conflict right in CC Switch. Before updating, the Node version is checked, so you are no longer offered updates that fail to install or don't run once installed.
|
||||
|
||||
**Choose which installation to uninstall.** The confirmation dialog used to offer only the installation currently in use, while users with several installations often wanted to remove a different one; with several installations and no way to tell which one was the default, uninstall simply failed. The dialog now lists every installation it finds, with its source, path, version and a "Default" tag: if only one can be uninstalled it is selected automatically, with two or more nothing is preselected, and ones that can't be uninstalled automatically show the reason and are disabled. Right before running, the path you picked is checked again, and nothing runs if it doesn't match the preview.
|
||||
|
||||
- Grok Build's install layout from 0.2.112 onward (`~/.grok/bin/grok-<version>`) is now supported; it used to show "Cannot uninstall automatically". Uninstall removes all program files of that installation, deleting only files and no directories; `config.toml` and sessions are kept.
|
||||
- When uninstalling a tool installed with the official script, launcher links pointing to the same program (such as `~/.local/bin/grok`) are removed too, so no broken command is left behind.
|
||||
- If you also have an official installation and `~/.grok/config.toml` is set to update through npm, the npm copy will be reinstalled by `grok update`; the confirmation dialog points this out.
|
||||
- When uninstalling Hermes on Windows, the confirmation dialog warns that a running Python may be locked and leave files behind; if the uninstall command succeeds but the status check afterwards fails, it now shows "Uninstall command completed; check the result" instead of wrongly reporting that the uninstall failed.
|
||||
|
||||
**Node version is checked before updating.** OpenClaw 2026.9.3 and later require Node 24.16 or above, so updating on an older Node always failed, yet the "Apps" page kept showing the update button; npm packages without a check of their own were worse, since npm only prints a warning and installs anyway, and the tool then won't run. Now, when a new version is found, CC Switch first reads the Node version it requires and compares it with the Node that this installation actually uses. If the requirement isn't met, the row says Node must be upgraded first, no update button is shown, and "Update All" skips it too; the check runs once more right before updating. Version requirements it can't parse and failed lookups never block an update, and native, Homebrew, Bun and WSL installations are not checked at all.
|
||||
|
||||
**A tidier "Apps" page.** Uninstall moves from the red button on each row into the "…" menu at the end of the row. The header and the rows now share the same column widths, so the version column lines up; while versions are being read and updates are being found or checked, the header and columns no longer shift left and right ([#8293](https://github.com/farion1231/cc-switch/pull/8293)). The note on hidden apps is reworded to be clearer: they are only hidden from view, providers, MCP and other settings are all kept, and the app's own config files are not changed.
|
||||
|
||||
**Local inference servers: Ollama, LM Studio, llama.cpp, vLLM.** When adding a provider there is a new "Local" group, placed after "Cloud providers", with presets that connect to inference servers on your machine. The default addresses use each server's default port (Ollama 11434, LM Studio 1234, llama.cpp 9931, vLLM 8000), and port 8080, used by older llama.cpp, Homebrew and Docker, is offered as an alternative address. These servers don't check keys by default, so the presets fill in the placeholder value each project's docs use. Before use, start the server and download a model; you can replace the preset's default model with one you have locally, or click "Fetch Models" to read the list from the server; the context window is whatever length you set when starting the server.
|
||||
|
||||
- Claude Code and Codex connect directly to the local server's Anthropic Messages and Responses APIs, and Claude Desktop connects through routing; OpenCode, OpenClaw, Hermes and Pi get presets depending on which built-in providers each already has (anything an app already ships is not added again).
|
||||
- Requests to local addresses (localhost, 127.0.0.1 and so on) no longer go through the proxy set in CC Switch or the system proxy. Previously, with a proxy set, routing, speed tests and model fetching sent their requests into the proxy and couldn't reach the local server.
|
||||
|
||||
**Presets:** Added Ollama Cloud, Baseten, Meta Model API, DeepInfra, Vercel AI Gateway, Nebius Token Factory, Groq, SambaNova, DigitalOcean, Hugging Face, Microsoft Foundry, Fireworks AI, Mistral AI and Cloudflare AI Gateway; OpenCode adds SiliconFlow China and SiliconFlow International ([#4500](https://github.com/farion1231/cc-switch/issues/4500)); StreamLake adds a Codex preset, and all StreamLake presets now use the public KAT-Coder endpoint, so you no longer need to create your own endpoint ID.
|
||||
|
||||
## Improvements
|
||||
|
||||
**Session log scanning: lighter in the background, more timely on the Usage page.** Previously, whether or not anything needed it, session logs were scanned in the background every 60 seconds, so with CC Switch left open for a long time, that disk reading and CPU use kept adding up; meanwhile the Usage page's "Auto-refresh interval" only re-queried the database, so session usage still waited for those 60 seconds, and choosing 5 seconds didn't help ([#8301](https://github.com/farion1231/cc-switch/pull/8301)). The setting is now called "Session log scan interval": opening the Usage page scans immediately, the window becoming visible again triggers another scan, and after that it scans at the interval you choose (5, 10, 30 or 60 seconds, 60 by default); the background scan now runs every 10 minutes only as a fallback, which noticeably cuts background usage. The "Off" option is gone, and the setting is hidden when "Scan session logs automatically" is turned off. Usage that goes through routing was always recorded in real time and is not affected.
|
||||
|
||||
**The provider search box no longer covers or pushes cards.** The search box used to float above the list, covering the edit and more-actions buttons on the first card ([#8100](https://github.com/farion1231/cc-switch/issues/8100)). It now sits at the far right of the row above the cards: the mode row for Claude Code, Codex, Gemini CLI and Grok Build, and the "Added" heading row for other apps. Opening search neither covers the cards nor pushes them down.
|
||||
|
||||
**Interface language.** Turkish is added, translated by the community; text that isn't translated yet shows in English ([#8208](https://github.com/farion1231/cc-switch/pull/8208)). On first launch, if the system language isn't one the interface supports (German, French, Korean and so on), the interface and tray use English instead of defaulting to Simplified Chinese; a language you have already chosen is not affected.
|
||||
|
||||
## Fixes
|
||||
|
||||
- **Once Skills restore from cloud sync failed, it could never succeed again** ([#8153](https://github.com/farion1231/cc-switch/issues/8153)). On Windows, if a file was in use (os error 5) while downloading from cloud sync, a `skills.bak` was left behind, and every later restore failed while dealing with it. Restore now copies the cloud Skills in full into a separate directory and swaps it in as a whole, no longer reusing `skills.bak`; if both the swap and the rollback fail, the original full copy is kept and the error tells you where it is.
|
||||
- **When Claude Code was routed to an OpenAI Responses upstream, an error arrived after the reply had already finished** ([#8138](https://github.com/farion1231/cc-switch/pull/8138)). If the upstream closed the connection only after sending the completion event, CC Switch sent an extra stream error after the normal end, and the client could treat a complete reply as failed. Connection errors after the end are no longer forwarded.
|
||||
- **Clicking the current page in the sidebar again from the MCP, prompt or pricing editor dropped the "unsaved changes" protection** ([#7900](https://github.com/farion1231/cc-switch/pull/7900)). It used to show a discard-changes confirmation; after you confirmed, the editor stayed open, but leaving the page afterwards no longer warned you and the changes were simply lost. Clicking the current page now does nothing.
|
||||
- **When the upstream returned an empty error body, the error message ended with a lone colon** ([#6910](https://github.com/farion1231/cc-switch/pull/6910)), which made it look as if CC Switch had swallowed the upstream's explanation. It now says explicitly that the upstream returned no error content.
|
||||
- **Speed in Pi session history always showed "—"** ([#8278](https://github.com/farion1231/cc-switch/pull/8278)). Pi session imports always recorded the duration as 0; the duration is now estimated from each reply's request start time and write time, so eligible records can show an estimated speed.
|
||||
- **When the Pi config directory pointed into WSL, every write first tried system calls that WSL doesn't support** ([#8245](https://github.com/farion1231/cc-switch/issues/8245)). Enabling Skills and saving AGENTS.md now go straight to a method that works on WSL paths; in Auto mode, Skills are synced by copying instead, and if you manually chose symlinks you still get a clear error.
|
||||
- **On Windows, after a restart from an auto-update, reading the model lists bundled with OpenCode and Codex could still fail to find the tool** ([#8262](https://github.com/farion1231/cc-switch/pull/8262)). v4.0.11 fixed install and update; this release applies the restored PATH to these two places as well, and variable references in PATH such as `%PNPM_HOME%` are expanded using the user and system environment variables.
|
||||
|
||||
## Upgrade Notes
|
||||
|
||||
**The database schema is unchanged**, still at 20.
|
||||
|
||||
- When the Usage page isn't open, session logs are scanned in the background every 10 minutes (previously every 60 seconds), so usage that doesn't go through routing can take up to 10 minutes to show up in the stats; opening the Usage page scans immediately. If you had chosen "Off", it becomes 60 seconds.
|
||||
- Pi speed estimates only apply to records imported after the upgrade; records that were already imported still show "—".
|
||||
- The new presets and the StreamLake changes only affect newly added providers; StreamLake providers you have already added keep using their original endpoint ID.
|
||||
- When you pick a local preset for Claude Desktop, the form clears the key, so fill in the placeholder value by hand: `ollama` for Ollama, `lmstudio` for LM Studio, `no-key` for llama.cpp and `dummy` for vLLM; if you set a key when starting the server, enter that instead.
|
||||
|
||||
---
|
||||
|
||||
## Thanks
|
||||
|
||||
Thanks to [@funkpopo](https://github.com/funkpopo) (session scan interval on the Usage page, column alignment on the "Apps" page, uninstall feedback and Windows PATH follow-ups, and Pi session speed estimates), [@xue-ding-e](https://github.com/xue-ding-e) (failed Skills restores, the stream error after a Responses reply finished, and the search box covering cards), [@alkank](https://github.com/alkank) (Turkish interface and tray), [@AristurtleHu](https://github.com/AristurtleHu) (writes when the Pi config directory is in WSL), [@Owlbay](https://github.com/Owlbay) (unsaved-changes protection), [@loulanyue](https://github.com/loulanyue) (empty upstream error content), [@xwil1](https://github.com/xwil1) (OpenCode SiliconFlow presets) and [@Lingbou](https://github.com/Lingbou) (Windows CI test timeout) for their contributions.
|
||||
|
||||
Thanks to [@HessianZ](https://github.com/HessianZ), [@bubblevv](https://github.com/bubblevv), [@JimMoen](https://github.com/JimMoen), [@chufeng](https://github.com/chufeng) and [@Wikian233](https://github.com/Wikian233) for reporting issues, providing reproduction details and suggesting fixes.
|
||||
|
||||
For the full technical details, see the [CHANGELOG](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md).
|
||||
@@ -0,0 +1,64 @@
|
||||
# CC Switch v4.0.12
|
||||
|
||||
今回のリリースでは、「アプリ」ページでコーディングツールのインストール、アップグレード、アンインストール、インストールの競合の検出まで、ひととおり管理できるようになりました。同じツールが複数の場所にインストールされている場合、不要なほうを選んでアンインストールでき、競合を CC Switch の中で解消できます。アップグレードの前に Node のバージョンを確認し、新しいバージョンがより新しい Node を必要とする場合は、失敗するとわかっているアップグレードボタンを表示しなくなりました。Grok Build の新しいインストール方法でもアンインストールできるようになりました。また「ローカル」グループを追加し、このマシンで動いている Ollama、LM Studio、llama.cpp、vLLM を直接追加できるようになったほか、Ollama Cloud、Groq、Hugging Face、Vercel AI Gateway など 14 のクラウドプラットフォームのプリセットも追加しました。セッションログのバックグラウンドスキャンは 60 秒ごとから 10 分ごとに変わり、普段のリソース消費が減りました。使用量ページを開いているときは選んだ間隔でスキャンするため、新しい使用量はむしろ早く表示されます。インターフェースにトルコ語(コミュニティ翻訳)を追加し、システムの言語がサポート対象外の場合は初回起動時に英語を使うようになりました。ほかにも、クラウド同期での Skills の復元に一度失敗するとそれ以降ずっと復元できなくなる問題や、Claude Code がルーティング経由で Responses のアップストリームに接続したときに応答の終了後にエラーが出る問題などを修正しました。4.0 の更新内容の全体は [v4.0 リリースノート](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.4-ja.md) をご覧ください。
|
||||
|
||||
---
|
||||
|
||||
## 新機能
|
||||
|
||||
**「アプリ」ページで、インストール、アップグレード、アンインストール、インストールの競合の検出がそろいました。** v4.0.11 でアンインストールを追加したのに続き、このバージョンで残りの部分を補いました。ひとつのツールが複数の場所にインストールされている場合、「インストールを診断」がそれぞれを一覧表示し、コマンドラインで実際に使われる「既定」のものに印を付けます。アンインストール時にそのうちどれでも選べるようになったので、使いたいものを残し、競合を CC Switch の中で直接解消できます。アップグレードの前に Node のバージョンを照合し、インストールできない、またはインストールしても動かないアップグレードを提示しなくなりました。
|
||||
|
||||
**アンインストール時に、どのインストールをアンインストールするか選べるようになりました。** これまで確認ダイアログでは現在使われている 1 つしか選べませんでしたが、複数インストールしているユーザーがアンインストールしたいのは、別のほうであることがよくありました。また、インストールが複数あってどれが既定か判別できないと、アンインストールはそのまま失敗していました。現在は確認ダイアログに、検出したすべてのインストールをインストール元、パス、バージョン、「既定」の印とともに一覧表示します。アンインストールできるのが 1 つだけならそれを自動で選択し、2 つ以上あるときはあらかじめ選択しません。自動でアンインストールできないものは理由を表示し、選べないようにします。実行前に選んだパスでもう一度確認し、プレビューと一致しなければ実行しません。
|
||||
|
||||
- Grok Build 0.2.112 以降のインストール方法(`~/.grok/bin/grok-<version>`)に対応しました。これまでは「自動でアンインストールできません」と表示されていました。アンインストールではこのインストールのプログラムファイルをすべて削除しますが、削除するのはファイルだけでディレクトリは削除せず、`config.toml` とセッションは残ります。
|
||||
- 公式スクリプトでインストールしたツールをアンインストールするとき、同じプログラムを指す起動リンク(例:`~/.local/bin/grok`)も一緒に削除し、使えないコマンドが残らないようにしました。
|
||||
- 公式のインストールがあり、さらに `~/.grok/config.toml` で npm による更新を設定している場合、npm のほうは `grok update` によって再びインストールされます。確認ダイアログでこの点をお知らせします。
|
||||
- Windows で Hermes をアンインストールするとき、実行中の Python がロックされてファイルが残る可能性があることを確認ダイアログで案内します。アンインストールコマンドは成功したのに、その後の状態確認に失敗した場合は「アンインストールコマンドが完了しました。結果を確認してください」と表示するようになり、アンインストールの失敗と誤って表示することはなくなりました。
|
||||
|
||||
**アップグレード前に Node のバージョンを確認します。** OpenClaw 2026.9.3 以降は Node 24.16 以上が必要で、古い Node ではアップグレードが必ず失敗するのに、「アプリ」ページにはアップグレードボタンが表示されたままでした。独自のチェックを持たない npm パッケージはさらに厄介で、npm は警告を出すだけでインストールしてしまい、インストール後に動きません。現在は新しいバージョンを見つけると、まずそのバージョンが必要とする Node のバージョンを読み取り、そのインストールが実際に使っている Node と比較します。条件を満たさない場合、その行には先に Node をアップグレードする必要があると表示し、アップグレードボタンは表示せず、「すべて更新」でもスキップします。アップグレードの実行前にももう一度確認します。判別できないバージョン指定や確認の失敗でアップグレードを止めることはなく、ネイティブのプログラム・Homebrew・Bun のインストールと WSL 内のインストールはそもそも確認しません。
|
||||
|
||||
**「アプリ」ページの表示が整いました。** アンインストールは各行の赤いボタンから、行末の「…」メニューに移しました。ヘッダーと各行で同じ列幅を使うようにし、バージョン列がそろいました。バージョンの読み込み、更新の検出、更新の確認の間に、ヘッダーや各列が左右に動くこともなくなりました([#8293](https://github.com/farion1231/cc-switch/pull/8293))。非表示にしたアプリの説明をよりはっきり書き直しました。表示しないだけで、プロバイダーや MCP などの設定は残っており、そのアプリ自身の設定ファイルも変更されません。
|
||||
|
||||
**ローカル推論サービス:Ollama、LM Studio、llama.cpp、vLLM。** プロバイダーを追加するときの「クラウド事業者」の後ろに「ローカル」グループが加わりました。中身はこのマシンの推論サービスに接続するプリセットで、デフォルトのアドレスは各サービスの既定のポート(Ollama 11434、LM Studio 1234、llama.cpp 9931、vLLM 8000)です。llama.cpp の旧バージョン、Homebrew、Docker でよく使われる 8080 ポートは予備のアドレスとして入っています。これらのサービスはデフォルトでは Key を検証しないため、プリセットには各サービスのドキュメントで使われているプレースホルダーの値を入れています。使う前にサービスを起動し、モデルをダウンロードしておく必要があります。プリセットのデフォルトのモデルは手元にあるモデルに変更でき、「モデル一覧を取得」を押してサービスから読み込むこともできます。コンテキストウィンドウは、サービスを起動したときに設定した長さが基準になります。
|
||||
|
||||
- Claude Code と Codex はローカルサービスの Anthropic Messages と Responses のインターフェースに直接接続し、Claude Desktop はルーティング経由で接続します。OpenCode、OpenClaw、Hermes、Pi では、それぞれの組み込みプロバイダーの状況に応じて提供します(アプリに組み込まれているものは重複して追加しません)。
|
||||
- このマシンのアドレス(localhost、127.0.0.1 など)宛てのリクエストは、CC Switch で設定したプロキシやシステムプロキシを経由しなくなりました。これまではプロキシを設定していると、ルーティングの転送、速度テスト、モデル一覧の取得といったリクエストがプロキシに送られ、ローカルサービスに接続できませんでした。
|
||||
|
||||
**プリセット:** Ollama Cloud、Baseten、Meta Model API、DeepInfra、Vercel AI Gateway、Nebius Token Factory、Groq、SambaNova、DigitalOcean、Hugging Face、Microsoft Foundry、Fireworks AI、Mistral AI、Cloudflare AI Gateway を追加しました。OpenCode に SiliconFlow の中国版とグローバル版を追加しました([#4500](https://github.com/farion1231/cc-switch/issues/4500))。StreamLake に Codex のプリセットを追加し、すべての StreamLake プリセットを公開の KAT-Coder エンドポイントに切り替えたため、エンドポイント ID を自分で作成する必要はなくなりました。
|
||||
|
||||
## 改善
|
||||
|
||||
**セッションログのスキャン:バックグラウンドの負荷が減り、使用量ページへの反映が早くなりました。** これまでは必要かどうかにかかわらず、バックグラウンドで 60 秒ごとにセッションログをスキャンしていたため、CC Switch を長時間開いていると、その分のディスク読み込みと CPU を消費し続けていました。一方、使用量ページの「自動更新間隔」はデータベースを読み直すだけで、セッションの使用量は結局この 60 秒を待つ必要があり、5 秒を選んでも意味がありませんでした([#8301](https://github.com/farion1231/cc-switch/pull/8301))。現在、この設定は「セッションログのスキャン間隔」に名前が変わりました。使用量ページを開くとすぐに 1 回スキャンし、ウィンドウが再び表示されたときにももう 1 回スキャンし、その後は選んだ間隔(5、10、30、60 秒、デフォルト 60 秒)でスキャンします。バックグラウンドのスキャンは 10 分ごとになり、取りこぼしを防ぐためだけのものになったので、普段のバックグラウンドの消費は大きく減りました。「オフ」の選択肢はなくなり、「セッションログを自動スキャン」をオフにしているときはこの設定を表示しません。ルーティング経由の使用量はもともとリアルタイムで記録されているため、影響はありません。
|
||||
|
||||
**プロバイダーの検索ボックスが、カードを隠したり押し下げたりしなくなりました。** 検索ボックスはこれまでリストの上に浮かんで表示され、最初のカードの編集ボタンやその他の操作ボタンを隠していました([#8100](https://github.com/farion1231/cc-switch/issues/8100))。現在はカードのすぐ上の行の右端に置かれます。Claude Code、Codex、Gemini CLI、Grok Build ではモードの行、ほかのアプリでは「追加済み」の見出しの行です。検索を開いても、カードが隠れることも、下に押し下げられることもありません。
|
||||
|
||||
**インターフェースの言語。** コミュニティ翻訳によるトルコ語を追加しました。まだ翻訳されていない文言は英語で表示されます([#8208](https://github.com/farion1231/cc-switch/pull/8208))。初回起動時、システムの言語がインターフェースでサポートしていない言語(ドイツ語、フランス語、韓国語など)の場合、インターフェースとトレイは英語を使うようになり、デフォルトで簡体字中国語になることはなくなりました。すでに選んだ言語には影響しません。
|
||||
|
||||
## 修正
|
||||
|
||||
- **クラウド同期で Skills の復元に一度失敗すると、それ以降ずっと復元できなくなっていた問題**([#8153](https://github.com/farion1231/cc-switch/issues/8153))。Windows でクラウド同期のダウンロード中にファイルが使用中(os error 5)だと `skills.bak` が残り、その後は復元のたびにその処理で失敗していました。現在は復元時にクラウドの Skills を別のディレクトリにまるごとコピーしてから全体を置き換え、`skills.bak` を再利用しなくなりました。置き換えとロールバックの両方に失敗した場合は、元の完全なコピーを残し、その場所をエラーメッセージに示します。
|
||||
- **Claude Code がルーティング経由で OpenAI Responses のアップストリームに接続しているとき、応答が終わった後にエラーを受け取っていた問題**([#8138](https://github.com/farion1231/cc-switch/pull/8138))。アップストリームが終了イベントを送り終えてから接続を切ると、CC Switch は正常に終了した後にさらにストリームエラーを送っていたため、クライアントが完全な応答を失敗として扱うことがありました。現在は終了後の接続エラーは転送しません。
|
||||
- **MCP、プロンプト、料金の編集ページでサイドバーの現在のページをもう一度クリックすると、「未保存の変更があります」による保護が失われていた問題**([#7900](https://github.com/farion1231/cc-switch/pull/7900))。これまでは変更を破棄するかの確認が表示され、確認した後も編集ページは開いたままでしたが、その後ページを離れても警告が出なくなり、変更がそのまま失われていました。現在は現在のページをクリックしても何も起きません。
|
||||
- **アップストリームが空のエラー内容を返したとき、エラーメッセージの末尾にコロンだけが残っていた問題**([#6910](https://github.com/farion1231/cc-switch/pull/6910))。CC Switch がアップストリームの説明を握りつぶしたように見えていました。現在は「アップストリームからエラー内容が返されませんでした」と明記します。
|
||||
- **Pi のセッション履歴の速度が常に「—」と表示されていた問題**([#8278](https://github.com/farion1231/cc-switch/pull/8278))。Pi のセッションを取り込むとき、所要時間を常に 0 として記録していました。現在は各応答のリクエスト開始時刻と書き込み時刻から所要時間を推定し、条件を満たすレコードでは推定速度を表示できます。
|
||||
- **Pi の設定ディレクトリが WSL を指しているとき、書き込みのたびに WSL が対応していないシステムコールをまず試していた問題**([#8245](https://github.com/farion1231/cc-switch/issues/8245))。Skills の有効化や AGENTS.md の保存では、WSL のパスで使える書き込み方法を直接使うようになりました。自動モードでの Skills の同期はコピーになり、手動でシンボリックリンクを選んでいる場合は引き続きはっきりとエラーを表示します。
|
||||
- **Windows で自動更新による再起動後、OpenCode や Codex に組み込まれたモデル一覧を読み込むときに、まだツールが見つからないことがあった問題**([#8262](https://github.com/farion1231/cc-switch/pull/8262))。v4.0.11 でインストールとアップグレードを修正しましたが、今回は補った PATH をこの 2 か所でも使うようにしました。PATH 内の `%PNPM_HOME%` のような変数参照も、ユーザーとシステムの環境変数に従って展開します。
|
||||
|
||||
## アップグレードに関する注意
|
||||
|
||||
**データベースの構造は変わっていません。** バージョンは 20 のままです。
|
||||
|
||||
- 使用量ページを開いていないとき、バックグラウンドでのセッションログのスキャンは 10 分ごと(以前は 60 秒)になるため、ルーティングを経由しない使用量は統計に反映されるまで最大 10 分遅れます。使用量ページを開くとすぐにスキャンします。以前「オフ」を選んでいた場合は 60 秒になります。
|
||||
- Pi の速度の推定は、アップグレード後に新しく取り込んだレコードにだけ適用されます。取り込み済みのレコードは引き続き「—」と表示されます。
|
||||
- 新しいプリセットと StreamLake の変更は、新しく追加するプロバイダーにだけ影響します。追加済みの StreamLake プロバイダーは引き続き元のエンドポイント ID を使います。
|
||||
- Claude Desktop でローカルのプリセットを選ぶと、フォームの Key が空になるため、プレースホルダーの値を手動で入力してください。Ollama は `ollama`、LM Studio は `lmstudio`、llama.cpp は `no-key`、vLLM は `dummy` です。サービスの起動時に Key を設定した場合は、設定した値を入力してください。
|
||||
|
||||
---
|
||||
|
||||
## 謝辞
|
||||
|
||||
[@funkpopo](https://github.com/funkpopo)(使用量ページのセッションスキャン間隔、「アプリ」ページの列の整列、アンインストール時の通知と Windows の PATH のフォローアップ、Pi のセッション速度の推定)、[@xue-ding-e](https://github.com/xue-ding-e)(Skills の復元失敗、Responses の応答終了後のストリームエラー、検索ボックスがカードを隠す問題)、[@alkank](https://github.com/alkank)(トルコ語のインターフェースとトレイ)、[@AristurtleHu](https://github.com/AristurtleHu)(Pi の設定ディレクトリが WSL にあるときの書き込み)、[@Owlbay](https://github.com/Owlbay)(未保存の変更の保護)、[@loulanyue](https://github.com/loulanyue)(アップストリームの空のエラー内容)、[@xwil1](https://github.com/xwil1)(OpenCode の SiliconFlow プリセット)、[@Lingbou](https://github.com/Lingbou)(Windows CI のテストのタイムアウト)の貢献に感謝します。
|
||||
|
||||
問題の報告、再現情報や修正のアイデアの提供に協力してくださった [@HessianZ](https://github.com/HessianZ)、[@bubblevv](https://github.com/bubblevv)、[@JimMoen](https://github.com/JimMoen)、[@chufeng](https://github.com/chufeng)、[@Wikian233](https://github.com/Wikian233) に感謝します。
|
||||
|
||||
技術的な詳細は [CHANGELOG](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md) をご覧ください。
|
||||
@@ -0,0 +1,64 @@
|
||||
# CC Switch v4.0.12
|
||||
|
||||
本版本让「应用」页可以完整管理编程工具:安装、升级、卸载,以及检测安装冲突。同一个工具装了多处时,现在可以直接选择卸载多余的那一处,冲突在 CC Switch 里就能解决;升级前会先检查 Node 版本,新版本要求更高的 Node 时不再显示注定失败的升级按钮;Grok Build 新版的安装方式也能卸载了。另外新增「本地」分组,可以直接添加在本机运行的 Ollama、LM Studio、llama.cpp、vLLM,并新增 Ollama Cloud、Groq、Hugging Face、Vercel AI Gateway 等 14 家云平台的预设。会话日志的后台扫描从每 60 秒一次改为每 10 分钟一次,平时更省资源;打开用量页时按所选间隔扫描,新用量反而显示得更快。界面新增土耳其语(社区翻译);系统语言不在支持范围内时,首次启动改用英文。还修复了云同步恢复 Skills 失败一次后再也恢复不了、Claude Code 经路由连接 Responses 上游时回复结束后又报错等问题。4.0 完整的更新内容请见 [v4.0 发布说明](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.4-zh.md)。
|
||||
|
||||
---
|
||||
|
||||
## 新增
|
||||
|
||||
**「应用」页:安装、升级、卸载、检测安装冲突都齐了。** v4.0.11 加上卸载之后,这一版补齐了剩下的环节。一个工具装了多处时,「诊断安装冲突」会列出每一处,并标出命令行实际使用的「默认」那处;现在卸载时可以选择其中任意一处,留下想用的那份,冲突直接在 CC Switch 里解决。升级前会先核对 Node 版本,不再给出装不上、或者装完跑不起来的升级。
|
||||
|
||||
**卸载时可以选择卸载哪一处安装。** 以前确认框只提供当前使用的那一处,而装了多处的用户往往想卸载的是另一处;有多处安装又认不出哪处是默认时,卸载会直接失败。现在确认框会列出检测到的每一处安装,带来源、路径、版本和「默认」标记:只有一处能卸载时自动选中,有两处以上时不预选,不能自动卸载的显示原因并禁用。执行前按你选的路径重新核对一遍,和预览不一致就不执行。
|
||||
|
||||
- 支持 Grok Build 0.2.112 起的安装方式(`~/.grok/bin/grok-<version>`),以前会提示「无法自动卸载」。卸载会删除这套安装的全部程序文件,只删文件不删目录,`config.toml` 和会话保留。
|
||||
- 卸载官方脚本装的工具时,指向同一程序的启动链接(例如 `~/.local/bin/grok`)会一起删除,不再留下失效的命令。
|
||||
- 已有官方安装、又在 `~/.grok/config.toml` 里设置用 npm 更新时,npm 那一份会被 `grok update` 装回来,确认框会提示这一点。
|
||||
- Windows 上卸载 Hermes 时,确认框会提示正在运行的 Python 可能被锁定而留下文件;卸载命令成功但随后的状态检查失败时,改为提示「卸载命令已完成,请检查结果」,不再误报卸载失败。
|
||||
|
||||
**升级前检查 Node 版本。** OpenClaw 2026.9.3 起要求 Node 24.16 以上,旧版 Node 上升级必然失败,「应用」页却一直显示升级按钮;没有自带检查的 npm 包更糟,npm 只警告一声就装上,装完运行不了。现在发现新版本时会先读取它要求的 Node 版本,和这处安装实际使用的 Node 比较。不满足时这一行写明需要先升级 Node,不显示升级按钮,「全部升级」也会跳过它;执行升级前还会再查一次。认不出的版本写法、查询失败都不会挡住升级;原生程序、Homebrew、Bun 安装和 WSL 里的安装不做这项检查。
|
||||
|
||||
**「应用」页更整齐。** 卸载从每行的红色按钮移进行尾的「…」菜单。表头和各行共用同一套列宽,版本列对齐了;读取版本、发现更新、检查更新期间,表头和各列不再左右跳动([#8293](https://github.com/farion1231/cc-switch/pull/8293))。隐藏应用的说明改写得更明确:只是不显示,供应商、MCP 等配置都还在,它自己的配置文件也不会被改动。
|
||||
|
||||
**本地推理服务:Ollama、LM Studio、llama.cpp、vLLM。** 添加供应商时多了一个「本地」分组,放在「云服务商」之后,里面是连接本机推理服务的预设,默认地址就是各服务的默认端口(Ollama 11434、LM Studio 1234、llama.cpp 9931、vLLM 8000),llama.cpp 旧版、Homebrew 和 Docker 常用的 8080 端口作为备选地址。这些服务默认不校验 Key,预设里填的是各家文档用的占位值。使用前要先启动服务、下载模型,预设里的默认模型可以换成你本地已有的,也可以点「获取模型列表」从服务读取;上下文窗口以启动服务时设定的长度为准。
|
||||
|
||||
- Claude Code、Codex 直接连本地服务的 Anthropic Messages 和 Responses 接口,Claude Desktop 经路由连接;OpenCode、OpenClaw、Hermes、Pi 按各自已有的内置供应商情况提供(应用自带了的就不重复添加)。
|
||||
- 发往本机地址(localhost、127.0.0.1 等)的请求不再走 CC Switch 设置的代理或系统代理。以前设置了代理时,路由转发、测速、获取模型这些请求会被送进代理,连不上本地服务。
|
||||
|
||||
**预设:** 新增 Ollama Cloud、Baseten、Meta Model API、DeepInfra、Vercel AI Gateway、Nebius Token Factory、Groq、SambaNova、DigitalOcean、Hugging Face、Microsoft Foundry、Fireworks AI、Mistral AI、Cloudflare AI Gateway;OpenCode 新增硅基流动国内站和国际站([#4500](https://github.com/farion1231/cc-switch/issues/4500));StreamLake 新增 Codex 预设,所有 StreamLake 预设改用公开的 KAT-Coder 接入点,不用再自己创建接入点 ID。
|
||||
|
||||
## 改进
|
||||
|
||||
**会话日志扫描:后台更省资源,用量页更及时。** 以前不管用不用得上,后台都每 60 秒把会话日志扫一遍,长时间开着 CC Switch 时,这部分读盘和 CPU 一直在消耗;而用量页的「自动刷新间隔」只是重新查一遍数据库,会话用量仍然要等这 60 秒,选 5 秒也没用([#8301](https://github.com/farion1231/cc-switch/pull/8301))。现在这个设置改名为「会话日志扫描间隔」:打开用量页时立即扫描一次,窗口重新显示时再扫一次,之后按所选间隔(5、10、30、60 秒,默认 60 秒)扫描;后台扫描改为每 10 分钟一次,只作兜底,平时的后台消耗明显减少。「关闭」选项去掉了,关闭「自动扫描会话日志」时不显示这个设置。经路由的用量本来就是实时记录的,不受影响。
|
||||
|
||||
**供应商搜索框不再遮挡或推开卡片。** 搜索框以前浮在列表上方,会挡住第一张卡片的编辑和更多操作按钮([#8100](https://github.com/farion1231/cc-switch/issues/8100))。现在它放在卡片上方那一行的最右端:Claude Code、Codex、Gemini CLI、Grok Build 放在模式那一行,其他应用放在「已添加」标题那一行。打开搜索时卡片既不被挡住,也不会被往下推。
|
||||
|
||||
**界面语言。** 新增土耳其语,由社区翻译,还没翻译的文字显示英文([#8208](https://github.com/farion1231/cc-switch/pull/8208))。首次启动时,如果系统语言是界面不支持的语言(德语、法语、韩语等),界面和托盘改用英文,不再默认简体中文;已经选过的语言不受影响。
|
||||
|
||||
## 修复
|
||||
|
||||
- **云同步恢复 Skills 失败一次之后,再也恢复不了**([#8153](https://github.com/farion1231/cc-switch/issues/8153))。Windows 上下载云同步时如果遇到文件被占用(os error 5),会留下 `skills.bak`,之后每次恢复都在处理它时失败。现在恢复时把云端的 Skills 完整复制到单独的目录再整体替换,不再复用 `skills.bak`;替换和回滚都失败时保留原来的完整副本,并在报错里给出它的位置。
|
||||
- **Claude Code 经路由连接 OpenAI Responses 上游时,回复已经结束又收到一条错误**([#8138](https://github.com/farion1231/cc-switch/pull/8138))。上游在发完结束事件后才断开连接时,CC Switch 会在正常结束之后再补发一个流错误,客户端可能把完整的回复当成失败。现在结束之后的连接错误不再转发。
|
||||
- **在 MCP、提示词、定价编辑页再次点击侧栏的当前页面,会丢掉「有未保存的修改」的保护**([#7900](https://github.com/farion1231/cc-switch/pull/7900))。以前会弹出放弃更改的确认,确认后编辑页还开着,但之后离开页面就不再提醒,改动直接丢失。现在点击当前页面什么也不做。
|
||||
- **上游返回空错误内容时,错误信息结尾是一个孤零零的冒号**([#6910](https://github.com/farion1231/cc-switch/pull/6910)),看起来像 CC Switch 吞掉了上游的说明。现在会写明「上游未返回错误内容」。
|
||||
- **Pi 会话历史的速度一直显示「—」**([#8278](https://github.com/farion1231/cc-switch/pull/8278))。Pi 会话导入时耗时固定记成 0,现在按每条回复的请求开始时间和写入时间估算耗时,符合条件的记录能显示估算速度。
|
||||
- **Pi 配置目录指向 WSL 时,每次写入都先尝试 WSL 不支持的系统调用**([#8245](https://github.com/farion1231/cc-switch/issues/8245))。启用 Skills、保存 AGENTS.md 时,现在直接使用在 WSL 路径上可用的写法;自动模式下同步 Skills 改为复制,手动选了软链接的仍会明确报错。
|
||||
- **Windows 上自动更新重启后,读取 OpenCode、Codex 自带的模型列表时仍可能找不到工具**([#8262](https://github.com/farion1231/cc-switch/pull/8262))。v4.0.11 修好了安装和升级,这次把补全后的 PATH 也用到这两处;PATH 里 `%PNPM_HOME%` 这样的变量引用也会按用户和系统环境变量展开。
|
||||
|
||||
## 升级说明
|
||||
|
||||
**数据库结构没有变化**,仍然是 20。
|
||||
|
||||
- 没打开用量页时,后台每 10 分钟扫描一次会话日志(以前是 60 秒),所以不经路由的用量最多晚 10 分钟进入统计;打开用量页会立即扫描。以前选了「关闭」的,改为 60 秒。
|
||||
- Pi 的速度估算只对升级后新导入的记录生效,已经导入的记录仍显示「—」。
|
||||
- 新预设和 StreamLake 的改动只影响新添加的供应商,已添加的 StreamLake 供应商仍使用原来的接入点 ID。
|
||||
- Claude Desktop 选择本地预设时,表单会清空 Key,需要手动填上占位值:Ollama 填 `ollama`,LM Studio 填 `lmstudio`,llama.cpp 填 `no-key`,vLLM 填 `dummy`;启动服务时设了 Key 的,填你设的值。
|
||||
|
||||
---
|
||||
|
||||
## 致谢
|
||||
|
||||
感谢 [@funkpopo](https://github.com/funkpopo)(用量页会话扫描间隔、「应用」页列对齐、卸载反馈与 Windows PATH 跟进、Pi 会话速度估算)、[@xue-ding-e](https://github.com/xue-ding-e)(Skills 恢复失败、Responses 回复结束后的流错误、搜索框遮挡卡片)、[@alkank](https://github.com/alkank)(土耳其语界面与托盘)、[@AristurtleHu](https://github.com/AristurtleHu)(Pi 配置目录在 WSL 时的写入)、[@Owlbay](https://github.com/Owlbay)(未保存更改保护)、[@loulanyue](https://github.com/loulanyue)(上游空错误内容)、[@xwil1](https://github.com/xwil1)(OpenCode 硅基流动预设)、[@Lingbou](https://github.com/Lingbou)(Windows CI 测试超时)的贡献。
|
||||
|
||||
感谢 [@HessianZ](https://github.com/HessianZ)、[@bubblevv](https://github.com/bubblevv)、[@JimMoen](https://github.com/JimMoen)、[@chufeng](https://github.com/chufeng)、[@Wikian233](https://github.com/Wikian233) 报告问题、提供复现信息和修复思路。
|
||||
|
||||
完整的技术细节请见 [CHANGELOG](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md)。
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"version": "4.0.12",
|
||||
"items": [
|
||||
{
|
||||
"type": "new",
|
||||
"zh": "「应用」页可完整安装、升级、卸载,装了多处时可选卸载哪一处",
|
||||
"zh-TW": "「應用」頁可完整安裝、升級、解除安裝,裝了多處時可選解除安裝哪一處",
|
||||
"en": "The Apps page now covers install, update and uninstall, and lets you pick which duplicate to remove",
|
||||
"ja": "「アプリ」ページでインストール・更新・アンインストールが完結、重複インストールは削除先を選択可能に"
|
||||
},
|
||||
{
|
||||
"type": "new",
|
||||
"zh": "新增「本地」分组:Ollama、LM Studio、llama.cpp、vLLM",
|
||||
"zh-TW": "新增「本機」分組:Ollama、LM Studio、llama.cpp、vLLM",
|
||||
"en": "New Local group for Ollama, LM Studio, llama.cpp and vLLM running on your computer",
|
||||
"ja": "新しい「ローカル」グループ:Ollama、LM Studio、llama.cpp、vLLM"
|
||||
},
|
||||
{
|
||||
"type": "improve",
|
||||
"zh": "升级前检查 Node 版本,不再给出注定失败的升级",
|
||||
"zh-TW": "升級前檢查 Node 版本,不再提供注定失敗的升級",
|
||||
"en": "Updates check the required Node version first, so ones that cannot succeed are no longer offered",
|
||||
"ja": "更新前に Node のバージョンを確認し、失敗する更新を表示しないように"
|
||||
},
|
||||
{
|
||||
"type": "improve",
|
||||
"zh": "后台扫描会话日志改为 10 分钟一次,更省资源;用量页按所选间隔扫描",
|
||||
"zh-TW": "背景掃描工作階段日誌改為 10 分鐘一次,更省資源;用量頁按所選間隔掃描",
|
||||
"en": "Less background load: logs are scanned every 10 minutes, or at your set interval on the usage page",
|
||||
"ja": "バックグラウンドのセッションログ読み込みを10分ごとにして負荷を軽減、使用量ページでは選んだ間隔で"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user