diff options
Diffstat (limited to 'packages/cli/src')
| -rw-r--r-- | packages/cli/src/config/settingsSchema.ts | 9 | ||||
| -rw-r--r-- | packages/cli/src/ui/App.test.tsx | 52 | ||||
| -rw-r--r-- | packages/cli/src/ui/App.tsx | 38 |
3 files changed, 82 insertions, 17 deletions
diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 4a7a986b..ebea3ad5 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -86,6 +86,15 @@ export const SETTINGS_SCHEMA = { description: 'Hide the application banner', showInDialog: true, }, + hideFooter: { + type: 'boolean', + label: 'Hide Footer', + category: 'UI', + requiresRestart: false, + default: false, + description: 'Hide the footer from the UI', + showInDialog: true, + }, showMemoryUsage: { type: 'boolean', label: 'Show Memory Usage', diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx index 9a712336..6a019ab6 100644 --- a/packages/cli/src/ui/App.test.tsx +++ b/packages/cli/src/ui/App.test.tsx @@ -864,6 +864,58 @@ describe('App UI', () => { expect(vi.mocked(Header)).not.toHaveBeenCalled(); }); + it('should display Footer component by default', async () => { + const { lastFrame, unmount } = renderWithProviders( + <App + config={mockConfig as unknown as ServerConfig} + settings={mockSettings} + version={mockVersion} + />, + ); + currentUnmount = unmount; + await Promise.resolve(); + // Footer should render - look for target directory which is always shown + expect(lastFrame()).toContain('/test/dir'); + }); + + it('should not display Footer component when hideFooter is true', async () => { + mockSettings = createMockSettings({ + user: { hideFooter: true }, + }); + + const { lastFrame, unmount } = renderWithProviders( + <App + config={mockConfig as unknown as ServerConfig} + settings={mockSettings} + version={mockVersion} + />, + ); + currentUnmount = unmount; + await Promise.resolve(); + // Footer should not render - target directory should not appear + expect(lastFrame()).not.toContain('/test/dir'); + }); + + it('should show footer if system says show, but workspace and user settings say hide', async () => { + mockSettings = createMockSettings({ + system: { hideFooter: false }, + user: { hideFooter: true }, + workspace: { hideFooter: true }, + }); + + const { lastFrame, unmount } = renderWithProviders( + <App + config={mockConfig as unknown as ServerConfig} + settings={mockSettings} + version={mockVersion} + />, + ); + currentUnmount = unmount; + await Promise.resolve(); + // Footer should render because system overrides - look for target directory + expect(lastFrame()).toContain('/test/dir'); + }); + it('should show tips if system says show, but workspace and user settings say hide', async () => { mockSettings = createMockSettings({ system: { hideTips: false }, diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 1aeb3bd0..d71d8371 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -1249,23 +1249,27 @@ const App = ({ config, settings, startupWarnings = [], version }: AppProps) => { )} </Box> )} - <Footer - model={currentModel} - targetDir={config.getTargetDir()} - debugMode={config.getDebugMode()} - branchName={branchName} - debugMessage={debugMessage} - corgiMode={corgiMode} - errorCount={errorCount} - showErrorDetails={showErrorDetails} - showMemoryUsage={ - config.getDebugMode() || settings.merged.showMemoryUsage || false - } - promptTokenCount={sessionStats.lastPromptTokenCount} - nightly={nightly} - vimMode={vimModeEnabled ? vimMode : undefined} - isTrustedFolder={isTrustedFolderState} - /> + {!settings.merged.hideFooter && ( + <Footer + model={currentModel} + targetDir={config.getTargetDir()} + debugMode={config.getDebugMode()} + branchName={branchName} + debugMessage={debugMessage} + corgiMode={corgiMode} + errorCount={errorCount} + showErrorDetails={showErrorDetails} + showMemoryUsage={ + config.getDebugMode() || + settings.merged.showMemoryUsage || + false + } + promptTokenCount={sessionStats.lastPromptTokenCount} + nightly={nightly} + vimMode={vimModeEnabled ? vimMode : undefined} + isTrustedFolder={isTrustedFolderState} + /> + )} </Box> </Box> </StreamingContext.Provider> |
