diff options
| author | Adam <[email protected]> | 2026-01-15 17:34:38 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-19 07:35:52 -0600 |
| commit | 1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c (patch) | |
| tree | 8d94baf7e4e811cc066ca4257b52cb7468039c43 | |
| parent | dca2540ca786d818da4387ddff19eba865630a37 (diff) | |
| download | opencode-1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c.tar.gz opencode-1a262c4ca8a1982aaa325cdf512b56e2c2f6a22c.zip | |
chore: cleanup
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 24 | ||||
| -rw-r--r-- | packages/opencode/src/worktree/index.ts | 10 |
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" }) |
