Read by being seen without reloading the thread; redraw only what changed #254
No reviewers
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!254
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-228-quiet-marks"
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?
Closes #228
Closes #226
Closes #256
epochsignal (text actions), nottick: a post read by being seen no longer reloads and redraws the thread. Logins and logouts bumppresence::CHANGES, notchanges.Kom::mark_read_many, onemark-as-readper channel.SEEN_JSis event-driven (scroll, page changes, resize, tab back; once a frame at most, a timer only while a card waits out its second) instead of reading every card's layout every 250 ms.thread_view::Shared(anRc<TextView>compared by pointer); previews go in 8 at a time or every 150 ms; the mention/search indexer no longer deep-copies every card on each preview; the thread and channel panes don't follow the 30 s clock.Measured with
tools/perf.sh(#225; this branch has #252 merged in for that), reading 120 cards by scrolling slowly past them:Reading 300 posts along the chain: style recalcs 2 358 → 1 578 (−33 %). Idle main-thread time 0.03 → 0.01 s per 20 s. Everything else unchanged within noise.
Also #256: soak.spec read the previous post's status line; it now waits for a new number (soak passes locally, 32 posts, 16 drops).
Verified: full e2e suite on desktop, Android and iPhone, 327 passed; lint three ways.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8