summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOpeOginni <[email protected]>2026-01-13 00:30:09 +0100
committerGitHub <[email protected]>2026-01-12 17:30:09 -0600
commit1a5a63843ed49d94dc2fb2db491eb08c31a169d6 (patch)
tree08b0591f42239b21768ae9c311e1393bd466b1b7
parentd954e1e3b641d584113471fe624e86067817c152 (diff)
downloadopencode-1a5a63843ed49d94dc2fb2db491eb08c31a169d6.tar.gz
opencode-1a5a63843ed49d94dc2fb2db491eb08c31a169d6.zip
feat(terminal): implement better dynamic terminal numbering (#8081)
-rw-r--r--packages/app/src/context/terminal.tsx17
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)