From 151e43a80824f755cdabbf5b3d37dc6d9c12ae74 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 31 Jan 2026 16:05:50 +0800 Subject: [PATCH] feat(providers): add AICodeMirror partner preset for all apps Register AICodeMirror icon, add i18n partner promotion texts (zh/en/ja), and fix trailing whitespace in codexProviderPresets. --- src/config/claudeProviderPresets.ts | 20 ++++++++++++++++++ src/config/codexProviderPresets.ts | 19 ++++++++++++++++++ src/config/geminiProviderPresets.ts | 23 +++++++++++++++++++++ src/config/opencodeProviderPresets.ts | 29 +++++++++++++++++++++++++++ src/i18n/locales/en.json | 3 ++- src/i18n/locales/ja.json | 3 ++- src/i18n/locales/zh.json | 3 ++- src/icons/extracted/aicodemirror.svg | 19 ++++++++++++++++++ src/icons/extracted/index.ts | 1 + 9 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 src/icons/extracted/aicodemirror.svg diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 6a3fa0145..cb725c74c 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -466,6 +466,26 @@ export const providerPresets: ProviderPreset[] = [ icon: "rc", iconColor: "#E96B2C", }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.aicodemirror.com/api/claudecode", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: [ + "https://api.aicodemirror.com/api/claudecode", + "https://api.claudecode.net.cn/api/claudecode", + ], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "aicodemirror", // 促销信息 i18n key + icon: "aicodemirror", + iconColor: "#000000", + }, { name: "OpenRouter", websiteUrl: "https://openrouter.ai", diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts index 6e46dd03a..d1c897965 100644 --- a/src/config/codexProviderPresets.ts +++ b/src/config/codexProviderPresets.ts @@ -208,6 +208,25 @@ requires_openai_auth = true`, icon: "rc", iconColor: "#E96B2C", }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + auth: generateThirdPartyAuth(""), + config: generateThirdPartyConfig( + "aicodemirror", + "https://api.aicodemirror.com/api/codex/backend-api/codex", + "gpt-5.2", + ), + endpointCandidates: [ + "https://api.aicodemirror.com/api/codex/backend-api/codex", + "https://api.claudecode.net.cn/api/codex/backend-api/codex", + ], + isPartner: true, + partnerPromotionKey: "aicodemirror", + icon: "aicodemirror", + iconColor: "#000000", + }, { name: "OpenRouter", websiteUrl: "https://openrouter.ai", diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts index f868acaa3..ffdc70745 100644 --- a/src/config/geminiProviderPresets.ts +++ b/src/config/geminiProviderPresets.ts @@ -116,6 +116,29 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ icon: "aigocode", iconColor: "#5B7FFF", }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://api.aicodemirror.com/api/gemini", + GEMINI_MODEL: "gemini-3-pro", + }, + }, + baseURL: "https://api.aicodemirror.com/api/gemini", + model: "gemini-3-pro", + description: "AICodeMirror", + category: "third_party", + isPartner: true, + partnerPromotionKey: "aicodemirror", + endpointCandidates: [ + "https://api.aicodemirror.com/api/gemini", + "https://api.claudecode.net.cn/api/gemini", + ], + icon: "aicodemirror", + iconColor: "#000000", + }, { name: "OpenRouter", websiteUrl: "https://openrouter.ai", diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts index 7946c5557..a110c227e 100644 --- a/src/config/opencodeProviderPresets.ts +++ b/src/config/opencodeProviderPresets.ts @@ -701,6 +701,35 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "AICodeMirror", + options: { + baseURL: "https://api.aicodemirror.com/api/claudecode", + apiKey: "", + }, + models: { + "claude-sonnet-4.5": { name: "Claude Sonnet 4.5" }, + "claude-opus-4.5": { name: "Claude Opus 4.5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aicodemirror", + icon: "aicodemirror", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, // ========== 自定义模板 ========== { diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 1353cca85..78634bb2b 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -448,7 +448,8 @@ "dmxapi": "Claude Code exclusive model 66% OFF now!", "cubence": "Cubence is an official partner of CC Switch. Register using this link and enter \"CCSWITCH\" promo code during recharge to get 10% off every top-up", "aigocode": "AIGoCode is an official partner of CC Switch. Register using this link and get 10% bonus credit on your first top-up!", - "rightcode": "RightCode is an official partner of CC Switch. Register using this link and get 5% bonus credit on every top-up!" + "rightcode": "RightCode is an official partner of CC Switch. Register using this link and get 5% bonus credit on every top-up!", + "aicodemirror": "AICodeMirror is an official partner of CC Switch. Register using this link to get 20% off!" }, "parameterConfig": "Parameter Config - {{name}} *", "mainModel": "Main Model (optional)", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index e1a34e857..c3eeb4fc0 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -448,7 +448,8 @@ "dmxapi": "Claude Code 専用モデル 66% OFF 実施中!", "cubence": "Cubence は CC Switch の公式パートナーです。登録後チャージ時に \"CCSWITCH\" を入力すると、毎回 10% オフ", "aigocode": "AIGoCode は CC Switch の公式パートナーです。このリンクから登録すると、初回チャージ時に 10% のボーナスクレジットがもらえます!", - "rightcode": "RightCode は CC Switch の公式パートナーです。このリンクから登録すると、毎回のチャージに 5% のボーナスクレジットがもらえます!" + "rightcode": "RightCode は CC Switch の公式パートナーです。このリンクから登録すると、毎回のチャージに 5% のボーナスクレジットがもらえます!", + "aicodemirror": "AICodeMirror は CC Switch の公式パートナーです。このリンクから登録すると20%オフ!" }, "parameterConfig": "パラメーター設定 - {{name}} *", "mainModel": "メインモデル(任意)", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 1a6a844dc..c10cad3fc 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -448,7 +448,8 @@ "dmxapi": "Claude Code 专属模型 3.4 折优惠进行中!", "cubence": "Cubence 是 CC Switch 的官方合作伙伴,使用此链接注册并在充值时填写 \"CCSWITCH\" 优惠码,每次充值均可享受9折优惠", "aigocode": "AIGoCode 是 CC Switch 的官方合作伙伴,使用此链接注册首次充值时可以获得10%额度奖励!", - "rightcode": "RightCode 是 CC Switch 的官方合作伙伴,使用此链接注册每次充值均可赠送5%额外额度!" + "rightcode": "RightCode 是 CC Switch 的官方合作伙伴,使用此链接注册每次充值均可赠送5%额外额度!", + "aicodemirror": "AICodeMirror 是 CC Switch 的官方合作伙伴,使用此链接注册可享受8折优惠!" }, "parameterConfig": "参数配置 - {{name}} *", "mainModel": "主模型 (可选)", diff --git a/src/icons/extracted/aicodemirror.svg b/src/icons/extracted/aicodemirror.svg new file mode 100644 index 000000000..d4388632a --- /dev/null +++ b/src/icons/extracted/aicodemirror.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts index a2afa85e5..a1edddcb9 100644 --- a/src/icons/extracted/index.ts +++ b/src/icons/extracted/index.ts @@ -2,6 +2,7 @@ // Do not edit manually export const icons: Record = { + aicodemirror: `AICodeMirror`, aigocode: `AiGoCode`, alibaba: `Alibaba`, anthropic: `Anthropic`,