refactor(ui): extract switch controls logic into reusable hook and terminal restoration utility

Extracts duplicated exit/switch confirmation handling from CodexDisplay and RemoteModeDisplay into a custom useSwitchControls hook. Centralizes terminal state restoration (raw mode, keyboard protocol cleanup) into a restoreTerminalState utility function used across codex modules. Improves code reusability and maintainability.
This commit is contained in:
weishu
2025-12-22 23:12:24 +08:00
parent 360e3a9919
commit 93810689ad
10 changed files with 316 additions and 139 deletions
+2
View File
@@ -4,6 +4,7 @@ import { resolve } from 'node:path';
import { ApiClient } from '@/api/api';
import { logger } from '@/ui/logger';
import { restoreTerminalState } from '@/ui/terminalState';
import { loop, type EnhancedMode, type PermissionMode } from './loop';
import { MessageQueue2 } from '@/utils/MessageQueue2';
import { hashObject } from '@/utils/deterministicJson';
@@ -136,6 +137,7 @@ export async function runCodex(opts: {
}
cleanupStarted = true;
logger.debug('[codex] Cleanup start');
restoreTerminalState();
try {
if (sessionWrapper) {
sessionWrapper.stopKeepAlive();