diff --git a/packages/coding-agent/src/cli/config-selector.ts b/packages/coding-agent/src/cli/config-selector.ts index 93d591cd..22d497ff 100644 --- a/packages/coding-agent/src/cli/config-selector.ts +++ b/packages/coding-agent/src/cli/config-selector.ts @@ -43,6 +43,7 @@ export async function selectConfig(options: ConfigSelectorOptions): Promise ui.requestRender(), + ui.terminal.rows, ); ui.addChild(selector); diff --git a/packages/coding-agent/src/modes/interactive/components/config-selector.ts b/packages/coding-agent/src/modes/interactive/components/config-selector.ts index c321dfe5..0ddbdf53 100644 --- a/packages/coding-agent/src/modes/interactive/components/config-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/config-selector.ts @@ -178,7 +178,7 @@ class ResourceList implements Component, Focusable { private filteredItems: FlatEntry[] = []; private selectedIndex = 0; private searchInput: Input; - private maxVisible = 15; + private maxVisible: number; private settingsManager: SettingsManager; private cwd: string; private agentDir: string; @@ -196,12 +196,21 @@ class ResourceList implements Component, Focusable { this.searchInput.focused = value; } - constructor(groups: ResourceGroup[], settingsManager: SettingsManager, cwd: string, agentDir: string) { + constructor( + groups: ResourceGroup[], + settingsManager: SettingsManager, + cwd: string, + agentDir: string, + terminalHeight?: number, + ) { this.groups = groups; this.settingsManager = settingsManager; this.cwd = cwd; this.agentDir = agentDir; this.searchInput = new Input(); + // 8 lines of chrome: top spacer + top border + spacer + header (2 lines) + spacer + bottom spacer + bottom border + const chrome = 8; + this.maxVisible = Math.max(5, (terminalHeight ?? 24) - chrome); this.buildFlatList(); this.filteredItems = [...this.flatItems]; } @@ -565,6 +574,7 @@ export class ConfigSelectorComponent extends Container implements Focusable { onClose: () => void, onExit: () => void, requestRender: () => void, + terminalHeight?: number, ) { super(); @@ -578,7 +588,7 @@ export class ConfigSelectorComponent extends Container implements Focusable { this.addChild(new Spacer(1)); // Resource list - this.resourceList = new ResourceList(groups, settingsManager, cwd, agentDir); + this.resourceList = new ResourceList(groups, settingsManager, cwd, agentDir, terminalHeight); this.resourceList.onCancel = onClose; this.resourceList.onExit = onExit; this.resourceList.onToggle = () => requestRender();