From 16df9412fdec9672a52be5c1876ace0f5e972503 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Fri, 24 Jul 2026 22:13:38 +0300 Subject: [PATCH] fix: update keyboard shortcut abort logic Use current session activity to determine when abort shortcuts are available Prevent abort priming when there is no active session --- bun.lock | 8 ++++---- packages/ui/src/hooks/useKeyboardShortcuts.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index 01e25f9e..f019b2b2 100644 --- a/bun.lock +++ b/bun.lock @@ -97,7 +97,7 @@ }, "packages/electron": { "name": "@openchamber/electron", - "version": "1.16.2", + "version": "1.16.3", "dependencies": { "@openchamber/web": "workspace:*", "electron-context-menu": "^4.1.2", @@ -133,7 +133,7 @@ }, "packages/ui": { "name": "@openchamber/ui", - "version": "1.16.2", + "version": "1.16.3", "dependencies": { "@aparajita/capacitor-secure-storage": "^8.0.0", "@base-ui/react": "^1.4.0", @@ -238,7 +238,7 @@ }, "packages/vscode": { "name": "openchamber", - "version": "1.16.2", + "version": "1.16.3", "dependencies": { "@openchamber/ui": "workspace:*", "@opencode-ai/sdk": "1.18.4", @@ -261,7 +261,7 @@ }, "packages/web": { "name": "@openchamber/web", - "version": "1.16.2", + "version": "1.16.3", "bin": { "openchamber": "./bin/cli.js", }, diff --git a/packages/ui/src/hooks/useKeyboardShortcuts.ts b/packages/ui/src/hooks/useKeyboardShortcuts.ts index 559332f5..83b169bc 100644 --- a/packages/ui/src/hooks/useKeyboardShortcuts.ts +++ b/packages/ui/src/hooks/useKeyboardShortcuts.ts @@ -5,7 +5,7 @@ import { useSelectionStore } from '@/sync/selection-store'; import * as sessionActions from '@/sync/session-actions'; import { useUIStore } from '@/stores/useUIStore'; import { useThemeSystem } from '@/contexts/useThemeSystem'; -import { useAssistantStatus } from '@/hooks/useAssistantStatus'; +import { useCurrentSessionActivity } from '@/hooks/useSessionActivity'; import { createWorktreeSession } from '@/lib/worktreeSessionCreator'; import { useConfigStore } from '@/stores/useConfigStore'; import { canUseElectronDesktopIPC, invokeDesktop, isVSCodeRuntime } from '@/lib/desktop'; @@ -43,7 +43,7 @@ export const useKeyboardShortcuts = () => { const currentDirectory = useDirectoryStore((s) => s.currentDirectory); const activeProject = useProjectsStore((s) => s.getActiveProject()); const { themeMode, setThemeMode } = useThemeSystem(); - const { working } = useAssistantStatus(); + const { phase: sessionPhase } = useCurrentSessionActivity(); const abortPrimedUntilRef = React.useRef(null); const abortPrimedTimeoutRef = React.useRef | null>(null); const themeModeRef = React.useRef(themeMode); @@ -569,7 +569,7 @@ export const useKeyboardShortcuts = () => { // Double-ESC abort logic - only when on chat tab with no overlays const sessionId = currentSessionId; - const canAbortNow = working.canAbort && Boolean(sessionId); + const canAbortNow = sessionPhase !== 'idle' && Boolean(sessionId); if (!canAbortNow) { resetAbortPriming(); return; @@ -631,7 +631,7 @@ export const useKeyboardShortcuts = () => { setPromptNavigatorPanelOpen, toggleExpandedInput, setThemeMode, - working, + sessionPhase, armAbortPrompt, resetAbortPriming, currentSessionId,