# fix\(mobile\): retain resting scroll offsets through Duo inset changes · PR \#22978 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/22978)

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

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: duo/reflow

Target branch: duo/safe-areas

Head commit: 84df3e96d5f0fa65e3f873f5a8a6aab1d50566ac

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/22978)

[Commits](https://git.cafe/pingdotgg/t3code/pull/22978/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/22978/diffs?format=markdown)

## Description

---

A fresh PR could open underneath its header because its initial inset was zero before the column was measured. Resting lists now follow their top inset until the reader scrolls away. This layer also captures thread position around width changes.

Fresh PR positioning was verified on the folded Duo after a cold launch. The resting-offset, thread-follow and PR-tab suites passed together: 40 tests.

The thread portion is the first step. #23147 completes the anchoring, and the two should land together. Unfolding still shows brief row overlap with both; #23147 lists what remains.

![Fresh PR opens below its header](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7284eede50b47d43/pr-clean-reload.png)

Implemented with Claude Opus 5.5 in Claude Code; integrated and reviewed with GPT-6.1 in Codex.


## Motion verification

Fresh, real-time 30 fps recordings from the exact commits labeled in the videos, using fingerprint-matched debug native clients. Black cards mark cuts between displays.

**Before**

![Before — PR 22978](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/149a4ed47ccca60b/pr22978-reflow-BEFORE-8cdc13c2eba.mp4)

**After**

![After — PR 22978](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/34bf531443889e43/pr22978-reflow-AFTER-7318f60880c.mp4)

This is intermediate progress, not seamless reflow: the AFTER recording still shows earlier messages briefly flashing, overlapping rows during unfolding, and a delayed return to the reader’s line. The anchoring in #23147 is not included.

### Restack

Restacked onto main `a12d6ed942` on 2026-10-21. The commits are unchanged apart from lockfile peer strings, and `PullRequestRouteScreen` keeping main's new `listRefs` list ref. The recordings above show the pre-restack commits they name.

