From 5ba682c377ff4d70c26774437ef59f9af3c3e399 Mon Sep 17 00:00:00 2001 From: Peter Dave Hello Date: Fri, 10 Jul 2026 02:41:06 +0800 Subject: [PATCH] Add OpenAI GPT-5.6 alias and tiered model presets Expose the documented alias alongside explicit tiers so users can choose either the stable family entry or a named tier. Reference: - https://developers.openai.com/api/docs/models/gpt-5.6-sol - https://developers.openai.com/api/docs/models/gpt-5.6-terra - https://developers.openai.com/api/docs/models/gpt-5.6-luna --- src/_locales/en/main.json | 4 ++++ src/config/index.mjs | 8 ++++++++ tests/unit/config/config-predicates.test.mjs | 4 ++++ tests/unit/services/apis/openai-token-params.test.mjs | 4 ++++ tests/unit/utils/model-name-convert.test.mjs | 4 ++++ 5 files changed, 24 insertions(+) diff --git a/src/_locales/en/main.json b/src/_locales/en/main.json index 800478fc7..fd34aa442 100644 --- a/src/_locales/en/main.json +++ b/src/_locales/en/main.json @@ -210,6 +210,10 @@ "OpenAI (GPT-5.4 mini)": "OpenAI (GPT-5.4 mini)", "OpenAI (GPT-5.4 nano)": "OpenAI (GPT-5.4 nano)", "OpenAI (GPT-5.5)": "OpenAI (GPT-5.5)", + "OpenAI (GPT-5.6)": "OpenAI (GPT-5.6)", + "OpenAI (GPT-5.6 Sol)": "OpenAI (GPT-5.6 Sol)", + "OpenAI (GPT-5.6 Terra)": "OpenAI (GPT-5.6 Terra)", + "OpenAI (GPT-5.6 Luna)": "OpenAI (GPT-5.6 Luna)", "Anthropic (Claude Sonnet 4.6)": "Anthropic (Claude Sonnet 4.6)", "This provider is still used by other API modes or saved conversations": "This provider is still used by other API modes or saved conversations", "This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.": "This API key is set on the selected custom mode. Editing it here will create a dedicated provider for that mode.", diff --git a/src/config/index.mjs b/src/config/index.mjs index 80d6ece50..d2de3a5e1 100644 --- a/src/config/index.mjs +++ b/src/config/index.mjs @@ -67,6 +67,10 @@ export const chatgptApiModelKeys = [ 'chatgptApi5_4Mini', 'chatgptApi5_4Nano', 'chatgptApi5_5', + 'chatgptApi5_6', + 'chatgptApi5_6Sol', + 'chatgptApi5_6Terra', + 'chatgptApi5_6Luna', 'chatgptApi4oMini', 'chatgptApi4_1', 'chatgptApi4_1_mini', @@ -285,6 +289,10 @@ export const Models = { chatgptApi5_4Mini: { value: 'gpt-5.4-mini', desc: 'OpenAI (GPT-5.4 mini)' }, chatgptApi5_4Nano: { value: 'gpt-5.4-nano', desc: 'OpenAI (GPT-5.4 nano)' }, chatgptApi5_5: { value: 'gpt-5.5', desc: 'OpenAI (GPT-5.5)' }, + chatgptApi5_6: { value: 'gpt-5.6', desc: 'OpenAI (GPT-5.6)' }, + chatgptApi5_6Sol: { value: 'gpt-5.6-sol', desc: 'OpenAI (GPT-5.6 Sol)' }, + chatgptApi5_6Terra: { value: 'gpt-5.6-terra', desc: 'OpenAI (GPT-5.6 Terra)' }, + chatgptApi5_6Luna: { value: 'gpt-5.6-luna', desc: 'OpenAI (GPT-5.6 Luna)' }, chatgptApi4_1: { value: 'gpt-4.1', desc: 'OpenAI (GPT-4.1)' }, chatgptApi4_1_mini: { value: 'gpt-4.1-mini', desc: 'OpenAI (GPT-4.1 mini)' }, diff --git a/tests/unit/config/config-predicates.test.mjs b/tests/unit/config/config-predicates.test.mjs index 19772c40f..a899f31df 100644 --- a/tests/unit/config/config-predicates.test.mjs +++ b/tests/unit/config/config-predicates.test.mjs @@ -43,6 +43,10 @@ const representativeChatgptApiModelNames = [ 'chatgptApi5_4Mini', 'chatgptApi5_4Nano', 'chatgptApi5_5', + 'chatgptApi5_6', + 'chatgptApi5_6Sol', + 'chatgptApi5_6Terra', + 'chatgptApi5_6Luna', ] const representativeGptCompletionApiModelNames = ['gptApiInstruct'] const representativeClaudeApiModelNames = ['claudeOpus48Api', 'claudeSonnet46Api'] diff --git a/tests/unit/services/apis/openai-token-params.test.mjs b/tests/unit/services/apis/openai-token-params.test.mjs index e1bf09e86..7341540aa 100644 --- a/tests/unit/services/apis/openai-token-params.test.mjs +++ b/tests/unit/services/apis/openai-token-params.test.mjs @@ -31,6 +31,10 @@ test('uses max_completion_tokens for recent gpt-5.x model names', () => { 'gpt-5.4-mini', 'gpt-5.4-nano', 'gpt-5.5', + 'gpt-5.6', + 'gpt-5.6-sol', + 'gpt-5.6-terra', + 'gpt-5.6-luna', ] for (const model of models) { diff --git a/tests/unit/utils/model-name-convert.test.mjs b/tests/unit/utils/model-name-convert.test.mjs index 2ca39724e..3bdf3ee83 100644 --- a/tests/unit/utils/model-name-convert.test.mjs +++ b/tests/unit/utils/model-name-convert.test.mjs @@ -516,6 +516,10 @@ test('modelNameToDesc returns desc for GPT-5 stable presets', () => { assert.equal(modelNameToDesc('chatgptApi5_4Mini'), 'OpenAI (GPT-5.4 mini)') assert.equal(modelNameToDesc('chatgptApi5_4Nano'), 'OpenAI (GPT-5.4 nano)') assert.equal(modelNameToDesc('chatgptApi5_5'), 'OpenAI (GPT-5.5)') + assert.equal(modelNameToDesc('chatgptApi5_6'), 'OpenAI (GPT-5.6)') + assert.equal(modelNameToDesc('chatgptApi5_6Sol'), 'OpenAI (GPT-5.6 Sol)') + assert.equal(modelNameToDesc('chatgptApi5_6Terra'), 'OpenAI (GPT-5.6 Terra)') + assert.equal(modelNameToDesc('chatgptApi5_6Luna'), 'OpenAI (GPT-5.6 Luna)') }) test('modelNameToDesc appends extraCustomModelName for customModel', () => {