diff --git a/packages/cli/src/test-utils/render.tsx b/packages/cli/src/test-utils/render.tsx
index 6908fd36fb..71724285d2 100644
--- a/packages/cli/src/test-utils/render.tsx
+++ b/packages/cli/src/test-utils/render.tsx
@@ -528,12 +528,13 @@ export const mockSettings = new LoadedSettings(
// A minimal mock UIState to satisfy the context provider.
// Tests that need specific UIState values should provide their own.
const baseMockUiState = {
+ history: [],
renderMarkdown: true,
streamingState: StreamingState.Idle,
terminalWidth: 100,
terminalHeight: 40,
currentModel: 'gemini-pro',
- terminalBackgroundColor: 'black',
+ terminalBackgroundColor: 'black' as const,
cleanUiDetailsVisible: false,
allowPlanMode: true,
activePtyId: undefined,
@@ -552,6 +553,9 @@ const baseMockUiState = {
warningText: '',
},
bannerVisible: false,
+ nightly: false,
+ updateInfo: null,
+ pendingHistoryItems: [],
};
export const mockAppState: AppState = {
diff --git a/packages/cli/src/ui/__snapshots__/App.test.tsx.snap b/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
index 450da8362e..9e1d66df01 100644
--- a/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
+++ b/packages/cli/src/ui/__snapshots__/App.test.tsx.snap
@@ -2,20 +2,20 @@
exports[`App > Snapshots > renders default layout correctly 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.2.3
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
+
+
+
@@ -47,34 +47,31 @@ exports[`App > Snapshots > renders screen reader layout correctly 1`] = `
"Notifications
Footer
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.2.3
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
Composer
"
`;
exports[`App > Snapshots > renders with dialogs visible 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.2.3
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
+
+
+
@@ -110,20 +107,17 @@ DialogManager
exports[`App > should render ToolConfirmationQueue along with Composer when tool is confirming and experiment is on 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.2.3
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
HistoryItemDisplay
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Action Required │
@@ -146,6 +140,9 @@ HistoryItemDisplay
+
+
+
Notifications
Composer
"
diff --git a/packages/cli/src/ui/components/AppHeader.test.tsx b/packages/cli/src/ui/components/AppHeader.test.tsx
index 9bf821febc..ebcd4de973 100644
--- a/packages/cli/src/ui/components/AppHeader.test.tsx
+++ b/packages/cli/src/ui/components/AppHeader.test.tsx
@@ -213,6 +213,12 @@ describe('', () => {
it('should NOT render Tips when tipsShown is 10 or more', async () => {
const mockConfig = makeFakeConfig();
+ const uiState = {
+ bannerData: {
+ defaultText: '',
+ warningText: '',
+ },
+ };
persistentStateMock.setData({ tipsShown: 10 });
@@ -220,6 +226,7 @@ describe('', () => {
,
{
config: mockConfig,
+ uiState,
},
);
await waitUntilReady();
diff --git a/packages/cli/src/ui/components/AppHeader.tsx b/packages/cli/src/ui/components/AppHeader.tsx
index ad5e2f67d2..b9601e772a 100644
--- a/packages/cli/src/ui/components/AppHeader.tsx
+++ b/packages/cli/src/ui/components/AppHeader.tsx
@@ -1,58 +1,113 @@
/**
* @license
- * Copyright 2025 Google LLC
+ * Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
-import { Box } from 'ink';
-import { Header } from './Header.js';
-import { Tips } from './Tips.js';
+import { Box, Text } from 'ink';
import { UserIdentity } from './UserIdentity.js';
+import { Tips } from './Tips.js';
import { useSettings } from '../contexts/SettingsContext.js';
import { useConfig } from '../contexts/ConfigContext.js';
import { useUIState } from '../contexts/UIStateContext.js';
import { Banner } from './Banner.js';
import { useBanner } from '../hooks/useBanner.js';
import { useTips } from '../hooks/useTips.js';
+import { theme } from '../semantic-colors.js';
+import { ThemedGradient } from './ThemedGradient.js';
+import { CliSpinner } from './CliSpinner.js';
interface AppHeaderProps {
version: string;
showDetails?: boolean;
}
+const ICON = `▝▜▄
+ ▝▜▄
+ ▗▟▀
+▝▀ `;
+
export const AppHeader = ({ version, showDetails = true }: AppHeaderProps) => {
const settings = useSettings();
const config = useConfig();
- const { nightly, terminalWidth, bannerData, bannerVisible } = useUIState();
+ const { terminalWidth, bannerData, bannerVisible, updateInfo } = useUIState();
const { bannerText } = useBanner(bannerData);
const { showTips } = useTips();
+ const showHeader = !(
+ settings.merged.ui.hideBanner || config.getScreenReader()
+ );
+
if (!showDetails) {
return (
-
+ {showHeader && (
+
+
+ {ICON}
+
+
+
+
+ Gemini CLI
+
+ v{version}
+
+
+
+ )}
);
}
return (
- {!(settings.merged.ui.hideBanner || config.getScreenReader()) && (
- <>
-
- {bannerVisible && bannerText && (
-
- )}
- >
+ {showHeader && (
+
+
+ {ICON}
+
+
+ {/* Line 1: Gemini CLI vVersion [Updating] */}
+
+
+ Gemini CLI
+
+ v{version}
+ {updateInfo && (
+
+
+ Updating
+
+
+ )}
+
+
+ {/* Line 2: Blank */}
+
+
+ {/* Lines 3 & 4: User Identity info (Email /auth and Plan /upgrade) */}
+ {settings.merged.ui.showUserIdentity !== false && (
+
+ )}
+
+
)}
- {settings.merged.ui.showUserIdentity !== false && (
-
+
+ {bannerVisible && bannerText && (
+
)}
+
{!(settings.merged.ui.hideTips || config.getScreenReader()) &&
showTips && }
diff --git a/packages/cli/src/ui/components/Tips.test.tsx b/packages/cli/src/ui/components/Tips.test.tsx
index 06b4760834..873230fb87 100644
--- a/packages/cli/src/ui/components/Tips.test.tsx
+++ b/packages/cli/src/ui/components/Tips.test.tsx
@@ -1,6 +1,6 @@
/**
* @license
- * Copyright 2025 Google LLC
+ * Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
@@ -11,22 +11,18 @@ import type { Config } from '@google/gemini-cli-core';
describe('Tips', () => {
it.each([
- [0, '3. Create GEMINI.md files'],
- [5, '3. /help for more information'],
- ])(
- 'renders correct tips when file count is %i',
- async (count, expectedText) => {
- const config = {
- getGeminiMdFileCount: vi.fn().mockReturnValue(count),
- } as unknown as Config;
+ { fileCount: 0, description: 'renders all tips including GEMINI.md tip' },
+ { fileCount: 5, description: 'renders fewer tips when GEMINI.md exists' },
+ ])('$description', async ({ fileCount }) => {
+ const config = {
+ getGeminiMdFileCount: vi.fn().mockReturnValue(fileCount),
+ } as unknown as Config;
- const { lastFrame, waitUntilReady, unmount } = render(
- ,
- );
- await waitUntilReady();
- const output = lastFrame();
- expect(output).toContain(expectedText);
- unmount();
- },
- );
+ const { lastFrame, waitUntilReady, unmount } = render(
+ ,
+ );
+ await waitUntilReady();
+ expect(lastFrame()).toMatchSnapshot();
+ unmount();
+ });
});
diff --git a/packages/cli/src/ui/components/Tips.tsx b/packages/cli/src/ui/components/Tips.tsx
index 576b8494c5..8ac6f33bf8 100644
--- a/packages/cli/src/ui/components/Tips.tsx
+++ b/packages/cli/src/ui/components/Tips.tsx
@@ -1,6 +1,6 @@
/**
* @license
- * Copyright 2025 Google LLC
+ * Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
@@ -15,30 +15,26 @@ interface TipsProps {
export const Tips: React.FC = ({ config }) => {
const geminiMdFileCount = config.getGeminiMdFileCount();
+
return (
-
+
Tips for getting started:
-
- 1. Ask questions, edit files, or run commands.
-
-
- 2. Be specific for the best results.
-
{geminiMdFileCount === 0 && (
- 3. Create{' '}
-
- GEMINI.md
- {' '}
- files to customize your interactions with Gemini.
+ 1. Create GEMINI.md files to customize your
+ interactions
)}
- {geminiMdFileCount === 0 ? '4.' : '3.'}{' '}
-
- /help
- {' '}
- for more information.
+ {geminiMdFileCount === 0 ? '2.' : '1.'}{' '}
+ /help for more information
+
+
+ {geminiMdFileCount === 0 ? '3.' : '2.'} Ask coding questions, edit code
+ or run commands
+
+
+ {geminiMdFileCount === 0 ? '4.' : '3.'} Be specific for the best results
);
diff --git a/packages/cli/src/ui/components/UserIdentity.test.tsx b/packages/cli/src/ui/components/UserIdentity.test.tsx
index a5b41f4b61..8e63415f5c 100644
--- a/packages/cli/src/ui/components/UserIdentity.test.tsx
+++ b/packages/cli/src/ui/components/UserIdentity.test.tsx
@@ -45,12 +45,12 @@ describe('', () => {
await waitUntilReady();
const output = lastFrame();
- expect(output).toContain('Logged in with Google: test@example.com');
+ expect(output).toContain('test@example.com');
expect(output).toContain('/auth');
unmount();
});
- it('should render login message without colon if email is missing', async () => {
+ it('should render login message if email is missing', async () => {
// Modify the mock for this specific test
vi.mocked(UserAccountManager).mockImplementationOnce(
() =>
@@ -73,12 +73,11 @@ describe('', () => {
const output = lastFrame();
expect(output).toContain('Logged in with Google');
- expect(output).not.toContain('Logged in with Google:');
expect(output).toContain('/auth');
unmount();
});
- it('should render plan name on a separate line if provided', async () => {
+ it('should render plan name and upgrade indicator', async () => {
const mockConfig = makeFakeConfig();
vi.spyOn(mockConfig, 'getContentGeneratorConfig').mockReturnValue({
authType: AuthType.LOGIN_WITH_GOOGLE,
@@ -92,18 +91,10 @@ describe('', () => {
await waitUntilReady();
const output = lastFrame();
- expect(output).toContain('Logged in with Google: test@example.com');
+ expect(output).toContain('test@example.com');
expect(output).toContain('/auth');
- expect(output).toContain('Plan: Premium Plan');
-
- // Check for two lines (or more if wrapped, but here it should be separate)
- const lines = output?.split('\n').filter((line) => line.trim().length > 0);
- expect(lines?.some((line) => line.includes('Logged in with Google'))).toBe(
- true,
- );
- expect(lines?.some((line) => line.includes('Plan: Premium Plan'))).toBe(
- true,
- );
+ expect(output).toContain('Premium Plan');
+ expect(output).toContain('/upgrade');
unmount();
});
diff --git a/packages/cli/src/ui/components/UserIdentity.tsx b/packages/cli/src/ui/components/UserIdentity.tsx
index e506bfb052..08c82573d9 100644
--- a/packages/cli/src/ui/components/UserIdentity.tsx
+++ b/packages/cli/src/ui/components/UserIdentity.tsx
@@ -1,11 +1,11 @@
/**
* @license
- * Copyright 2025 Google LLC
+ * Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import type React from 'react';
-import { useMemo } from 'react';
+import { useMemo, useEffect, useState } from 'react';
import { Box, Text } from 'ink';
import { theme } from '../semantic-colors.js';
import {
@@ -20,42 +20,45 @@ interface UserIdentityProps {
export const UserIdentity: React.FC = ({ config }) => {
const authType = config.getContentGeneratorConfig()?.authType;
+ const [email, setEmail] = useState();
- const { email, tierName } = useMemo(() => {
- if (!authType) {
- return { email: undefined, tierName: undefined };
+ useEffect(() => {
+ if (authType) {
+ const userAccountManager = new UserAccountManager();
+ setEmail(userAccountManager.getCachedGoogleAccount() ?? undefined);
}
- const userAccountManager = new UserAccountManager();
- return {
- email: userAccountManager.getCachedGoogleAccount(),
- tierName: config.getUserTierName(),
- };
- }, [config, authType]);
+ }, [authType]);
+
+ const tierName = useMemo(
+ () => (authType ? config.getUserTierName() : undefined),
+ [config, authType],
+ );
if (!authType) {
return null;
}
return (
-
+
+ {/* User Email /auth */}
-
+
{authType === AuthType.LOGIN_WITH_GOOGLE ? (
-
- Logged in with Google{email ? ':' : ''}
- {email ? ` ${email}` : ''}
-
+ {email ?? 'Logged in with Google'}
) : (
`Authenticated with ${authType}`
)}
/auth
- {tierName && (
-
- Plan: {tierName}
+
+ {/* Tier Name /upgrade */}
+
+
+ {tierName ?? 'Gemini Code Assist for individuals'}
- )}
+ /upgrade
+
);
};
diff --git a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap
index 18e75b75e2..ec8712ebc1 100644
--- a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap
@@ -2,20 +2,17 @@
exports[`AlternateBufferQuittingDisplay > renders with a tool awaiting confirmation > with_confirming_tool 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
Action Required (was prompted):
@@ -25,20 +22,17 @@ Action Required (was prompted):
exports[`AlternateBufferQuittingDisplay > renders with active and pending tool messages > with_history_and_pending 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
╭──────────────────────────────────────────────────────────────────────────╮
│ ✓ tool1 Description for tool 1 │
│ │
@@ -52,39 +46,33 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with empty history and no pending items > empty 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
exports[`AlternateBufferQuittingDisplay > renders with history but no pending items > with_history_no_pending 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
╭──────────────────────────────────────────────────────────────────────────╮
│ ✓ tool1 Description for tool 1 │
│ │
@@ -98,39 +86,33 @@ Tips for getting started:
exports[`AlternateBufferQuittingDisplay > renders with pending items but no history > with_pending_no_history 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
exports[`AlternateBufferQuittingDisplay > renders with user and gemini messages > with_user_gemini_messages 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v0.10.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> Hello Gemini
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
diff --git a/packages/cli/src/ui/components/__snapshots__/AppHeader.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/AppHeader.test.tsx.snap
index 324274fddd..4411f766de 100644
--- a/packages/cli/src/ui/components/__snapshots__/AppHeader.test.tsx.snap
+++ b/packages/cli/src/ui/components/__snapshots__/AppHeader.test.tsx.snap
@@ -2,82 +2,70 @@
exports[` > should not render the banner when no flags are set 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.0.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
exports[` > should not render the default banner if shown count is 5 or more 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.0.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
exports[` > should render the banner with default text 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.0.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ This is the default banner │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
exports[` > should render the banner with warning text 1`] = `
"
- ███ █████████
-░░░███ ███░░░░░███
- ░░░███ ███ ░░░
- ░░░███░███
- ███░ ░███ █████
- ███░ ░░███ ░░███
- ███░ ░░█████████
-░░░ ░░░░░░░░░
+ ▝▜▄ Gemini CLI v1.0.0
+ ▝▜▄
+ ▗▟▀
+ ▝▀
╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ There are capacity issues │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
+
Tips for getting started:
-1. Ask questions, edit files, or run commands.
-2. Be specific for the best results.
-3. Create GEMINI.md files to customize your interactions with Gemini.
-4. /help for more information.
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
"
`;
diff --git a/packages/cli/src/ui/components/__snapshots__/Tips.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/Tips.test.tsx.snap
new file mode 100644
index 0000000000..dbc60fcf4d
--- /dev/null
+++ b/packages/cli/src/ui/components/__snapshots__/Tips.test.tsx.snap
@@ -0,0 +1,20 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`Tips > 'renders all tips including GEMINI.md …' 1`] = `
+"
+Tips for getting started:
+1. Create GEMINI.md files to customize your interactions
+2. /help for more information
+3. Ask coding questions, edit code or run commands
+4. Be specific for the best results
+"
+`;
+
+exports[`Tips > 'renders fewer tips when GEMINI.md exi…' 1`] = `
+"
+Tips for getting started:
+1. /help for more information
+2. Ask coding questions, edit code or run commands
+3. Be specific for the best results
+"
+`;
diff --git a/packages/cli/src/ui/utils/__snapshots__/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-pending-search-dialog-google_web_search-.snap.svg b/packages/cli/src/ui/utils/__snapshots__/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-pending-search-dialog-google_web_search-.snap.svg
index b9290efcac..280f558d63 100644
--- a/packages/cli/src/ui/utils/__snapshots__/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-pending-search-dialog-google_web_search-.snap.svg
+++ b/packages/cli/src/ui/utils/__snapshots__/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-pending-search-dialog-google_web_search-.snap.svg
@@ -1,123 +1,31 @@
-