Skip to content

Releases: hellogunawan99/focus-mate

Focus Mate v1.1.5 — selection band alignment fix

13 Jun 11:24

Choose a tag to compare

Fix in v1.1.5

  • Yellow accent band misaligned with selected value. When v1.1.4 fixed the off-by-2 wheel centering, the ListView padding changed from 1×itemHeight to 2×itemHeight, but the accent band (Positioned Container) was not updated to match. Result: the band sat in the upper half of the wheel while the actual selected number rendered in the visual center — visual disagreement of one row.

Fix: changed band position from top: _itemHeight to top: _centerPadding (= 2×itemHeight). Now the band sits at the same y-position as the centered item.

New widget test asserts the band's y-center matches the selected number's y-center within 2 logical pixels, so any future padding change will fail loudly if the band doesn't get repositioned.

Focus Mate v1.1.4 — wheel centering fix at extremes

13 Jun 11:14

Choose a tag to compare

Fix in v1.1.4

  • Off-by-2 at the wheel extremes. When value=1 (min) or value=240 (max), the wheel was centering on value 2 or value 238 instead. Caused by ListView top/bottom padding being too small — needed to be 2×itemHeight to correctly center the first/last item.

Added two new widget tests that assert centering at value=1 and value=240 to lock in the behavior at the endpoints. (Previously only the middle values were tested — those worked by coincidence.)

Focus Mate v1.1.3 — full 1-240 scroll range with landmarks

12 Jun 19:55

Choose a tag to compare

What's new in v1.1.3

  • Scroll wheel now covers the full 1-240 range matching the underlying setting and editor ranges. Previously the wheel was clamped to 5-120, which meant scrolling past 120 was impossible even though typing 121+ in the editor was fine. Now every integer 1-240 is scrollable.
  • Landmark values — the values most users actually want to land on (1, 2, 3, 5, 10, 15, 20, 25, 30, 45, 60, 90, 120, 180, 240) are rendered larger and bolder with a small amber dot indicator. Non-landmark values are smaller and muted. All are still scrollable + selectable with haptic feedback.
  • Fixed scroll listener passing through out-of-bounds values — when ListView offset was mid-fling (negative or past max), the listener was firing onChanged with garbage values like -106. Now clamped to [min, max] before firing.
  • Smaller item height (30px) + 5 visible items — 240 items still feels flickable.

Focus Mate v1.1.2 — scroll wheel off-by-one fix + editor range fix

12 Jun 19:39

Choose a tag to compare

Fixes in v1.1.2

  • Off-by-one in scroll wheel centering. When the value was at wheel.min (5), the wheel was highlighting the next value (6) in the center because the first item sat at the top of the visible area, not the center. Fix: added vertical padding so the first item is centered. Now value=5 displays 5 in the center.
  • Editor clamp range too narrow. The 'custom' edit dialog was clamping to wheel.min (5), so users couldn't type 2 or 3 minute test intervals. Fix: wheel display range (5-120) and editor range (1-240) are now separate. Type any value 1-240 in the editor.

New widget tests in test/interval_wheel_test.dart cover both bugs.

Focus Mate v1.1.1 — vertical scroll wheel for interval

12 Jun 19:01

Choose a tag to compare

What's new in v1.1.1

  • Vertical scroll wheel for the interval picker. Drag up to increase, drag down to decrease. Snaps to integer minutes (5-120 range) with light haptic feedback on every tick.
  • Centered selected number highlighted in amber, neighbors muted. Top/bottom fade gradients reinforce the 'selected center band'.
  • Edit button (pencil icon) next to the wheel opens a text field for precise values like 47 min.
  • Tap-to-scroll on any visible number to jump to it.
  • BouncingScrollPhysics for smooth iOS-like feel — flick to spin through values quickly.

The old horizontal slider is gone. Same min/max range (5-120 minutes).

Install

For Vivo / OPPO / Xiaomi: FocusMate-arm64-v1.1.1-release-signed.apk
For Pixel / Samsung / AOSP: FocusMate-arm64-v1.1.1.apk

Focus Mate v1.1.0 — 5 quick-win features

12 Jun 18:42

Choose a tag to compare

What's new in v1.1.0

1. Customizable escalation grace period

Settings → Escalation delay: 15s / 30s / 60s / 120s. Default 60s.

2. Customizable alarm sound preset

Registry-driven. Currently ships with 'Classic' (the bundled C5-E5 alarm). New sounds can be added by dropping a new file in res/raw/ and registering it in AlarmSoundRegistry.

3. Daily focus stats

Today's focused time, problems solved, alarms triggered — all visible on the home screen. Persisted in SharedPreferences (date-keyed JSON).

