feat: add real-time TOML validation for Codex config

- Add smol-toml dependency for client-side TOML parsing
- Create useCodexTomlValidation hook with 500ms debounce
- Display validation errors below config.toml textarea
- Trigger validation on onChange for immediate user feedback
- Backend validation remains as fallback for data integrity
This commit is contained in:
Jason
2025-10-16 23:56:30 +08:00
parent 51c68ef192
commit 54b0b3b139
4 changed files with 102 additions and 7 deletions

View File

@@ -33,15 +33,17 @@ interface CodexConfigEditorProps {
authError: string;
isCustomMode?: boolean; // 新增:是否为自定义模式
configError: string; // config.toml 错误提示
onWebsiteUrlChange?: (url: string) => void; // 新增:更新网址回调
isCustomMode?: boolean; // 是否为自定义模式
isTemplateModalOpen?: boolean; // 新增:模态框状态
onWebsiteUrlChange?: (url: string) => void; // 更新网址回调
setIsTemplateModalOpen?: (open: boolean) => void; // 新增:设置模态框状态
isTemplateModalOpen?: boolean; // 模态框状态
onNameChange?: (name: string) => void; // 新增:更新供应商名称回调
setIsTemplateModalOpen?: (open: boolean) => void; // 设置模态框状态
onNameChange?: (name: string) => void; // 更新供应商名称回调
}
const CodexConfigEditor: React.FC<CodexConfigEditorProps> = ({
@@ -67,6 +69,8 @@ const CodexConfigEditor: React.FC<CodexConfigEditorProps> = ({
authError,
configError,
onWebsiteUrlChange,
onNameChange,
@@ -324,6 +328,10 @@ const CodexConfigEditor: React.FC<CodexConfigEditorProps> = ({
data-enable-grammarly="false"
/>
{configError && (
<p className="text-xs text-red-500 dark:text-red-400">{configError}</p>
)}
<p className="text-xs text-gray-500 dark:text-gray-400">
{t("codexConfig.configTomlHint")}
</p>