Skip to content

Commit 8b375f1

Browse files
committed
Fix task env memoization
1 parent 814548c commit 8b375f1

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

src/main/services/ptyIpc.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@ export function registerPtyIpc(): void {
418418
rows,
419419
autoApprove,
420420
initialPrompt,
421+
env,
421422
skipResume: !resume,
422423
});
423424
usedFallback = true;

src/renderer/components/MultiAgentTask.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,25 @@ const MultiAgentTask: React.FC<Props> = ({ task, projectPath, defaultBranch }) =
4242
const multi = task.metadata?.multiAgent;
4343
const variants = (multi?.variants || []) as Variant[];
4444

45-
const getVariantEnv = (variant: Variant) => {
46-
if (!projectPath) return undefined;
47-
return getTaskEnvVars({
48-
taskId: task.id,
49-
taskName: variant.name || task.name,
50-
taskPath: variant.path,
51-
projectPath,
52-
defaultBranch: defaultBranch || undefined,
53-
portSeed: variant.worktreeId || variant.path,
54-
});
55-
};
45+
const variantEnvs = useMemo(() => {
46+
if (!projectPath) return new Map<string, Record<string, string>>();
47+
const envMap = new Map<string, Record<string, string>>();
48+
for (const variant of variants) {
49+
const key = variant.worktreeId || variant.path;
50+
envMap.set(
51+
key,
52+
getTaskEnvVars({
53+
taskId: task.id,
54+
taskName: variant.name || task.name,
55+
taskPath: variant.path,
56+
projectPath,
57+
defaultBranch: defaultBranch || undefined,
58+
portSeed: key,
59+
})
60+
);
61+
}
62+
return envMap;
63+
}, [variants, task.id, task.name, projectPath, defaultBranch]);
5664

5765
// Auto-scroll to bottom when this task becomes active
5866
const { scrollToBottom } = useAutoScrollOnTaskSwitch(true, task.id);
@@ -497,7 +505,7 @@ const MultiAgentTask: React.FC<Props> = ({ task, projectPath, defaultBranch }) =
497505
id={`${v.worktreeId}-main`}
498506
cwd={v.path}
499507
providerId={v.agent}
500-
env={getVariantEnv(v)}
508+
env={variantEnvs.get(v.worktreeId || v.path)}
501509
autoApprove={
502510
Boolean(task.metadata?.autoApprove) &&
503511
Boolean(agentMeta[v.agent]?.autoApproveFlag)

src/renderer/components/TaskTerminalPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const TaskTerminalPanelComponent: React.FC<Props> = ({
9595
defaultBranch,
9696
portSeed,
9797
});
98-
}, [task, projectPath, defaultBranch, portSeed]);
98+
}, [task?.id, task?.name, task?.path, projectPath, defaultBranch, portSeed]);
9999

100100
// Run setup script when a task terminal becomes ready (only once per terminal)
101101
const handleTerminalReady = useCallback((terminalId: string) => {

0 commit comments

Comments
 (0)