18 KiB
CC Switch v4.0.15
今回のリリースは修正が中心です。Windows でアップデートのたびに、非表示にしたアプリや設定ディレクトリの上書きなどの設定がデフォルトに戻ってしまう問題を修正しました。Codex を更新するとき、--version の応答が遅いだけで正常な Codex がアンインストールされることはなくなりました。macOS のアプリアイコンは白い角丸の四角になり、macOS 26 で灰色の背景タイルに入れられることはなくなりました。ルーティング経由のリクエストで Claude Code のセッションを再び認識できるようになり、Codex OAuth 経由のキャッシュキーと、Claude Desktop が Gemini に接続するときの署名の送り返しが正常に戻りました。Codex の履歴に壊れたツール呼び出しが 1 件あっても毎ターンエラーになることはなくなり、DeepSeek が送り返したツール履歴を拒否することもなくなりました。ほかにも、WebDAV/S3 の低速な転送が 300 秒で打ち切られる問題、Windows で「ターミナルを開く」が claude を見つけられない問題、WSL 内の Hermes のセッションを読み込めない問題、ルーティング中の切り替えで毎回再起動を求められる問題などを修正しました。新機能として、使用量の推移グラフを棒グラフと面グラフで切り替えられるようになり、Hermes ではモデルごとに画像入力への対応を宣言できるようになりました。Claude Desktop のフォームでも、Copilot などのマネージドログインのプロバイダーのモデル一覧を取得できます。4.0 の更新内容の全体は v4.0 リリースノート をご覧ください。
新機能
使用量の推移グラフを棒グラフと面グラフから選べるようになりました(#8406)。使用量ページの「設定」タブの「表示」セクションにある「トレンドグラフの種類」で、棒グラフ(デフォルト)か面グラフを選べます。どちらの種類でも、指標、軸、ホバー時のツールチップ、通貨の換算は同じです。「表示」セクションの各設定も揃った 2 列に並べ直し、為替レートは通貨の下に独立した行として置きました。
Hermes でモデルごとに画像入力への対応を宣言できるようになりました(#8464)。Hermes はモデルごとの supports_vision で画像を扱えるかどうかを判断し、これが書かれていない未知のモデルはテキスト専用として扱われ、画像はテキストに変換されてしまいます。これまではフォームに設定する場所がなく、手で書いた値も保存すると消えていました。現在はモデルの詳細を展開すると「画像入力に対応」スイッチがあります。オンにすると supports_vision: true を書き込み、オフにするとこのキーを削除して Hermes 自身の判断に任せます。モデル一覧から画像に対応していることがわかっているモデルを選ぶと、自動でオンになります。
Claude Desktop でマネージドログインのプロバイダーのモデル一覧を取得できるようになりました(#8426)。GitHub Copilot、Codex OAuth、xAI OAuth のようなプロバイダーには、これまで Desktop のフォームに「モデル一覧を取得」ボタンがありませんでしたが、現在は表示され、ログインしているアカウントに応じて取得します。まだログインしていない場合は、先にログインを促します。プロバイダーの種類やアカウントを変えると一覧をクリアして取得し直すので、別のアカウントのモデルが混ざることはありません。
改善
ルーティング中にプロバイダーを切り替えたとき、実際に何をしたかをメッセージで伝えるようになりました(#8347)。これまでルーティングモードで切り替えると、Codex、Gemini CLI、Grok Build では必ずクライアントの再起動を求められていました。現在はプロバイダーを記憶しただけなのか、ルーティング先を変えたのか、ルーティングを切り替えたのか、集約のデフォルトプロバイダーを変えたのかを説明し、クライアントの設定ファイルを実際に書き換えた場合にだけ再起動を求めます。
サイドバーの「今日」に「今日」の接頭辞が付かなくなりました。 1 つだけ選んでいる場合も 2 つ選んだときと同じく値だけを表示し、詳しい説明はホバー時のツールチップに表示されます。
Claude Code の使用量のインポートが速くなりました(#8224)。1 回のインポートの中では、一度調べたモデルの料金を使い回し、レコードごとに毎回調べ直すことはなくなりました。料金を変更した場合は、次回のインポートから反映されます。
トルコ語:アンインストールとプランの利用枠に関する新しい文言を翻訳しました(#8291)。
プリセット: EveryAPI、AllTokens を追加しました。
修正
- Windows でアップデートのたびに、非表示にしたアプリや設定ディレクトリの上書きなどの設定がデフォルトに戻っていた問題(#8429)。これまでは
settings.jsonを直接上書きしていたため、一部の環境では新しい内容が短くなったときに古い内容の末尾が切り捨てられずに残り、次回起動時にファイル全体の解析に失敗していました。さらに読み込みに失敗すると黙ってデフォルト値を使い、アップデート後に表示される更新内容のダイアログが保存した時点で、そのデフォルト値が書き戻されていました。現在は一時ファイルに書き込んでから置き換えます。読み込み時には BOM を取り除き、末尾に余分なデータがある場合は最初の JSON だけを読み、解析できないフィールドだけを捨てて残りはそのまま保持します。完全に読み込めなかったファイルは先にsettings.json.broken-<time>.bakとしてバックアップし、バックアップが成功するまでは保存しません。 - Codex を更新するとき、
--versionの応答が遅いだけで正常な Codex がアンインストールされていた問題。 これまでは更新前のチェックで--versionがタイムアウトしたり起動に失敗したりすると、いったんアンインストールしてから再インストールしており、再インストールに失敗すると Codex が未インストールと表示されていました。現在はこの修復を行うのは--versionが実際に実行されてエラーを返した場合だけで、それ以外は通常どおりアップグレードします。 - macOS 26 でアプリアイコンが灰色の背景タイルに入れられ、小さく表示されていた問題(#8401)。macOS のアプリアイコンは白い角丸の四角を含むようになり、macOS 26 と 15 で同じ見た目になりました。Windows と Linux のアイコンは変わりません。
- ルーティング経由のリクエストで Claude Code のセッションを認識できなかった問題(#8235、#8234、#8418)。新しい Claude Code はセッション ID を JSON にして
metadata.user_idに入れていますが、ルーティングはこれを解析できず、同じ会話のリクエストが毎回新しいセッションとして扱われていました。Claude Desktop のリクエストではセッションのヘッダーも読んでいませんでした。その結果、Codex OAuth 経由では安定したキャッシュキーが得られず、Claude Desktop がルーティング経由で Gemini に接続するとツール呼び出しでエラーになっていました。現在は両方の形式を認識し、Claude Desktop でもセッションのヘッダーを読みます。 - Codex の履歴に引数が壊れたツール呼び出しが 1 件あると、それ以降のターンが毎回 Chat のアップストリームに拒否されていた問題(#5197)。たとえば出力が途中で切れて、引数が完全な JSON になっていない場合です。現在は変換時にこの呼び出しを通常のテキストに書き換え、正常な履歴は 1 バイトも変えません。
- Codex がルーティング経由で DeepSeek に接続すると、たびたび 400 になっていた問題(#8331)。ツール履歴を送り返すとき、ツール呼び出しとその結果の間にある空のメッセージ、進捗のテキスト、思考の内容が独立したメッセージに分かれてしまい、DeepSeek はこれを受け付けませんでした。現在は DeepSeek のモデルに限って、これらをツール呼び出しのメッセージにまとめ直します。ほかのアップストリームには影響しません。
- Codex の集約モードで
x-codex-beta-featuresリクエストヘッダーが取り除かれていた問題(#8435)。一部のネイティブ Responses のゲートウェイはこのヘッダーを必要とします。現在はネイティブ Responses のアップストリームに送るときはこのヘッダーを残し、ID に関わるリクエストヘッダーは引き続き取り除きます。 - Claude Desktop のネイティブプロバイダーでモデルマッピングを設定しようとすると、堂々巡りになっていた問題(#8441)。マッピングを保存するには先にルーティングを有効にする必要があり、ルーティングを有効にするにはマッピングが必要でした。現在はモデル一覧を入力していないネイティブプロバイダーでも先にルーティングに入れるので、同じカードでマッピングを保存できます。
- WebDAV / S3 の同期で、低速な転送が 300 秒で打ち切られていた問題(#8428)。低速なネットワークでは、転送に 300 秒以上かかる大きな Skills のアーカイブが失敗していました。現在は全体のタイムアウトをファイルサイズに応じて延ばし、ダウンロードには別に 120 秒のデータ無受信タイムアウトを設けたので、接続が本当に止まった場合は引き続き速やかにエラーになります。
- Windows でカードの「ターミナルを開く」を押すと「'claude' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」になっていた問題(#8446)。アプリ内アップデートで自動的に再起動した後や、CC Switch を起動した後に CLI をインストールした場合は、プロセスにユーザーレベルの PATH が欠けており、ターミナルがそれを引き継いでいました。現在は開くターミナルにユーザーとシステムの完全な PATH を渡します。
- Windows で WSL 内の Hermes のセッションを読み込めなかった問題(#8205)。Hermes のデータが WSL 内にある場合は、該当するディストリビューションの中でデータベースを読み取り専用で読むようにしました。ディストリビューションに
python3(3.7 以降)が必要です。ほかのパスには影響しません。 - フェイルオーバーの後も、「転送中」の表示が元のプロバイダーに残っていた問題(#7998)。
- Pi のサブエージェントの使用量が計上されない、または unknown として記録されていた問題(#8298)。現在はサブエージェントごとのセッションファイルからインポートし、実際のモデルとプロバイダーを記録します。このバージョンへのアップグレード後、最初のインポートから集計し、それ以前の分はさかのぼって計算しません。
- プロバイダーをドラッグして並べ替えるとき、カードが引き伸ばされたり互いに重なったりしていた問題(#8283)。
- Skills のダウンロードに失敗したとき、本当の原因が「リポジトリまたはブランチが見つかりません。URL を確認してください」に隠れていた問題。 これまでは設定したブランチで失敗すると main、master の順に試し、最後に master の 404 が報告されていました。現在は 404 の場合にだけブランチを切り替え、タイムアウト、アーカイブのサイズ超過、展開の失敗はそれぞれの原因でエラーを報告します。
- DeepSeek で、ある通貨のウォレットに残高があるのに、別の通貨のウォレットが 0 だと「残高なし」と表示されていた問題(#8170)。現在は残高のあるウォレットが 1 つでもあれば空のウォレットは表示せず、起動のたびにカードの利用枠パネルが自動で開くこともなくなりました。
- ウィンドウの高さが低いとき、Codex のモデル一覧の思考レベルのポップアップの下半分が切れていた問題(#8094)。現在はポップアップがウィンドウからはみ出さず、収まらない場合は一覧がポップアップ内でスクロールし、「デフォルトレベル」は常に表示されます。
アップグレードに関する注意
データベースの構造は変わっていません。 バージョンは 20 のままです。
- Windows で、すでに末尾に余分なデータが付いている
settings.jsonは初回起動時に復元され、元のファイルはsettings.json.broken-<time>.bakとして残ります。以前のアップデートですでにリセットされてしまった設定は元に戻せません。 - Pi のサブエージェントの使用量は、アップグレード後の最初のインポートから集計し、それ以前の記録はそのまま残ります。
- Windows で WSL 内の Hermes のセッションを読み込むには、ディストリビューションに
python3(3.7 以降)がインストールされている必要があります。
謝辞
@Foodie05(Claude Code のセッション認識)、@MonsterXia(Codex の壊れたツール呼び出しの履歴)、@funkpopo(DeepSeek のツール履歴、推移グラフの種類、ドラッグでの並べ替え)、@JfanLiu(集約モードの beta リクエストヘッダー)、@ix-prism(Claude Desktop のマッピングの堂々巡り)、@Dante-dan(WSL 内の Hermes のセッション)、@SmileMachine(ルーティング中の切り替えメッセージ)、@Chaoqi31(Pi のサブエージェントの使用量)、@Carl723000(使用量インポートの高速化)、@alkank(トルコ語)、@NestorRay(パネルの遷移の後片付け)の貢献に感謝します。
問題の報告、再現情報や修正のアイデアの提供に協力してくださった @wangding0610、@DiYi1999、@CaiSre、@vincerise、@qiangyidian、@zhouys0725、@qianlongwuyong-zxl、@ElijahHong、@wx2cyj、@rvwmng9rvk-crypto、@luckday888、@ramonmi、@quntaoli、@LwTen2019、@CYRickyArAr、@edwardchenchen、@ximigoo に感謝します。
技術的な詳細は CHANGELOG をご覧ください。