Phase-3 review (HIGH). IdleService (:206) runs continuously as FOREGROUND_SERVICE_TYPE_DATA_SYNC, and push is ON by default (AppSettings.pushIdle=true). With targetSdk 37, Android 14+'s dataSync FGS runtime cap (~6h per rolling 24h) calls Service.onTimeout(...) then force-stops + throws if the service doesn't stop itself. IdleService overrides onStartCommand/onDestroy/onBind but NOT onTimeout (absent from all of app/src/main). Effect: any Android 14+/15/16 user with default settings + ≥1 account loses push after ~6 cumulative hours and the app hits a system FGS-timeout exception; on API 35+ the budget is cumulative per-24h and restarting doesn't reset it, so MainActivity.ensurePushStarted can't recover it — push stays dead until the next window. Fix: override onTimeout(startId[,fgsType]) to cleanly stop foreground state and fall back to the scheduled 15-min periodic sync (mirror the low-battery PushMode.POLLING fallback + surface in the persistent notification).
Phase-3 review (HIGH). `IdleService` (:206) runs continuously as `FOREGROUND_SERVICE_TYPE_DATA_SYNC`, and push is ON by default (`AppSettings.pushIdle=true`). With targetSdk 37, Android 14+'s dataSync FGS runtime cap (~6h per rolling 24h) calls `Service.onTimeout(...)` then force-stops + throws if the service doesn't stop itself. `IdleService` overrides onStartCommand/onDestroy/onBind but **NOT onTimeout** (absent from all of app/src/main). Effect: any Android 14+/15/16 user with default settings + ≥1 account loses push after ~6 cumulative hours and the app hits a system FGS-timeout exception; on API 35+ the budget is cumulative per-24h and restarting doesn't reset it, so `MainActivity.ensurePushStarted` can't recover it — push stays dead until the next window. **Fix:** override `onTimeout(startId[,fgsType])` to cleanly stop foreground state and fall back to the scheduled 15-min periodic sync (mirror the low-battery `PushMode.POLLING` fallback + surface in the persistent notification).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase-3 review (HIGH).
IdleService(:206) runs continuously asFOREGROUND_SERVICE_TYPE_DATA_SYNC, and push is ON by default (AppSettings.pushIdle=true). With targetSdk 37, Android 14+'s dataSync FGS runtime cap (~6h per rolling 24h) callsService.onTimeout(...)then force-stops + throws if the service doesn't stop itself.IdleServiceoverrides onStartCommand/onDestroy/onBind but NOT onTimeout (absent from all of app/src/main). Effect: any Android 14+/15/16 user with default settings + ≥1 account loses push after ~6 cumulative hours and the app hits a system FGS-timeout exception; on API 35+ the budget is cumulative per-24h and restarting doesn't reset it, soMainActivity.ensurePushStartedcan't recover it — push stays dead until the next window. Fix: overrideonTimeout(startId[,fgsType])to cleanly stop foreground state and fall back to the scheduled 15-min periodic sync (mirror the low-batteryPushMode.POLLINGfallback + surface in the persistent notification).