From 335cad15428143c44fedb6401afdac6fdad2687d Mon Sep 17 00:00:00 2001 From: natewill <50088025+natewill@users.noreply.github.com> Date: Sat, 7 Mar 2026 20:51:50 -0500 Subject: [PATCH] fix(app): prefer opened workspace when routing sessions --- packages/app/src/pages/layout.tsx | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 9c359aafbda..08e0cd97839 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -1170,6 +1170,7 @@ export default function Layout(props: ParentProps) { if (!value) return false return dirs.some((item) => workspaceKey(item) === workspaceKey(value)) } + const pref = canOpen(directory) ? directory : root const refreshDirs = async (target?: string) => { if (!target || target === root || canOpen(target)) return canOpen(target) const listed = await globalSDK.client.worktree @@ -1199,13 +1200,36 @@ export default function Layout(props: ParentProps) { } const projectSession = store.lastProjectSession[root] - if (projectSession?.id) { + const same = (a: string, b: string) => workspaceKey(a) === workspaceKey(b) + if (projectSession?.id && (pref === root || same(projectSession.directory, pref))) { await refreshDirs(projectSession.directory) const opened = await openSession(projectSession) if (opened) return clearLastProjectSession(root) } + if (pref !== root) { + const local = latestRootSession([globalSync.child(pref, { bootstrap: false })[0]], Date.now()) + if (local && (await openSession(local))) return + + const fetched = latestRootSession( + [ + { + path: { directory: pref }, + session: await globalSDK.client.session + .list({ directory: pref }) + .then((x) => x.data ?? []) + .catch(() => []), + }, + ], + Date.now(), + ) + if (fetched && (await openSession(fetched))) return + + navigateWithSidebarReset(`/${base64Encode(pref)}/session`) + return + } + const latest = latestRootSession( dirs.map((item) => globalSync.child(item, { bootstrap: false })[0]), Date.now(),