4. Streak counter

'5 days 🔥' badge on home screen. Auto-bumps when you start a focus session. Tracks current streak and longest streak.

5. Pomodoro mode toggle

Settings → Mode → choose between Single interval or Pomodoro (25/5/15). The cycle config is stored; future release will fully drive the work/break cycle from the pomodoro config.

Install

For Vivo / OPPO / Xiaomi / Chinese OEMs: FocusMate-arm64-v1.1.0-release-signed.apk (release keystore).
For Pixel / Samsung / AOSP: FocusMate-arm64-v1.1.0.apk (debug-signed).

Focus Mate v1.0.5

12 Jun 17:33

Choose a tag to compare

What's new in v1.0.5

  • Typing silences the escalation alarm — once the 60s grace expires and the looping alarm kicks in, typing any digit in the answer field immediately silences the alarm and gives the user another full 60s to finish typing the correct answer.

How escalation works now (v1.0.5)

  1. T=0-60s: challenge active, normal alarm tone
  2. T=60s: alarm escalates — looping alarm + vibration, red pulsing background, 'TOUCH SCREEN' pill. The math problem stays on screen.
  3. NEW: User types any digit → alarm silences, 'WAKE UP' pill returns, user gets another 60s with the same problem to finish typing.
  4. (Or: User taps anywhere outside the field → same as above, alarm silences + 60s reset)
  5. User submits correct answer → alarm fully stops, next interval scheduled

Install

For Vivo / OPPO / Xiaomi / other Chinese OEMs: FocusMate-arm64-v1.0.5-release-signed.apk (release keystore, OEM-friendly).
For Pixel / Samsung / AOSP: FocusMate-arm64-v1.0.5.apk (debug-signed).

Focus Mate v1.0.4

12 Jun 17:05

Choose a tag to compare

Fix in v1.0.4

  • Question stays visible during escalation — previously when the 60s grace period expired, the challenge screen disappeared and only the alarm sound remained. Now the question stays on screen with red pulsing background + 'TOUCH SCREEN' indicator, and the user can type their answer at any time.

How escalation works now (v1.0.4)

  1. T=0-60s: challenge active, normal alarm tone, 'Auto-alarm in 60s' countdown visible
  2. T=60s: alarm escalates — looping alarm + vibration, red pulsing background, 'TOUCH SCREEN' pill, Submit button becomes 'STOP ALARM & SUBMIT'. The math problem stays on screen.
  3. User taps anywhere → alarm silences, problem stays, user gets another 60s
  4. User types answer and submits → alarm stops, next interval scheduled

Install (Vivo / OPPO / Xiaomi users)

Download FocusMate-arm64-v1.0.4-release-signed.apk — proper release keystore, OEM-friendly.

Install (Pixel / Samsung / AOSP users)

Download FocusMate-arm64-v1.0.4.apk — debug-signed for easier sideloading.

Focus Mate v1.0.3

12 Jun 16:46

Choose a tag to compare

What's new in v1.0.3

  • Escalation alarm — if you don't solve the math problem within 60 seconds, the alarm escalates into a continuous looping tone + vibration that only stops when you tap the screen. Solves the 'fall asleep during challenge' failure mode.
  • Custom alarm sound — generated two-tone ascending alarm (C5-E5) bundled in the app (no network dependency, no licensing issues).
  • Visual urgency — red pulsing background overlay during escalation; Submit button changes to 'STOP ALARM & SUBMIT'.

How it works

  • T=0: challenge fires (single alert tone)
  • T=0-60s: you have a 60s grace period with a visible countdown
  • T=60s: if unsolved, alarm escalates — fullScreenIntent re-fires, native MediaPlayer starts looping the bundled alarm, vibration pattern starts
  • Touch the screen anywhere: alarm silences, you get another 60s to solve
  • Solve correctly: alarm stops, next interval scheduled

Install

Download FocusMate-arm64-v1.0.3.apk below. Same Android debug signature as v1.0.0-v1.0.2, so this installs as an in-place update — your settings are preserved.

Focus Mate v1.0.2

12 Jun 16:06

Choose a tag to compare

What's fixed in v1.0.2

  • Yellow underline on all text — every Text widget had a yellow double-underline. This was a Flutter debug indicator for missing DefaultTextStyle that leaked through the GoogleFonts + Stack + RepaintBoundary chain. Fixed by adding a global DefaultTextStyle wrapper in MaterialApp.builder.

Install

Download FocusMate-arm64-v1.0.2.apk below. Same Android debug signature as v1.0.0/v1.0.1, so this installs as an in-place update — your interval & difficulty settings are preserved.