From c460a404dc8faf7231e3f7932d8fdb50bb93d22a Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 16 May 2026 19:49:59 +0800 Subject: [PATCH] Add Claude Desktop official preset - Add Claude Desktop Official to the Claude Desktop preset list. - Treat selected official presets as official mode in the form. - Cover the official preset with a preset-order regression test. --- .../providers/forms/ClaudeDesktopProviderForm.tsx | 4 +++- src/config/claudeDesktopProviderPresets.ts | 15 +++++++++++++++ tests/config/providerPresetOrder.test.ts | 9 +++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/components/providers/forms/ClaudeDesktopProviderForm.tsx b/src/components/providers/forms/ClaudeDesktopProviderForm.tsx index 1f16b9018..f50712297 100644 --- a/src/components/providers/forms/ClaudeDesktopProviderForm.tsx +++ b/src/components/providers/forms/ClaudeDesktopProviderForm.tsx @@ -296,7 +296,6 @@ export function ClaudeDesktopProviderForm({ showButtons = true, }: ClaudeDesktopProviderFormProps) { const { t } = useTranslation(); - const isOfficial = initialData?.category === "official"; const initialMode = initialData?.meta?.claudeDesktopMode ?? "direct"; const [mode, setMode] = useState<"direct" | "proxy">(initialMode); const needsModelMapping = mode === "proxy"; @@ -412,6 +411,9 @@ export function ClaudeDesktopProviderForm({ ); const activeProviderType = activePreset?.providerType ?? initialData?.meta?.providerType; + const isOfficial = + initialData?.category === "official" || + activePreset?.category === "official"; const usesManagedOAuth = activePreset?.requiresOAuth === true || activeProviderType === "github_copilot" || diff --git a/src/config/claudeDesktopProviderPresets.ts b/src/config/claudeDesktopProviderPresets.ts index 3edbc319d..ca3de1718 100644 --- a/src/config/claudeDesktopProviderPresets.ts +++ b/src/config/claudeDesktopProviderPresets.ts @@ -134,6 +134,21 @@ const brandedRoutes = ( }; export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ + { + name: "Claude Desktop Official", + websiteUrl: "https://claude.ai/download", + category: "official", + baseUrl: "", + mode: "direct", + apiFormat: "anthropic", + theme: { + icon: "claude", + backgroundColor: "#D97757", + textColor: "#FFFFFF", + }, + icon: "anthropic", + iconColor: "#D4915D", + }, { name: "Shengsuanyun", nameKey: "providerForm.presets.shengsuanyun", diff --git a/tests/config/providerPresetOrder.test.ts b/tests/config/providerPresetOrder.test.ts index 4de21e906..6f15918ea 100644 --- a/tests/config/providerPresetOrder.test.ts +++ b/tests/config/providerPresetOrder.test.ts @@ -37,6 +37,15 @@ describe("provider preset order", () => { ]); }); + it("Claude Desktop 预设包含官方登录入口", () => { + expect(claudeDesktopProviderPresets[0]).toMatchObject({ + name: "Claude Desktop Official", + category: "official", + baseUrl: "", + mode: "direct", + }); + }); + it("Codex 预设把 PatewayAI 放在胜算云后面", () => { expectInOrder(namesOf(codexProviderPresets), ["Shengsuanyun", "PatewayAI"]); });