# fix\(mobile\): folding the Duo keeps the thread's end or the reader's line in place · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122

Requested commit: 5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122

Commit: 5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122

Tree: 01164d25deb0ac209f6a34f915c6d5663e1501c5

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
fix(mobile): folding the Duo keeps the thread's end or the reader's line in place

Folding or unfolding re-wraps every row of the thread feed, and LegendList
re-measures them over several commits. A feed following the end pinned it
once and then relied on maintainScrollAtEnd, which scrolls a frame or more
after each re-measure, so earlier text showed in between. A reader's row
kept its top while its text moved, and the feed restored the reader's line
200ms after the rows settled, a visible hop.

LegendList now takes a sizeChangeAnchor: the scroll offset a size change
should leave, read in the same pass that repositions the rows. It applies
through the scroll adjustment LegendList already uses for MVCP, which moves
the native offset in the same commit as the new positions. The patch also
commits the content height with those positions instead of ahead of them,
lets a shrinking list run the pass too, skips the delayed end scroll while
an anchor holds, and adjusts only past the offset that shrinking content
already pulls back to its end.

On iOS the feed holds the end while following, otherwise the reader's line
at the same share of its row, from the first width step of a fold to 600ms
after the last. Android keeps its after-the-fact restore: its list moves
only while MVCP is on, which following turns off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

```

## Parents

- [a701ab26afd00d94b9614e822ab6bbd0d19e8f81](https://git.cafe/pingdotgg/t3code/commit/a701ab26afd00d94b9614e822ab6bbd0d19e8f81?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/5b5e9062d3ecec8c4a26f94cc1cb8b701bc45122?format=markdown)
