diff --git a/CHANGELOG.md b/CHANGELOG.md
index cb88ed10c..4c07a0c5f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
---
+## [3.12.1] - 2026-03-11
+
+### Patch Release
+
+Stability-focused patch release fixing the Common Config modal infinite reopen loop, a WebDAV sync foreign key constraint failure, several i18n interpolation issues, and a Windows toolbar compact mode bug. Also adds **StepFun** provider presets, **OpenClaw input type selection**, and welcomes three new sponsor partners.
+
+**Stats**: 16 commits | 51 files changed | +1,182 insertions | -359 deletions
+
+### Added
+
+#### Provider Presets
+
+- **StepFun**: Added StepFun (阶跃星辰) provider presets including the step-3.5-flash model across supported applications (#1369)
+
+#### OpenClaw Enhancements
+
+- **Input Type Selection**: Added input type selection dropdown for model Advanced Options in OpenClaw configuration form (#1368)
+
+#### Sponsor Partners
+
+- **Micu API**: Added Micu API as sponsor partner with affiliate links
+- **XCodeAPI**: Added XCodeAPI as sponsor partner
+- **SiliconFlow**: Added SiliconFlow (硅基流动) as sponsor partner with affiliate links
+
+### Changed
+
+- **UCloud → Compshare**: Renamed UCloud provider to Compshare (优云智算) with full i18n support across all three locales (EN/ZH/JA)
+- **Compshare Links**: Updated Compshare sponsor registration links to coding-plan page
+
+### Fixed
+
+#### Common Config & UI
+
+- **Common Config Modal Loop**: Fixed an infinite reopen loop in the Common Config modal and added draft editing support to prevent data loss during edits
+- **Toolbar Compact Mode (Windows)**: Fixed toolbar compact mode not triggering on Windows due to left-side overflow (#1375)
+- **Session Search Index**: Fixed session search index not syncing with query data, causing stale list display after session deletion
+
+#### Sync & Data
+
+- **WebDAV Provider Health FK**: Fixed foreign key constraint failure when restoring `provider_health` table during WebDAV sync
+
+#### Provider & Preset
+
+- **Longcat authHeader**: Added missing `authHeader: true` to Longcat provider preset (#1377)
+- **OpenClaw Tool Permissions**: Aligned OpenClaw tool permission profiles with upstream schema (#1355)
+- **X-Code API URL**: Corrected X-Code API URL from `www.x-code.cn` to `x-code.cc`
+
+#### i18n & Localization
+
+- **Stream Check Toast**: Fixed stream check toast i18n interpolation keys not matching translation placeholders
+- **Proxy Startup Toast**: Fixed proxy startup toast not interpolating address and port values (#1399)
+
+---
+
## [3.12.0] - 2026-03-09
### Feature Release
diff --git a/README.md b/README.md
index 6dee6fdce..a258b1d96 100644
--- a/README.md
+++ b/README.md
@@ -95,6 +95,11 @@ Claude Code / Codex / Gemini official channels at 38% / 2% / 9% of original pric
Thanks to XCodeAPI for sponsoring this project! XCodeAPI offers a special benefit for CC Switch users: register via this link and get an extra 10% credit bonus on your first order! (Contact the site admin to claim)
+
+
+Thanks to CTok.ai for sponsoring this project! CTok.ai is dedicated to building a one-stop AI programming tool service platform. We offer professional Claude Code packages and technical community services, with support for Google Gemini and OpenAI Codex. Through carefully designed plans and a professional tech community, we provide developers with reliable service guarantees and continuous technical support, making AI-assisted programming a true productivity tool. Click here to register!
+
+
diff --git a/README_JA.md b/README_JA.md
index e9fac8da5..58a60ea04 100644
--- a/README_JA.md
+++ b/README_JA.md
@@ -95,6 +95,11 @@ Claude Code / Codex / Gemini 公式チャンネルが最安で元価格の 38% /
XCodeAPI のご支援に感謝します!CC Switch ユーザー向けの特別特典:こちらのリンク から登録すると、初回注文で 10% の追加クレジットボーナスがもらえます!(サイト管理者に連絡して受け取りください)
+
+
+CTok.ai のご支援に感謝します!CTok.ai はワンストップ AI プログラミングツールサービスプラットフォームの構築に取り組んでいます。Claude Code のプロフェッショナルプランと技術コミュニティサービスを提供し、Google Gemini や OpenAI Codex にも対応しています。丁寧に設計されたプランと専門的な技術コミュニティを通じて、開発者に安定したサービス保証と継続的な技術サポートを提供し、AI アシストプログラミングを真の生産性ツールにします。こちら から登録してください!
+
+
diff --git a/README_ZH.md b/README_ZH.md
index 2201f7938..20d16020e 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -96,6 +96,11 @@ Claude Code / Codex / Gemini 官方渠道低至 3.8 / 0.2 / 0.9 折,充值更
感谢 XCodeAPI 赞助了本项目!XCodeAPI 为本软件的用户提供特别福利,使用此链接 注册后首单加赠10%的额度!(联系站长领取)
+
+
+感谢 CTok.ai 赞助了本项目!CTok.ai 致力于打造一站式 AI 编程工具服务平台。我们提供 Claude Code 专业套餐及技术社群服务,同时支持 Google Gemini 和 OpenAI Codex。通过精心设计的套餐方案和专业的技术社群,为开发者提供稳定的服务保障和持续的技术支持,让 AI 辅助编程真正成为开发者的生产力工具。点击这里 注册!
+
+
diff --git a/assets/partners/logos/ctok.png b/assets/partners/logos/ctok.png
new file mode 100644
index 000000000..cf6fcf170
Binary files /dev/null and b/assets/partners/logos/ctok.png differ
diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts
index 38c32fd7f..e3f16d3bf 100644
--- a/src/config/claudeProviderPresets.ts
+++ b/src/config/claudeProviderPresets.ts
@@ -626,6 +626,22 @@ export const providerPresets: ProviderPreset[] = [
icon: "x-code",
iconColor: "#000000",
},
+ {
+ name: "CTok.ai",
+ websiteUrl: "https://ctok.ai",
+ apiKeyUrl: "https://ctok.ai",
+ settingsConfig: {
+ env: {
+ ANTHROPIC_BASE_URL: "https://api.ctok.ai",
+ ANTHROPIC_AUTH_TOKEN: "",
+ },
+ },
+ category: "third_party",
+ isPartner: true, // 合作伙伴
+ partnerPromotionKey: "ctok", // 促销信息 i18n key
+ icon: "ctok",
+ iconColor: "#000000",
+ },
{
name: "OpenRouter",
websiteUrl: "https://openrouter.ai",
diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts
index ffefe2fee..dd0a687fe 100644
--- a/src/config/codexProviderPresets.ts
+++ b/src/config/codexProviderPresets.ts
@@ -334,6 +334,23 @@ requires_openai_auth = true`,
icon: "x-code",
iconColor: "#000000",
},
+ {
+ name: "CTok.ai",
+ websiteUrl: "https://ctok.ai",
+ apiKeyUrl: "https://ctok.ai",
+ auth: generateThirdPartyAuth(""),
+ config: generateThirdPartyConfig(
+ "ctok",
+ "https://api.ctok.ai/v1",
+ "gpt-5.4",
+ ),
+ endpointCandidates: ["https://api.ctok.ai/v1"],
+ category: "third_party",
+ isPartner: true, // 合作伙伴
+ partnerPromotionKey: "ctok", // 促销信息 i18n key
+ icon: "ctok",
+ iconColor: "#000000",
+ },
{
name: "OpenRouter",
websiteUrl: "https://openrouter.ai",
diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts
index 587bcf658..aaff2e257 100644
--- a/src/config/geminiProviderPresets.ts
+++ b/src/config/geminiProviderPresets.ts
@@ -57,11 +57,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://www.packyapi.com",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://www.packyapi.com",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "PackyCode",
category: "third_party",
isPartner: true,
@@ -79,11 +79,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://api.cubence.com",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://api.cubence.com",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "Cubence",
category: "third_party",
isPartner: true,
@@ -104,11 +104,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://api.aigocode.com",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://api.aigocode.com",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "AIGoCode",
category: "third_party",
isPartner: true,
@@ -124,11 +124,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://api.aicodemirror.com/api/gemini",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://api.aicodemirror.com/api/gemini",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "AICodeMirror",
category: "third_party",
isPartner: true,
@@ -147,11 +147,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://api.aicoding.sh",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://api.aicoding.sh",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "AICoding",
category: "third_party",
isPartner: true,
@@ -167,11 +167,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://crazyrouter.com",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://crazyrouter.com",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "CrazyRouter",
category: "third_party",
isPartner: true,
@@ -187,11 +187,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://node-hk.sssaicode.com/api",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://node-hk.sssaicode.com/api",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "SSSAiCode",
category: "third_party",
isPartner: true,
@@ -204,6 +204,26 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
icon: "sssaicode",
iconColor: "#000000",
},
+ {
+ name: "CTok.ai",
+ websiteUrl: "https://ctok.ai",
+ apiKeyUrl: "https://ctok.ai",
+ settingsConfig: {
+ env: {
+ GOOGLE_GEMINI_BASE_URL: "https://api.ctok.ai/v1beta",
+ GEMINI_MODEL: "gemini-3.1-pro",
+ },
+ },
+ baseURL: "https://api.ctok.ai/v1beta",
+ model: "gemini-3.1-pro",
+ description: "CTok",
+ category: "third_party",
+ isPartner: true,
+ partnerPromotionKey: "ctok",
+ endpointCandidates: ["https://api.ctok.ai/v1beta"],
+ icon: "ctok",
+ iconColor: "#000000",
+ },
{
name: "OpenRouter",
websiteUrl: "https://openrouter.ai",
@@ -211,11 +231,11 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "https://openrouter.ai/api",
- GEMINI_MODEL: "gemini-3-pro-preview",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
baseURL: "https://openrouter.ai/api",
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "OpenRouter",
category: "aggregator",
icon: "openrouter",
@@ -227,10 +247,10 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [
settingsConfig: {
env: {
GOOGLE_GEMINI_BASE_URL: "",
- GEMINI_MODEL: "gemini-3-pro",
+ GEMINI_MODEL: "gemini-3.1-pro",
},
},
- model: "gemini-3-pro",
+ model: "gemini-3.1-pro",
description: "自定义 Gemini API 端点",
category: "custom",
},
diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts
index 6ba980900..5ec7c8b16 100644
--- a/src/config/openclawProviderPresets.ts
+++ b/src/config/openclawProviderPresets.ts
@@ -1342,6 +1342,44 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [
},
},
},
+ {
+ name: "CTok.ai",
+ websiteUrl: "https://ctok.ai",
+ apiKeyUrl: "https://ctok.ai",
+ settingsConfig: {
+ baseUrl: "https://api.ctok.ai",
+ apiKey: "",
+ api: "anthropic-messages",
+ models: [
+ {
+ id: "claude-opus-4-6",
+ name: "Claude Opus 4.6",
+ contextWindow: 200000,
+ cost: { input: 5, output: 25 },
+ },
+ ],
+ },
+ category: "third_party",
+ isPartner: true,
+ partnerPromotionKey: "ctok",
+ icon: "ctok",
+ iconColor: "#000000",
+ templateValues: {
+ apiKey: {
+ label: "API Key",
+ placeholder: "",
+ editorValue: "",
+ },
+ },
+ suggestedDefaults: {
+ model: {
+ primary: "ctok/claude-opus-4-6",
+ },
+ modelCatalog: {
+ "ctok/claude-opus-4-6": { alias: "Opus" },
+ },
+ },
+ },
// ========== Cloud Providers ==========
{
name: "AWS Bedrock",
diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts
index 6cee0dd37..d7ae3ac6a 100644
--- a/src/config/opencodeProviderPresets.ts
+++ b/src/config/opencodeProviderPresets.ts
@@ -1175,6 +1175,35 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [
},
},
},
+ {
+ name: "CTok.ai",
+ websiteUrl: "https://ctok.ai",
+ apiKeyUrl: "https://ctok.ai",
+ settingsConfig: {
+ npm: "@ai-sdk/anthropic",
+ name: "CTok",
+ options: {
+ baseURL: "https://api.ctok.ai/v1",
+ apiKey: "",
+ },
+ models: {
+ "claude-opus-4-6": { name: "Claude Opus 4.6" },
+ "claude-sonnet-4-6": { name: "Claude Sonnet 4.6" },
+ },
+ },
+ category: "third_party",
+ isPartner: true,
+ partnerPromotionKey: "ctok",
+ icon: "ctok",
+ iconColor: "#000000",
+ templateValues: {
+ apiKey: {
+ label: "API Key",
+ placeholder: "",
+ editorValue: "",
+ },
+ },
+ },
{
name: "AWS Bedrock",
websiteUrl: "https://aws.amazon.com/bedrock/",
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 70fe4fba0..b71e0e284 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -708,7 +708,8 @@
"siliconflow": "SiliconFlow is an official partner of CC Switch",
"ucloud": "Compshare offers an exclusive bonus for CC Switch users — register via this link to get ¥5 platform trial credit!",
"micu": "Micu is an official partner of CC Switch",
- "x-code": "XCodeAPI offers a special bonus for CC Switch users — register via this link and get 10% extra credit on your first order (contact admin to claim)"
+ "x-code": "XCodeAPI offers a special bonus for CC Switch users — register via this link and get 10% extra credit on your first order (contact admin to claim)",
+ "ctok": "Join the CTok community on the official website and subscribe to a plan."
},
"presets": {
"ucloud": "Compshare"
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index 3ecc33191..8c8c12527 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -708,7 +708,8 @@
"siliconflow": "SiliconFlow は CC Switch の公式パートナーです",
"ucloud": "Compshare は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、5元のプラットフォーム体験クレジットがもらえます!",
"micu": "Micu は CC Switch の公式パートナーです",
- "x-code": "XCodeAPI は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、初回注文で 10% の追加クレジットがもらえます(管理者に連絡して受け取り)"
+ "x-code": "XCodeAPI は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、初回注文で 10% の追加クレジットがもらえます(管理者に連絡して受け取り)",
+ "ctok": "公式サイトで CTok コミュニティに参加し、プランを購読してください。"
},
"presets": {
"ucloud": "Compshare"
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json
index 44d1cb947..492a9c407 100644
--- a/src/i18n/locales/zh.json
+++ b/src/i18n/locales/zh.json
@@ -708,7 +708,8 @@
"siliconflow": "硅基流动是 CC Switch 的官方合作伙伴",
"ucloud": "优云智算为CC Switch 的用户提供了特殊优惠,通过此链接注册,可以获得五元平台体验金!",
"micu": "Micu 是 CC Switch 的官方合作伙伴",
- "x-code": "XCodeAPI 为CC Switch 的用户提供特别福利,使用此链接注册后首单加赠10%的额度(联系站长领取)"
+ "x-code": "XCodeAPI 为CC Switch 的用户提供特别福利,使用此链接注册后首单加赠10%的额度(联系站长领取)",
+ "ctok": "官网加入CTok社群,订阅套餐。"
},
"presets": {
"ucloud": "优云智算"
diff --git a/src/icons/extracted/ctok.svg b/src/icons/extracted/ctok.svg
new file mode 100644
index 000000000..ee178c83d
--- /dev/null
+++ b/src/icons/extracted/ctok.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts
index 4a2bb734e..7d93870d7 100644
--- a/src/icons/extracted/index.ts
+++ b/src/icons/extracted/index.ts
@@ -16,6 +16,7 @@ export const icons: Record = {
cloudflare: `Cloudflare `,
cohere: `Cohere `,
copilot: `Copilot `,
+ ctok: `CTok `,
crazyrouter: `CrazyRouter `,
cubence: `Cubence `,
deepseek: `DeepSeek `,
diff --git a/src/icons/extracted/metadata.ts b/src/icons/extracted/metadata.ts
index 4505a5d3d..705cf1c92 100644
--- a/src/icons/extracted/metadata.ts
+++ b/src/icons/extracted/metadata.ts
@@ -93,6 +93,13 @@ export const iconMetadata: Record = {
keywords: [],
defaultColor: "currentColor",
},
+ ctok: {
+ name: "ctok",
+ displayName: "CTok",
+ category: "ai-provider",
+ keywords: ["ctok", "ai", "programming"],
+ defaultColor: "#3B82F6",
+ },
cubence: {
name: "cubence",
displayName: "Cubence",