summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-02-17 17:55:29 -0500
committerDax Raad <[email protected]>2026-02-17 17:56:39 -0500
commitad3c192837cc740e189034d8f6fc9f6b72db9bda (patch)
treed311b842f07deabace89e6733715102907c4626e
parent5512231ca8744b222e5ecbd6e2c5140a204245af (diff)
downloadopencode-ad3c192837cc740e189034d8f6fc9f6b72db9bda.tar.gz
opencode-ad3c192837cc740e189034d8f6fc9f6b72db9bda.zip
tui: exit cleanly without hanging after session ends
- Force process exit after TUI thread completes to prevent lingering processes - Add 5-second timeout to worker shutdown to prevent indefinite hangs during cleanup
-rw-r--r--packages/opencode/src/cli/cmd/tui/thread.ts1
-rw-r--r--packages/opencode/src/cli/cmd/tui/worker.ts7
2 files changed, 7 insertions, 1 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/thread.ts b/packages/opencode/src/cli/cmd/tui/thread.ts
index 6d41fe857..9eb296032 100644
--- a/packages/opencode/src/cli/cmd/tui/thread.ts
+++ b/packages/opencode/src/cli/cmd/tui/thread.ts
@@ -184,5 +184,6 @@ export const TuiThreadCommand = cmd({
} finally {
unguard?.()
}
+ process.exit(0)
},
})
diff --git a/packages/opencode/src/cli/cmd/tui/worker.ts b/packages/opencode/src/cli/cmd/tui/worker.ts
index e63f10ba8..bb5495c48 100644
--- a/packages/opencode/src/cli/cmd/tui/worker.ts
+++ b/packages/opencode/src/cli/cmd/tui/worker.ts
@@ -137,7 +137,12 @@ export const rpc = {
async shutdown() {
Log.Default.info("worker shutting down")
if (eventStream.abort) eventStream.abort.abort()
- await Instance.disposeAll()
+ await Promise.race([
+ Instance.disposeAll(),
+ new Promise((resolve) => {
+ setTimeout(resolve, 5000)
+ }),
+ ])
if (server) server.stop(true)
},
}