Files
tty7/crates
l0ng-ai fd8d1d4a70 fix(gateway): draw a pane's replay only once it is all in (#1187)
* fix(gateway): draw a pane's replay only once it is all in

The gateway drew the phone's first picture of a pane as soon as the replay
paused for 30ms or ran past 200ms, and forwarded any replay segment that
came after that drawing raw. The ring replays oldest first, so over a slow
link the phone first saw the front of the ring (a restored session's old
screen), or a blank drawing followed by the whole ring streamed past it.

Replay segments now only ever reach the phone through a drawing, and no
drawing is made until the replay is over: at the first message it does not
consist of, or after 500ms of quiet when nothing follows it. The quiet only
counts once the feed has said something, so a link slow to deliver the
first frame is not taken for a replay that has ended.

Fixes #1180

* fix(gateway): count a segment still arriving as the replay going on

A replay segment can be megabytes over a slow link. PaneOutput buffers a
frame until it is whole and returns WouldBlock on any read gap longer than
the 30ms draw settle, so the serve loop saw silence mid-segment and, once
half a second had passed since the last whole message, drew the mirror
before the replay was in.

Bytes of the next message now count as the feed having said something.
2026-10-16 12:23:02 +08:00
..