# CC Switch v3.8.0

> 永続化アーキテクチャを刷新し、クラウド同期の土台を構築

**[English →](v3.8.0-en.md) | [中文版 →](v3.8.0-zh.md)**

---

## 概要

CC Switch v3.8.0 はデータ永続化レイヤーと UI を大幅に作り替え、今後のクラウド同期やローカルプロキシ機能に向けた基盤を整えたメジャーアップデートです。

**リリース日**: 2025-11-28  
**コミット数**: v3.7.1 以降 51 commits  
**変更量**: 207 files, +17,297 / -6,870 lines

---

## 主要アップデート

### 永続化アーキテクチャの刷新

単一の JSON 保存から、階層化された SQLite + JSON の二層構造へ移行。

**アーキテクチャ変更**:

```
v3.7.x (旧)                       v3.8.0 (新)
┌─────────────────┐              ┌─────────────────────────────────┐
│  config.json    │              │  SQLite (同期対象データ)         │
│  ┌───────────┐  │              │  ├─ providers     プロバイダ設定 │
│  │ providers │  │              │  ├─ mcp_servers   MCP サーバー   │
│  │ mcp       │  │     ──>      │  ├─ prompts       プロンプト     │
│  │ prompts   │  │              │  ├─ skills        Skills         │
│  │ settings  │  │              │  └─ settings      汎用設定       │
│  └───────────┘  │              ├─────────────────────────────────┤
└─────────────────┘              │  JSON (デバイス固有データ)        │
                                 │  └─ settings.json ローカル設定    │
                                 │     ├─ ウィンドウ位置            │
                                 │     ├─ パスの上書き              │
                                 │     └─ 現在のプロバイダ ID        │
                                 └─────────────────────────────────┘
```

**二層構造の設計**:

| レイヤー | ストレージ | データ種別                          | 同期戦略         |
| -------- | ---------- | ----------------------------------- | ---------------- |
| クラウド | SQLite     | Providers, MCP, Prompts, Skills     | 将来同期対象     |
| デバイス | JSON       | ウィンドウ状態、ローカルパス         | ローカル保持     |

**実装ポイント**:

- **スキーマバージョン管理**: DB 構造のマイグレーションに対応
- **SQL インポート/エクスポート**: `backup.rs` が SQL ダンプをサポート
- **トランザクション対応**: SQLite ネイティブで整合性を確保
- **自動マイグレーション**: 初回起動で `config.json` から自動移行

**モジュール分割**:

```
database/
├── mod.rs              Database 構造体と初期化
├── schema.rs           テーブル定義とスキーマ移行
├── backup.rs           SQL インポート/エクスポートとスナップショット
├── migration.rs        JSON → SQLite 変換エンジン
└── dao/                DAO レイヤー
    ├── providers.rs    プロバイダ CRUD
    ├── mcp.rs          MCP CRUD
    ├── prompts.rs      プロンプト CRUD
    ├── skills.rs       Skills CRUD
    └── settings.rs     設定 Key-Value 保存
```

---

### 新しいユーザーインターフェース

よりモダンな見た目と操作感に再設計。

- レイアウト全面刷新、コンポーネントスタイルを統一
- トランジションを滑らかにし、視覚的階層を最適化
- メインビューのオーバースクロールバウンスを無効化
- ブラウザ互換性向上のため Tailwind CSS を v4→v3.4 にダウングレード

---

### 日語化

UI が日本語に対応し、国際化が 3 言語（中/英/日）へ拡大。

---

## 新機能

### Skills 递帰スキャン

Skills 管理がリポジトリを再帰的に走査し、ネストされた `SKILL.md` を自動検出。

- 複数階層のディレクトリに対応
- すべての `SKILL.md` を自動発見
- パスをキーにした重複排除で同名スキルを許容

### プロバイダアイコン設定

プリセットがデフォルトアイコンを持ち、複製してもアイコンを保持。カスタム色も設定可能。

### フォームバリデーション強化

必須項目にリアルタイム検証と分かりやすいエラーメッセージを追加し、トースト通知を統一。

### 自動起動

Windows/macOS/Linux で自動起動をサポート。

- 設定画面からワンクリックで ON/OFF
- Registry / LaunchAgent / XDG autostart を使用

### 新プロバイダプリセット

- **MiniMax** - 公式パートナー

---

## バグ修正

### 重要修正

**カスタムエンドポイント消失**

- 原因: SQLite の `INSERT OR REPLACE` が内部で `DELETE + INSERT` を実行し、外部キーのカスケード削除が発生
- 対応: 既存プロバイダ更新を `UPDATE` に変更

**Gemini 設定**

- カスタム環境変数が `.env` に正しく書き込まれない問題を修正
- 認証設定が他ファイルに誤って書き込まれる問題を修正

