Desktop: scrolling up a big channel's thread list loads it all and hangs #314
Labels
No labels
area/ci
area/desktop
area/packaging
area/protocol
area/reading
area/ui
area/web
area/writing
kind/bug
kind/feature
kind/infra
kind/request
needs/user
parked
perf
security
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
littlefox/neokom#314
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reported by the user on the desktop app, latest main, kom.lysator.liu.se:
CPU went up, the app stopped responding and then crashed.
Likely cause: when older threads are added above, the thread list relies on the browser to keep the place (CSS scroll anchoring). WebKit (WebKitGTK in the desktop app, Safari) has none, so the view stays at the very top. The top counts as near the screen again, so the next page loads, then the next, through the whole channel, fetching a card for every thread on the way (rows not yet measured count as near). The channel chat had a similar cascade, fixed in #286 with a guard; the thread list has no such guard.
Plan: keep the place ourselves, the same way in every browser; load older threads only after the reader scrolls, one page per approach to the top; a seeded channel with hundreds of threads; a spec that runs in WebKit too.
Fixed in #316 (plus the spec fix #323); main green (run #579).
thread-list-big.spec.ts: three scrolls to the top load a page each, and the row that was at the top stays on screen. 12 of 12 runs here; green on CI.