Status animation makes mouse selection and copying unreliable in GNOME Terminal/VTE

Aperta Adatta ai principianti
#38,017 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
rust
Ambito
cli, performance

Direzione di ricerca

Inizia da codex-rs/tui/src/status_indicator_widget.rs, dove il widget di stato pianifica i fotogrammi dell’animazione ogni 32 ms. Confronta l’intervallo esistente con l’obiettivo riportato di 100 ms, quindi riproduci i passaggi di selezione e copia in GNOME Terminal con le animazioni abilitate. Il lavoro è completato quando il testo statico della trascrizione rimane selezionabile e copiabile durante l’animazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug CLI TUI
What version of Codex CLI is running?

codex-cli 0.147.0

What subscription do you have?

Plus

Which model were you using?

Not model-specific.

What platform is your computer?

Ubuntu 24.04.4 LTS, Linux 7.0.0-28-generic x86_64, GNOME Wayland session.

What terminal emulator and version are you using?

GNOME Terminal 3.52.0 using VTE 0.76.0.

What issue are you seeing?

While Codex's animated status indicator is active, mouse selection of static
transcript text usually fails in GNOME Terminal/VTE. The highlight disappears
or never becomes visible while dragging; after releasing the mouse,
Ctrl+Shift+C copies nothing. The selected rows are not changing or scrolling.

Disabling animations makes selection reliable:

[tui]
animations = false

An equivalent rapid-update test does not reproduce in Ghostty.

What steps can reproduce the bug?
  1. In GNOME Terminal, start Codex with animations enabled (the default).
  2. Ask Codex to run sleep 300 and wait for it to complete.
  3. While the status indicator is animating, drag across static text earlier in
    the transcript.
  4. Release the mouse, press Ctrl+Shift+C, and try to paste.
  5. Repeat after setting tui.animations = false and restarting Codex.
What is the expected behavior?

Static transcript text should remain selectable and copyable while the status
animation is running.

Please reduce the status animation refresh rate from 32 ms (~31 Hz) to 100 ms
(10 Hz), or otherwise avoid emitting animation redraws more often than 10 Hz.

Additional information

The status widget schedules animation frames every 32 ms:

PR #2316 changed this interval
directly from 100 ms to 32 ms in August 2025.

A 100 ms interval also has precedent in popular terminal progress libraries:
Rich defaults to 10 refreshes per second,
tqdm defaults to a 0.1-second minimum interval,
and indicatif's official spinner example uses 100 ms.

In a minimal erase-and-rewrite test, selection almost always failed at 32 ms,
remained somewhat unreliable at 60 ms, and was reliable at 100 ms.

The existing VTE report for this behavior is:

A smaller reproducer and the interval measurements above are in:

Related report about the status animation's terminal traffic:

Avoiding redraws when the rendered shimmer has not changed would reduce the
terminal traffic further.

Lingua principale
Rust
Stelle
125k
Fork
19.5k
Merge medio
1m
PR unite (30g)
1k

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di openai/codex

Tutte le issue di openai/codex

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.