From ad1ef6a8c69e0ff1c978f8e6eece64bf18b9897c Mon Sep 17 00:00:00 2001 From: dotta Date: Thu, 2 Apr 2026 12:21:35 -0500 Subject: [PATCH] fix(ui): address final Greptile follow-up Co-Authored-By: Paperclip --- packages/db/src/backup-lib.ts | 6 +++++- ui/src/lib/keyboardShortcuts.test.ts | 7 +++++++ ui/src/lib/keyboardShortcuts.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/db/src/backup-lib.ts b/packages/db/src/backup-lib.ts index 4a2ca64a..c148b8ba 100644 --- a/packages/db/src/backup-lib.ts +++ b/packages/db/src/backup-lib.ts @@ -228,7 +228,11 @@ export function createBufferedTextFileWriter(filePath: string, maxBufferedBytes stream.destroy(); await pendingWrite.catch(() => {}); if (existsSync(filePath)) { - unlinkSync(filePath); + try { + unlinkSync(filePath); + } catch { + // Preserve the original backup failure if temporary file cleanup also fails. + } } }, }; diff --git a/ui/src/lib/keyboardShortcuts.test.ts b/ui/src/lib/keyboardShortcuts.test.ts index 90d4281a..7fa66bc3 100644 --- a/ui/src/lib/keyboardShortcuts.test.ts +++ b/ui/src/lib/keyboardShortcuts.test.ts @@ -33,6 +33,13 @@ describe("keyboardShortcuts helpers", () => { expect(hasBlockingShortcutDialog(document.createElement("div"))).toBe(false); }); + it("ignores non-dialog elements that happen to be aria-modal", () => { + const root = document.createElement("div"); + root.innerHTML = `
`; + + expect(hasBlockingShortcutDialog(root)).toBe(false); + }); + it("archives only the first clean y press", () => { const button = document.createElement("button"); diff --git a/ui/src/lib/keyboardShortcuts.ts b/ui/src/lib/keyboardShortcuts.ts index 0983e218..7007ea69 100644 --- a/ui/src/lib/keyboardShortcuts.ts +++ b/ui/src/lib/keyboardShortcuts.ts @@ -19,7 +19,7 @@ export function isKeyboardShortcutTextInputTarget(target: EventTarget | null): b } export function hasBlockingShortcutDialog(root: ParentNode = document): boolean { - return !!root.querySelector("[role='dialog'], [aria-modal='true']"); + return !!root.querySelector("[role='dialog'][aria-modal='true']"); } export function isModifierOnlyKey(key: string): boolean {