From 4e53b7bf149fc966ed4c8933cbde8848fb28b665 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 30 Mar 2026 09:24:21 +0200 Subject: [PATCH] fix(code): use shallow equality in session selector hooks Zustand selectors use === by default, so derived values like extractAvailableCommandsFromEvents() or fallback empty arrays/Maps cause re-renders even when the contents haven't changed. Adding shallow as the equality function makes these hooks value-aware. --- .../src/renderer/features/sessions/hooks/useSession.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/code/src/renderer/features/sessions/hooks/useSession.ts b/apps/code/src/renderer/features/sessions/hooks/useSession.ts index 246b2d0a1..12edb747c 100644 --- a/apps/code/src/renderer/features/sessions/hooks/useSession.ts +++ b/apps/code/src/renderer/features/sessions/hooks/useSession.ts @@ -6,6 +6,7 @@ import { extractAvailableCommandsFromEvents, extractUserPromptsFromEvents, } from "@utils/session"; +import { shallow } from "zustand/shallow"; import { type Adapter, type AgentSession, @@ -39,7 +40,7 @@ export const useAvailableCommandsForTask = ( const session = s.sessions[taskRunId]; if (!session?.events) return []; return extractAvailableCommandsFromEvents(session.events); - }); + }, shallow); }; export function getAvailableCommandsForTask( @@ -73,7 +74,7 @@ export const usePendingPermissionsForTask = ( if (!taskRunId) return new Map(); const session = s.sessions[taskRunId]; return session?.pendingPermissions ?? new Map(); - }); + }, shallow); }; export function getPendingPermissionsForTask( @@ -96,7 +97,7 @@ export const useQueuedMessagesForTask = ( if (!taskRunId) return []; const session = s.sessions[taskRunId]; return session?.messageQueue ?? []; - }); + }, shallow); }; export const useOptimisticItemsForTask = ( @@ -107,7 +108,7 @@ export const useOptimisticItemsForTask = ( const taskRunId = s.taskIdIndex[taskId]; if (!taskRunId) return []; return s.sessions[taskRunId]?.optimisticItems ?? []; - }); + }, shallow); }; // --- Config Option Hooks ---