Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/_locales/en/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@
"Anthropic (Claude Sonnet 4)": "Anthropic (Claude Sonnet 4)",
"Anthropic (Claude Sonnet 4.5)": "Anthropic (Claude Sonnet 4.5)",
"Anthropic (Claude Haiku 4.5)": "Anthropic (Claude Haiku 4.5)",
"Anthropic (Claude Haiku 5.5)": "Anthropic (Claude Haiku 5.5)",
Comment thread
PeterDaveHello marked this conversation as resolved.
"OpenAI (GPT-3.5-turbo 1106)": "OpenAI (GPT-3.5-turbo 1106)",
"OpenAI (GPT-3.5-turbo 0125)": "OpenAI (GPT-3.5-turbo 0125)",
"OpenAI (GPT-4-8k 0613)": "OpenAI (GPT-4-8k 0613)",
Expand Down
7 changes: 6 additions & 1 deletion src/config/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export const claudeApiModelKeys = [
'claudeSonnet5Api',
'claudeSonnet55Api',
'claudeHaiku45Api',
'claudeHaiku55Api',
]
export const chatglmApiModelKeys = [
'chatglm52',
Expand Down Expand Up @@ -404,6 +405,10 @@ export const Models = {
value: 'claude-haiku-4-5-20251001',
desc: 'Anthropic (Claude Haiku 4.5)',
},
claudeHaiku55Api: {
value: 'claude-haiku-5-5',
desc: 'Anthropic (Claude Haiku 5.5)',
},

bingFree4: { value: '', desc: 'Bing (Web, GPT-4)' },
bingFreeSydney: { value: '', desc: 'Bing (Web, GPT-4, Sydney)' },
Expand Down Expand Up @@ -785,7 +790,7 @@ export const defaultApiModeIds = [
'claudeFable51Api',
'claudeOpus55Api',
'claudeSonnet55Api',
'claudeHaiku45Api',
'claudeHaiku55Api',
'googleGemini3_1Pro',
'googleGemini3_8Flash',
'mistralMediumLatest',
Expand Down
1 change: 1 addition & 0 deletions src/services/apis/temperature-params.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const MODELS_WITHOUT_CUSTOM_TEMPERATURE = new Set([
'claude-sonnet-5-5',
'claude-opus-5',
'claude-opus-5-5',
'claude-haiku-5-5',
'claude-fable-5',
'claude-fable-5-1',
'gpt-6-astra',
Expand Down
12 changes: 11 additions & 1 deletion tests/unit/config/config-predicates.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ const representativeChatgptApiModelNames = [
'chatgptApi6_1Sol',
]
const representativeGptCompletionApiModelNames = ['gptApiInstruct']
const representativeClaudeApiModelNames = ['claudeOpus48Api', 'claudeSonnet46Api']
const representativeClaudeApiModelNames = [
'claudeOpus48Api',
'claudeSonnet46Api',
'claudeHaiku55Api',
]
const representativeOpenRouterApiModelNames = [
'openRouter_anthropic_claude_sonnet4_6',
'openRouter_openai_gpt_5_5',
Expand Down Expand Up @@ -94,6 +98,12 @@ test('GPT-6 defaults use GPT-6.1 Sol and GPT-6 Luna', () => {
assert.equal(defaultApiModeIds.includes('chatgptApi5_6Luna'), false)
})

test('Claude defaults use Haiku 5.5 and keep Haiku 4.5 selectable', () => {
assert.equal(defaultApiModeIds.includes('claudeHaiku55Api'), true)
assert.equal(defaultApiModeIds.includes('claudeHaiku45Api'), false)
assert.ok(claudeApiModelKeys.includes('claudeHaiku45Api'))
})

test('getNavigatorLanguage returns zh-Hant for zh-TW style locales', () => {
setNavigatorLanguage('zh-TW')
assert.equal(getNavigatorLanguage(), 'zh-Hant')
Expand Down
1 change: 1 addition & 0 deletions tests/unit/services/apis/claude-api.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ test('claude-api: omits temperature for models that reject custom sampling', asy
['claudeOpus55Api', 'claude-opus-5-5'],
['claudeSonnet5Api', 'claude-sonnet-5'],
['claudeSonnet55Api', 'claude-sonnet-5-5'],
['claudeHaiku55Api', 'claude-haiku-5-5'],
]) {
await t.test(modelName, async (t) => {
setStorage({
Expand Down
6 changes: 6 additions & 0 deletions tests/unit/services/apis/temperature-params.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ test('temperature overrides omit known Anthropic models across provider ID forma
'claude-opus-5',
'claude-opus-5-5',
'anthropic/claude-opus-5.5',
'claude-haiku-5-5',
'anthropic/claude-haiku-5.5',
'claude-haiku-5-5-20261007',
'anthropic/claude-haiku-5.5:free',
'claude-fable-5',
'claude-fable-5-1',
'anthropic/claude-fable-5.1',
Expand All @@ -51,6 +55,8 @@ test('temperature overrides omit known Anthropic models across provider ID forma
)
}
assert.equal(canApplyTemperatureOverride('claude-opus-4-6'), true)
assert.equal(canApplyTemperatureOverride('claude-haiku-5-50'), true)
assert.equal(canApplyTemperatureOverride('my-claude-haiku-5-5'), true)
})

test('temperature overrides omit Gemini models with deprecated sampling parameters', () => {
Expand Down
4 changes: 4 additions & 0 deletions tests/unit/utils/model-name-convert.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,10 @@ test('modelNameToDesc returns desc for stable GPT API presets', () => {
assert.equal(modelNameToDesc('chatgptApi6_1Sol'), 'OpenAI (GPT-6.1 Sol)')
})

test('modelNameToDesc returns desc for the Claude Haiku 5.5 API preset', () => {
assert.equal(modelNameToDesc('claudeHaiku55Api'), 'Anthropic (Claude Haiku 5.5)')
})

test('modelNameToDesc appends extraCustomModelName for customModel', () => {
const desc = modelNameToDesc('customModel', null, 'my-gpt')
assert.equal(desc, 'Custom Model (my-gpt)')
Expand Down
Loading