From 9ddfcfcddf57a92140fa97332fc7ce844a427dfa Mon Sep 17 00:00:00 2001 From: octo-patch Date: Tue, 2 Jun 2026 12:53:25 +0800 Subject: [PATCH] feat(llm): upgrade MiniMax default to M3, prune legacy models MiniMax recently released M3 as the new flagship model. This commit upgrades the bundled MiniMax / openrouter provider configs: - Add MiniMax-M3 as the new default - Keep MiniMax-M2.7 and MiniMax-M2.7-highspeed as recent alternatives - Drop the deprecated M2.5 / M2.5-highspeed / M2.1 / M2.1-highspeed / M2 entries from the model lists - Update the Claude Code Review workflow to use the M3 default Tests updated to assert the new default. All 47 llmClient tests pass. --- .github/workflows/claude-review.yml | 4 ++-- apps/webuiapps/src/lib/__tests__/llmClient.test.ts | 6 +++--- apps/webuiapps/src/lib/llmModels.ts | 14 ++++---------- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/.github/workflows/claude-review.yml b/.github/workflows/claude-review.yml index 73669ea..ecb6c1c 100644 --- a/.github/workflows/claude-review.yml +++ b/.github/workflows/claude-review.yml @@ -48,7 +48,7 @@ jobs: IMPORTANT: After completing your review, you MUST post your findings as a PR comment. Steps to post: 1) Write review to /tmp/review.md using the Write tool, 2) Run: gh pr comment $PR_NUMBER --body-file /tmp/review.md Get the PR number first via: gh pr list --state open --json number --jq '.[0].number' - claude_args: '--model MiniMax-M2.5 --max-turns 20 --allowedTools "Bash(git:*),Bash(gh:*),Read,Glob,Grep,WebFetch,Write"' + claude_args: '--model MiniMax-M3 --max-turns 20 --allowedTools "Bash(git:*),Bash(gh:*),Read,Glob,Grep,WebFetch,Write"' interactive: if: | @@ -68,4 +68,4 @@ jobs: ANTHROPIC_BASE_URL: https://api.minimax.io/anthropic with: anthropic_api_key: ${{ secrets.MINIMAX_API_KEY }} - claude_args: '--model MiniMax-M2.5 --max-turns 20 --allowedTools "Bash(git:*),Bash(gh:*),Read,Glob,Grep,WebFetch,Edit,Write"' + claude_args: '--model MiniMax-M3 --max-turns 20 --allowedTools "Bash(git:*),Bash(gh:*),Read,Glob,Grep,WebFetch,Edit,Write"' diff --git a/apps/webuiapps/src/lib/__tests__/llmClient.test.ts b/apps/webuiapps/src/lib/__tests__/llmClient.test.ts index 1b53438..4e30097 100644 --- a/apps/webuiapps/src/lib/__tests__/llmClient.test.ts +++ b/apps/webuiapps/src/lib/__tests__/llmClient.test.ts @@ -132,7 +132,7 @@ describe('getDefaultProviderConfig()', () => { const cfg = getDefaultProviderConfig('minimax'); expect(cfg.provider).toBe('minimax'); expect(cfg.baseUrl).toBe('https://api.minimax.io/anthropic/v1'); - expect(cfg.model).toBe('MiniMax-M2.5'); + expect(cfg.model).toBe('MiniMax-M3'); }); it('returns correct defaults for z.ai', () => { @@ -153,7 +153,7 @@ describe('getDefaultProviderConfig()', () => { const cfg = getDefaultProviderConfig('openrouter'); expect(cfg.provider).toBe('openrouter'); expect(cfg.baseUrl).toBe('https://openrouter.ai/api/v1'); - expect(cfg.model).toBe('minimax/MiniMax-M2.5'); + expect(cfg.model).toBe('minimax/MiniMax-M3'); }); it('returns consistent values for the same provider', () => { @@ -560,7 +560,7 @@ respond_to_user provider: 'minimax', apiKey: 'minimax-key', baseUrl: 'https://api.minimax.io/anthropic', - model: 'MiniMax-M2.5', + model: 'MiniMax-M3', }; const mockFetch = vi.fn().mockResolvedValueOnce(makeAnthropicResponse('MiniMax response')); globalThis.fetch = mockFetch; diff --git a/apps/webuiapps/src/lib/llmModels.ts b/apps/webuiapps/src/lib/llmModels.ts index 346907e..6da14fc 100644 --- a/apps/webuiapps/src/lib/llmModels.ts +++ b/apps/webuiapps/src/lib/llmModels.ts @@ -88,15 +88,11 @@ export const LLM_PROVIDER_CONFIGS: Record = { minimax: { displayName: 'MiniMax', baseUrl: 'https://api.minimax.io/anthropic/v1', - defaultModel: 'MiniMax-M2.5', + defaultModel: 'MiniMax-M3', models: [ - { id: 'MiniMax-M2.5', name: 'MiniMax M2.5', category: 'flagship' }, - { id: 'MiniMax-M2.5-highspeed', name: 'MiniMax M2.5 Highspeed', category: 'general' }, - { id: 'MiniMax-M2.1', name: 'MiniMax M2.1', category: 'coding' }, - { id: 'MiniMax-M2.1-highspeed', name: 'MiniMax M2.1 Highspeed', category: 'coding' }, + { id: 'MiniMax-M3', name: 'MiniMax M3', category: 'flagship' }, { id: 'MiniMax-M2.7', name: 'MiniMax M2.7', category: 'flagship' }, { id: 'MiniMax-M2.7-highspeed', name: 'MiniMax M2.7 Highspeed', category: 'general' }, - { id: 'MiniMax-M2', name: 'MiniMax M2', category: 'general' }, ], }, @@ -135,13 +131,11 @@ export const LLM_PROVIDER_CONFIGS: Record = { openrouter: { displayName: 'OpenRouter', baseUrl: 'https://openrouter.ai/api/v1', - defaultModel: 'minimax/MiniMax-M2.5', + defaultModel: 'minimax/MiniMax-M3', models: [ - { id: 'minimax/MiniMax-M2.5', name: 'MiniMax M2.5', category: 'flagship' }, - { id: 'minimax/MiniMax-M2.5-highspeed', name: 'MiniMax M2.5 Highspeed', category: 'general' }, + { id: 'minimax/MiniMax-M3', name: 'MiniMax M3', category: 'flagship' }, { id: 'minimax/MiniMax-M2.7', name: 'MiniMax M2.7', category: 'flagship' }, { id: 'minimax/MiniMax-M2.7-highspeed', name: 'MiniMax M2.7 Highspeed', category: 'general' }, - { id: 'minimax/MiniMax-M2.1', name: 'MiniMax M2.1', category: 'coding' }, { id: 'anthropic/claude-sonnet-4-6', name: 'Claude Sonnet 4.6', category: 'general' }, { id: 'openai/gpt-5.4', name: 'GPT-5.4', category: 'flagship' }, { id: 'deepseek/deepseek-chat', name: 'DeepSeek Chat', category: 'general' },