diff --git a/CHANGELOG.md b/CHANGELOG.md index 5072f0c6b..f5a820909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,46 @@ 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). +## [3.8.0] - 2025-11-28 + +### Major Updates + +- **Persistence architecture upgrade** - Moved from single JSON storage to SQLite + JSON dual-layer; added schema versioning, transactions, and SQL import/export; first launch auto-migrates `config.json` to SQLite while keeping originals safe. +- **Brand new UI** - Full layout redesign, unified component/ConfirmDialog styles, smoother animations, overscroll disabled; Tailwind CSS downgraded to v3.4 for compatibility. +- **Japanese language support** - UI now localized in Chinese/English/Japanese. + +### Added + +- **Skills recursive scanning** - Discovers nested `SKILL.md` files across multi-level directories; same-name skills allowed by full-path dedup. +- **Provider icons** - Presets ship with default icons; custom icon colors; icons retained when duplicating providers. +- **Auto launch on startup** - One-click enable/disable using Registry/LaunchAgent/XDG autostart. +- **Provider preset** - Added MiniMax partner preset. +- **Form validation** - Required fields get real-time validation and unified toast messaging. + +### Fixed + +- **Custom endpoints loss** - Switched provider updates to `UPDATE` to avoid cascade deletes from `INSERT OR REPLACE`. +- **Gemini config writing** - Correctly writes custom env vars to `.env` and keeps auth configs isolated. +- **Provider validation** - Handles missing current provider IDs and preserves icon fields on duplicate. +- **Linux rendering** - Fixed WebKitGTK DMA-BUF rendering and preserved user `.desktop` customizations. +- **Misc** - Removed redundant usage queries; corrected DMXAPI auth token field; restored missing deeplink translations; fixed usage script template init. + +### Technical + +- **Database modules** - Added `schema`, `backup`, `migration`, and DAO layers for providers/MCP/prompts/skills/settings. +- **Service modularization** - Split provider service into live/auth/endpoints/usage modules; deeplink parsing/import logic modularized. +- **Code cleanup** - Removed legacy JSON-era import/export, unused MCP types; unified error handling; tests migrated to SQLite backend and MSW handlers updated. + +### Migration Notes + +- First launch auto-migrates data from `config.json` to SQLite and device settings to `settings.json`; originals kept; error dialog on failure; dry-run supported. + +### Stats + +- 51 commits since v3.7.1; 207 files changed; +17,297 / -6,870 lines. See [release-note-v3.8.0](docs/release-note-v3.8.0-en.md) for details. + +--- + ## [3.7.1] - 2025-11-22 ### Fixed diff --git a/README.md b/README.md index 996119d5e..8fbc2234a 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.7.1-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Version](https://img.shields.io/badge/version-3.8.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Trending](https://img.shields.io/badge/🔥_TypeScript_Trending-Daily%20%7C%20Weekly%20%7C%20Monthly-ff6b6b.svg)](https://github.com/trending/typescript) [![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/) @@ -10,7 +10,7 @@ farion1231%2Fcc-switch | Trendshift -English | [äž­æ–‡](README_ZH.md) | [Changelog](CHANGELOG.md) +English | [äž­æ–‡](README_ZH.md) | [日本語](README_JA.md) | [Changelog](CHANGELOG.md) **From Provider Switcher to All-in-One AI CLI Management Platform** @@ -51,9 +51,42 @@ Get 10% OFF the GLM CODING PLAN with [this link](https://z.ai/subscribe?ic=8JVLJ ## Features -### Current Version: v3.7.0 | [Full Changelog](CHANGELOG.md) | [📋 Release Notes](docs/release-note-v3.7.0-en.md) +### Current Version: v3.8.0 | [Full Changelog](CHANGELOG.md) | [Release Notes](docs/release-note-v3.8.0-en.md) -**v3.7.0 Major Update (2025-11-19)** +**v3.8.0 Major Update (2025-11-28)** + +**Persistence Architecture Upgrade & Brand New UI** + +- **SQLite + JSON Dual-layer Architecture** + - Migrated from JSON file storage to SQLite + JSON dual-layer structure + - Syncable data (providers, MCP, Prompts, Skills) stored in SQLite + - Device-level data (window state, local paths) stored in JSON + - Lays the foundation for future cloud sync functionality + - Schema version management for database migrations + +- **Brand New User Interface** + - Completely redesigned interface layout + - Unified component styles and smoother animations + - Optimized visual hierarchy + - Tailwind CSS downgraded from v4 to v3.4 for better browser compatibility + +- **Japanese Language Support** + - Added Japanese interface support (now supports Chinese/English/Japanese) + +- **Auto Launch on Startup** + - One-click enable/disable in settings + - Platform-native APIs (Registry/LaunchAgent/XDG autostart) + +- **Skills Recursive Scanning** + - Support for multi-level directory structures + - Allow same-named skills from different repositories + +- **Critical Bug Fixes** + - Fixed custom endpoints lost when updating providers + - Fixed Gemini configuration write issues + - Fixed Linux WebKitGTK rendering issues + +**v3.7.0 Highlights** **Six Core Features, 18,000+ Lines of New Code** @@ -226,10 +259,10 @@ Download the latest `CC-Switch-v{version}-Linux.deb` package or `CC-Switch-v{ver - MCP servers: `~/.gemini/settings.json` → `mcpServers` - Tray quick switch: Each provider switch rewrites `~/.gemini/.env`, no need to restart Gemini CLI -**CC Switch Storage** +**CC Switch Storage (v3.8.0 New Architecture)** -- Main config (SSOT): `~/.cc-switch/config.json` (includes providers, MCP, Prompts presets, etc.) -- Settings: `~/.cc-switch/settings.json` +- Database (SSOT): `~/.cc-switch/cc-switch.db` (SQLite, stores providers, MCP, Prompts, Skills) +- Local settings: `~/.cc-switch/settings.json` (device-level settings) - Backups: `~/.cc-switch/backups/` (auto-rotate, keep 10) ### Cloud Sync Setup @@ -265,11 +298,12 @@ Download the latest `CC-Switch-v{version}-Linux.deb` package or `CC-Switch-v{ver **Core Design Patterns** -- **SSOT** (Single Source of Truth): All provider configs stored in `~/.cc-switch/config.json` +- **SSOT** (Single Source of Truth): All data stored in `~/.cc-switch/cc-switch.db` (SQLite) +- **Dual-layer Storage**: SQLite for syncable data, JSON for device-level settings - **Dual-way Sync**: Write to live files on switch, backfill from live when editing active provider - **Atomic Writes**: Temp file + rename pattern prevents config corruption -- **Concurrency Safe**: RwLock with scoped guards avoids deadlocks -- **Layered Architecture**: Clear separation (Commands → Services → Models) +- **Concurrency Safe**: Mutex-protected database connection avoids race conditions +- **Layered Architecture**: Clear separation (Commands → Services → DAO → Database) **Key Components** diff --git a/README_JA.md b/README_JA.md new file mode 100644 index 000000000..2c4b16c08 --- /dev/null +++ b/README_JA.md @@ -0,0 +1,476 @@ +
+ +# Claude Code / Codex / Gemini CLI オヌルむンワン・アシスタント + +[![Version](https://img.shields.io/badge/version-3.8.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Trending](https://img.shields.io/badge/🔥_TypeScript_Trending-Daily%20%7C%20Weekly%20%7C%20Monthly-ff6b6b.svg)](https://github.com/trending/typescript) +[![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) + +**プロバむダスむッチャヌから AI CLI 䞀䜓型管理プラットフォヌムぞ** + +Claude Code・Codex・Gemini CLI のプロバむダ蚭定、MCP サヌバヌ、Skills 拡匵、システムプロンプトを統合管理。 + +
+ +## ❀スポンサヌ + +![Zhipu GLM](assets/partners/banners/glm-en.jpg) + +本プロゞェクトは Z.ai の GLM CODING PLAN による支揎を受けおいたす。 + +GLM CODING PLAN は AI コヌディング向けのサブスクリプションで、月額わずか 3 ドルから。Claude Code、Cline、Roo Code など 10 以䞊の人気 AI コヌディングツヌルでフラッグシップモデル GLM-4.6 を利甚でき、速く安定した開発䜓隓を提䟛したす。 + +[このリンク](https://z.ai/subscribe?ic=8JVLJQFSKB) から申し蟌むず 10% オフになりたす + +--- + + + + + + + + + + + + +
PackyCodePackyCode のご支揎に感謝したすPackyCode は Claude Code、Codex、Gemini などのリレヌサヌビスを提䟛する信頌性の高い API 䞭継プラットフォヌムです。本゜フト利甚者向けに特別割匕がありたすこのリンクで登録し、チャヌゞ時に「cc-switch」クヌポンを入力するず 10% オフになりたす。
ShanDianShuoShanDianShuo のご支揎に感謝したすShanDianShuo はロヌカルファヌストの音声入力ツヌルで、ミリ秒遅延・デヌタは端末から倖に出ず・キヌボヌド入力の 4 倍の速床・AI 自動補正・プラむバシヌ優先で完党無料。Claude Code ず組み合わせればコヌディング効率が倍増したす。Mac/Win 版を無料ダりンロヌド
+ +## スクリヌンショット + +| メむン画面 | プロバむダ远加 | +| :-------------------------------------------: | :---------------------------------------------: | +| ![メむン画面](assets/screenshots/main-en.png) | ![プロバむダ远加](assets/screenshots/add-en.png) | + +## 特長 + +### 珟圚のバヌゞョンv3.8.0 | [完党な曎新履歎](CHANGELOG.md) | [リリヌスノヌト](docs/release-note-v3.8.0-en.md) + +**v3.8.0 メゞャヌアップデヌト (2025-11-28)** + +**氞続化アヌキテクチャ刷新 & 新 UI** + +- **SQLite + JSON 二局構造** + - JSON 単独保存から SQLite + JSON の二局構造ぞ移行 + - 同期察象デヌタプロバむダ、MCP、Prompts、Skillsは SQLite に保存 + - デバむス固有デヌタりィンドり状態、ロヌカルパスは JSON に保存 + - 将来のクラりド同期の土台を甚意 + - DB マむグレヌション甚にスキヌマバヌゞョンを管理 + +- **新しいナヌザヌむンタヌフェヌス** + - レむアりトを党面再蚭蚈 + - コンポヌネントスタむルずアニメヌションを統䞀 + - 芖芚的な階局を最適化 + - ブラりザ互換性向䞊のため Tailwind CSS を v4 から v3.4 にダりングレヌド + +- **日本語察応** + - UI が䞭囜語/英語/日本語の 3 蚀語察応に + +- **自動起動** + - 蚭定画面でワンクリック ON/OFF + - プラットフォヌムネむティブ APIRegistry/LaunchAgent/XDG autostartを䜿甚 + +- **Skills 再垰スキャン** + - 倚階局ディレクトリをサポヌト + - リポゞトリが異なる同名スキルを蚱可 + +- **重芁なバグ修正** + - プロバむダ曎新時にカスタム゚ンドポむントが倱われる問題を修正 + - Gemini 蚭定の曞き蟌み問題を修正 + - Linux WebKitGTK の描画問題を修正 + +**v3.7.0 ハむラむト** + +**6 ぀のコア機胜、18,000 行超の新コヌド** + +- **Gemini CLI 統合** + - Claude Code / Codex / Gemini の 3 番目のサポヌト AI CLI + - 2 ぀の蚭定ファむル`.env` + `settings.json`に察応 + - MCP サヌバヌ管理を完備 + - プリセットGoogle 公匏OAuth/ PackyCode / カスタム + +- **Claude Skills 管理システム** + - GitHub リポゞトリを自動スキャン3 ぀のキュレヌション枈みリポゞトリを同梱 + - `~/.claude/skills/` ぞワンクリックでむンストヌル/アンむンストヌル + - カスタムリポゞトリ + サブディレクトリスキャンをサポヌト + - ラむフサむクル管理怜出/むンストヌル/曎新を完備 + +- **Prompts 管理システム** + - 無制限のシステムプロンプトプリセットを䜜成 + - Markdown ゚ディタCodeMirror 6 + リアルタむムプレビュヌ付き + - スマヌトなバックフィル保護で手動倉曎を保持 + - 耇数アプリに同時察応Claude: `CLAUDE.md` / Codex: `AGENTS.md` / Gemini: `GEMINI.md` + +- **MCP v3.7.0 統合アヌキテクチャ** + - 1 ぀のパネルで 3 アプリの MCP を管理 + - 新たに SSEServer-Sent Eventsトランスポヌトを远加 + - スマヌト JSON パヌサヌ + Codex TOML 自動修正 + - 双方向のむンポヌト/゚クスポヌト + 双方向同期 + +- **ディヌプリンクプロトコル** + - `ccswitch://` を党プラットフォヌムで登録 + - 共有リンクからプロバむダ蚭定をワンクリックでむンポヌト + - セキュリティ怜蚌 + ラむフサむクル統合 + +- **環境倉数の競合怜知** + - Claude/Codex/Gemini/MCP 間の蚭定競合を自動怜出 + - 競合衚瀺 + 解決ガむド + - 䞊曞き前の譊告 + バックアップ + +**コア機胜** + +- **プロバむダ管理**Claude Code、Codex、Gemini の API 蚭定をワンクリックで切り替え +- **速床テスト**゚ンドポむント遅延を蚈枬し、品質を可芖化 +- **むンポヌト/゚クスポヌト**蚭定をバックアップ・埩元最新 10 件を自動ロヌテヌション +- **倚蚀語察応**UI/゚ラヌ/トレむを含む䞭囜語・英語・日本語ロヌカラむズ +- **Claude プラグむン同期**Claude プラグむン蚭定をワンクリックで適甚/埩元 + +**v3.6 ハむラむト** + +- プロバむダの耇補ずドラッグドロップ䞊び替え +- 耇数゚ンドポむント管理ずカスタム蚭定ディレクトリクラりド同期準備枈み +- 4 階局のモデル蚭定Haiku/Sonnet/Opus/Custom +- WSL 環境をサポヌトし、ディレクトリ倉曎時に自動同期 +- Hooks テスト 100% カバレッゞ + アヌキテクチャ党面リファクタ + +**システム機胜** + +- クむックスむッチ付きシステムトレむ +- シングルむンスタンス垞駐 +- ビルトむン自動アップデヌタ +- ロヌルバック保護付きのアトミック曞き蟌み + +## ダりンロヌド & むンストヌル + +### システム芁件 + +- **Windows**: Windows 10 以䞊 +- **macOS**: macOS 10.15 (Catalina) 以䞊 +- **Linux**: Ubuntu 22.04+ / Debian 11+ / Fedora 34+ など䞻芁ディストリビュヌション + +### Windows ナヌザヌ + +[Releases](../../releases) ペヌゞから最新版の `CC-Switch-v{version}-Windows.msi` むンストヌラヌ、たたはポヌタブル版 `CC-Switch-v{version}-Windows-Portable.zip` をダりンロヌド。 + +### macOS ナヌザヌ + +**方法 1: Homebrew でむンストヌル掚奚** + +```bash +brew tap farion1231/ccswitch +brew install --cask cc-switch +``` + +アップデヌト: + +```bash +brew upgrade --cask cc-switch +``` + +**方法 2: 手動ダりンロヌド** + +[Releases](../../releases) から `CC-Switch-v{version}-macOS.zip` をダりンロヌドしお展開。 + +> **泚意**: 開発者アカりント未登録のため、初回起動時に「開発元を確認できたせん」ず衚瀺される堎合がありたす。䞀床閉じおから「システム蚭定」→「プラむバシヌずセキュリティ」→「このたた開く」をクリックしおください。以降は通垞通り起動できたす。 + +### ArchLinux ナヌザヌ + +**paru でむンストヌル掚奚** + +```bash +paru -S cc-switch-bin +``` + +### Linux ナヌザヌ + +[Releases](../../releases) から最新版の `CC-Switch-v{version}-Linux.deb` たたは `CC-Switch-v{version}-Linux.AppImage` をダりンロヌド。 + +## クむックスタヌト + +### 基本的な䜿い方 + +1. **プロバむダ远加**「Add Provider」をクリック → プリセットを遞ぶかカスタム蚭定を䜜成 +2. **プロバむダ切り替え**: + - メむン UI: プロバむダを遞択 → 「Enable」をクリック + - システムトレむ: プロバむダ名をクリック即時反映 +3. **反映**: タヌミナルや Claude Code / Codex / Gemini クラむアントを再起動しお適甚 +4. **公匏蚭定に戻す**: 「Official Login」プリセットClaude/Codexたたは「Google Official」プリセットGeminiを遞び、察応クラむアントを再起動しおログむン/OAuth を実行 + +### MCP 管理 + +- **入口**: 右䞊の「MCP」ボタンをクリック +- **サヌバヌ远加**: + - 組み蟌みテンプレヌトmcp-fetch、mcp-filesystem などを䜿甚 + - stdio / http / sse の各トランスポヌトをサポヌト + - アプリごずに独立した MCP を蚭定可胜 +- **有効/無効**: トグルでラむブ蚭定ぞの同期を切り替え +- **同期**: 有効なサヌバヌは各アプリのラむブファむルぞ自動同期 +- **むンポヌト/゚クスポヌト**: Claude/Codex/Gemini の蚭定ファむルから既存 MCP を取り蟌み + +### Skills 管理 (v3.7.0 新機胜) + +- **入口**: 右䞊の「Skills」ボタンをクリック +- **スキル探玢**: + - 事前蚭定枈みの GitHub リポゞトリを自動スキャンAnthropic 公匏、ComposioHQ、コミュニティなど + - カスタムリポゞトリを远加サブディレクトリスキャン察応 +- **むンストヌル**: 「Install」を抌すだけで `~/.claude/skills/` に配眮 +- **アンむンストヌル**: 「Uninstall」で安党に削陀ず状態クリヌンアップ +- **リポゞトリ管理**: カスタム GitHub リポゞトリを远加/削陀 + +### Prompts 管理 (v3.7.0 新機胜) + +- **入口**: 右䞊の「Prompts」ボタンをクリック +- **プリセット䜜成**: + - 無制限のシステムプロンプトプリセットを䜜成 + - Markdown ゚ディタで蚘述シンタックスハむラむト + リアルタむムプレビュヌ +- **プリセット切り替え**: プリセットを遞択 → 「Activate」で即適甚 +- **同期先**: + - Claude: `~/.claude/CLAUDE.md` + - Codex: `~/.codex/AGENTS.md` + - Gemini: `~/.gemini/GEMINI.md` +- **保護機構**: 切り替え前に珟圚の内容を自動保存し、手動倉曎を保持 + +### 蚭定ファむルパス + +**Claude Code** + +- ラむブ蚭定: `~/.claude/settings.json`たたは `claude.json` +- API キヌフィヌルド: `env.ANTHROPIC_AUTH_TOKEN` たたは `env.ANTHROPIC_API_KEY` +- MCP サヌバヌ: `~/.claude.json` → `mcpServers` + +**Codex** + +- ラむブ蚭定: `~/.codex/auth.json`必須+ `config.toml`任意 +- API キヌフィヌルド: `auth.json` 内の `OPENAI_API_KEY` +- MCP サヌバヌ: `~/.codex/config.toml` → `[mcp_servers]` テヌブル + +**Gemini** + +- ラむブ蚭定: `~/.gemini/.env`API キヌ+ `~/.gemini/settings.json`認蚌モヌド +- API キヌフィヌルド: `.env` 内の `GEMINI_API_KEY` たたは `GOOGLE_GEMINI_API_KEY` +- 環境倉数: `GOOGLE_GEMINI_BASE_URL`、`GEMINI_MODEL` などをサポヌト +- MCP サヌバヌ: `~/.gemini/settings.json` → `mcpServers` +- トレむでのクむックスむッチ: プロバむダ切り替えごずに `~/.gemini/.env` を曞き換えるため Gemini CLI の再起動は䞍芁 + +**CC Switch 保存先 (v3.8.0 新アヌキテクチャ)** + +- デヌタベヌス (SSOT): `~/.cc-switch/cc-switch.db`SQLite。プロバむダ、MCP、Prompts、Skills を保存 +- ロヌカル蚭定: `~/.cc-switch/settings.json`デバむスレベル蚭定 +- バックアップ: `~/.cc-switch/backups/`自動ロヌテヌション、最新 10 件を保持 + +### クラりド同期の蚭定 + +1. 蚭定 → 「Custom Configuration Directory」ぞ進む +2. クラりド同期フォルダDropbox、OneDrive、iCloud などを遞択 +3. アプリを再起動しお反映 +4. 他のデバむスでも同じフォルダを指定すればクロスデバむス同期が有効に + +> **補足**: 初回起動時に既存の Claude/Codex 蚭定をデフォルトプロバむダずしお自動むンポヌトしたす。 + +## アヌキテクチャ抂芁 + +### 蚭蚈原則 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Frontend (React + TS) │ +│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │ +│ │ Components │ │ Hooks │ │ TanStack Query │ │ +│ │ (UI) │──│ (Bus. Logic) │──│ (Cache/Sync) │ │ +│ └─────────────┘ └──────────────┘ └──────────────────┘ │ +└────────────────────────┬────────────────────────────────────┘ + │ Tauri IPC +┌────────────────────────▌────────────────────────────────────┐ +│ Backend (Tauri + Rust) │ +│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │ +│ │ Commands │ │ Services │ │ Models/Config │ │ +│ │ (API Layer) │──│ (Bus. Layer) │──│ (Data) │ │ +│ └─────────────┘ └──────────────┘ └──────────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +**コア蚭蚈パタヌン** + +- **SSOT** (Single Source of Truth): すべおのデヌタを `~/.cc-switch/cc-switch.db`SQLiteに集玄 +- **二局ストレヌゞ**: 同期デヌタは SQLite、デバむスデヌタは JSON +- **双方向同期**: 切り替え時はラむブファむルぞ曞き蟌み、線集時はアクティブプロバむダから逆同期 +- **アトミック曞き蟌み**: 䞀時ファむル + rename パタヌンで蚭定砎損を防止 +- **䞊行安党**: Mutex で保護された DB 接続でレヌスを防ぐ +- **レむダヌドアヌキテクチャ**: Commands → Services → DAO → Database を明確に分離 + +**䞻芁コンポヌネント** + +- **ProviderService**: プロバむダの CRUD、切り替え、バックフィル、゜ヌト +- **McpService**: MCP サヌバヌ管理、むンポヌト/゚クスポヌト、ラむブファむル同期 +- **ConfigService**: 蚭定のむンポヌト/゚クスポヌト、バックアップロヌテヌション +- **SpeedtestService**: API ゚ンドポむントの遅延蚈枬 + +**v3.6 リファクタリング** + +- バック゚ンド: ゚ラヌハンドリング → コマンド分割 → テスト → サヌビス局 → 䞊行性の 5 フェヌズ +- フロント゚ンド: テスト基盀 → hooks → コンポヌネント → クリヌンアップの 4 ステヌゞ +- テスト: hooks 100% カバレッゞ + 統合テストvitest + MSW + +## 開発 + +### 開発環境 + +- Node.js 18+ +- pnpm 8+ +- Rust 1.85+ +- Tauri CLI 2.8+ + +### 開発コマンド + +```bash +# 䟝存関係をむンストヌル +pnpm install + +# ホットリロヌド付き開発モヌド +pnpm dev + +# 型チェック +pnpm typecheck + +# コヌド敎圢 +pnpm format + +# フォヌマット怜蚌 +pnpm format:check + +# フロント゚ンド単䜓テスト +pnpm test:unit + +# りォッチモヌド開発に掚奚 +pnpm test:unit:watch + +# アプリをビルド +pnpm build + +# デバッグビルド +pnpm tauri build --debug +``` + +### Rust バック゚ンド開発 + +```bash +cd src-tauri + +# Rust コヌド敎圢 +cargo fmt + +# clippy チェック +cargo clippy + +# バック゚ンドテスト +cargo test + +# 特定テストのみ実行 +cargo test test_name + +# test-hooks フィヌチャヌ付きでテスト +cargo test --features test-hooks +``` + +### テストガむド (v3.6) + +**フロント゚ンドテスト**: + +- テストフレヌムワヌクに **vitest** を䜿甚 +- **MSW (Mock Service Worker)** で Tauri API 呌び出しをモック +- コンポヌネントテストに **@testing-library/react** を採甚 + +**テストカバレッゞ**: + +- Hooks の単䜓テスト100% カバレッゞ + - `useProviderActions` - プロバむダ操䜜 + - `useMcpActions` - MCP 管理 + - `useSettings` ç³» - 蚭定管理 + - `useImportExport` - むンポヌト/゚クスポヌト +- 統合テスト + - アプリのメむンフロヌ + - SettingsDialog の䞀連操䜜 + - MCP パネルの機胜 + +**テスト実行**: + +```bash +# 党テストを実行 +pnpm test:unit + +# りォッチモヌド自動再実行 +pnpm test:unit:watch + +# カバレッゞレポヌト付き +pnpm test:unit --coverage +``` + +## 技術スタック + +**フロント゚ンド**: React 18 · TypeScript · Vite · TailwindCSS 4 · TanStack Query v5 · react-i18next · react-hook-form · zod · shadcn/ui · @dnd-kit + +**バック゚ンド**: Tauri 2.8 · Rust · serde · tokio · thiserror · tauri-plugin-updater/process/dialog/store/log + +**テスト**: vitest · MSW · @testing-library/react + +## プロゞェクト構成 + +``` +├── src/ # フロント゚ンド (React + TypeScript) +│ ├── components/ # UI コンポヌネント (providers/settings/mcp/ui) +│ ├── hooks/ # ビゞネスロゞック甚カスタムフック +│ ├── lib/ +│ │ ├── api/ # Tauri API ラッパヌ (型安党) +│ │ └── query/ # TanStack Query 蚭定 +│ ├── i18n/locales/ # 翻蚳 (zh/en) +│ ├── config/ # プリセット (providers/mcp) +│ └── types/ # TypeScript 型定矩 +├── src-tauri/ # バック゚ンド (Rust) +│ └── src/ +│ ├── commands/ # Tauri コマンド局 (ドメむン別) +│ ├── services/ # ビゞネスロゞック局 +│ ├── app_config.rs # 蚭定モデル +│ ├── provider.rs # プロバむダドメむンモデル +│ ├── mcp.rs # MCP 同期 & 怜蚌 +│ └── lib.rs # アプリ゚ントリ & トレむメニュヌ +├── tests/ # フロント゚ンドテスト +│ ├── hooks/ # 単䜓テスト +│ └── components/ # 統合テスト +└── assets/ # スクリヌンショット & スポンサヌリ゜ヌス +``` + +## 曎新履歎 + +詳现は [CHANGELOG.md](CHANGELOG.md) をご芧ください。 + +## 旧 Electron 版 + +[Releases](../../releases) に v2.0.3 の Electron 旧版を残しおいたす。 + +旧版コヌドが必芁な堎合は `electron-legacy` ブランチを取埗しおください。 + +## 貢献 + +Issue や提案を歓迎したす + +PR を送る前に以䞋をご確認ください: + +- 型チェック: `pnpm typecheck` +- フォヌマットチェック: `pnpm format:check` +- 単䜓テスト: `pnpm test:unit` +- 💡 新機胜の堎合は、事前に Issue でディスカッションしおいただけるず助かりたす + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=farion1231/cc-switch&type=Date)](https://www.star-history.com/#farion1231/cc-switch&Date) + +## ラむセンス + +MIT © Jason Young diff --git a/README_ZH.md b/README_ZH.md index 73ea10045..5654c2b1a 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -2,7 +2,7 @@ # Claude Code / Codex / Gemini CLI 党方䜍蟅助工具 -[![Version](https://img.shields.io/badge/version-3.7.1-blue.svg)](https://github.com/farion1231/cc-switch/releases) +[![Version](https://img.shields.io/badge/version-3.8.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Trending](https://img.shields.io/badge/🔥_TypeScript_Trending-Daily%20%7C%20Weekly%20%7C%20Monthly-ff6b6b.svg)](https://github.com/trending/typescript) [![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/) @@ -10,7 +10,7 @@ farion1231%2Fcc-switch | Trendshift -[English](README.md) | äž­æ–‡ | [曎新日志](CHANGELOG.md) | [📋 v3.7.0 发垃诎明](docs/release-note-v3.7.0-zh.md) +[English](README.md) | äž­æ–‡ | [日本語](README_JA.md) | [曎新日志](CHANGELOG.md) | [v3.8.0 发垃诎明](docs/release-note-v3.8.0-zh.md) **从䟛应商切换噚到 AI CLI 䞀䜓化管理平台** @@ -51,9 +51,42 @@ CC Switch 已经预讟了智谱GLM只需芁填写 key 即可䞀键富入猖 ## 功胜特性 -### 圓前版本v3.7.0 | [完敎曎新日志](CHANGELOG.md) +### 圓前版本v3.8.0 | [完敎曎新日志](CHANGELOG.md) -**v3.7.0 重倧曎新2025-11-19** +**v3.8.0 重倧曎新2025-11-28** + +**持久化架构升级 & 党新甚户界面** + +- **SQLite + JSON 双层架构** + - 从 JSON 文件存傚迁移到 SQLite + JSON 双层结构 + - 可同步数据䟛应商、MCP、Prompts、Skills存入 SQLite + - 讟倇级数据窗口状态、本地路埄保留圚 JSON + - 䞺未来云同步功胜奠定基础 + - Schema 版本管理支持数据库迁移 + +- **党新甚户界面** + - 完党重新讟计的界面垃局 + - 统䞀的组件样匏和曎流畅的劚画 + - 䌘化的视觉层次 + - Tailwind CSS 从 v4 降级到 v3.4 以提升浏览噚兌容性 + +- **日语支持** + - 新增日语界面支持现支持䞭文/英文/日语 + +- **匀机自启** + - 圚讟眮䞭䞀键匀启/关闭 + - 䜿甚平台原生 API泚册衚/LaunchAgent/XDG autostart + +- **Skills 递園扫描** + - 支持倚层目圕结构 + - 允讞䞍同仓库的同名技胜 + +- **关键 Bug 修倍** + - 修倍曎新䟛应商时自定义端点䞢倱问题 + - 修倍 Gemini 配眮写入问题 + - 修倍 Linux WebKitGTK 枲染问题 + +**v3.7.0 亮点** **六倧栞心功胜18,000+ 行新增代码** @@ -226,10 +259,10 @@ paru -S cc-switch-bin - MCP 服务噚`~/.gemini/settings.json` → `mcpServers` - 托盘快速切换每次切换䟛应商郜䌚重写 `~/.gemini/.env`无需重启 Gemini CLI 即可生效 -**CC Switch 存傚** +**CC Switch 存傚v3.8.0 新架构** -- 䞻配眮SSOT`~/.cc-switch/config.json`包含䟛应商、MCP、Prompts 预讟等 -- 讟眮`~/.cc-switch/settings.json` +- 数据库SSOT`~/.cc-switch/cc-switch.db`SQLite存傚䟛应商、MCP、Prompts、Skills +- 本地讟眮`~/.cc-switch/settings.json`讟倇级讟眮 - 倇仜`~/.cc-switch/backups/`自劚蜮换保留 10 䞪 ### 云同步讟眮 @@ -265,11 +298,12 @@ paru -S cc-switch-bin **栞心讟计暡匏** -- **SSOT**单䞀事实源所有䟛应商配眮存傚圚 `~/.cc-switch/config.json` +- **SSOT**单䞀事实源所有数据存傚圚 `~/.cc-switch/cc-switch.db`SQLite +- **双层存傚**SQLite 存傚可同步数据JSON 存傚讟倇级讟眮 - **双向同步**切换时写入 live 文件猖蟑圓前䟛应商时从 live 回填 - **原子写入**䞎时文件 + 重呜名暡匏防止配眮损坏 -- **并发安党**RwLock 䞎䜜甚域守卫避免死锁 -- **分层架构**枅晰分犻Commands → Services → Models +- **并发安党**Mutex 保技的数据库连接避免竞态条件 +- **分层架构**枅晰分犻Commands → Services → DAO → Database **栞心组件** diff --git a/docs/release-note-v3.8.0-en.md b/docs/release-note-v3.8.0-en.md new file mode 100644 index 000000000..dc605d2a4 --- /dev/null +++ b/docs/release-note-v3.8.0-en.md @@ -0,0 +1,369 @@ +# CC Switch v3.8.0 + +> Persistence Architecture Upgrade, Laying the Foundation for Cloud Sync + +**[䞭文版 →](release-note-v3.8.0-zh.md) | [日本語版 →](release-note-v3.8.0-ja.md)** + +--- + +## Overview + +CC Switch v3.8.0 is a major architectural upgrade that restructures the data persistence layer and user interface, laying the foundation for future cloud sync and local proxy features. + +**Release Date**: 2025-11-28 +**Commits**: 51 commits since v3.7.1 +**Code Changes**: 207 files, +17,297 / -6,870 lines + +--- + +## Major Updates + +### Persistence Architecture Upgrade + +Migrated from single JSON file storage to SQLite + JSON dual-layer architecture for hierarchical data management. + +**Architecture Changes**: + +``` +v3.7.x (Old) v3.8.0 (New) +┌─────────────────┐ ┌─────────────────────────────────┐ +│ config.json │ │ SQLite (Syncable Data) │ +│ ┌───────────┐ │ │ ├─ providers Provider cfg │ +│ │ providers │ │ │ ├─ mcp_servers MCP servers │ +│ │ mcp │ │ ──> │ ├─ prompts Prompts │ +│ │ prompts │ │ │ ├─ skills Skills │ +│ │ settings │ │ │ └─ settings General cfg │ +│ └───────────┘ │ ├────────────────────────────────── +└─────────────────┘ │ JSON (Device-level Data) │ + │ └─ settings.json Local settings│ + │ ├─ Window position │ + │ ├─ Path overrides │ + │ └─ Current provider ID │ + └─────────────────────────────────┘ +``` + +**Dual-layer Structure Design**: + +| Layer | Storage | Data Types | Sync Strategy | +| ---------- | ------- | ------------------------------- | --------------- | +| Cloud Sync | SQLite | Providers, MCP, Prompts, Skills | Future syncable | +| Device | JSON | Window state, local paths | Stays local | + +**Technical Implementation**: + +- **Schema Version Management** - Supports database structure upgrade migrations +- **SQL Import/Export** - `backup.rs` supports SQL dump for cloud storage +- **Transaction Support** - SQLite native transactions ensure data consistency +- **Auto Migration** - Automatically migrates from `config.json` on first launch + +**Modular Refactoring**: + +``` +database/ +├── mod.rs Core Database struct and initialization +├── schema.rs Table definitions, schema version migrations +├── backup.rs SQL import/export, binary snapshot backup +├── migration.rs JSON → SQLite data migration engine +└── dao/ Data Access Object layer + ├── providers.rs Provider CRUD + ├── mcp.rs MCP server CRUD + ├── prompts.rs Prompts CRUD + ├── skills.rs Skills CRUD + └── settings.rs Key-value settings storage +``` + +--- + +### Brand New User Interface + +Completely redesigned UI providing a more modern visual experience. + +**Visual Improvements**: + +- Redesigned interface layout +- Unified component styles +- Smoother transition animations +- Optimized visual hierarchy + +**Interaction Enhancements**: + +- Redesigned header toolbar +- Unified ConfirmDialog styling +- Disabled overscroll bounce effect on main view +- Improved form validation feedback + +**Compatibility Adjustments**: + +- Downgraded Tailwind CSS from v4 to v3.4 for better browser compatibility + +--- + +### Japanese Language Support + +Added Japanese interface support, expanding internationalization to three languages. + +**Supported Languages**: + +- Simplified Chinese +- English +- Japanese (New) + +--- + +## New Features + +### Skills Recursive Scanning + +Skills management system now supports recursive scanning of repository directories, automatically discovering nested skill files. + +**Improvements**: + +- Support for multi-level directory structures +- Automatic discovery of all `SKILL.md` files +- Allow same-named skills from different repositories (using full path for deduplication) + +--- + +### Provider Icon Configuration + +Provider presets now support custom icon configuration. + +**Features**: + +- Preset providers include default icons +- Icon settings preserved when duplicating providers +- Custom icon colors + +--- + +### Enhanced Form Validation + +Provider forms now include required field validation with friendlier error messages. + +**Improvements**: + +- Real-time validation for required fields +- Unified Toast notifications for validation errors +- Clearer error messages + +--- + +### Auto Launch on Startup + +Added auto-launch functionality supporting Windows, macOS, and Linux platforms. + +**Features**: + +- One-click enable/disable in settings +- Implemented using platform-native APIs +- Windows uses Registry, macOS uses LaunchAgent, Linux uses XDG autostart + +--- + +### New Provider Presets + +- **MiniMax** - Official partner + +--- + +## Bug Fixes + +### Critical Fixes + +**Custom Endpoints Lost Issue** + +Fixed an issue where custom request URLs were unexpectedly lost when updating providers. + +- Root Cause: `INSERT OR REPLACE` executes `DELETE + INSERT` under the hood in SQLite, triggering foreign key cascade deletion +- Fix: Changed to use `UPDATE` statement for existing providers + +**Gemini Configuration Issues** + +- Fixed custom provider environment variables not correctly written to `.env` file +- Fixed security auth config incorrectly written to other config files + +**Provider Validation Issues** + +- Fixed validation error when current provider ID doesn't exist +- Fixed icon fields lost when duplicating providers + +### Platform Compatibility + +**Linux** + +- Resolved WebKitGTK DMA-BUF rendering issue +- Preserve user `.desktop` file customizations + +### Other Fixes + +- Fixed redundant usage queries when switching apps +- Fixed DMXAPI preset using wrong auth token field +- Fixed missing translation keys in deeplink components +- Fixed usage script template initialization logic + +--- + +## Technical Improvements + +### Architecture Refactoring + +**Provider Service Modularization**: + +``` +services/provider/ +├── mod.rs Core service - add/update/delete/switch/validate +├── live.rs Live config file operations +├── gemini_auth.rs Gemini auth type detection +├── endpoints.rs Custom endpoint management +└── usage.rs Usage script execution +``` + +**Deeplink Modularization**: + +``` +deeplink/ +├── mod.rs Module exports +├── parser.rs URL parsing +├── provider.rs Provider import logic +├── mcp.rs MCP import logic +├── prompt.rs Prompt import +├── skill.rs Skills import +└── utils.rs Utility functions +``` + +### Code Quality + +**Cleanup**: + +- Removed legacy JSON-era import/export dead code +- Removed unused MCP type exports +- Unified error handling approach + +**Test Updates**: + +- Migrated tests to SQLite database architecture +- Updated component tests to match current implementation +- Fixed MSW handlers to adapt to new API + +--- + +## Technical Statistics + +``` +Overall Changes: +- Commits: 51 +- Files: 207 files changed +- Additions: +17,297 lines +- Deletions: -6,870 lines +- Net: +10,427 lines + +Commit Type Distribution: +- fix: 25 (Bug fixes) +- refactor: 11 (Code refactoring) +- feat: 9 (New features) +- test: 1 (Testing) +- other: 5 + +Change Area Distribution: +- Frontend source: 112 files +- Rust backend: 63 files +- Test files: 20 files +- i18n files: 3 files +``` + +--- + +## Migration Guide + +### Upgrading from v3.7.x + +**Auto Migration** - Executes automatically on first launch: + +1. Detects if `config.json` exists +2. Migrates all data to SQLite within a transaction +3. Migrates device-level settings to `settings.json` +4. Shows migration success notification + +**Data Safety**: + +- Original `config.json` file is preserved (not deleted) +- Error dialog displayed on migration failure, `config.json` preserved +- Supports Dry-run mode to verify migration logic + +--- + +## Download & Installation + +### System Requirements + +- **Windows**: Windows 10+ +- **macOS**: macOS 10.15 (Catalina)+ +- **Linux**: Ubuntu 22.04+ / Debian 11+ / Fedora 34+ + +### Download Links + +Visit [Releases](https://github.com/farion1231/cc-switch/releases/latest) to download: + +- **Windows**: `CC-Switch-v3.8.0-Windows.msi` or `-Portable.zip` +- **macOS**: `CC-Switch-v3.8.0-macOS.tar.gz` or `.zip` +- **Linux**: `CC-Switch-v3.8.0-Linux.AppImage` or `.deb` + +### Homebrew (macOS) + +```bash +brew tap farion1231/ccswitch +brew install --cask cc-switch +``` + +Update: + +```bash +brew upgrade --cask cc-switch +``` + +## Acknowledgments + +### Contributors + +Thanks to all contributors who made this release possible: + +- [@YoVinchen](https://github.com/YoVinchen) - UI and database refactoring +- [@farion1231](https://github.com/farion1231) - Bug fixes and feature enhancements +- Community members for testing and feedback + +### Sponsors + +**Zhipu AI** - GLM CODING PLAN Sponsor +[Get 10% off with this link](https://z.ai/subscribe?ic=8JVLJQFSKB) + +**PackyCode** - API Relay Service Partner +[Use code "cc-switch" for 10% off registration](https://www.packyapi.com/register?aff=cc-switch) + +**ShandianShuo** - Local-first AI Voice Input +[Free download](https://shandianshuo.cn) for Mac/Windows + +**MiniMax** - MiniMax M2 CODING PLAN Sponsor +[Black Friday sale, plans starting at $2](https://platform.minimax.io/subscribe/coding-plan) + +--- + +## Feedback & Support + +- **Issue Reports**: [GitHub Issues](https://github.com/farion1231/cc-switch/issues) +- **Discussions**: [GitHub Discussions](https://github.com/farion1231/cc-switch/discussions) +- **Documentation**: [README](../README.md) +- **Changelog**: [CHANGELOG.md](../CHANGELOG.md) + +--- + +## Future Roadmap + +**v3.9.0 Preview** (Tentative): + +- Local proxy feature + +Stay tuned for more updates! + +--- + +**Happy Coding!** diff --git a/docs/release-note-v3.8.0-ja.md b/docs/release-note-v3.8.0-ja.md new file mode 100644 index 000000000..09ae00c87 --- /dev/null +++ b/docs/release-note-v3.8.0-ja.md @@ -0,0 +1,315 @@ +# CC Switch v3.8.0 + +> 氞続化アヌキテクチャを刷新し、クラりド同期の土台を構築 + +**[English →](release-note-v3.8.0-en.md) | [䞭文版 →](release-note-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!** diff --git a/docs/release-note-v3.8.0-zh.md b/docs/release-note-v3.8.0-zh.md new file mode 100644 index 000000000..07a110d87 --- /dev/null +++ b/docs/release-note-v3.8.0-zh.md @@ -0,0 +1,369 @@ +# CC Switch v3.8.0 + +> 持久化架构升级䞺云同步奠定基础 + +**[English Version →](release-note-v3.8.0-en.md)** + +--- + +## 抂览 + +CC Switch v3.8.0 是䞀次重倧的架构升级版本重构了数据持久化层和甚户界面䞺未来的云同步和本地代理功胜奠定基础。 + +**发垃日期**2025-11-28 +**提亀数量**从 v3.7.1 匀始 51 䞪提亀 +**代码变曎**207 䞪文件+17,297 / -6,870 行 + +--- + +## 重倧曎新 + +### 持久化架构升级 + +从单䞀 JSON 文件存傚迁移到 SQLite + JSON 双层架构实现数据分层管理。 + +**架构变曎** + +``` +v3.7.x (旧) v3.8.0 (新) +┌─────────────────┐ ┌─────────────────────────────────┐ +│ config.json │ │ SQLite (可同步数据) │ +│ ┌───────────┐ │ │ ├─ providers 䟛应商配眮 │ +│ │ providers │ │ │ ├─ mcp_servers MCP 服务噚 │ +│ │ mcp │ │ ──> │ ├─ prompts 提瀺词 │ +│ │ prompts │ │ │ ├─ skills 技胜 │ +│ │ settings │ │ │ └─ settings 通甚讟眮 │ +│ └───────────┘ │ ├────────────────────────────────── +└─────────────────┘ │ JSON (讟倇级数据) │ + │ └─ settings.json 本地讟眮 │ + │ ├─ 窗口䜍眮 │ + │ ├─ 路埄芆盖 │ + │ └─ 圓前选䞭䟛应商 ID │ + └─────────────────────────────────┘ +``` + +**双层结构讟计** + +| 层级 | 存傚方匏 | 数据类型 | 同步策略 | +| -------- | -------- | ---------------------------- | ---------- | +| 云同步层 | SQLite | 䟛应商、MCP、Prompts、Skills | 未来可同步 | +| 讟倇层 | JSON | 窗口状态、本地路埄、圓前选择 | 保持本地 | + +**技术实现** + +- **Schema 版本管理** - 支持数据库结构升级迁移 +- **SQL 富入富出** - `backup.rs` 支持 SQL dump䟿于云端存傚 +- **事务支持** - SQLite 原生事务保证数据䞀臎性 +- **自劚迁移** - 銖次启劚自劚从 `config.json` 迁移数据 + +**暡块化重构** + +``` +database/ +├── mod.rs 栞心 Database 结构䜓和初始化 +├── schema.rs 衚结构定义、Schema 版本迁移 +├── backup.rs SQL 富入富出、二进制快照倇仜 +├── migration.rs JSON → SQLite 数据迁移匕擎 +└── dao/ 数据访问对象层 + ├── providers.rs 䟛应商 CRUD + ├── mcp.rs MCP 服务噚 CRUD + ├── prompts.rs 提瀺词 CRUD + ├── skills.rs Skills CRUD + └── settings.rs 键倌对讟眮存傚 +``` + +--- + +### 党新甚户界面 + +完敎重构的 UI 讟计提䟛曎现代化的视觉䜓验。 + +**视觉改进** + +- 重新讟计的界面垃局 +- 统䞀的组件样匏 +- 曎流畅的过枡劚画 +- 䌘化的视觉层次 + +**亀互䌘化** + +- Header toolbar 重新讟计 +- ConfirmDialog 样匏统䞀 +- 犁甚䞻视囟 overscroll 匹跳效果 +- 改进的衚单验证反銈 + +**兌容性调敎** + +- Tailwind CSS 从 v4 降级到 v3.4提升浏览噚兌容性 + +--- + +### 日语支持 + +新增日语日本語界面支持囜际化语蚀扩展到䞉种。 + +**支持语蚀** + +- 简䜓䞭文 +- English +- 日本語新增 + +--- + +## 新增功胜 + +### Skills 递園扫描 + +Skills 管理系统支持递園扫描仓库目圕自劚发现嵌套的技胜文件。 + +**改进内容** + +- 支持倚层目圕结构 +- 自劚发现所有 `SKILL.md` 文件 +- 允讞䞍同仓库的同名技胜䜿甚完敎路埄去重 + +--- + +### 䟛应商囟标配眮 + +䟛应商预讟支持自定义囟标配眮。 + +**功胜特性** + +- 预讟䟛应商包含默讀囟标 +- 倍制䟛应商时保留囟标讟眮 +- 囟标颜色自定义 + +--- + +### 衚单验证增区 + +䟛应商衚单新增必填字段验证提䟛曎友奜的错误提瀺。 + +**改进内容** + +- 必填字段实时校验 +- 统䞀䜿甚 Toast 通知星瀺验证错误 +- 曎枅晰的错误信息 + +--- + +### 匀机自启 + +新增匀机自劚启劚功胜支持 Windows、macOS 和 Linux 䞉䞪平台。 + +**功胜特性** + +- 圚讟眮䞭䞀键匀启/关闭 +- 䜿甚平台原生 API 实现 +- Windows 䜿甚泚册衚、macOS 䜿甚 LaunchAgent、Linux 䜿甚 XDG autostart + +--- + +### 新增䟛应商预讟 + +- **MiniMax** - 官方合䜜䌙䌎 + +--- + +## Bug 修倍 + +### 关键修倍 + +**自定义端点䞢倱问题** + +修倍曎新䟛应商时自定义请求地址意倖䞢倱的问题。 + +- 根因`INSERT OR REPLACE` 圚 SQLite 底层执行 `DELETE + INSERT`觊发倖键级联删陀 +- 修倍改甚 `UPDATE` 语句曎新已存圚的䟛应商 + +**Gemini 配眮问题** + +- 修倍自定义䟛应商环境变量未正确写入 `.env` 文件 +- 修倍安党讀证配眮错误写入到其他配眮文件 + +**䟛应商验证问题** + +- 修倍圓前䟛应商 ID 䞍存圚时的验证错误 +- 修倍䟛应商倍制时囟标字段䞢倱 + +### 平台兌容性 + +**Linux** + +- 解决 WebKitGTK DMA-BUF 枲染问题 +- 保留甚户 `.desktop` 文件自定义 + +### 其他修倍 + +- 修倍切换应甚时的冗䜙甚量查询 +- 修倍 DMXAPI 预讟䜿甚错误的讀证什牌字段 +- 修倍深铟接组件猺少翻译键 +- 修倍甚量脚本暡板初始化逻蟑 + +--- + +## 技术改进 + +### 架构重构 + +**䟛应商服务暡块化** + +``` +services/provider/ +├── mod.rs 栞心服务 - add/update/delete/switch/validate +├── live.rs Live 配眮文件操䜜 +├── gemini_auth.rs Gemini 讀证类型检测 +├── endpoints.rs 自定义端点管理 +└── usage.rs 甚量脚本执行 +``` + +**深铟接暡块化** + +``` +deeplink/ +├── mod.rs 暡块富出 +├── parser.rs URL 解析 +├── provider.rs 䟛应商富入逻蟑 +├── mcp.rs MCP 富入逻蟑 +├── prompt.rs 提瀺词富入 +├── skill.rs Skills 富入 +└── utils.rs 工具凜数 +``` + +### 代码莚量 + +**枅理工䜜** + +- 移陀 JSON 时代遗留的富入富出死代码 +- 移陀未䜿甚的 MCP 类型富出 +- 统䞀错误倄理方匏 + +**测试曎新** + +- 迁移测试到 SQLite 数据库架构 +- 曎新组件测试匹配圓前实现 +- 修倍 MSW handlers 适配新 API + +--- + +## 技术统计 + +``` +总䜓变曎 +- 提亀数51 +- 文件数207 䞪文件变曎 +- 新增+17,297 行 +- 删陀-6,870 行 +- 净增+10,427 行 + +提亀类型分垃 +- fix25 䞪Bug 修倍 +- refactor11 䞪代码重构 +- feat9 䞪新功胜 +- test1 䞪测试 +- 其他5 䞪 + +改劚区域分垃 +- 前端源码112 䞪文件 +- Rust 后端63 䞪文件 +- 测试文件20 䞪文件 +- 囜际化文件3 䞪文件 +``` + +--- + +## 迁移诎明 + +### 从 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) - BUG 修倍和功胜增区 +- 瀟区成员的测试和反銈 + +### 赞助商 + +**智谱AI** - GLM CODING PLAN 赞助商 +[䜿甚歀铟接莭买可享九折䌘惠](https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII) + +**PackyCode** - API 䞭蜬服务合䜜䌙䌎 +[䜿甚 "cc-switch" 䌘惠码泚册享 9 折䌘惠](https://www.packyapi.com/register?aff=cc-switch) + +**闪电诎** - 本地䌘先的 AI 语音蟓入法 +[免莹䞋蜜](https://shandianshuo.cn) Mac/Win 双平台 + +**MiniMax** - MiniMax M2 CODING PLAN 赞助商 +[黑五䌘惠进行䞭套逐9.9元起](https://platform.minimaxi.com/subscribe/coding-plan) + +--- + +## 反銈䞎支持 + +- **问题反銈**[GitHub Issues](https://github.com/farion1231/cc-switch/issues) +- **讚论**[GitHub Discussions](https://github.com/farion1231/cc-switch/discussions) +- **文档**[README](../README_ZH.md) +- **曎新日志**[CHANGELOG.md](../CHANGELOG.md) + +--- + +## 未来展望 + +**v3.9.0 预览**暂定 + +- 本地代理功胜 + +敬请期埅曎倚曎新 + +--- + +**Happy Coding!**