client: a scroll step before the viewport reply arrives starts from the stale offset #164
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#164
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?
Split from #158.
Problem
The client computes every scroll step from the shadow's acknowledged offset (
crates/felis-client/src/app_methods.rsapply_scroll/scroll_by_rows), not from the request it has already sent or queued. Until the daemon'sViewportStatereply arrives:Viewport(0), the shadow still saysN, LineUp computesN + 1. The replaceableInput::Viewportslot (crates/felis-client-core/src/outgoing.rs) can replace the queued End with it, so the view never reaches live; if End already left, LineUp returns the view toN + 1before the live reply lands.Nboth requestN + 1, losing a step.Found in design review of #158; it exists on main independently of the anchoring there.
Expected
A scroll step starts from the latest viewport intent the client has issued, not only the acknowledged one: End then LineUp requests
1relative to the live bottom; two LineUps fromNland atN + 2.Notes
Clearing a pending intent needs to tell the reply to a request from a
ViewportStatethe daemon ships on its own (output growth while browsing, eviction, a screen switch), which suggests a request sequence echoed inViewportState, a wire addition.