Skip to content

Track terminal TUI redraw lockout of scrolling, selection, and copy #32

Description

@rblake2320

Status

Unresolved in the native Codex terminal. Earlier claims that --no-alt-screen was a permanent fix were disproven by controlled retesting and are retracted.

Problem

During active agent rendering, Windows Terminal can remain process/window-responsive while mouse-wheel scrolling, text selection, and copying fail together. Usability returns when active rendering stops. UIA reads and PrintWindow capture continue working, so ordinary liveness checks miss the user-facing failure.

Diagnostic

selfconnect doctor --json `
  --terminal-hwnd <HWND> `
  --terminal-seconds 5 `
  --terminal-interval 0.5 `
  --terminal-log proofs/terminal-health.jsonl `
  --capture-on-risk

SelfConnect records timestamped sizes and SHA-256 fingerprints without terminal contents and can capture a screenshot.

Controlled failed mitigations

Fresh Codex CLI 0.145.0 processes were tested with all of:

codex --no-alt-screen -c tui.animations=false
[tui]
alternate_screen = "never"
raw_output_mode = true
animations = false

The operator still reproduced the lockout. Instrumentation recorded 10/11 buffer transitions in the no-alt controlled run and 7/11 with animations disabled, with zero UIA failures. These settings may reduce some repaint activity but are not a verified repair.

SelfConnect fallback

Commit 07699ff adds:

selfconnect mirror --hwnd <HWND>

This opens a separate read-only, UIA-backed transcript window, normalizes volatile spinner titles, updates only the changed suffix, and preserves the viewport when Follow output is disabled. It restores scroll/select/copy through a companion surface but does not repair Codex itself.

Upstream

OpenAI Codex issue: openai/codex#35654

Remaining SelfConnect work

  • Associate mirrors automatically with mesh birth_id and active terminal tabs.
  • Persist health transitions and companion lifecycle events.
  • Distinguish append-only streaming from destructive same-region redraws.
  • Add provider-specific companion behavior for Claude/Gemini.
  • Retire the fallback only after an upstream native-terminal fix passes the same controlled test.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions