fix(iamb): stop the scrollback walking up the pane #985

Merged
lytedev merged 1 commit from iamb-drift into main 2026-08-12 15:21:56 -05:00
Owner

Bumps the iamb pin from df80101 to d598ed8.

Daniel: "there's a bug somewhere that causes iamb to scroll up a line like once per second unnecessarily, causing this gap".

The "earlier messages" hint takes the top row of the pane from the first drawn line. The render set the viewport corner after removing that line, so the corner moved down a row on every frame and the pane held one line less each time. A periodic redraw — a typing notice, a receipt — then walked the messages up the pane once a second, leaving a growing gap below them.

It only showed after scrolling away from the newest message, because the pane otherwise takes a fresh corner from the cursor on every render and the drift cannot accumulate.

The corner now comes from the full set of lines. The hint still covers the top row.

The hint arrived in the same batch as this fix, so the fault never reached a release — it was live on Daniel's client for about an hour.

Verified

267 tests, one new: rendering the same state twice must produce the same corner. That is the invariant the bug violated, and it is checkable without a terminal.

Bumps the iamb pin from `df80101` to `d598ed8`. Daniel: "there's a bug somewhere that causes iamb to scroll up a line like once per second unnecessarily, causing this gap". The "earlier messages" hint takes the top row of the pane from the first drawn line. The render set the viewport corner **after** removing that line, so the corner moved down a row on every frame and the pane held one line less each time. A periodic redraw — a typing notice, a receipt — then walked the messages up the pane once a second, leaving a growing gap below them. It only showed after scrolling away from the newest message, because the pane otherwise takes a fresh corner from the cursor on every render and the drift cannot accumulate. The corner now comes from the full set of lines. The hint still covers the top row. The hint arrived in the same batch as this fix, so the fault never reached a release — it was live on Daniel's client for about an hour. ## Verified 267 tests, one new: rendering the same state twice must produce the same corner. That is the invariant the bug violated, and it is checkable without a terminal.
fix(iamb): stop the scrollback walking up the pane
Some checks failed
/ check-format (push) Successful in 28s
/ build (push) Failing after 14m1s
d7f261e3a1
Bump the iamb pin from df80101 to d598ed8.

The hint about earlier messages takes the top row of the pane from the
first drawn line. The render set the viewport corner after it removed
that line, so the corner moved down one row on every frame, and the pane
held one line less each time. A periodic redraw, such as a typing notice
or a receipt, then walked the messages up the pane once a second and
left a growing gap below them.

It showed only after a scroll away from the newest message. The pane
otherwise takes a fresh corner from the cursor on every render, so the
drift could not build up.

The corner now comes from the full set of lines. The hint still covers
the top row.

The hint arrived in the same batch as this fix, so the fault never
reached a release.

Verified: 267 tests pass, one of them new, and dragon builds.
lytedev deleted branch iamb-drift 2026-08-12 15:21:56 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lytedev/nix!985
No description provided.