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

feat(tui): add option to disable terminal title (#5713)

Jake Nelson 2 месяцев назад
Родитель
Сommit
e789fcf5e5

+ 18 - 1
packages/opencode/src/cli/cmd/tui/app.tsx

@@ -176,13 +176,15 @@ function App() {
   const exit = useExit()
   const exit = useExit()
   const promptRef = usePromptRef()
   const promptRef = usePromptRef()
 
 
+  const [terminalTitleEnabled, setTerminalTitleEnabled] = createSignal(kv.get("terminal_title_enabled", true))
+
   createEffect(() => {
   createEffect(() => {
     console.log(JSON.stringify(route.data))
     console.log(JSON.stringify(route.data))
   })
   })
 
 
   // Update terminal window title based on current route and session
   // Update terminal window title based on current route and session
   createEffect(() => {
   createEffect(() => {
-    if (Flag.OPENCODE_DISABLE_TERMINAL_TITLE) return
+    if (!terminalTitleEnabled() || Flag.OPENCODE_DISABLE_TERMINAL_TITLE) return
 
 
     if (route.data.type === "home") {
     if (route.data.type === "home") {
       renderer.setTerminalTitle("OpenCode")
       renderer.setTerminalTitle("OpenCode")
@@ -453,6 +455,21 @@ function App() {
         process.kill(0, "SIGTSTP")
         process.kill(0, "SIGTSTP")
       },
       },
     },
     },
+    {
+      title: terminalTitleEnabled() ? "Disable terminal title" : "Enable terminal title",
+      value: "terminal.title.toggle",
+      keybind: "terminal_title_toggle",
+      category: "System",
+      onSelect: (dialog) => {
+        setTerminalTitleEnabled((prev) => {
+          const next = !prev
+          kv.set("terminal_title_enabled", next)
+          if (!next) renderer.setTerminalTitle("")
+          return next
+        })
+        dialog.clear()
+      },
+    },
   ])
   ])
 
 
   createEffect(() => {
   createEffect(() => {

+ 1 - 0
packages/opencode/src/config/config.ts

@@ -559,6 +559,7 @@ export namespace Config {
       session_child_cycle: z.string().optional().default("<leader>right").describe("Next child session"),
       session_child_cycle: z.string().optional().default("<leader>right").describe("Next child session"),
       session_child_cycle_reverse: z.string().optional().default("<leader>left").describe("Previous child session"),
       session_child_cycle_reverse: z.string().optional().default("<leader>left").describe("Previous child session"),
       terminal_suspend: z.string().optional().default("ctrl+z").describe("Suspend terminal"),
       terminal_suspend: z.string().optional().default("ctrl+z").describe("Suspend terminal"),
+      terminal_title_toggle: z.string().optional().default("none").describe("Toggle terminal title"),
     })
     })
     .strict()
     .strict()
     .meta({
     .meta({

+ 4 - 0
packages/sdk/js/src/gen/types.gen.ts

@@ -950,6 +950,10 @@ export type KeybindsConfig = {
    * Suspend terminal
    * Suspend terminal
    */
    */
   terminal_suspend?: string
   terminal_suspend?: string
+  /**
+   * Toggle terminal title
+   */
+  terminal_title_toggle?: string
 }
 }
 
 
 export type AgentConfig = {
 export type AgentConfig = {

+ 4 - 0
packages/sdk/js/src/v2/gen/types.gen.ts

@@ -1110,6 +1110,10 @@ export type KeybindsConfig = {
    * Suspend terminal
    * Suspend terminal
    */
    */
   terminal_suspend?: string
   terminal_suspend?: string
+  /**
+   * Toggle terminal title
+   */
+  terminal_title_toggle?: string
 }
 }
 
 
 export type AgentConfig = {
 export type AgentConfig = {