Some checks failed
CI / Windows build (push) Has been cancelled
Connects the two pure P0.5 pieces: a minimal PageDocumentSource abstraction (pageCount + pageSize, a pdfrx PdfDocument in production) and pageStackMetricsForWidth() which fits every page to a single column width (continuous-single) — height = columnWidth × aspect — feeding PageStackMetrics.visibleRange. Defensive against non-positive page width. This makes the windowing math consumable + unit-testable against a fake source (no pdfium/GPU); the production pdfrx adapter is the thin device-side wrapper added with the page-mounting widget. flutter analyze lib/editor clean; 120/120 tests (+5: fit-to-width, gap, empty, zero-width guard, windowing composition). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>