Skip to content

fix(tui): keep Windows ConPTY shell/zellij pane alive on exit - #48854

Closed
kraso wants to merge 4 commits into
anomalyco:devfrom
kraso:fix/tui-terminal-reset-on-exit
Closed

kraso wants to merge 4 commits into
anomalyco:devfrom
kraso:fix/tui-terminal-reset-on-exit

Conversation

@kraso

@kraso kraso commented Sep 13, 2026

Copy link
Copy Markdown

Follow-up to #48782 (that PR cannot be reopened).

Problem

On Windows, exiting opencode inside a ConPTY stack (Alacritty + zellij) terminated the pane/shell that launched opencode instead of returning to the prompt. Reproduced with both the patched and the official binary, and also with cmd.exe/pwsh.exe as the parent shell.

Cause

Two things in the @OpenTui renderer teardown on Windows ConPTY:

  1. The native lib.destroyRenderer closes the shared console, which terminates the parent shell.
  2. Emitting \x1b[?1049l (leave alternate screen) races with process teardown and is fatal there.

Fix

  • Skip the native lib.destroyRenderer call on win32 (the OS releases the native handle when the process exits).
  • On win32, do not emit \x1b[?1049l; clear the screen with \x1b[2J\x1b[H instead. Other platforms keep leaving the alternate screen.
  • Write the reset synchronously (fs.writeSync) so it is delivered before exit.

Fixes #48776.

On Windows ConPTY stacks (Alacritty + zellij) exiting opencode terminated the
shell/zellij pane that launched it, for two reasons:

- @OpenTui's native lib.destroyRenderer teardown closes the shared console. Skip
  it on win32; the OS releases the native handle when the process exits.
- Emitting \x1b[?1049l to leave the alternate screen races with process
  teardown and is fatal there. On win32 clear the screen with \x1b[2J\x1b[H
  instead; other platforms keep leaving the alternate screen.

Also write the reset synchronously (fs.writeSync) so it is delivered before exit.
@github-actions github-actions Bot added the needs:compliance This means the issue will auto-close after 2 hours. label Sep 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • PR description is missing required template sections. Please use the PR template.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

Feel free to open a new pull request that follows our guidelines.

@github-actions github-actions Bot removed the needs:compliance This means the issue will auto-close after 2 hours. label Sep 13, 2026
@github-actions github-actions Bot closed this Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TUI leaves terminal in raw/corrupted state on /exit under Alacritty + zellij-windows (Windows ConPTY)

1 participant