Skip to content

Fix Play Protect flag (drop All-files access) and Focus wake-lock leak - #4

Merged
eddiegulay merged 1 commit into
mainfrom
develop
Jul 2, 2026
Merged

Fix Play Protect flag (drop All-files access) and Focus wake-lock leak#4
eddiegulay merged 1 commit into
mainfrom
develop

Conversation

@eddiegulay

Copy link
Copy Markdown
Owner

Summary

Two fixes ahead of v0.0.9:

  • Drop MANAGE_EXTERNAL_STORAGE (All-files access). This permission was causing Google Play Protect to flag installs as harmful and block installation on many devices — a launcher has no need for device-wide file access. Legacy WRITE_EXTERNAL_STORAGE and requestLegacyExternalStorage are removed too, so Tempo now requests no storage permission. The 10-day blockade ledger survives uninstall/reinstall via Android Auto Backup (cloud restore) instead of a shared-storage mirror.
  • Fix Focus mode leaking the wake-lock. Keep-awake was set on the shared root view and only released by FocusScreen's onDispose, so it leaked whenever the composable never disposed (e.g. pressing HOME while Tempo isn't the default launcher) — the display stayed awake forever, even on Home. FLAG_KEEP_SCREEN_ON is now driven from the Focus screen state in TempoApp and cleared on every other screen.

Notes

  • Uninstall-survival is now best-effort: it restores only if the user has Google backup enabled.
  • Version is derived from the release tag by CI; no build.gradle bump needed.

Test plan

  • ./gradlew :app:compileDebugKotlin — passes.
  • Manifest no longer declares any storage permission.
  • On-device: enter Focus (screen stays awake), leave via Back/HOME → device sleeps per system settings; verify with Tempo both as default and non-default launcher.

Remove MANAGE_EXTERNAL_STORAGE (and legacy WRITE_EXTERNAL_STORAGE /
requestLegacyExternalStorage), which was getting installs flagged as
harmful by Google Play Protect. The blockade ledger now survives
uninstall/reinstall via Android Auto Backup rather than a shared-storage
mirror, so no storage permission is requested at all.

Fix Focus mode keeping the whole device awake forever: keep-awake was set
on the shared root view and only released by FocusScreen's onDispose, so
it leaked when the composable never disposed (e.g. HOME press while Tempo
isn't the default launcher). Drive FLAG_KEEP_SCREEN_ON from the Focus
screen state in TempoApp instead, clearing it on every other screen.
@eddiegulay
eddiegulay merged commit da16641 into main Jul 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant