From 746cfb791c3ab9f3f9be1ac25c28d8cc6b1fd88f Mon Sep 17 00:00:00 2001 From: arkon Date: Wed, 21 Jan 2026 06:46:11 +0100 Subject: [PATCH] refactor(tui): clean up unused code and consolidate input handling - Remove unused imports (Text, execSync, writeFileSync, React) - Move n/r/q key handlers from App.tsx to StartScreen component - Mark unused onClose prop in HelpOverlay with underscore prefix - Consolidate keyboard handling in components that display the controls Co-Authored-By: Claude Opus 4.5 --- src/tui/App.tsx | 20 ++++---------------- src/tui/components/HelpOverlay.tsx | 2 +- src/tui/components/StartScreen.tsx | 18 ++++++++++++++++++ src/tui/hooks/useSessionManager.ts | 2 +- src/tui/index.tsx | 1 - 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/tui/App.tsx b/src/tui/App.tsx index 4e442c01..9aaa8ad8 100644 --- a/src/tui/App.tsx +++ b/src/tui/App.tsx @@ -24,8 +24,8 @@ */ import React, { useState, useEffect, useCallback } from 'react'; -import { Box, Text, useApp, useInput, useStdout } from 'ink'; -import { execSync, spawnSync } from 'child_process'; +import { Box, useApp, useInput, useStdout } from 'ink'; +import { spawnSync } from 'child_process'; import { StartScreen } from './components/StartScreen.js'; import { TabBar } from './components/TabBar.js'; import { TerminalView } from './components/TerminalView.js'; @@ -118,21 +118,9 @@ export function App(): React.ReactElement { return; } - // Start screen specific inputs + // Start screen specific inputs - handled by StartScreen component + // Only number keys for quick session selection are handled here if (viewMode === 'start') { - if (input === 'q') { - exit(); - return; - } - if (input === 'n') { - handleCreateSession(); - return; - } - if (input === 'r') { - refreshSessions(); - return; - } - // Number keys to select session const num = parseInt(input, 10); if (!isNaN(num) && num >= 1 && num <= sessions.length) { handleSelectSession(sessions[num - 1]); diff --git a/src/tui/components/HelpOverlay.tsx b/src/tui/components/HelpOverlay.tsx index 4db56470..4d04848b 100644 --- a/src/tui/components/HelpOverlay.tsx +++ b/src/tui/components/HelpOverlay.tsx @@ -75,7 +75,7 @@ const SHORTCUT_GROUPS: ShortcutGroup[] = [ * @param props.onClose - Callback invoked when overlay should close * @returns The help overlay element */ -export function HelpOverlay({ onClose }: HelpOverlayProps): React.ReactElement { +export function HelpOverlay({ onClose: _onClose }: HelpOverlayProps): React.ReactElement { return ( {/* Header */} diff --git a/src/tui/components/StartScreen.tsx b/src/tui/components/StartScreen.tsx index db310713..c273471b 100644 --- a/src/tui/components/StartScreen.tsx +++ b/src/tui/components/StartScreen.tsx @@ -125,6 +125,24 @@ export function StartScreen({ onDeleteSession(sessions[selectedIndex]); return; } + + // 'n' to create new session + if (input === 'n') { + onCreateSession(); + return; + } + + // 'r' to refresh session list + if (input === 'r') { + onRefresh(); + return; + } + + // 'q' to quit + if (input === 'q') { + onExit(); + return; + } }); return ( diff --git a/src/tui/hooks/useSessionManager.ts b/src/tui/hooks/useSessionManager.ts index a352f54b..5efabeb0 100644 --- a/src/tui/hooks/useSessionManager.ts +++ b/src/tui/hooks/useSessionManager.ts @@ -24,7 +24,7 @@ */ import { useState, useEffect, useCallback, useRef } from 'react'; -import { existsSync, readFileSync, writeFileSync, watchFile, unwatchFile, unlinkSync } from 'fs'; +import { existsSync, readFileSync, watchFile, unwatchFile, unlinkSync } from 'fs'; import { homedir } from 'os'; import { join } from 'path'; import { execSync } from 'child_process'; diff --git a/src/tui/index.tsx b/src/tui/index.tsx index 0c3b8b1d..a88169b9 100644 --- a/src/tui/index.tsx +++ b/src/tui/index.tsx @@ -24,7 +24,6 @@ * @see {@link ./hooks/useSessionManager.ts} for state management */ -import React from 'react'; import { render } from 'ink'; import { App } from './App.js';