summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-15 17:34:38 -0600
committerAdam <[email protected]>2026-01-19 07:35:52 -0600
commit1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c (patch)
tree8d94baf7e4e811cc066ca4257b52cb7468039c43
parentdca2540ca786d818da4387ddff19eba865630a37 (diff)
downloadopencode-1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c.tar.gz
opencode-1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c.zip
chore: cleanup
-rw-r--r--packages/app/src/pages/layout.tsx24
-rw-r--r--packages/opencode/src/worktree/index.ts10
2 files changed, 25 insertions, 9 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 3b8c76e04..b152c4725 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -942,11 +942,16 @@ export default function Layout(props: ParentProps) {
}
}
- const resetWorkspace = async (directory: string, sessions: Session[]) => {
+ const resetWorkspace = async (directory: string) => {
const current = currentProject()
if (!current) return
if (directory === current.worktree) return
+ const sessions = await globalSDK.client.session
+ .list({ directory })
+ .then((x) => x.data ?? [])
+ .catch(() => [])
+
const pending = sessions.filter((session) => session.time.archived === undefined)
if (pending.length > 0) {
await Promise.all(
@@ -1047,12 +1052,13 @@ export default function Layout(props: ParentProps) {
sessions: [] as Session[],
})
- const refreshSessions = () => {
- const [workspace] = globalSync.child(props.directory)
- const sessions = workspace.session
- .filter((session) => session.directory === workspace.path.directory)
- .filter((session) => session.time.archived === undefined)
- setState({ sessions })
+ const refresh = async () => {
+ const sessions = await globalSDK.client.session
+ .list({ directory: props.directory })
+ .then((x) => x.data ?? [])
+ .catch(() => [])
+ const active = sessions.filter((session) => session.time.archived === undefined)
+ setState({ sessions: active })
}
onMount(() => {
@@ -1068,7 +1074,7 @@ export default function Layout(props: ParentProps) {
const files = x.data ?? []
const dirty = files.length > 0
setState({ status: "ready", dirty })
- refreshSessions()
+ void refresh()
})
.catch(() => {
setState({ status: "error", dirty: false })
@@ -1076,7 +1082,7 @@ export default function Layout(props: ParentProps) {
})
const handleReset = async () => {
- await resetWorkspace(props.directory, state.sessions)
+ await resetWorkspace(props.directory)
dialog.close()
}
diff --git a/packages/opencode/src/worktree/index.ts b/packages/opencode/src/worktree/index.ts
index aa55355e0..365dfd443 100644
--- a/packages/opencode/src/worktree/index.ts
+++ b/packages/opencode/src/worktree/index.ts
@@ -385,6 +385,11 @@ export namespace Worktree {
throw new ResetFailedError({ message: errorText(checkout) || `Failed to checkout ${target}` })
}
+ const clean = await $`git clean -fd`.quiet().nothrow().cwd(entry.path)
+ if (clean.exitCode !== 0) {
+ throw new ResetFailedError({ message: errorText(clean) || "Failed to clean worktree" })
+ }
+
const worktreeBranch = entry.branch?.replace(/^refs\/heads\//, "")
if (!worktreeBranch) {
throw new ResetFailedError({ message: "Worktree branch not found" })
@@ -395,6 +400,11 @@ export namespace Worktree {
throw new ResetFailedError({ message: errorText(reset) || "Failed to reset worktree" })
}
+ const cleanAfter = await $`git clean -fd`.quiet().nothrow().cwd(entry.path)
+ if (cleanAfter.exitCode !== 0) {
+ throw new ResetFailedError({ message: errorText(cleanAfter) || "Failed to clean worktree" })
+ }
+
const branchReset = await $`git branch -f ${worktreeBranch} ${target}`.quiet().nothrow().cwd(entry.path)
if (branchReset.exitCode !== 0) {
throw new ResetFailedError({ message: errorText(branchReset) || "Failed to update worktree branch" })