The substrate every browse/discovery feature rides. Make 40k-item libraries on cheap hardware (a Raspberry Pi server, a modest phone) scroll natively.
What's needed
How it maps to the architecture
Mostly already solved: library_search_provider paginates via startIndex / limit. The genuinely missing pieces are the decode cap and the sparse windowed source behind letter-jump.
Why it matters
The Discovery epic (#40) and every large-library browse surface degrade without this. Land it as substrate before the big discovery wave.
Scope
M.
Definition of done
Unit tests for the sparse-window data source (correct index→page mapping, gaps); a widget/perf sanity test for the grid; flutter analyze lib/ clean; dart format --line-length 120.
Source: product-vision analysis (2026-07). Part of the Driftfin 10x tracking issue.
The substrate every browse/discovery feature rides. Make 40k-item libraries on cheap hardware (a Raspberry Pi server, a modest phone) scroll natively.
What's needed
How it maps to the architecture
Mostly already solved:
library_search_providerpaginates viastartIndex/limit. The genuinely missing pieces are the decode cap and the sparse windowed source behind letter-jump.Why it matters
The Discovery epic (#40) and every large-library browse surface degrade without this. Land it as substrate before the big discovery wave.
Scope
M.
Definition of done
Unit tests for the sparse-window data source (correct index→page mapping, gaps); a widget/perf sanity test for the grid;
flutter analyze lib/clean;dart format --line-length 120.Source: product-vision analysis (2026-07). Part of the Driftfin 10x tracking issue.