Skip to content

Releases: JonathanKChang/chrono

2026-08-18 Keep Screen On option

Choose a tag to compare

@JonathanKChang JonathanKChang released this 18 Aug 23:09

Implements #2

  • Option to Keep Screen On that will keep the screen from turning off if the app is in the foreground

Full Changelog: 2026-08-13...2026-08-18

2026-08-13 Remove additional unnecessary boot receivers

Choose a tag to compare

@JonathanKChang JonathanKChang released this 13 Aug 05:04

Removed additional receivers that are not necessary, as per @p1usminus

  • com.pravera.flutter_foreground_task.service.RebootReceiver
  • com.pravera.flutter_foreground_task.service.RestartReceiver

Full Changelog: 2026-08-03...2026-08-13

2026-08-03 Fix Crash on unlock after Android restart

Choose a tag to compare

@JonathanKChang JonathanKChang released this 03 Aug 22:14

Addresses Issue #517 -

  • Removed a background component that was redundant and caused crashes on some Android 12+ devices after reboot

Full Changelog: 2026-06-15...2026-08-03


Technical details

On Android 12+ with Direct Boot enabled, flutter_boot_receiver's BootHandlerService.onCreate() calls getSharedPreferences("com.flux.flutter_boot_receiver", 0) to retrieve callback dispatcher and handle values needed to spawn a background Dart isolate. On Android 12+, when an app targets API 33+ and has directBootAware="true", the application context uses credential-encrypted SharedPreferences by default. These are only accessible after the user unlocks their device for the first time post-boot, but the boot receiver runs before unlock, causing a crash.

It turns out flutter_boot_receiver provided no unique functionality: its entire job (handleBoot() → updateAlarms() + updateTimers()) is already performed by the main app startup flow in main.dart, which runs identically after every reboot when the user opens the app.

flutter_boot_receiver was popular in earlier Flutter versions when V2 embedding wasn't the default and background isolates couldn't access plugins automatically. It handled registering plugins in a background isolate before running user code. With V2 embedding (auto-registers plugins via reflection), any package spawning a background isolate like android_alarm_manager_plus gets plugin access for free, making flutter_boot_receiver redundant.

Thanks @p1usminus

2026-06-15 Default Reliability Settings

Choose a tag to compare

@JonathanKChang JonathanKChang released this 15 Jun 18:29

Changes from 2026-05-28

  • Updated default reliability settings to fix some issues on Android 16 reliability with minimal battery impact

Full Changelog: 2026-05-28...2026-06-15


Changes from v0.6.0 to 2026-05-28

  • Implements custom snooze duration selection via a new UI action on active alarm and timer notifications, gated behind an opt-in settings toggle ("General > Interactions > Enable Custom Snooze").
  • Add a “Delete After Finishing” option for timers that removes one‑shot timers from storage automatically when they are dismissed.
  • vicolo-dev's 0.6.1 development changes
  • Rising volume fix
  • Added input mode switch to Numpad input
  • Repeat option for timers
  • One-timer override for timers
  • Automatically open ringing notification when opening the app
  • Fixed issue with timers and alarms going off and not being able to dismiss one of the ringtones
  • handle JSON parse errors when loading from storage
  • Robust Serialization: use atomic writes for writing to storage

Full Changelog: v0.6.0...2026-05-28

v0.6.0 + Robust Serialization

Choose a tag to compare

Changes

  • handle JSON parse errors when loading from storage
  • use atomic writes for writing to storage

Full Changelog: v0.6.0...robust-serialization

Attempts to address #516 #514 #498 #483 #478 #448 #442 #420 #408 #406

2026-05-28 Robust Serialization

Choose a tag to compare

@JonathanKChang JonathanKChang released this 29 May 16:51

Changes from 2026-05-27

  • handle JSON parse errors when loading from storage
  • use atomic writes for writing to storage

Full Changelog: 2026-05-27...2026-05-28


Changes from v0.6.0 to 2026-05-27

  • Implements custom snooze duration selection via a new UI action on active alarm and timer notifications, gated behind an opt-in settings toggle ("General > Interactions > Enable Custom Snooze").
  • Add a “Delete After Finishing” option for timers that removes one‑shot timers from storage automatically when they are dismissed.
  • vicolo-dev's 0.6.1 development changes
  • Rising volume fix
  • Added input mode switch to Numpad input
  • Repeat option for timers
  • One-timer override for timers
  • Automatically open ringing notification when opening the app
  • Fixed issue with timers and alarms going off and not being able to dismiss one of the ringtones

Full Changelog: v0.6.0...2026-05-28

2026-05-27

Choose a tag to compare

@JonathanKChang JonathanKChang released this 27 May 04:46

Changes from v0.6.0

  • Implements custom snooze duration selection via a new UI action on active alarm and timer notifications, gated behind an opt-in settings toggle ("General > Interactions > Enable Custom Snooze").
  • Add a “Delete After Finishing” option for timers that removes one‑shot timers from storage automatically when they are dismissed.
  • vicolo-dev's 0.6.1 development changes
  • Rising volume fix
  • Added input mode switch to Numpad input
  • Repeat option for timers
  • One-timer override for timers
  • Automatically open ringing notification when opening the app
  • Fixed issue with timers and alarms going off and not being able to dismiss one of the ringtones

Full Changelog
v0.6.0...2026-05-27

Notes

I’ve submitted some PRs upstream but in the meantime will publish some of my builds if anyone is interested.

v0.6.0 + One Shot Timers

Choose a tag to compare

@JonathanKChang JonathanKChang released this 27 May 04:36

Changes

Add a “Delete After Finishing” option for timers that removes one‑shot timers from storage automatically when they are dismissed.

Full Changelog: v0.6.0...feature/one-shot-timers

Notes

I’ve submitted a PR upstream, but in the meantime I’ve published a temporary fork release that fixes this issue: #433

I’ll remove it if/when the upstream merges the fix.

Full Changelog: https://github.com/JonathanKChang/chrono/commits/one-shot-timers

v0.6.0 + Custom Snooze

Choose a tag to compare

@JonathanKChang JonathanKChang released this 27 May 04:40

Changes

Implements custom snooze duration selection via a new UI action on active alarm and timer notifications, gated behind an opt-in settings toggle ("General > Interactions > Enable Custom Snooze").

Full Changelog: v0.6.0...feature/custom-snooze

Notes

I’ve submitted a PR upstream, but in the meantime I’ve published a temporary fork release that addresses issue #364 and to some extent #480, #509.

I’ll remove it if/when the upstream merges the fix.