summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-19 12:44:35 -0600
committerAdam <[email protected]>2026-01-19 12:44:41 -0600
commitc2f9fd5fef5454a1e7cedab14d78267809d10fe9 (patch)
treeabdc80710f89ac165c0a2c2708211688eafee0c6 /packages/app/src/pages
parent3fd0043d1907b0e565cee73fff0f4725f7c8c0d5 (diff)
downloadopencode-c2f9fd5fef5454a1e7cedab14d78267809d10fe9.tar.gz
opencode-c2f9fd5fef5454a1e7cedab14d78267809d10fe9.zip
fix(app): reload instance after workspace reset
Diffstat (limited to 'packages/app/src/pages')
-rw-r--r--packages/app/src/pages/layout.tsx49
1 files changed, 30 insertions, 19 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 5312ff0a2..81177d138 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -965,10 +965,23 @@ export default function Layout(props: ParentProps) {
if (!current) return
if (directory === current.worktree) return
- const reset = globalSDK.client.worktree
+ const progress = showToast({
+ persistent: true,
+ title: "Resetting workspace",
+ description: "This may take a minute.",
+ })
+ const dismiss = () => toaster.dismiss(progress)
+
+ const sessions = await globalSDK.client.session
+ .list({ directory })
+ .then((x) => x.data ?? [])
+ .catch(() => [])
+
+ const result = await globalSDK.client.worktree
.reset({ directory: current.worktree, worktreeResetInput: { directory } })
.then((x) => x.data)
.catch((err) => {
+ dismiss()
showToast({
title: "Failed to reset workspace",
description: errorMessage(err),
@@ -976,21 +989,16 @@ export default function Layout(props: ParentProps) {
return false
})
- const href = `/${base64Encode(directory)}/session`
- navigate(href)
- layout.mobileSidebar.hide()
-
- void (async () => {
- const sessions = await globalSDK.client.session
- .list({ directory })
- .then((x) => x.data ?? [])
- .catch(() => [])
-
- if (sessions.length === 0) return
+ if (!result) {
+ dismiss()
+ return
+ }
- const archivedAt = Date.now()
- await Promise.all(
- sessions.map((session) =>
+ const archivedAt = Date.now()
+ await Promise.all(
+ sessions
+ .filter((session) => session.time.archived === undefined)
+ .map((session) =>
globalSDK.client.session
.update({
sessionID: session.id,
@@ -999,11 +1007,14 @@ export default function Layout(props: ParentProps) {
})
.catch(() => undefined),
),
- )
- })()
+ )
- const result = await reset
- if (!result) return
+ await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
+ dismiss()
+
+ const href = `/${base64Encode(directory)}/session`
+ navigate(href)
+ layout.mobileSidebar.hide()
showToast({
title: "Workspace reset",