Skip to content

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 28 May 05:01

Flux Hourglass 1.3.0

A focused upgrade to the visual core of the timer — the sand pile now
behaves like sand instead of plateauing two-thirds of the way, the
display reacts to physical gravity, and a brand-new LED grid mode
sits alongside the original hourglass.

Highlights

  • Pile fills the full screen. Previously the heap topped out at
    roughly two thirds of the height regardless of duration. The pile
    now tracks elapsed time 1:1, so when the timer ends the screen is
    fully covered. A baseline catch-up keeps the pile honest even on
    long durations where per-grain deposition would otherwise lag.
  • Softer, finer texture. Grains shrank from 3.0 dp to 1.4 dp and
    the column count nearly doubled (50 → 90), giving the pile a much
    smoother silhouette and a more powdery surface.
  • Real gyro response. The accelerometer is no longer cosmetic. The
    falling stream bends with the gravity vector, and the heap on the
    floor immediately slumps toward the lower side when you tilt the
    device — strong tilts trigger an extra pour pass for a more decisive
    reaction.
  • New LED mode. A "전광판" alternative renders the screen as a
    16 × 32 grid of LED-style cells that light up bottom-to-top in
    proportion to elapsed time. When every cell is lit, time is up.
    Toggle between S A N D and L E D from a new tab row at the top
    of the setup screen; the choice is persisted alongside the last
    duration.
  • Bolder typography. Secondary labels were close to invisible at
    the old 0.25–0.4 alpha range. They have been lifted to 0.55–0.8 and
    bumped from Thin / ExtraLight to Light (with Medium on the
    selected mode tab), so the chrome reads clearly without losing the
    minimalist character.

Implementation notes

  • ParticleSystem now owns a baseline lift step that adds the deficit
    between the target average height (1 - remainingFraction) * h and
    the current average back into every column. The lift is capped at
    h * 0.004 per frame so it never produces a visible jolt.
  • pvx is no longer reset to zero each frame; particles integrate
    horizontal gravity and despawn when they leave the canvas. Spawn
    positions get mild jitter plus a small directional bias so the
    stream visibly leans when the device is tilted.
  • Slumping uses an asymmetric threshold (1.0 ± biasX) with four
    passes per frame, escalating to six passes when |gravityX| > 2.0.
  • LED mode reuses the same touch-reveal + pause/reset overlay as the
    sand mode through a shared RunningOverlay composable; the renderer
    itself is a single Canvas that lights cells in row-major order
    from the bottom.
  • TimerPreferences gained a mode field backed by a string
    preference (SAND / LED), defaulting to SAND for first runs and
    upgrading users.