From 60b8a77d698ffd6c0b52af2ad4cf7734fb927b38 Mon Sep 17 00:00:00 2001 From: AndyMik90 Date: Sat, 14 Feb 2026 08:48:44 +0100 Subject: [PATCH] auto-claude: subtask-3-2 - Register new IPC handlers in insights-handlers.ts Add handlers for bulk delete, archive, bulk archive, and unarchive sessions. Update list sessions handler to accept includeArchived param. Co-Authored-By: Claude Opus 4.6 --- .../main/ipc-handlers/insights-handlers.ts | 66 ++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/apps/frontend/src/main/ipc-handlers/insights-handlers.ts b/apps/frontend/src/main/ipc-handlers/insights-handlers.ts index dd951418..7e6102f1 100644 --- a/apps/frontend/src/main/ipc-handlers/insights-handlers.ts +++ b/apps/frontend/src/main/ipc-handlers/insights-handlers.ts @@ -249,17 +249,79 @@ export function registerInsightsHandlers(getMainWindow: () => BrowserWindow | nu // List all sessions for a project ipcMain.handle( IPC_CHANNELS.INSIGHTS_LIST_SESSIONS, - async (_, projectId: string): Promise> => { + async (_, projectId: string, includeArchived?: boolean): Promise> => { const project = projectStore.getProject(projectId); if (!project) { return { success: false, error: "Project not found" }; } - const sessions = insightsService.listSessions(project.path); + const sessions = insightsService.listSessions(project.path, includeArchived ?? false); return { success: true, data: sessions }; } ); + // Delete multiple sessions + ipcMain.handle( + IPC_CHANNELS.INSIGHTS_DELETE_SESSIONS, + async (_, projectId: string, sessionIds: string[]): Promise> => { + const project = projectStore.getProject(projectId); + if (!project) { + return { success: false, error: "Project not found" }; + } + + const result = insightsService.deleteSessions(projectId, project.path, sessionIds); + return { success: true, data: result }; + } + ); + + // Archive a session + ipcMain.handle( + IPC_CHANNELS.INSIGHTS_ARCHIVE_SESSION, + async (_, projectId: string, sessionId: string): Promise => { + const project = projectStore.getProject(projectId); + if (!project) { + return { success: false, error: "Project not found" }; + } + + const success = insightsService.archiveSession(projectId, project.path, sessionId); + if (success) { + return { success: true }; + } + return { success: false, error: "Failed to archive session" }; + } + ); + + // Archive multiple sessions + ipcMain.handle( + IPC_CHANNELS.INSIGHTS_ARCHIVE_SESSIONS, + async (_, projectId: string, sessionIds: string[]): Promise> => { + const project = projectStore.getProject(projectId); + if (!project) { + return { success: false, error: "Project not found" }; + } + + const result = insightsService.archiveSessions(projectId, project.path, sessionIds); + return { success: true, data: result }; + } + ); + + // Unarchive a session + ipcMain.handle( + IPC_CHANNELS.INSIGHTS_UNARCHIVE_SESSION, + async (_, projectId: string, sessionId: string): Promise => { + const project = projectStore.getProject(projectId); + if (!project) { + return { success: false, error: "Project not found" }; + } + + const success = insightsService.unarchiveSession(project.path, sessionId); + if (success) { + return { success: true }; + } + return { success: false, error: "Failed to unarchive session" }; + } + ); + // Create a new session ipcMain.handle( IPC_CHANNELS.INSIGHTS_NEW_SESSION,