From 41843de5e0b002dd1fbe37fb62850a0555a69d38 Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Thu, 30 Oct 2025 00:21:10 +0000 Subject: [PATCH] fix: route escape abort through busy stub --- src/App.tsx | 13 +++---------- src/lib/keyboard-registry.ts | 6 +++++- src/stores/sessions.ts | 9 +++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 86c6c1c6..75b693e9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -52,6 +52,7 @@ import { updateSessionAgent, updateSessionModel, agents, + isSessionBusy, } from "./stores/sessions" import { setupTabKeyboardShortcuts } from "./lib/keyboard" import { isOpen as isCommandPaletteOpen, showCommandPalette, hideCommandPalette } from "./stores/command-palette" @@ -725,17 +726,9 @@ const App: Component = () => { const sessions = getSessions(instance.id) const session = sessions.find((s) => s.id === sessionId) - if (!session || session.messages.length === 0) return false + if (!session) return false - const lastMessage = session.messages[session.messages.length - 1] - const messageInfo = session.messagesInfo.get(lastMessage.id) - - const timeCompleted = messageInfo?.time?.completed - return ( - lastMessage.type === "assistant" && - messageInfo !== undefined && - (timeCompleted === undefined || timeCompleted === 0) - ) + return isSessionBusy(instance.id, sessionId) }, async () => { if (showFolderSelection()) { diff --git a/src/lib/keyboard-registry.ts b/src/lib/keyboard-registry.ts index c2240c54..bbb907cf 100644 --- a/src/lib/keyboard-registry.ts +++ b/src/lib/keyboard-registry.ts @@ -43,7 +43,11 @@ class KeyboardRegistry { } private matches(event: KeyboardEvent, shortcut: KeyboardShortcut): boolean { - const keyMatch = event.key.toLowerCase() === shortcut.key.toLowerCase() + const shortcutKey = shortcut.key.toLowerCase() + const eventKey = event.key ? event.key.toLowerCase() : "" + const eventCode = event.code ? event.code.toLowerCase() : "" + + const keyMatch = eventKey === shortcutKey || eventCode === shortcutKey const ctrlMatch = event.ctrlKey === (shortcut.modifiers.ctrl ?? false) const metaMatch = event.metaKey === (shortcut.modifiers.meta ?? false) const shiftMatch = event.shiftKey === (shortcut.modifiers.shift ?? false) diff --git a/src/stores/sessions.ts b/src/stores/sessions.ts index 6a50ef80..6da2f556 100644 --- a/src/stores/sessions.ts +++ b/src/stores/sessions.ts @@ -649,6 +649,14 @@ function getSessionFamily(instanceId: string, parentId: string): Session[] { return [parent, ...children] } +function isSessionBusy(instanceId: string, sessionId: string): boolean { + const instanceSessions = sessions().get(instanceId) + if (!instanceSessions) return false + if (!instanceSessions.has(sessionId)) return false + + return true +} + async function loadMessages(instanceId: string, sessionId: string, force = false): Promise { // If force reload, clear the loaded cache if (force) { @@ -1416,6 +1424,7 @@ export { getParentSessions, getChildSessions, getSessionFamily, + isSessionBusy, updateSessionAgent, updateSessionModel, getDefaultModel,