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
This commit is contained in:
YoVinchen
2026-01-12 14:40:04 +08:00
parent b19a0ef705
commit 8506522e26
5 changed files with 67 additions and 0 deletions
+24
View File
@@ -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({
/>
</AccordionContent>
</AccordionItem>
<AccordionItem
value="rectifier"
className="rounded-xl glass-card overflow-hidden"
>
<AccordionTrigger className="px-6 py-4 hover:no-underline hover:bg-muted/50 data-[state=open]:bg-muted/50">
<div className="flex items-center gap-3">
<Zap className="h-5 w-5 text-purple-500" />
<div className="text-left">
<h3 className="text-base font-semibold">
{t("settings.advanced.rectifier.title")}
</h3>
<p className="text-sm text-muted-foreground font-normal">
{t("settings.advanced.rectifier.description")}
</p>
</div>
</div>
</AccordionTrigger>
<AccordionContent className="px-6 pb-6 pt-4 border-t border-border/50">
<RectifierConfigPanel />
</AccordionContent>
</AccordionItem>
</Accordion>
<div className="pt-4">
+10
View File
@@ -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",
+10
View File
@@ -186,6 +186,16 @@
"data": {
"title": "データ管理",
"description": "設定のインポート/エクスポートとバックアップ/復元"
},
"rectifier": {
"title": "整流器",
"description": "API リクエストの互換性問題を自動修正",
"enabled": "整流器を有効化",
"enabledDescription": "マスタースイッチ、オフにするとすべての整流機能が無効になります",
"requestGroup": "リクエスト整流",
"responseGroup": "レスポンス整流",
"thinkingSignature": "Thinking 署名整流",
"thinkingSignatureDescription": "Claude API の thinking 署名検証エラーを自動修正"
}
},
"language": "言語",
+10
View File
@@ -186,6 +186,16 @@
"data": {
"title": "数据管理",
"description": "导入导出配置与备份恢复"
},
"rectifier": {
"title": "整流器",
"description": "自动修复 API 请求中的兼容性问题",
"enabled": "启用整流器",
"enabledDescription": "总开关,关闭后所有整流功能将被禁用",
"requestGroup": "请求整流",
"responseGroup": "响应整流",
"thinkingSignature": "Thinking 签名整流",
"thinkingSignatureDescription": "自动修复 Claude API 中因 thinking 签名校验失败导致的请求错误"
}
},
"language": "界面语言",
+13
View File
@@ -134,4 +134,17 @@ export const settingsApi = {
> {
return await invoke("get_tool_versions");
},
async getRectifierConfig(): Promise<RectifierConfig> {
return await invoke("get_rectifier_config");
},
async setRectifierConfig(config: RectifierConfig): Promise<boolean> {
return await invoke("set_rectifier_config", { config });
},
};
export interface RectifierConfig {
enabled: boolean;
requestThinkingSignature: boolean;
}