v1.1.0
Flux Hourglass 1.1.0
The first meaningful upgrade after the initial 1.0.0 release. Focuses on the
real-world ergonomics of using the hourglass as an everyday timer without
breaking the minimalist surface.
Highlights
- Quick presets. A row of
1m / 3m / 5m / 10m / 25m / 1htext chips sits
just under the title on the setup screen and populates the H R / M I N / S E C
pickers in one tap. They are deliberately rendered as thin labels — not
buttons — so they read as suggestions, not chrome. - Pause / Resume. The running screen now exposes a faint
P A U S E
control opposite the existingR E S E Tlabel. Pausing freezes the timer
exactly where it is; the new Paused screen shows the remainingHH : MM : SS
plus the percent of the duration still ahead, with a centeredR E S U M E
affordance that re-anchors the countdown from the moment you tap. - Screen stays on. While the timer is in the Running state the activity
setsFLAG_KEEP_SCREEN_ONso the display does not dim mid-run; the flag is
cleared the moment the timer reaches the Paused, Finished, or Setup state.
Implementation notes
TimerState.Paused(remainingMillis, totalMillis)is a new state. The view
model snapshots the remaining time on pause and re-anchorsendTimeto
System.currentTimeMillis() + remainingMillison resume, so the existing
monotonic-clock tick loop continues to be the single source of truth.- The
KeepScreenOn()composable is scoped to the running screen only and
cleans up viaDisposableEffect, so it does not leak when the timer
finishes, is reset, or the activity is torn down.