- Ya
- 2 Septemba 2026, 04:29 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 3d43726
Switching the navigator to the right tab was only half an answer. The list pages by last activity, 30 rows at a time, and the conversation a member has maximized need not have been active recently — they may have opened it from a contact, a ticket, or a window their last session restored. Its row is then simply not among the ones loaded, so the tab is right, nothing is marked on it, and the list reads as one their conversation is not in. This is the problem the Favourites fetch already solves for starred rows, and it wants the same answer: bring the row down beside the first page. There is no server-side way to ask for one row in list shape — /sessions/chat filters by category and favourites only, and the text list has no single-conversation endpoint at all — so the list pages toward it instead, under a hard budget of five pages. A conversation genuinely thousands of rows down, or one that has left this bucket entirely, must not be able to turn a navigator into a crawler. The look-ahead reads a synchronous loadingRef rather than the `loading` state: an effect running later in the same commit as the mount's own load still sees the Marking the row is still not enough once it arrives — a highlight a hundred rows below the fold is indistinguishable from no highlight — so the pane scrolls it into view, once per conversation, keyed on the rendered rows rather than the raw ones: the row can be missing because it has not been paged in OR because the tab holding it has not been switched to, and only the rendered set changes for both. Drops `initialBucket`, which followBucket replaced. The navigator was its only caller; the pane's own tests now land on a bucket the way a member does, by having saved that choice on a past visit.