8a1621a2078ed4d0b260ce425c526c80b673b6bf
Two things that made scrolling back feel like work. The jump-to-newest button animated. An animated scroll travels the whole transcript, so the further back somebody has read the longer the press takes -- the one control whose cost grows with how much there is to skip, which is backwards. It goes straight there now. History loaded a page per gesture, and a page is eighty *events*. Eighty events are routinely one row: a reply arrives as hundreds of text deltas that fold into a single message. So a page could land and leave the far end exactly where it was -- and since the far end moving is what asks for the next page, nothing did. The list then only loaded when somebody dragged it again, which is what "it only loads when you touch the top" was. It now keeps fetching until there are rows behind the reader again, and starts doing that a cushion before the end rather than at it. Measured on a session of five very long replies, about two thousand events: reaching the oldest message used to stall at every drag; it now takes flings alone, and the jump back to the newest end is one frame.
Languages
Rust
54%
Kotlin
43.6%
Shell
2.4%