From 8506522e269e223046cb47be63f95259efce93d6 Mon Sep 17 00:00:00 2001 From: YoVinchen Date: Mon, 12 Jan 2026 14:40:04 +0800 Subject: [PATCH] feat(ui): add rectifier config panel in advanced settings - Add RectifierConfigPanel component with master switch and thinking signature toggle - Add API wrapper for rectifier config - Add i18n translations for zh/en/ja --- src/components/settings/SettingsPage.tsx | 24 ++++++++++++++++++++++++ src/i18n/locales/en.json | 10 ++++++++++ src/i18n/locales/ja.json | 10 ++++++++++ src/i18n/locales/zh.json | 10 ++++++++++ src/lib/api/settings.ts | 13 +++++++++++++ 5 files changed, 67 insertions(+) diff --git a/src/components/settings/SettingsPage.tsx b/src/components/settings/SettingsPage.tsx index 5f5c725c2..ac9884f51 100644 --- a/src/components/settings/SettingsPage.tsx +++ b/src/components/settings/SettingsPage.tsx @@ -9,6 +9,7 @@ import { Database, Server, ChevronDown, + Zap, } from "lucide-react"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; import { toast } from "sonner"; @@ -40,6 +41,7 @@ import { ModelTestConfigPanel } from "@/components/usage/ModelTestConfigPanel"; import { AutoFailoverConfigPanel } from "@/components/proxy/AutoFailoverConfigPanel"; import { FailoverQueueManager } from "@/components/proxy/FailoverQueueManager"; import { UsageDashboard } from "@/components/usage/UsageDashboard"; +import { RectifierConfigPanel } from "@/components/settings/RectifierConfigPanel"; import { useSettings } from "@/hooks/useSettings"; import { useImportExport } from "@/hooks/useImportExport"; import { useTranslation } from "react-i18next"; @@ -526,6 +528,28 @@ export function SettingsPage({ /> + + + +
+ +
+

+ {t("settings.advanced.rectifier.title")} +

+

+ {t("settings.advanced.rectifier.description")} +

+
+
+
+ + + +
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 8923534fb..ebf4d7b2b 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -186,6 +186,16 @@ "data": { "title": "Data Management", "description": "Import/export configurations and backup/restore" + }, + "rectifier": { + "title": "Rectifier", + "description": "Automatically fix API request compatibility issues", + "enabled": "Enable Rectifier", + "enabledDescription": "Master switch, all rectification features will be disabled when turned off", + "requestGroup": "Request Rectification", + "responseGroup": "Response Rectification", + "thinkingSignature": "Thinking Signature Rectification", + "thinkingSignatureDescription": "Automatically fix Claude API errors caused by thinking signature validation failures" } }, "language": "Language", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index badc04b91..b71ad78fe 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -186,6 +186,16 @@ "data": { "title": "データ管理", "description": "設定のインポート/エクスポートとバックアップ/復元" + }, + "rectifier": { + "title": "整流器", + "description": "API リクエストの互換性問題を自動修正", + "enabled": "整流器を有効化", + "enabledDescription": "マスタースイッチ、オフにするとすべての整流機能が無効になります", + "requestGroup": "リクエスト整流", + "responseGroup": "レスポンス整流", + "thinkingSignature": "Thinking 署名整流", + "thinkingSignatureDescription": "Claude API の thinking 署名検証エラーを自動修正" } }, "language": "言語", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index d7011167c..9e6245077 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -186,6 +186,16 @@ "data": { "title": "数据管理", "description": "导入导出配置与备份恢复" + }, + "rectifier": { + "title": "整流器", + "description": "自动修复 API 请求中的兼容性问题", + "enabled": "启用整流器", + "enabledDescription": "总开关,关闭后所有整流功能将被禁用", + "requestGroup": "请求整流", + "responseGroup": "响应整流", + "thinkingSignature": "Thinking 签名整流", + "thinkingSignatureDescription": "自动修复 Claude API 中因 thinking 签名校验失败导致的请求错误" } }, "language": "界面语言", diff --git a/src/lib/api/settings.ts b/src/lib/api/settings.ts index b6428a0f7..1f1e6e0af 100644 --- a/src/lib/api/settings.ts +++ b/src/lib/api/settings.ts @@ -134,4 +134,17 @@ export const settingsApi = { > { return await invoke("get_tool_versions"); }, + + async getRectifierConfig(): Promise { + return await invoke("get_rectifier_config"); + }, + + async setRectifierConfig(config: RectifierConfig): Promise { + return await invoke("set_rectifier_config", { config }); + }, }; + +export interface RectifierConfig { + enabled: boolean; + requestThinkingSignature: boolean; +}