From 0c25687e0921b2e470208d79d4904b63adbb0a29 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 29 Jan 2026 10:52:13 +0800 Subject: [PATCH] fix(claude): improve backward compatibility for openrouter_compat_mode Extend backward compatibility support for legacy openrouter_compat_mode field: - Support number type (1 = enabled, 0 = disabled) - Support string type ("true"/"1" = enabled) - Add corresponding test cases for number and string types --- src-tauri/src/proxy/providers/claude.rs | 18 ++++++++++++++++++ .../providers/forms/ProviderForm.tsx | 16 +++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/proxy/providers/claude.rs b/src-tauri/src/proxy/providers/claude.rs index 26a061587..3d6fbb1f9 100644 --- a/src-tauri/src/proxy/providers/claude.rs +++ b/src-tauri/src/proxy/providers/claude.rs @@ -517,6 +517,24 @@ mod tests { })); assert!(adapter.needs_transform(&legacy_compat_enabled)); + // Backward compatibility: openrouter_compat_mode=1 should enable transform + let legacy_compat_enabled_num = create_provider(json!({ + "env": { + "ANTHROPIC_BASE_URL": "https://api.example.com" + }, + "openrouter_compat_mode": 1 + })); + assert!(adapter.needs_transform(&legacy_compat_enabled_num)); + + // Backward compatibility: openrouter_compat_mode="true" should enable transform + let legacy_compat_enabled_str = create_provider(json!({ + "env": { + "ANTHROPIC_BASE_URL": "https://api.example.com" + }, + "openrouter_compat_mode": "true" + })); + assert!(adapter.needs_transform(&legacy_compat_enabled_str)); + // Backward compatibility: openrouter_compat_mode=false should not enable transform let legacy_compat_disabled = create_provider(json!({ "env": { diff --git a/src/components/providers/forms/ProviderForm.tsx b/src/components/providers/forms/ProviderForm.tsx index a77a8a48e..5db010150 100644 --- a/src/components/providers/forms/ProviderForm.tsx +++ b/src/components/providers/forms/ProviderForm.tsx @@ -292,9 +292,19 @@ export function ProviderForm({ try { const config = JSON.parse(settingsConfigValue || "{}"); const format = config?.api_format; - if (format === "openai_chat") return "openai_chat"; - // Backward compatibility: if old openrouter_compat_mode is true, treat as openai_chat - if (config?.openrouter_compat_mode === true) return "openai_chat"; + if (typeof format === "string") { + return format === "openai_chat" ? "openai_chat" : "anthropic"; + } + + // Backward compatibility: old openrouter_compat_mode (bool/number/string) + const raw = config?.openrouter_compat_mode; + if (typeof raw === "boolean") return raw ? "openai_chat" : "anthropic"; + if (typeof raw === "number") return raw !== 0 ? "openai_chat" : "anthropic"; + if (typeof raw === "string") { + const normalized = raw.trim().toLowerCase(); + if (normalized === "true" || normalized === "1") return "openai_chat"; + return "anthropic"; + } } catch { // ignore }