Skip to content

[Bug]: Terminal UI corrupts and gets permanently stuck when scrolling in Neovim #7790

Description

@cedi

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Open a project in T3 Code and open its integrated Terminal panel.
  2. Inside the terminal, launch nvim against any file.
  3. Scroll within Neovim (e.g. Ctrl-D/Ctrl-U, mouse wheel, or j/k repeated quickly) so it repaints the screen rapidly.
  4. Repeat scrolling for a bit. Intermittently, mid-scroll, the terminal canvas will render a corrupted, mixed-up frame.

Expected behavior

The terminal should always show either the previous complete frame or the next complete frame from Neovim — never a mixture of the two — and should recover on its own even if a frame update is somehow left unterminated.

Actual behavior

The terminal canvas occasionally freezes into a torn/garbled frame (parts of the old screen and parts of the new screen mixed together) while scrolling in Neovim. Once this happens, the UI does not self-correct: further input and rendering stay visually broken until the user closes the Terminal panel and reopens it, recreating the terminal session from scratch.

Impact

Major degradation or frequent failure

Version or commit

main @ be7d35a

Environment

Reproduces on web/desktop (Chromium-based Ghostty WASM renderer) and Android's native Ghostty JNI bridge; not reproducible on iOS, which renders through Ghostty's native renderer rather than a custom dirty-row snapshot loop.

Logs or stack traces

Screenshots, recordings, or supporting files

Pasted image 20260821130848.png

Workaround

Close and reopen the Terminal panel/tab to recreate the terminal session, which resets the renderer state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions