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) + +CTok +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 +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 +感谢 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",