fix(app): reload instance after workspace reset

This commit is contained in:
Adam
2026-01-19 12:44:35 -06:00
parent 3fd0043d19
commit c2f9fd5fef
2 changed files with 40 additions and 20 deletions

View File

@@ -1056,7 +1056,16 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
let session = info() let session = info()
if (!session && isNewSession) { if (!session && isNewSession) {
session = await client.session.create().then((x) => x.data ?? undefined) session = await client.session
.create()
.then((x) => x.data ?? undefined)
.catch((err) => {
showToast({
title: "Failed to create session",
description: errorMessage(err),
})
return undefined
})
if (session) navigate(`/${base64Encode(sessionDirectory)}/session/${session.id}`) if (session) navigate(`/${base64Encode(sessionDirectory)}/session/${session.id}`)
} }
if (!session) return if (!session) return

View File

@@ -965,10 +965,23 @@ export default function Layout(props: ParentProps) {
if (!current) return if (!current) return
if (directory === current.worktree) 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 } }) .reset({ directory: current.worktree, worktreeResetInput: { directory } })
.then((x) => x.data) .then((x) => x.data)
.catch((err) => { .catch((err) => {
dismiss()
showToast({ showToast({
title: "Failed to reset workspace", title: "Failed to reset workspace",
description: errorMessage(err), description: errorMessage(err),
@@ -976,21 +989,16 @@ export default function Layout(props: ParentProps) {
return false return false
}) })
const href = `/${base64Encode(directory)}/session` if (!result) {
navigate(href) dismiss()
layout.mobileSidebar.hide() return
}
void (async () => { const archivedAt = Date.now()
const sessions = await globalSDK.client.session await Promise.all(
.list({ directory }) sessions
.then((x) => x.data ?? []) .filter((session) => session.time.archived === undefined)
.catch(() => []) .map((session) =>
if (sessions.length === 0) return
const archivedAt = Date.now()
await Promise.all(
sessions.map((session) =>
globalSDK.client.session globalSDK.client.session
.update({ .update({
sessionID: session.id, sessionID: session.id,
@@ -999,11 +1007,14 @@ export default function Layout(props: ParentProps) {
}) })
.catch(() => undefined), .catch(() => undefined),
), ),
) )
})()
const result = await reset await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
if (!result) return dismiss()
const href = `/${base64Encode(directory)}/session`
navigate(href)
layout.mobileSidebar.hide()
showToast({ showToast({
title: "Workspace reset", title: "Workspace reset",