summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorFilip <[email protected]>2026-02-05 02:33:34 +0100
committerGitHub <[email protected]>2026-02-04 19:33:34 -0600
commit4086a9ae8ec0fa32ee05b369e1f956564acaa4c6 (patch)
treeffa2ecce5a610ba1e7e614b7ad98e6e2f44aa1e8 /packages
parent2614342f979f067ddbd0e33e6884c8f8b92effdc (diff)
downloadopencode-4086a9ae8ec0fa32ee05b369e1f956564acaa4c6.tar.gz
opencode-4086a9ae8ec0fa32ee05b369e1f956564acaa4c6.zip
fix(app): refresh workspace sessions on project switch (#12189)
Diffstat (limited to 'packages')
-rw-r--r--packages/app/src/pages/layout.tsx25
1 files changed, 15 insertions, 10 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 4ee54d306..903b9eaa1 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -2488,17 +2488,22 @@ export default function Layout(props: ParentProps) {
}
const LocalWorkspace = (props: { project: LocalProject; mobile?: boolean }): JSX.Element => {
- const [workspaceStore, setWorkspaceStore] = globalSync.child(props.project.worktree)
+ const workspace = createMemo(() => {
+ const [store, setStore] = globalSync.child(props.project.worktree)
+ return { store, setStore }
+ })
const slug = createMemo(() => base64Encode(props.project.worktree))
- const sessions = createMemo(() =>
- workspaceStore.session
- .filter((session) => session.directory === workspaceStore.path.directory)
+ const sessions = createMemo(() => {
+ const store = workspace().store
+ return store.session
+ .filter((session) => session.directory === store.path.directory)
.filter((session) => !session.parentID && !session.time?.archived)
- .toSorted(sortSessions(Date.now())),
- )
+ .toSorted(sortSessions(Date.now()))
+ })
const children = createMemo(() => {
+ const store = workspace().store
const map = new Map<string, string[]>()
- for (const session of workspaceStore.session) {
+ for (const session of store.session) {
if (!session.parentID) continue
const existing = map.get(session.parentID)
if (existing) {
@@ -2509,11 +2514,11 @@ export default function Layout(props: ParentProps) {
}
return map
})
- const booted = createMemo((prev) => prev || workspaceStore.status === "complete", false)
+ const booted = createMemo((prev) => prev || workspace().store.status === "complete", false)
const loading = createMemo(() => !booted() && sessions().length === 0)
- const hasMore = createMemo(() => workspaceStore.sessionTotal > sessions().length)
+ const hasMore = createMemo(() => workspace().store.sessionTotal > sessions().length)
const loadMore = async () => {
- setWorkspaceStore("limit", (limit) => limit + 5)
+ workspace().setStore("limit", (limit) => limit + 5)
await globalSync.project.loadSessions(props.project.worktree)
}