**プロバイダ検証**

- 現在プロバイダ ID が欠落している場合のバリデーションエラーを修正
- 複製時にアイコンフィールドが失われる問題を修正

### プラットフォーム互換性

**Linux**

- WebKitGTK の DMA-BUF 描画問題を解消
- ユーザーの `.desktop` カスタマイズを保持

### その他修正

- アプリ切り替え時の不要な使用量クエリを削減
- DMXAPI プリセットの誤ったトークンフィールドを修正
- Deeplink コンポーネントの欠損翻訳キーを補完
- 使用量スクリプトテンプレート初期化を修正

---

## 技術的改善

### アーキテクチャ再編

**Provider Service のモジュール化**:

```
services/provider/
├── mod.rs          追加/更新/削除/切替/検証の中核
├── live.rs         ライブ設定ファイル操作
├── gemini_auth.rs  Gemini 認証タイプ検出
├── endpoints.rs    カスタムエンドポイント管理
└── usage.rs        使用量スクリプト実行
```

**Deeplink のモジュール化**:

```
deeplink/
├── mod.rs       エクスポート
├── parser.rs    URL パース
├── provider.rs  プロバイダ取り込み
├── mcp.rs       MCP 取り込み
├── prompt.rs    プロンプト取り込み
├── skill.rs     Skills 取り込み
└── utils.rs     ユーティリティ
```

### コード品質

- レガシーな JSON 時代のインポート/エクスポート死蔵コードを削除
- 使われていない MCP 型を削除し、エラーハンドリングを統一
- テストを SQLite バックエンドに移行し、MSW ハンドラを最新 API に合わせて更新

---

## 技術統計

```
全体変更:
- コミット: 51
- 変更ファイル: 207
- 追加: +17,297 行
- 削除: -6,870 行
- 純増: +10,427 行

コミット種別:
- fix: 25
- refactor: 11
- feat: 9
- test: 1
- other: 5

変更箇所:
- フロントエンド: 112 files
- Rust バックエンド: 63 files
- テスト: 20 files
- i18n: 3 files
```

---

## マイグレーションガイド

### v3.7.x からのアップグレード

**自動マイグレーション**（初回起動時）:

1. `config.json` の存在を検出
2. 全データをトランザクションで SQLite に移行
3. デバイス設定を `settings.json` へ移行
4. 移行成功の通知を表示

**データ保護**:

- 元の `config.json` は保持（削除しない）
- 失敗時はエラーダイアログを表示し、`config.json` を温存
- Dry-run モードで検証可能

---

## ダウンロード & インストール

### システム要件

- **Windows**: Windows 10+
- **macOS**: macOS 10.15 (Catalina)+
- **Linux**: Ubuntu 22.04+ / Debian 11+ / Fedora 34+

### ダウンロード

[Releases](https://github.com/farion1231/cc-switch/releases/latest) から入手:

- **Windows**: `CC-Switch-v3.8.0-Windows.msi` または `-Portable.zip`
- **macOS**: `CC-Switch-v3.8.0-macOS.tar.gz` または `.zip`
- **Linux**: `CC-Switch-v3.8.0-Linux.AppImage` または `.deb`

### Homebrew (macOS)

```bash
brew tap farion1231/ccswitch
brew install --cask cc-switch
```

アップデート:

```bash
brew upgrade --cask cc-switch
```

---

## 謝辞

### コントリビューター

- [@YoVinchen](https://github.com/YoVinchen) - UI とデータベースリファクタ
- [@farion1231](https://github.com/farion1231) - バグ修正と機能拡張
- コミュニティの皆さん - テストとフィードバック

### スポンサー

**Zhipu AI** - GLM CODING PLAN スポンサー  
[10% オフリンク](https://z.ai/subscribe?ic=8JVLJQFSKB)

**PackyCode** - API リレーサービスパートナー  
[登録時に「cc-switch」で 10% オフ](https://www.packyapi.com/register?aff=cc-switch)

**ShandianShuo** - ローカルファースト音声入力  
[Mac/Windows 無料ダウンロード](https://shandianshuo.cn)

**MiniMax** - MiniMax M2 CODING PLAN スポンサー  
[ブラックフライデーセール中、$2 から](https://platform.minimax.io/subscribe/coding-plan)

---

## フィードバック & サポート

- **Issue**: [GitHub Issues](https://github.com/farion1231/cc-switch/issues)
- **Discussions**: [GitHub Discussions](https://github.com/farion1231/cc-switch/discussions)
- **ドキュメント**: [README](../README.md)
- **更新履歴**: [CHANGELOG.md](../CHANGELOG.md)

---

## 今後のロードマップ

**v3.9.0 予告（予定）**:

- ローカルプロキシ機能

続報にご期待ください！

---

**Happy Coding!**
