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(
+ ,
+ );
+ 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(
+ ,
+ );
+ 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(
+ ,
+ );
+ 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) => {
)}
)}
-
+ {!settings.merged.hideFooter && (
+
+ )}