Releases: utsapoddar/sift-work-timer
Sift v1.0.8
Fix background/locked/in-call alarm audio (v1.0.8) - audioplayers now uses AVAudioSessionCategory.playback on iOS so alarm plays through speaker when app is backgrounded or screen is locked - restartAudioEngineIfNeeded uses timerAudioActive flag so silent loop correctly restarts after a phone call ends - Notifications set to timeSensitive to break through Focus/DND Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.7d — In-app silence fix
In-app silence button now calls silenceTimerService() which sends ACTION_SILENCE to TimerService, stopping the native MediaPlayer. Previously only the Flutter AudioPlayer was stopped.
v1.0.7c — Silence button fix
Silence notification button now starts TimerService directly (getService PendingIntent) so it can call stopAlarmSound() on the MediaPlayer. Previously it broadcast to MainActivity which only updated Flutter UI, leaving the native audio playing.
v1.0.7b — Custom duration dialog fix
Fix custom duration dialog: wrap content in SingleChildScrollView so Cancel/Set buttons stay visible when keyboard opens, and add focusedBorder so text fields don't flash blue.
Sift v1.0.7
Holds a PARTIAL_WAKE_LOCK for the duration of the timer session. Prevents aggressive OEM battery managers (UMIDIGI etc) from suspending the foreground service process.
v1.0.6 — AlarmClock priority fix
Switches from setExactAndAllowWhileIdle to setAlarmClock — highest Android alarm priority, shown in status bar, suppressed by almost no OEM battery managers.
Sift v1.0.5b
Request battery optimization exemption on launch — fixes background killing on budget Android phones
Sift v1.0.5
Fix timer dying in background — alarm logic moved to native Android AlarmManager, fires regardless of Dart state. Notification now shows current phase name.
Sift v1.0.4d
Fix timer dying in background — correct foreground service type (specialUse), permission requested on launch
Sift v1.0.4c
Fix background timer dying — request notification permission so foreground service stays alive on Android 13+