From 6503dfd1d7416504ad09f4c5f7f32af85ba871ea Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sat, 30 May 2026 14:28:56 -0700 Subject: [PATCH] perf: cache pty spawn repo lookups (#3948) --- src/renderer/src/components/terminal-pane/pty-connection.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/components/terminal-pane/pty-connection.ts b/src/renderer/src/components/terminal-pane/pty-connection.ts index ba6c85135e4..a6cf0729462 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection.ts @@ -8,6 +8,7 @@ import { } from '@/lib/agent-status' import { scheduleRuntimeGraphSync } from '@/runtime/sync-runtime-graph' import { useAppStore } from '@/store' +import { getRepoMapFromState, getWorktreeMapFromState } from '@/store/selectors' import type { PtyConnectResult } from './pty-transport' import { createIpcPtyTransport } from './pty-transport' import { createRemoteRuntimePtyTransport } from './remote-runtime-pty-transport' @@ -1013,9 +1014,8 @@ export function connectPanePty( // Why: remote repos route PTY spawn through the SSH provider. Resolve the // repo's connectionId from the store so the transport passes it to pty:spawn. const state = useAppStore.getState() - const allWorktrees = Object.values(state.worktreesByRepo ?? {}).flat() - const worktree = allWorktrees.find((w) => w.id === deps.worktreeId) - const repo = worktree ? state.repos?.find((r) => r.id === worktree.repoId) : null + const worktree = getWorktreeMapFromState(state).get(deps.worktreeId) + const repo = worktree ? getRepoMapFromState(state).get(worktree.repoId) : null const connectionId = repo?.connectionId ?? null const tab = (state.tabsByWorktree[deps.worktreeId] ?? []).find((t) => t.id === deps.tabId) const shellOverride = tab?.shellOverride