From 4bb3d658d022c09f9afde3047dabb657f9561829 Mon Sep 17 00:00:00 2001 From: AndyMik90 Date: Wed, 18 Feb 2026 15:07:03 +0100 Subject: [PATCH] fix: address PR #1829 review findings in ChatHistorySidebar and paths - Fix i18n: replace non-existent t('actions.cancel') with t('buttons.cancel') in all three AlertDialog cancel buttons (single delete, bulk delete, bulk archive) - Fix WCAG: add aria-hidden and tabIndex={-1} to decorative inner Checkbox to eliminate nested checkbox role violation in selection mode - Fix: move setBulkDeleteOpen/setBulkArchiveOpen to finally blocks so dialogs always close regardless of success or failure in bulk handlers - Fix: remove unsanitized sessionId from validateSessionId error message to prevent leaking raw input in error output (paths.ts) Co-Authored-By: Claude Opus 4.6 --- apps/frontend/src/main/insights/paths.ts | 2 +- .../src/renderer/components/ChatHistorySidebar.tsx | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/frontend/src/main/insights/paths.ts b/apps/frontend/src/main/insights/paths.ts index b587a2ce..4433990a 100644 --- a/apps/frontend/src/main/insights/paths.ts +++ b/apps/frontend/src/main/insights/paths.ts @@ -29,7 +29,7 @@ export class InsightsPaths { */ private validateSessionId(sessionId: string): void { if (!/^session-\d{1,20}$/.test(sessionId)) { - throw new Error(`Invalid session ID format: ${sessionId}`); + throw new Error('Invalid session ID format'); } } diff --git a/apps/frontend/src/renderer/components/ChatHistorySidebar.tsx b/apps/frontend/src/renderer/components/ChatHistorySidebar.tsx index 9ee20bcd..62b13ec6 100644 --- a/apps/frontend/src/renderer/components/ChatHistorySidebar.tsx +++ b/apps/frontend/src/renderer/components/ChatHistorySidebar.tsx @@ -149,9 +149,10 @@ export function ChatHistorySidebar({ try { await onDeleteSessions(Array.from(selectedIds)); setSelectedIds(new Set()); - setBulkDeleteOpen(false); } catch (error) { console.error('Failed to delete sessions:', error); + } finally { + setBulkDeleteOpen(false); } } }; @@ -167,9 +168,10 @@ export function ChatHistorySidebar({ try { await onArchiveSessions(Array.from(selectedIds)); setSelectedIds(new Set()); - setBulkArchiveOpen(false); } catch (error) { console.error('Failed to archive sessions:', error); + } finally { + setBulkArchiveOpen(false); } } }; @@ -367,7 +369,7 @@ export function ChatHistorySidebar({ - {t('actions.cancel')} + {t('buttons.cancel')} {t('actions.delete')} @@ -397,7 +399,7 @@ export function ChatHistorySidebar({ )} - {t('actions.cancel')} + {t('buttons.cancel')} {t('insights.bulkDeleteConfirm', { count: selectedIds.size })} @@ -415,7 +417,7 @@ export function ChatHistorySidebar({ - {t('actions.cancel')} + {t('buttons.cancel')} {t('insights.archiveConfirmButton', { count: selectedIds.size })} @@ -530,6 +532,8 @@ function SessionItem({ ) : (