You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Remove FOREGROUND_SERVICE_DATA_SYNC permission (Play Store release blocker)
The v0.14.0 fastlane upload fails with:
Google Api Error: Invalid request - You must let us know whether your app uses any Foreground Service permissions.
Google Play Console requires a declaration form + demo video for FOREGROUND_SERVICE_DATA_SYNC. Since sync is disabled by default (#184) and not demo-able, we should remove it for now.
android:foregroundServiceType="dataSync" from the SyncAlarmReceiver service entry (or just drop the uses-permission and leave the type — the type without the permission is inert)
Re-add when sync is actually shippable and a demo video can be recorded.
This is the dominant driver of the ~8% user-perceived crash rate. Needs a null-check guard at ChromeWatcher.kt:76 and a stub onInterrupt implementation.
3. Hostname validation in aw-server-rust (enhancement, not blocker)
Erik requested a server-side guard to reject bucket creation with space-containing hostnames (so a misconfigured Android client can't create a broken bucket). Fix location: aw-server-rust bucket creation path.
4. Native OOM in sync (tracked upstream)
The Scudo ERROR: Out of memory crash during syncBoth is tracked in ActivityWatch/aw-server-rust#630 (unbounded event fetch). Short-term mitigation already merged (#184 — disabled auto-sync by default). Long-term fix is batch/stream processing in aw-server-rust.
Follow-up to #176. Context rebuilt from full thread read.
Current state (as of 2026-07-12)
Open items
1. Remove
FOREGROUND_SERVICE_DATA_SYNCpermission (Play Store release blocker)The v0.14.0 fastlane upload fails with:
Google Play Console requires a declaration form + demo video for
FOREGROUND_SERVICE_DATA_SYNC. Since sync is disabled by default (#184) and not demo-able, we should remove it for now.Fix: Two-line removal from
AndroidManifest.xml:<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />android:foregroundServiceType="dataSync"from theSyncAlarmReceiverservice entry (or just drop theuses-permissionand leave the type — the type without the permission is inert)Re-add when sync is actually shippable and a demo video can be recorded.
2. ChromeWatcher NPE (top crash cluster — ~791 reports)
From
vitals.py errors:NullPointerExceptioninChromeWatcher.onAccessibilityEventat ChromeWatcher.kt:76NotImplementedErrorinChromeWatcher.onInterrupt(not implemented)This is the dominant driver of the ~8% user-perceived crash rate. Needs a null-check guard at ChromeWatcher.kt:76 and a stub
onInterruptimplementation.3. Hostname validation in aw-server-rust (enhancement, not blocker)
Erik requested a server-side guard to reject bucket creation with space-containing hostnames (so a misconfigured Android client can't create a broken bucket). Fix location: aw-server-rust bucket creation path.
4. Native OOM in sync (tracked upstream)
The
Scudo ERROR: Out of memorycrash duringsyncBothis tracked in ActivityWatch/aw-server-rust#630 (unbounded event fetch). Short-term mitigation already merged (#184 — disabled auto-sync by default). Long-term fix is batch/stream processing in aw-server-rust.Done in #176
Priority order