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 @@ -195,6 +195,7 @@
"Anthropic (Claude Opus 4.5)": "Anthropic (Claude Opus 4.5)",
"Anthropic (Claude Opus 4.6)": "Anthropic (Claude Opus 4.6)",
"Anthropic (Claude Opus 4.8)": "Anthropic (Claude Opus 4.8)",
"Anthropic (Claude Opus 5)": "Anthropic (Claude Opus 5)",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Propagate the new model label to every locale

When any of the 12 non-English locales is active, this new key is absent from that locale's catalog and only renders through the English fallback. Add the label to each existing locale as required for newly introduced English strings.

AGENTS.md reference: AGENTS.md:L209-L215

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No change needed. Commit 1c976a3 intentionally removed redundant model labels from non-English locales because i18next falls back to English. Only labels with actual localization differences are kept, so the English entry is sufficient here.

"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)",
Expand Down
7 changes: 6 additions & 1 deletion src/config/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export const claudeApiModelKeys = [
'claudeOpus46Api',
'claudeOpus47Api',
'claudeOpus48Api',
'claudeOpus5Api',
'claudeSonnet45Api',
'claudeSonnet46Api',
'claudeSonnet5Api',
Expand Down Expand Up @@ -364,6 +365,10 @@ export const Models = {
value: 'claude-opus-4-8',
desc: 'Anthropic (Claude Opus 4.8)',
},
claudeOpus5Api: {
value: 'claude-opus-5',
desc: 'Anthropic (Claude Opus 5)',
},
claudeSonnet45Api: {
value: 'claude-sonnet-4-5-20250929',
desc: 'Anthropic (Claude Sonnet 4.5)',
Expand Down Expand Up @@ -750,7 +755,7 @@ export const defaultApiModeIds = [
'chatgptApi5_6Terra',
'chatgptApi5_6Luna',
'xaiGrok4_5',
'claudeOpus48Api',
'claudeOpus5Api',
'claudeSonnet5Api',
'claudeHaiku45Api',
'googleGemini3_1Pro',
Expand Down
7 changes: 6 additions & 1 deletion src/services/apis/claude-api.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ import { getConversationPairs } from '../../utils/get-conversation-pairs.mjs'
import { getModelValue } from '../../utils/model-name-convert.mjs'

function shouldOmitTemperature(model) {
return model === 'claude-opus-4-7' || model === 'claude-opus-4-8' || model === 'claude-sonnet-5'
return (
model === 'claude-opus-4-7' ||
model === 'claude-opus-4-8' ||
model === 'claude-sonnet-5' ||
model === 'claude-opus-5'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Report Opus 5 token-budget exhaustion

When Opus 5's always-on adaptive thinking consumes max_tokens before emitting text—particularly with the default 2,000-token limit—the API reports stop_reason: "max_tokens" in a message_delta and then sends message_stop. The current handler ignores that stop reason, records an empty answer, and reports successful completion, leaving the user with no explanation or useful retry path. The current tree no longer contains the token-limit handling referenced by the earlier localization review comment, so this remains a runtime issue for the newly exposed model.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is valid, but the handling is not specific to Opus 5. It affects Claude streaming responses generally and requires broader stop-reason and error-propagation coverage. It will be addressed in a focused follow-up change rather than expanding this model-registration PR.

)
}

function shouldDisableDefaultThinking(model) {
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 @@ -125,6 +125,7 @@ test('claude-api: omits temperature for models that reject custom sampling', asy
for (const [modelName, model] of [
['claudeOpus47Api', 'claude-opus-4-7'],
['claudeOpus48Api', 'claude-opus-4-8'],
['claudeOpus5Api', 'claude-opus-5'],
['claudeSonnet5Api', 'claude-sonnet-5'],
]) {
await t.test(modelName, async (t) => {
Expand Down