diff --git a/packages/cli/src/test-utils/render.tsx b/packages/cli/src/test-utils/render.tsx index d07f6663cb..3eba2ff964 100644 --- a/packages/cli/src/test-utils/render.tsx +++ b/packages/cli/src/test-utils/render.tsx @@ -64,6 +64,7 @@ const baseMockUiState = { streamingState: StreamingState.Idle, mainAreaWidth: 100, terminalWidth: 120, + currentModel: 'gemini-pro', }; export const renderWithProviders = ( diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index ae0f43b418..a6ff6c0eeb 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -261,20 +261,18 @@ export const AppContainer = (props: AppContainerProps) => { [historyManager.addItem], ); - // Watch for model changes (e.g., from Flash fallback) + // Subscribe to fallback mode changes from core useEffect(() => { - const checkModelChange = () => { + const handleFallbackModeChanged = () => { const effectiveModel = getEffectiveModel(); - if (effectiveModel !== currentModel) { - setCurrentModel(effectiveModel); - } + setCurrentModel(effectiveModel); }; - checkModelChange(); - const interval = setInterval(checkModelChange, 1000); // Check every second - - return () => clearInterval(interval); - }, [config, currentModel, getEffectiveModel]); + coreEvents.on(CoreEvent.FallbackModeChanged, handleFallbackModeChanged); + return () => { + coreEvents.off(CoreEvent.FallbackModeChanged, handleFallbackModeChanged); + }; + }, [getEffectiveModel]); const { consoleMessages, diff --git a/packages/cli/src/ui/components/Footer.test.tsx b/packages/cli/src/ui/components/Footer.test.tsx index a27f6b26d1..f5ef617e0d 100644 --- a/packages/cli/src/ui/components/Footer.test.tsx +++ b/packages/cli/src/ui/components/Footer.test.tsx @@ -256,3 +256,31 @@ describe('