Skip to content

v1.9.1

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Jun 11:01

Flux Hourglass v1.9.1 Release Notes

Flux Hourglass v1.9.1 is a bug-fix release that hardens the Setup Screen layout so the time picker and START button can never be pushed off-screen and lost.

The Bug

The Setup Screen content was laid out in a fixed Column(Modifier.fillMaxSize()) with verticalArrangement = Arrangement.SpaceBetween and no scroll fallback. When the total content height exceeded the viewport — short/small screens, split-screen, a large accessibility font scale, tall system-bar insets, or any future growth of the object filmstrip — SpaceBetween placed the lower children (Quick Presets, the HR/MIN/SEC picker, and the START button) below the bottom edge with no way to scroll to them. The controls silently disappeared, leaving only the header and the object selector visible.

The Fix

  • Min-height scroll container. The content is now wrapped in a BoxWithConstraints whose Column uses Modifier.heightIn(min = viewportHeight).verticalScroll(rememberScrollState()).
    • When the content fits (the common case), the column is exactly the viewport height, so Arrangement.SpaceBetween spreads the children exactly as before — the layout is pixel-identical and never scrolls.
    • When the content overflows, the column grows past the viewport and becomes scrollable, so every control stays reachable instead of being clipped away.
  • No visual change on screens where the content already fit.

Technical Notes

  • Added imports: androidx.compose.foundation.verticalScroll, androidx.compose.foundation.rememberScrollState, androidx.compose.foundation.layout.heightIn.
  • statusBarsPadding() / navigationBarsPadding() / background(PureBlack) moved to the outer BoxWithConstraints, so maxHeight reflects the true content area used as the column's minimum height.
  • All testTags (mode_column, mode_scroller, preset_row, start_button, the mode_* object tags, picker tags) are unchanged.
  • No data-model, schema, or persistence changes; saved durations and object preferences carry over.
  • Verification. The golden setup.png Roborazzi test still passes in compare mode (verifyRoborazziDebug), proving no visual regression when content fits. A separate overflow-forcing render (tiny viewport + 1.8× font) confirms START can be scrolled into view (performScrollTo().assertIsDisplayed()), which was impossible before the fix.
  • versionCode 10 → 11, versionName 1.9.0 → 1.9.1.