This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Summary
AI summaryUpdates Bug fixes, New features, and Permissions across a mixed release.
Full changelog
v1.24 - Refactor + bug fixes + Widget
The biggest internal cleanup since the project started, plus several
user-visible fixes around the overlay timer's position behavior.
Bug fixes
- Timer position now survives screen rotation. Custom drag positions
were stored as absolute pixel coordinates, so "top-right" in portrait
landed somewhere unrelated in landscape. Positions are now stored as
fractions of (screen − overlay), with edge-snapping on drag release
so corner-pinned timers stay flush with the edge across rotation.
Legacy pixel-based prefs are migrated silently on first launch. - No more accidental drag-into-custom mode. The 10-raw-pixel drag
threshold was effectively zero on high-density screens - fingertip
wobble during a tap-to-hide could silently flip the level into custom
mode. Switched to the platform's density-aware touch slop. - Dragging from a preset no longer teleports to the top-left first.
The touch handler used to read 0/0 from the gravity-anchored layout
params on ACTION_DOWN; now reads the overlay's real on-screen position
viaView.getLocationOnScreen. - Settings position spinner only applies on Save. Picking a preset
used to immediately overwrite a dragged custom position via
prefs.apply(), so Cancel felt like Save. The clear now waits for Save. - Settings broadcasts now reach the service on API 34+. Added
explicitsetPackageon theACTION_SETTINGS_UPDATEDintent so
RECEIVER_NOT_EXPORTEDreceivers actually get delivered.
Refactor
The single 800+ line ScreenTimeService and 500+ line MainActivity
have been broken up into focused, single-responsibility components.
No new features; behavior is unchanged, but the codebase is much easier
to read, test, and extend.
- New package layout:
data/,overlay/,service/,ui/. ScreenTimeRepository- single I/O layer for screen-time, analytics,
and reset bookkeeping.SettingsRepository- single I/O layer for user-configurable
settings; owns theACTION_SETTINGS_UPDATEDbroadcast.OverlayController- owns the WindowManager overlay view, touch
handler, and rendering. Single entry point:render(seconds, settings).ResetScheduler- owns daily-reset wall-clock math and the Doze-proof
alarm.ScreenStateMonitor- wrapsisInteractive+isKeyguardLocked.PermissionWizard- extracted fromMainActivity; owns the four-step
permission state machine (overlay → battery → pause-app → auto-start).- Typed
OverlaySettings/LevelSettingssnapshot replaces ad-hoc
fields scattered across the service.
Permissions
- Removed unused permissions (Internet and friends).
New features
-
Home-screen widget. A 2×1 widget showing today's accumulated
screen time at a glance, color-coded by the same Level 1/2/3 system
as the overlay. Tapping it opens the app. Pushed every ~30s by the
service while it's running; falls back to the framework's 30-min
cadence + a prefs read when the service is stopped, so the value
stays current without burning battery. -
"Never" timer display mode. A third option alongside Always and
Interval that hides the floating overlay entirely while tracking
continues silently. Pairs with the widget for users who want
awareness without an always-on timer covering every app. -
Inline timer-mode picker. Replaced the dropdown with three
side-by-side buttons (Always / Interval / Never) so the current
choice is visible at a glance. -
Settings reordered. Timer Display Settings now sits above Level
Customization - with Never mode in the mix, display mode is the
first decision a user makes. -
In-settings help. A small (i) icon next to each settings
section header opens a short explainer dialog (what is Level 2,
when does Daily Reset fire, what does Interval mean, etc.). Helps
onboard new users to the level system without sending them to docs. -
No more
ForegroundServiceDidNotStopInTimeExceptioncrashes on
Android 15. Migrated the foreground service type fromdataSync
tospecialUse. Android 15 enforces a 6-hour daily cumulative cap
ondataSyncservices - heavy users (mainly seen on Samsung devices)
hit it and got killed.specialUsehas no such cap and is the
correct category for an always-on screen-time tracker.
Breaking Changes
- Removed unused Internet and related permissions
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Awareen
All releases →Beta — feedback welcome: [email protected]