From 73b261b94f48e56b477004bd1e5a89ccbde05f0d Mon Sep 17 00:00:00 2001 From: alt-glitch Date: Wed, 10 Jun 2026 22:08:39 +0530 Subject: [PATCH] opentui(v6): monotonic double-press clock + consume the viewer's closing Esc --- ui-opentui/src/logic/promptHistory.ts | 4 +++- ui-opentui/src/view/overlays/promptHistory.tsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ui-opentui/src/logic/promptHistory.ts b/ui-opentui/src/logic/promptHistory.ts index 281d6ef11da..e314c7b8513 100644 --- a/ui-opentui/src/logic/promptHistory.ts +++ b/ui-opentui/src/logic/promptHistory.ts @@ -40,7 +40,9 @@ export interface DoublePress { export function createDoublePress(windowMs: number = DOUBLE_PRESS_WINDOW_MS): DoublePress { let armedAt: number | undefined return { - press(now: number = Date.now()): boolean { + // performance.now() is monotonic (Node) — an NTP/wall-clock jump between + // two presses can't break or spuriously satisfy the window (review finding). + press(now: number = performance.now()): boolean { if (armedAt !== undefined && now - armedAt <= windowMs) { armedAt = undefined return true diff --git a/ui-opentui/src/view/overlays/promptHistory.tsx b/ui-opentui/src/view/overlays/promptHistory.tsx index d557e13709a..35adcfd5255 100644 --- a/ui-opentui/src/view/overlays/promptHistory.tsx +++ b/ui-opentui/src/view/overlays/promptHistory.tsx @@ -62,7 +62,9 @@ export function PromptHistory(props: { useKeyboard(key => { if (key.eventType === 'release') return if (key.name === 'escape' || (key.ctrl && key.name === 'c')) { - // Esc backs out one level: confirm → list, list → closed. + // Esc backs out one level: confirm → list, list → closed. Consumed — + // a closing Esc must never reach later global handlers (review finding). + key.preventDefault() if (confirming() !== undefined) setConfirming(undefined) else props.onClose() return