From af60c7ed2c481ff6469e9a506a10cf3bed4f6380 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 28 May 2026 11:57:54 +0800 Subject: [PATCH] feat(codex): add remote compaction toggle for third-party providers Write model_providers name as "OpenAI" to let Codex attempt remote compaction through compatible endpoints. Hidden for official providers. --- .../providers/forms/CodexConfigEditor.tsx | 8 ++ .../providers/forms/CodexConfigSections.tsx | 38 +++++++ .../providers/forms/ProviderForm.tsx | 2 + src/i18n/locales/en.json | 2 + src/i18n/locales/ja.json | 2 + src/i18n/locales/zh-TW.json | 2 + src/i18n/locales/zh.json | 2 + src/utils/providerConfigUtils.test.ts | 52 +++++++++ src/utils/providerConfigUtils.ts | 107 ++++++++++++++++++ 9 files changed, 215 insertions(+) create mode 100644 src/utils/providerConfigUtils.test.ts diff --git a/src/components/providers/forms/CodexConfigEditor.tsx b/src/components/providers/forms/CodexConfigEditor.tsx index e4523701f..a7a375292 100644 --- a/src/components/providers/forms/CodexConfigEditor.tsx +++ b/src/components/providers/forms/CodexConfigEditor.tsx @@ -7,6 +7,10 @@ interface CodexConfigEditorProps { configValue: string; + providerName?: string; + + showRemoteCompaction?: boolean; + onAuthChange: (value: string) => void; onConfigChange: (value: string) => void; @@ -37,6 +41,8 @@ interface CodexConfigEditorProps { const CodexConfigEditor: React.FC = ({ authValue, configValue, + providerName, + showRemoteCompaction, onAuthChange, onConfigChange, onAuthBlur, @@ -72,6 +78,8 @@ const CodexConfigEditor: React.FC = ({ setIsCommonConfigModalOpen(true)} diff --git a/src/components/providers/forms/CodexConfigSections.tsx b/src/components/providers/forms/CodexConfigSections.tsx index 7fbd9fd2f..ddfeada52 100644 --- a/src/components/providers/forms/CodexConfigSections.tsx +++ b/src/components/providers/forms/CodexConfigSections.tsx @@ -12,7 +12,9 @@ import { useTranslation } from "react-i18next"; import JsonEditor from "@/components/JsonEditor"; import { isCodexGoalModeEnabled, + isCodexRemoteCompactionEnabled, setCodexGoalMode, + setCodexRemoteCompaction, } from "@/utils/providerConfigUtils"; /* import { @@ -98,6 +100,8 @@ export const CodexAuthSection: React.FC = ({ interface CodexConfigSectionProps { value: string; onChange: (value: string) => void; + providerName?: string; + showRemoteCompaction?: boolean; useCommonConfig: boolean; onCommonConfigToggle: (checked: boolean) => void; onEditCommonConfig: () => void; @@ -111,6 +115,8 @@ interface CodexConfigSectionProps { export const CodexConfigSection: React.FC = ({ value, onChange, + providerName, + showRemoteCompaction = true, useCommonConfig, onCommonConfigToggle, onEditCommonConfig, @@ -157,6 +163,10 @@ export const CodexConfigSection: React.FC = ({ () => isCodexGoalModeEnabled(localValue), [localValue], ); + const remoteCompactionEnabled = useMemo( + () => isCodexRemoteCompactionEnabled(localValue), + [localValue], + ); const handleGoalModeToggle = useCallback( (checked: boolean) => { @@ -165,6 +175,19 @@ export const CodexConfigSection: React.FC = ({ [handleLocalChange], ); + const handleRemoteCompactionToggle = useCallback( + (checked: boolean) => { + handleLocalChange( + setCodexRemoteCompaction( + localValueRef.current || "", + checked, + providerName, + ), + ); + }, + [handleLocalChange, providerName], + ); + // Codex 1M 上下文相关状态/回调暂时禁用——见同文件下方 JSX 注释处的恢复说明。 /* // Parse toggle states from TOML text @@ -257,6 +280,21 @@ export const CodexConfigSection: React.FC = ({ {t("codexConfig.enableGoalMode")} + {showRemoteCompaction && ( + + )} +