summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-19 05:09:40 -0600
committerAdam <[email protected]>2026-01-19 07:35:52 -0600
commit55739b7aa144291e335bb98b800be36898971545 (patch)
tree5af6d4a5f4107bcd6544158395aa4c488e55e74a
parent295f290efd52059f4684fa39e8fcd860cdafca8d (diff)
downloadopencode-55739b7aa144291e335bb98b800be36898971545.tar.gz
opencode-55739b7aa144291e335bb98b800be36898971545.zip
chore: cleanup
-rw-r--r--packages/app/src/pages/layout.tsx29
1 files changed, 25 insertions, 4 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 5347445a2..52574b548 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -400,7 +400,24 @@ export default function Layout(props: ParentProps) {
const currentProject = createMemo(() => {
const directory = params.dir ? base64Decode(params.dir) : undefined
if (!directory) return
- return layout.projects.list().find((p) => p.worktree === directory || p.sandboxes?.includes(directory))
+
+ const projects = layout.projects.list()
+
+ const sandbox = projects.find((p) => p.sandboxes?.includes(directory))
+ if (sandbox) return sandbox
+
+ const direct = projects.find((p) => p.worktree === directory)
+ if (direct) return direct
+
+ const [child] = globalSync.child(directory)
+ const id = child.project
+ if (!id) return
+
+ const meta = globalSync.data.project.find((p) => p.id === id)
+ const root = meta?.worktree
+ if (!root) return
+
+ return projects.find((p) => p.worktree === root)
})
createEffect(
@@ -1193,11 +1210,15 @@ export default function Layout(props: ParentProps) {
function workspaceIds(project: LocalProject | undefined) {
if (!project) return []
const dirs = [project.worktree, ...(project.sandboxes ?? [])]
+ const active = currentProject()
+ const directory = active?.worktree === project.worktree && params.dir ? base64Decode(params.dir) : undefined
+ const next = directory && directory !== project.worktree && !dirs.includes(directory) ? [...dirs, directory] : dirs
+
const existing = store.workspaceOrder[project.worktree]
- if (!existing) return dirs
+ if (!existing) return next
- const keep = existing.filter((d) => dirs.includes(d))
- const missing = dirs.filter((d) => !existing.includes(d))
+ const keep = existing.filter((d) => next.includes(d))
+ const missing = next.filter((d) => !existing.includes(d))
return [...keep, ...missing]
}