diff --git a/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.test.ts b/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.test.ts index ee11f6323..a68a1d52f 100644 --- a/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.test.ts +++ b/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.test.ts @@ -101,6 +101,14 @@ describe("useChatTitleGenerator", () => { title: "Fix login bug", }); }); + expect(mockSetQueriesData).toHaveBeenCalledWith( + { queryKey: ["tasks", "list"] }, + expect.any(Function), + ); + expect(mockSetQueriesData).toHaveBeenCalledWith( + { queryKey: ["tasks", "summaries"] }, + expect.any(Function), + ); }); it.each([ diff --git a/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.ts b/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.ts index 048436046..22f748019 100644 --- a/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.ts +++ b/apps/code/src/renderer/features/sessions/hooks/useChatTitleGenerator.ts @@ -4,6 +4,7 @@ import { sessionStoreSetters, useSessionStore, } from "@features/sessions/stores/sessionStore"; +import type { Schemas } from "@renderer/api/generated"; import type { Task } from "@shared/types"; import { enrichDescriptionWithFileContent, @@ -88,6 +89,13 @@ export function useChatTitleGenerator(taskId: string): void { task.id === taskId ? { ...task, title } : task, ), ); + queryClient.setQueriesData( + { queryKey: ["tasks", "summaries"] }, + (old) => + old?.map((task) => + task.id === taskId ? { ...task, title } : task, + ), + ); getSessionService().updateSessionTaskTitle(taskId, title); log.debug("Updated task title from conversation", { taskId, diff --git a/apps/code/src/renderer/features/sidebar/components/SidebarMenu.tsx b/apps/code/src/renderer/features/sidebar/components/SidebarMenu.tsx index 05fb194af..8edd66f80 100644 --- a/apps/code/src/renderer/features/sidebar/components/SidebarMenu.tsx +++ b/apps/code/src/renderer/features/sidebar/components/SidebarMenu.tsx @@ -18,6 +18,7 @@ import { useWorkspaces } from "@features/workspace/hooks/useWorkspace"; import { useTaskContextMenu } from "@hooks/useTaskContextMenu"; import { ScrollArea, Separator } from "@posthog/quill"; import { Box, Flex } from "@radix-ui/themes"; +import type { Schemas } from "@renderer/api/generated"; import type { Task } from "@shared/types"; import { useNavigationStore } from "@stores/navigationStore"; import { useRendererWindowFocusStore } from "@stores/rendererWindowFocusStore"; @@ -273,6 +274,13 @@ function SidebarMenuComponent() { : task, ), ); + queryClient.setQueriesData( + { queryKey: ["tasks", "summaries"] }, + (old) => + old?.map((task) => + task.id === taskId ? { ...task, title: newTitle } : task, + ), + ); // Sync to session store so notifications use the updated title getSessionService().updateSessionTaskTitle(taskId, newTitle); @@ -286,6 +294,7 @@ function SidebarMenuComponent() { log.error("Failed to rename task", error); // Refetch to revert optimistic update on failure queryClient.invalidateQueries({ queryKey: ["tasks", "list"] }); + queryClient.invalidateQueries({ queryKey: ["tasks", "summaries"] }); } }, [setEditingTaskId, updateTask, queryClient, log], diff --git a/apps/code/src/renderer/features/tasks/hooks/useTasks.ts b/apps/code/src/renderer/features/tasks/hooks/useTasks.ts index 07c5f7e6b..32491e6b5 100644 --- a/apps/code/src/renderer/features/tasks/hooks/useTasks.ts +++ b/apps/code/src/renderer/features/tasks/hooks/useTasks.ts @@ -136,6 +136,9 @@ export function useUpdateTask() { onSuccess: (_, { taskId }) => { queryClient.invalidateQueries({ queryKey: taskKeys.lists() }); queryClient.invalidateQueries({ queryKey: taskKeys.detail(taskId) }); + queryClient.invalidateQueries({ + queryKey: [...taskKeys.all, "summaries"], + }); }, }, );