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) => }
+
+ )}
/>