diff --git a/packages/desktop/src/context/session.tsx b/packages/desktop/src/context/session.tsx index 4e9fe71f8..690653992 100644 --- a/packages/desktop/src/context/session.tsx +++ b/packages/desktop/src/context/session.tsx @@ -201,20 +201,14 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex sdk.client.pty.create({ body: { title: `Terminal ${store.terminals.all.length + 1}` } }).then((pty) => { const id = pty.data?.id if (!id) return - batch(() => { - setStore("terminals", "all", [ - ...store.terminals.all, - { - id, - title: pty.data?.title ?? "Terminal", - // rows: pty.data?.rows ?? 24, - // cols: pty.data?.cols ?? 80, - // buffer: "", - // scrollY: 0, - }, - ]) - setStore("terminals", "active", id) - }) + setStore("terminals", "all", [ + ...store.terminals.all, + { + id, + title: pty.data?.title ?? "Terminal", + }, + ]) + setStore("terminals", "active", id) }) }, update(pty: Partial & { id: string }) { @@ -224,6 +218,21 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex body: { title: pty.title, size: pty.cols && pty.rows ? { rows: pty.rows, cols: pty.cols } : undefined }, }) }, + async clone(id: string) { + const index = store.terminals.all.findIndex((x) => x.id === id) + const pty = store.terminals.all[index] + if (!pty) return + const clone = await sdk.client.pty.create({ + body: { + title: pty.title, + }, + }) + if (!clone.data) return + setStore("terminals", "all", index, { + ...pty, + ...clone.data, + }) + }, open(id: string) { setStore("terminals", "active", id) },