diff --git a/src/i18n/resources.ts b/src/i18n/resources.ts index 2f3b00e..17ac135 100644 --- a/src/i18n/resources.ts +++ b/src/i18n/resources.ts @@ -602,6 +602,7 @@ export const zhCN = { 'agents.oauthLoginRequired.launchDescription': '已开启 OAuth 配置模式,但未检测到有效的 Codex 登录凭据。请先在 Codex 中登录 ChatGPT 账号,然后再启动。', 'agents.oauthLoginRequired.confirm': '我知道了', 'agents.modify.apply': '应用配置修改', + 'agents.modify.update': '更新配置', 'agents.modify.close': '关闭配置修改', 'agents.modify.default': '默认配置', 'agents.modify.clear': '清空配置', @@ -1560,6 +1561,7 @@ export const en: Record = { 'agents.oauthLoginRequired.launchDescription': 'OAuth configuration mode is enabled, but no valid Codex sign-in credentials were found. Sign in to your ChatGPT account in Codex before launching it.', 'agents.oauthLoginRequired.confirm': 'Got it', 'agents.modify.apply': 'Apply Configuration Changes', + 'agents.modify.update': 'Update Configuration', 'agents.modify.close': 'Close Configuration Changes', 'agents.modify.default': 'Default Configuration', 'agents.modify.clear': 'Clear Configuration', diff --git a/src/pages/AgentsPage.tsx b/src/pages/AgentsPage.tsx index 724ae45..a930831 100644 --- a/src/pages/AgentsPage.tsx +++ b/src/pages/AgentsPage.tsx @@ -119,10 +119,16 @@ const createClaudeModelMappings = (model: string): ClaudeModelMappings => ({ haiku: model, }); +const sameAgentModel = (left: string, right: string) => ( + left.trim().toLocaleLowerCase() === right.trim().toLocaleLowerCase() +); + const sameClaudeModelMappings = ( left: ClaudeModelMappings, right: ClaudeModelMappings, -) => left.opus === right.opus && left.sonnet === right.sonnet && left.haiku === right.haiku; +) => sameAgentModel(left.opus, right.opus) + && sameAgentModel(left.sonnet, right.sonnet) + && sameAgentModel(left.haiku, right.haiku); const claudeMappingRoles = [ { @@ -738,7 +744,7 @@ export function AgentsPage() { const modelDraftChanged = !isClaudeModelMappingClient && Boolean( selectedModel.trim() && appliedModel.trim() - && selectedModel.trim() !== appliedModel.trim(), + && !sameAgentModel(selectedModel, appliedModel), ); const appliedClaudeModelMappings = (selected === 'claude-code' ? activeStatus?.claudeCodeModelMappings @@ -757,6 +763,8 @@ export function AgentsPage() { const oauthConfigurationChanged = selected === 'codex' && oauthConfiguration !== Boolean(activeStatus?.oauthConfiguration); const draftChanged = modelDraftChanged || claudeMappingDraftChanged || oauthConfigurationChanged; + const configurationUpdateRequired = activeStatus?.modificationState === 'applied' + && draftChanged; const canEnable = Boolean( activeStatus?.supportedPlatform && activeStatus.installed @@ -1446,20 +1454,26 @@ export function AgentsPage() {