diff --git a/src/commands/model/model.tsx b/src/commands/model/model.tsx index 4a6114fde..f1d11fddc 100644 --- a/src/commands/model/model.tsx +++ b/src/commands/model/model.tsx @@ -37,6 +37,7 @@ import { generateMachineId, saveCoStrictCredentials } from '../../costrict/provi import { extractExpiryFromJWT } from '../../costrict/provider/token.js'; import { updateSettingsForSource } from '../../utils/settings/settings.js'; import { useSetAppState as useSetGlobalAppState } from '../../state/AppState.js'; +import { isNotLoggedIn } from '../../utils/logoV2Utils.js'; function ModelPickerWrapper({ onDone, @@ -339,6 +340,15 @@ export const call: LocalJSXCommandCall = async (onDone, _context, args) => { return ; } + // Check if user is logged in before showing model picker + if (isNotLoggedIn()) { + // User is not logged in, redirect to login + onDone('You need to login first. Use /login to authenticate.', { + display: 'system', + }); + return; + } + return ; }; diff --git a/src/components/ConsoleOAuthFlow.tsx b/src/components/ConsoleOAuthFlow.tsx index 0f6acd502..751fe12c1 100644 --- a/src/components/ConsoleOAuthFlow.tsx +++ b/src/components/ConsoleOAuthFlow.tsx @@ -288,6 +288,8 @@ export function ConsoleOAuthFlow({ updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any) // Clear costrict env var to prevent conflicts delete process.env.CLAUDE_CODE_USE_COSTRICT + // Reset AppState model so logo reflects the new provider default + setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null })) setOAuthStatus({ state: 'success' }) void sendNotification( @@ -734,6 +736,8 @@ function OAuthStatusMessage({ delete process.env.CLAUDE_CODE_USE_COSTRICT // Set default model to sonnet for this provider updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any) + // Reset AppState model so logo reflects the new provider default + setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null })) setOAuthStatus({ state: 'success' }) void onDone() } @@ -958,6 +962,8 @@ function OAuthStatusMessage({ delete process.env.CLAUDE_CODE_USE_COSTRICT // Set default model to sonnet for this provider updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any) + // Reset AppState model so logo reflects the new provider default + setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null })) setOAuthStatus({ state: 'success' }) void onDone() } @@ -1195,6 +1201,8 @@ function OAuthStatusMessage({ delete process.env.CLAUDE_CODE_USE_COSTRICT // Set default model to sonnet for this provider updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any) + // Reset AppState model so logo reflects the new provider default + setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null })) setOAuthStatus({ state: 'success' }) void onDone() }