From b7f7a1d8a2eb2ec04b58fc1c3ad9eec0995de56f Mon Sep 17 00:00:00 2001 From: waleed Date: Wed, 29 Apr 2026 19:17:29 -0700 Subject: [PATCH 1/2] fix(fork): scope task list invalidation to current workspace --- .../components/message-actions/message-actions.tsx | 2 +- apps/sim/hooks/queries/tasks.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx b/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx index 3934241abfb..fa3f0008294 100644 --- a/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx +++ b/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx @@ -72,7 +72,7 @@ export const MessageActions = memo(function MessageActions({ const resetTimeoutRef = useRef(null) const requestIdTimeoutRef = useRef(null) const submitFeedback = useSubmitCopilotFeedback() - const forkTask = useForkTask() + const forkTask = useForkTask(params.workspaceId) useEffect(() => { return () => { diff --git a/apps/sim/hooks/queries/tasks.ts b/apps/sim/hooks/queries/tasks.ts index 2fba691269c..100f891c36e 100644 --- a/apps/sim/hooks/queries/tasks.ts +++ b/apps/sim/hooks/queries/tasks.ts @@ -605,12 +605,12 @@ async function forkChat(params: { return { id: data.id } } -export function useForkTask() { +export function useForkTask(workspaceId?: string) { const queryClient = useQueryClient() return useMutation({ mutationFn: forkChat, onSettled: () => { - queryClient.invalidateQueries({ queryKey: taskKeys.lists() }) + queryClient.invalidateQueries({ queryKey: taskKeys.list(workspaceId) }) }, }) } From 31a4006f495e399df68688c56f98ca9c9c0d0975 Mon Sep 17 00:00:00 2001 From: waleed Date: Wed, 29 Apr 2026 19:25:23 -0700 Subject: [PATCH 2/2] fix(sidebar): remove mutation objects from useCallback deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mutation objects are not referentially stable in TanStack Query v5 — only .mutate() and .mutateAsync() are stable. Removed deleteTaskMutation, deleteTasksMutation, markTaskReadMutation, and markTaskUnreadMutation from their respective useCallback dependency arrays to avoid unnecessary recreations on every mutation state update. --- .../[workspaceId]/w/components/sidebar/sidebar.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx index e14ff170d5e..1688600954c 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx @@ -896,7 +896,7 @@ export const Sidebar = memo(function Sidebar() { deleteTasksMutation.mutate(taskIdsToDelete, { onSuccess: onDeleteSuccess }) } setIsTaskDeleteModalOpen(false) - }, [pathname, workspaceId, deleteTaskMutation, deleteTasksMutation, navigateToPage]) + }, [pathname, workspaceId, navigateToPage]) const [visibleTaskCount, setVisibleTaskCount] = useState(5) const taskFlyoutRename = useFlyoutInlineRename({ @@ -935,13 +935,13 @@ export const Sidebar = memo(function Sidebar() { const { taskIds: ids } = contextMenuSelectionRef.current if (ids.length !== 1) return markTaskReadMutation.mutate(ids[0]) - }, [markTaskReadMutation]) + }, []) const handleMarkTaskAsUnread = useCallback(() => { const { taskIds: ids } = contextMenuSelectionRef.current if (ids.length !== 1) return markTaskUnreadMutation.mutate(ids[0]) - }, [markTaskUnreadMutation]) + }, []) const handleStartTaskRename = useCallback(() => { const { taskIds: ids } = contextMenuSelectionRef.current