diff options
| author | Dax Raad <[email protected]> | 2026-02-17 17:55:29 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2026-02-17 17:56:39 -0500 |
| commit | ad3c192837cc740e189034d8f6fc9f6b72db9bda (patch) | |
| tree | d311b842f07deabace89e6733715102907c4626e | |
| parent | 5512231ca8744b222e5ecbd6e2c5140a204245af (diff) | |
| download | opencode-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.ts | 1 | ||||
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/worker.ts | 7 |
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) }, } |
