diff options
| author | OpeOginni <[email protected]> | 2026-01-13 00:30:09 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-12 17:30:09 -0600 |
| commit | 1a5a63843ed49d94dc2fb2db491eb08c31a169d6 (patch) | |
| tree | 08b0591f42239b21768ae9c311e1393bd466b1b7 | |
| parent | d954e1e3b641d584113471fe624e86067817c152 (diff) | |
| download | opencode-1a5a63843ed49d94dc2fb2db491eb08c31a169d6.tar.gz opencode-1a5a63843ed49d94dc2fb2db491eb08c31a169d6.zip | |
feat(terminal): implement better dynamic terminal numbering (#8081)
| -rw-r--r-- | packages/app/src/context/terminal.tsx | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/packages/app/src/context/terminal.tsx b/packages/app/src/context/terminal.tsx index 43672fcb3..e85da7896 100644 --- a/packages/app/src/context/terminal.tsx +++ b/packages/app/src/context/terminal.tsx @@ -8,6 +8,7 @@ import { Persist, persisted } from "@/utils/persist" export type LocalPTY = { id: string title: string + titleNumber: number rows?: number cols?: number buffer?: string @@ -42,8 +43,21 @@ function createTerminalSession(sdk: ReturnType<typeof useSDK>, dir: string, id: all: createMemo(() => Object.values(store.all)), active: createMemo(() => store.active), new() { + const existingTitleNumbers = new Set( + store.all + .map((pty) => { + const match = pty.titleNumber + return match + }) + ) + + let nextNumber = 1 + while (existingTitleNumbers.has(nextNumber)) { + nextNumber++ + } + sdk.client.pty - .create({ title: `Terminal ${store.all.length + 1}` }) + .create({ title: `Terminal ${nextNumber}` }) .then((pty) => { const id = pty.data?.id if (!id) return @@ -52,6 +66,7 @@ function createTerminalSession(sdk: ReturnType<typeof useSDK>, dir: string, id: { id, title: pty.data?.title ?? "Terminal", + titleNumber: nextNumber, }, ]) setStore("active", id) |
