ADR-0053: Bounded adaptive Home dashboard
- Status: Accepted
- Date: 2026-10-15
Context
Home's rail adapted to landscape windows, but its full-width summary and review card pushed recent activity below the first viewport (#128).
Decision
At an available Home width of 600 dp, show two equal columns separated by
24 dp: month and financial summary followed by review status, then recent
activity in the logical next column. Bound the dashboard to 1200 dp and the
single-column layout to 600 dp. Smaller windows retain the existing order.
Use one vertical scroll surface, explicit summary-first accessibility groups,
and stable transaction keys. Keep month and data in the existing ViewModel.
Statistics wrap into additional rows; Home transaction amounts occupy their
own line below merchant details so they can wrap at large font sizes. On
compact phones the vertical rhythm stays tight (8 dp between sections, a
denser hero card) so the summary and at least two complete recent rows sit
above the fold at 320 dp / 100% text when no capture-status notice is shown
(see Amendment); the bottom navigation is a single row
(ADR-0044) whose measured height the outer Scaffold reserves.
Consequences
The landscape baseline exposes summary and recent entries together. At large text sizes scrolling is still necessary. Coordinated scrolling avoids nested scroll regions and leaves keyboard traversal in composition order. Six recent rows are composed eagerly; there is no new aggregation or persistence.
Verification
HomeAdaptiveLayoutTest checks the landscape first viewport, resizing through
599/600/834/1200/320 dp, month continuity and actions at 100/150/200% text,
and the 320 dp / 100% viewport budget (summary plus two complete recent rows
inside the content area above a single navigation row, with no capture-status
notice; the notice case has its own budget, see Amendment).
Emulator screenshots cover narrow and wide layouts in both themes. Semantic
group ordering supports accessibility review; it does not certify TalkBack.
Amendment (2026-10-19): the capture-status notice owns the top of the fold
The optional capture-status notice (#242, ADR-0058) renders above the summary,
so it takes the space the second recent row occupied. With the notice shown the
320 dp / 100% budget guarantees the notice, the summary and the first complete
recent row; the two-complete-row budget above holds only when no notice is
shown, and returns once the notice is dismissed or capture is configured.
HomeAdaptiveLayoutTest asserts both cases
(narrowViewportShowsCaptureNoticeAndFirstCompleteRecentRow and
narrowViewportShowsSummaryAndTwoCompleteRecentRows), so the fold is
budgeted per case rather than asserted once and assumed everywhere.