Skip to content

native: a terminal's replies to the program open no echo window - #1012

Merged
omartelo merged 1 commit into
mainfrom
perf/native-replies-are-not-keys
Nov 1, 2026
Merged

omartelo merged 1 commit into
mainfrom
perf/native-replies-are-not-keys

Conversation

@omartelo

@omartelo omartelo commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

Why

Measured on the real window after #1011 (sidebar.47, one busy session with its agent streaming): 37 frames a second, not the 24 the ring asks for. The output was not riding the ring's frame.

The terminal's answers to the program's queries (cursor position, device attributes, which Claude Code asks for as it draws) went through terminals.send, which marks "someone wrote to the PTY" so that the echo of a keystroke draws at once. A program polling the terminal kept that window open all the time, and every chunk of output drew its own frame as before.

What

terminals.reply writes a query's answer to the PTY without opening the echo window; send, for what the person typed, pasted or scrolled, keeps opening it.

Test plan

  • TestAQuerysReplyOpensNoEchoWindow: output after a reply rides the looping frame; after a keystroke it draws at once
  • native/: gofmt, go vet ./..., go test ./...

Measured after #1011, a busy session with its agent streaming still drew
37 frames a second, not 24: the terminal's answers to the program's
queries (cursor position, device attributes, which Claude Code asks for as
it draws) went through send and counted as someone typing, so the output
that followed always drew at once instead of riding the ring's frame.
Replies now go through their own write and leave the echo window closed.
@omartelo
omartelo merged commit 11cb754 into main Nov 1, 2026
7 checks passed
@omartelo
omartelo deleted the perf/native-replies-are-not-keys branch November 1, 2026 22:14
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.

1 participant