From d1eb86581ce800778e5a093039ce237ec6da6118 Mon Sep 17 00:00:00 2001 From: Marcin Jahn <10273406+marcinjahn@users.noreply.github.com> Date: Mon, 30 Jun 2025 01:56:37 +0200 Subject: feat(cli): Add hideTips setting (#1524) Co-authored-by: Allen Hutchison --- packages/cli/src/config/settings.ts | 1 + packages/cli/src/ui/App.test.tsx | 33 +++++++++++++++++++++++++++++++++ packages/cli/src/ui/App.tsx | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) (limited to 'packages/cli/src') diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts index de1e5569..28010a7a 100644 --- a/packages/cli/src/config/settings.ts +++ b/packages/cli/src/config/settings.ts @@ -63,6 +63,7 @@ export interface Settings { // UI setting. Does not display the ANSI-controlled terminal title. hideWindowTitle?: boolean; + hideTips?: boolean; // Add other settings here. } diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx index 2f12615b..ecd56f5e 100644 --- a/packages/cli/src/ui/App.test.tsx +++ b/packages/cli/src/ui/App.test.tsx @@ -17,6 +17,7 @@ import { } from '@google/gemini-cli-core'; import { LoadedSettings, SettingsFile, Settings } from '../config/settings.js'; import process from 'node:process'; +import { Tips } from './components/Tips.js'; // Define a more complete mock server config based on actual Config interface MockServerConfig { @@ -173,6 +174,10 @@ vi.mock('../config/config.js', async (importOriginal) => { }; }); +vi.mock('./components/Tips.js', () => ({ + Tips: vi.fn(() => null), +})); + describe('App UI', () => { let mockConfig: MockServerConfig; let mockSettings: LoadedSettings; @@ -379,6 +384,34 @@ describe('App UI', () => { expect(lastFrame()).toContain('Using 2 MCP servers'); }); + it('should display Tips component by default', async () => { + const { unmount } = render( + , + ); + currentUnmount = unmount; + await Promise.resolve(); + expect(vi.mocked(Tips)).toHaveBeenCalled(); + }); + + it('should not display Tips component when hideTips is true', async () => { + mockSettings = createMockSettings({ + hideTips: true, + }); + + const { unmount } = render( + , + ); + currentUnmount = unmount; + await Promise.resolve(); + expect(vi.mocked(Tips)).not.toHaveBeenCalled(); + }); + describe('when no theme is set', () => { let originalNoColor: string | undefined; diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 6bbe47d4..0848e330 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -584,7 +584,7 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { items={[
- + {!settings.merged.hideTips && } {updateMessage && } , ...history.map((h) => ( -- cgit v1.2.3