From 65867b86ee50c8cc7a31a80d623e4ae93eb1f08e Mon Sep 17 00:00:00 2001 From: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:38:48 -0700 Subject: [PATCH] fix: resolve workspace placement before init (#2099) Co-authored-by: Lawrence Chen --- Sources/TabManager.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Sources/TabManager.swift b/Sources/TabManager.swift index e0ecf247..1b7f3701 100644 --- a/Sources/TabManager.swift +++ b/Sources/TabManager.swift @@ -1120,6 +1120,10 @@ class TabManager: ObservableObject { let explicitWorkingDirectory = normalizedWorkingDirectory(overrideWorkingDirectory) let workingDirectory = explicitWorkingDirectory ?? preferredWorkingDirectoryForNewTab(snapshot: snapshot) let inheritedConfig = inheritedTerminalConfigForNewWorkspace(snapshot: snapshot) + // Resolve placement against the pre-creation snapshot before Workspace init + // boots terminal state. The ssh/new-workspace path can otherwise crash while + // reading @Published placement state from existing workspaces mid-creation. + let insertIndex = newTabInsertIndex(snapshot: snapshot, placementOverride: placementOverride) let ordinal = Self.nextPortOrdinal Self.nextPortOrdinal += 1 let newWorkspace = Workspace( @@ -1132,7 +1136,6 @@ class TabManager: ObservableObject { ) newWorkspace.owningTabManager = self wireClosedBrowserTracking(for: newWorkspace) - let insertIndex = newTabInsertIndex(snapshot: snapshot, placementOverride: placementOverride) if eagerLoadTerminal && !select { requestBackgroundWorkspaceLoad(for: newWorkspace.id) }