From 795e0299faf97d2bc271d9e0b01fecb085c2c222 Mon Sep 17 00:00:00 2001
From: Somasundaram Mahesh
Date: Thu, 19 Feb 2026 00:34:12 +0530
Subject: [PATCH] feat(android): make battery optimization permission optional
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Remove battery exemption from required permissions gate in onboarding
and permission status bar — it is now informational only and does not
block "Get Started" or the all-permissions indicator.
Bump download links to v0.3.2.
---
README.md | 2 +-
.../thisux/droidclaw/ui/components/PermissionStatusBar.kt | 3 +--
.../com/thisux/droidclaw/ui/screens/OnboardingScreen.kt | 2 +-
site/index.html | 6 +++---
4 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index f4f093d..7b71272 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
> an ai agent that controls your android phone. give it a goal in plain english — it figures out what to tap, type, and swipe.
-**[Download Android APK (v0.3.1)](https://github.com/unitedbyai/droidclaw/releases/download/v0.3.1/app-debug.apk)** | **[Dashboard](https://app.droidclaw.ai)** | **[Discord](https://discord.gg/nRHKQ29j)**
+**[Download Android APK (v0.3.2)](https://github.com/unitedbyai/droidclaw/releases/download/v0.3.2/app-debug.apk)** | **[Dashboard](https://app.droidclaw.ai)** | **[Discord](https://discord.gg/nRHKQ29j)**
i wanted to turn my old android devices into ai agents. after a few hours reverse engineering accessibility trees and playing with tailscale.. it worked.
diff --git a/android/app/src/main/java/com/thisux/droidclaw/ui/components/PermissionStatusBar.kt b/android/app/src/main/java/com/thisux/droidclaw/ui/components/PermissionStatusBar.kt
index 0cb6773..cdefcde 100644
--- a/android/app/src/main/java/com/thisux/droidclaw/ui/components/PermissionStatusBar.kt
+++ b/android/app/src/main/java/com/thisux/droidclaw/ui/components/PermissionStatusBar.kt
@@ -75,7 +75,7 @@ fun PermissionStatusBar(onNavigateToSettings: () -> Unit) {
}
val allOk = apiKey.isNotBlank() && isAccessibilityEnabled && hasCaptureConsent
- && isBatteryExempt && hasOverlayPermission
+ && hasOverlayPermission
if (allOk) {
Icon(
@@ -95,7 +95,6 @@ fun PermissionStatusBar(onNavigateToSettings: () -> Unit) {
if (apiKey.isBlank()) StatusDot(StatusRed)
if (!isAccessibilityEnabled) StatusDot(StatusRed)
if (!hasCaptureConsent) StatusDot(StatusRed)
- if (!isBatteryExempt) StatusDot(StatusRed)
if (!hasOverlayPermission) StatusDot(StatusRed)
}
}
diff --git a/android/app/src/main/java/com/thisux/droidclaw/ui/screens/OnboardingScreen.kt b/android/app/src/main/java/com/thisux/droidclaw/ui/screens/OnboardingScreen.kt
index 7dd4782..7717005 100644
--- a/android/app/src/main/java/com/thisux/droidclaw/ui/screens/OnboardingScreen.kt
+++ b/android/app/src/main/java/com/thisux/droidclaw/ui/screens/OnboardingScreen.kt
@@ -233,7 +233,7 @@ private fun OnboardingStepTwo(onGetStarted: () -> Unit) {
}
}
- val allGranted = isAccessibilityEnabled && hasCaptureConsent && isBatteryExempt && hasOverlayPermission
+ val allGranted = isAccessibilityEnabled && hasCaptureConsent && hasOverlayPermission
Column(
modifier = Modifier
diff --git a/site/index.html b/site/index.html
index f3296e1..7b0fa26 100644
--- a/site/index.html
+++ b/site/index.html
@@ -429,7 +429,7 @@
taps and types via adb, and repeats until the job is done.