From 85d4e2d31982c687e694a9a05def36a19ae25231 Mon Sep 17 00:00:00 2001 From: Tom <42646381+panzeyu2013@users.noreply.github.com> Date: Sat, 13 Jun 2026 01:22:13 +0800 Subject: [PATCH] fix: use effectiveDirectory in ToolPart to fix empty ContextPanel iframe for sub-tasks (#1552) Replace useDirectoryStore.currentDirectory with useEffectiveDirectory() in both TaskToolSummary and ToolPartContent to align the directory key used for ContextPanel tab storage/lookup. Previously ToolPart used the global project root while ContextPanel resolved session/worktree-scoped directories via useEffectiveDirectory(), causing a key mismatch that left the iframe blank when opening sub-tasks from chat messages. --- packages/ui/src/components/chat/message/parts/ToolPart.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ui/src/components/chat/message/parts/ToolPart.tsx b/packages/ui/src/components/chat/message/parts/ToolPart.tsx index 3c90ca68..9fcc5808 100644 --- a/packages/ui/src/components/chat/message/parts/ToolPart.tsx +++ b/packages/ui/src/components/chat/message/parts/ToolPart.tsx @@ -10,7 +10,7 @@ import type { ToolPart as ToolPartType, ToolState as ToolStateUnion } from '@ope import { toolDisplayStyles } from '@/lib/typography'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { useOptionalThemeSystem } from '@/contexts/useThemeSystem'; -import { useDirectoryStore } from '@/stores/useDirectoryStore'; +import { useEffectiveDirectory } from '@/hooks/useEffectiveDirectory'; import { useSessionUIStore } from '@/sync/session-ui-store'; import { useDirectorySync, useSessionMessageRecords, useEnsureSessionMessages } from '@/sync/sync-context'; import { getSyncChildStores } from '@/sync/sync-refs'; @@ -1207,7 +1207,7 @@ const TaskToolSummary: React.FC<{ isActive?: boolean; }> = ({ entries, isExpanded, isMobile, output, sessionId, onShowPopup, input, animateTailText = true, isActive = false }) => { const { t } = useI18n(); - const currentDirectory = useDirectoryStore((state) => state.currentDirectory); + const currentDirectory = useEffectiveDirectory(); const setCurrentSession = useSessionUIStore((state) => state.setCurrentSession); const openContextPanelTab = useUIStore((state) => state.openContextPanelTab); const showToolFileIcons = useUIStore((state) => state.showToolFileIcons); @@ -1928,7 +1928,7 @@ const ToolPartContent: React.FC = ({ }) => { const state = part.state; const showToolFileIcons = useUIStore((s) => s.showToolFileIcons); - const currentDirectory = useDirectoryStore((s) => s.currentDirectory); + const currentDirectory = useEffectiveDirectory() ?? ''; const currentSessionId = useSessionUIStore((s) => s.currentSessionId); const normalizedPartTool = normalizeToolName(part.tool);