A sentinel-driven feed with four first-class data states — a failed page keeps every row already loaded, the in-flight lock is a ref so no page is ever fetched twice, and the manual trigger plus a role=feed keyboard walk make it reachable without a mouse.
npx shadcn@latest add @zyeon/infinite-scrollZyeon UI limits how often it can be asked, and Infinite Scroll hasn't had its turn. Its source will show here once it has.