fix(startup): show --model flag override on startup screen (#898)
The startup screen was only reading model from env vars and settings, ignoring the --model CLI flag since it's parsed by Commander.js after the banner prints. Now eagerly parses --model from argv before rendering so the displayed model matches what the session will actually use.
This commit is contained in:
@@ -14,6 +14,7 @@ const ENV_KEYS = [
|
||||
'GEMINI_MODEL',
|
||||
'MISTRAL_MODEL',
|
||||
'ANTHROPIC_MODEL',
|
||||
'CLAUDE_MODEL',
|
||||
'NVIDIA_NIM',
|
||||
'MINIMAX_API_KEY',
|
||||
]
|
||||
@@ -186,3 +187,71 @@ describe('detectProvider — explicit dedicated-provider env flags', () => {
|
||||
expect(detectProvider().name).toBe('MiniMax')
|
||||
})
|
||||
})
|
||||
|
||||
// --- modelOverride from --model flag ---
|
||||
|
||||
describe('detectProvider — modelOverride from --model flag', () => {
|
||||
test('modelOverride overrides default Anthropic model', () => {
|
||||
const result = detectProvider('claude-opus-4-6')
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('opus')
|
||||
})
|
||||
|
||||
test('modelOverride alias is resolved for Anthropic', () => {
|
||||
const result = detectProvider('opus')
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('opus')
|
||||
})
|
||||
|
||||
test('modelOverride takes priority over ANTHROPIC_MODEL env var', () => {
|
||||
process.env.ANTHROPIC_MODEL = 'claude-haiku-4-5-20251001'
|
||||
const result = detectProvider('claude-opus-4-6')
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('opus')
|
||||
})
|
||||
|
||||
test('modelOverride takes priority over CLAUDE_MODEL env var', () => {
|
||||
process.env.CLAUDE_MODEL = 'claude-haiku-4-5-20251001'
|
||||
const result = detectProvider('claude-opus-4-6')
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('opus')
|
||||
})
|
||||
|
||||
test('modelOverride works for OpenAI provider', () => {
|
||||
process.env.CLAUDE_CODE_USE_OPENAI = '1'
|
||||
process.env.OPENAI_API_KEY = 'test-key'
|
||||
process.env.OPENAI_MODEL = 'gpt-4o'
|
||||
const result = detectProvider('gpt-4-turbo')
|
||||
expect(result.model).toContain('gpt-4-turbo')
|
||||
})
|
||||
|
||||
test('modelOverride works for Gemini provider', () => {
|
||||
process.env.CLAUDE_CODE_USE_GEMINI = '1'
|
||||
const result = detectProvider('gemini-2.5-pro')
|
||||
expect(result.model).toBe('gemini-2.5-pro')
|
||||
})
|
||||
|
||||
test('modelOverride works for Mistral provider', () => {
|
||||
process.env.CLAUDE_CODE_USE_MISTRAL = '1'
|
||||
const result = detectProvider('mistral-large-latest')
|
||||
expect(result.model).toBe('mistral-large-latest')
|
||||
})
|
||||
|
||||
test('modelOverride works for GitHub provider', () => {
|
||||
process.env.CLAUDE_CODE_USE_GITHUB = '1'
|
||||
const result = detectProvider('gpt-4o')
|
||||
expect(result.model).toContain('gpt-4o')
|
||||
})
|
||||
|
||||
test('undefined modelOverride preserves default behavior', () => {
|
||||
const result = detectProvider(undefined)
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('sonnet')
|
||||
})
|
||||
|
||||
test('no argument preserves default behavior', () => {
|
||||
const result = detectProvider()
|
||||
expect(result.name).toBe('Anthropic')
|
||||
expect(result.model).toContain('sonnet')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user