Просмотр исходного кода

feat(terminal): implement better dynamic terminal numbering (#8081)

OpeOginni 1 месяц назад
Родитель
Сommit
1a5a63843e
1 измененных файлов с 16 добавлено и 1 удалено
  1. 16 1
      packages/app/src/context/terminal.tsx

+ 16 - 1
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)