diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index f93d1f069..daf2aaa5c 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -1213,11 +1213,28 @@ export default function Layout(props: ParentProps) { } function closeProject(directory: string) { - const index = layout.projects.list().findIndex((x) => x.worktree === directory) - const next = layout.projects.list()[index + 1] + const list = layout.projects.list() + const index = list.findIndex((x) => x.worktree === directory) + const active = currentProject()?.worktree === directory + if (index === -1) return + const next = list[index + 1] + + if (!active) { + layout.projects.close(directory) + return + } + + if (!next) { + layout.projects.close(directory) + navigate("/") + return + } + + navigateWithSidebarReset(`/${base64Encode(next.worktree)}/session`) layout.projects.close(directory) - if (next) navigateToProject(next.worktree) - else navigate("/") + queueMicrotask(() => { + void navigateToProject(next.worktree) + }) } function toggleProjectWorkspaces(project: LocalProject) { @@ -2064,7 +2081,11 @@ export default function Layout(props: ParentProps) { onOpenSettings={openSettings} helpLabel={() => language.t("sidebar.help")} onOpenHelp={() => platform.openLink("https://opencode.ai/desktop-feedback")} - renderPanel={() => } + renderPanel={() => ( + + {(project) => } + + )} />