Every ask
- Every ask, loaded as you scroll. The Inbox never hides asks behind “Show
all N” or a collapsed count. Each group lists every ask it holds, built lazily:
the first 20 appear, and the next 20 load when a row within three of the end
scrolls into reach. The bottom shows a loading indicator while a page loads, an
error row with Retry (never a toast) if it fails, and “That’s every ask” once
a list longer than one page ends. The trailing Security group follows the last
page. A pull-down refresh, a segment change, a search and a product filter each
start over from the first page. Today every page is sliced on the device from
the accepted snapshot (the “Needs you” asks and the hub’s resolved history);
the page loader is the one seam for the hub’s
/v1/asks(opaque cursor, non-sensitive asks only, at most 50 per page). Grouping, search, the product filter and the one-tap answer are unchanged. Regression coverage:mastermind_inbox_paging_test.dartandinbox_paging_test.dart.
Regression evidence
inbox_paging_test.dart checks prefixes across mixed-kind page boundaries,
identity uniqueness, filtering before paging and stale in-flight reset results.
mastermind_inbox_paging_test.dart checks reachability and lazy viewport building
with 525 asks, refresh, product filtering, Retry and enlarged narrow layouts.
These fixtures establish widget behavior, not device performance or server paging.