- New CellClawTileService with @EntryPoint for Hilt, tile state reflecting
AgentState (ACTIVE/INACTIVE labels), and onClick screenshot+explain flow
posting result to CHANNEL_ALERTS notification (ID 200)
- New ic_qs_cellclaw.xml 24dp monochrome vector for QS tile icon
- Register CellClawTileService in manifest with BIND_QUICK_SETTINGS_TILE
permission, QS_TILE intent-filter, and ACTIVE_TILE metadata
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Five new feature areas:
- Screenshot capture via a11y service + vision analysis tool with ContentBlock.Image support across all providers (Anthropic, OpenAI, Gemini)
- Notification listener service with query/filter and auto-trigger agent on app notifications
- Cron scheduler using WorkManager with periodic and one-shot scheduled tasks (Room DB v2)
- Messaging automation tools for opening, reading, and replying in WhatsApp/Telegram/Instagram
- Voice input (SpeechRecognizer STT) and output (TextToSpeech TTS) with settings toggles
Includes 8 new instrumented tests and smart_reply skill asset.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
agentSendsEmail test sets up the full CellClaw agent loop with
EmailSendTool + UiAutomation tools and lets Gemini autonomously
compose the email, read the screen, and tap Send in Gmail.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set intent package to com.google.android.gm to bypass app chooser,
update tool description to guide agent to tap Send via screen.read +
app.automate, and add 4 mock validation tests plus a real end-to-end
Gmail send test with Samsung chooser fallback handling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add AccessibilityBridge for bidirectional tool<->service communication
- Upgrade CellClawAccessibility: swipe gestures (left/right/up/down),
screen reading with element bounds, find_element, wait_and_read
- AppAutomateTool now awaits results instead of fire-and-forget
- Add ScreenReadTool (screen.read) - read-only AUTO policy for
reading foreground app UI elements and text
- Swipe gestures calibrated for card-swiping apps (60% screen width)
- All 3 E2E agent loop tests pass on Samsung Galaxy Z Flip
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Test verifies Gemini calls browser.search with correct query params
- Query correctly contains boston and date keywords
- All 4 Gemini integration tests pass on phone + emulator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add EmailSendTool (email.send) using Android ACTION_SENDTO intent
- Add Gemini integration tests (completion, tool use, streaming)
- Move API key from hardcoded test to BuildConfig via local.properties
- Update default Gemini model from 2.0-flash to 2.5-flash
- Add email.send to AutonomyPolicy defaults (ASK)
- Register EmailSendTool in AppModule DI
- Update unit tests for new model name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add GeminiProvider with Gemini API function calling support
- Add ProviderManager to handle provider selection and API key management
- Update AgentLoop to use ProviderManager instead of hardcoded Anthropic
- Redesign SetupScreen with provider selection cards (radio buttons)
- Update SettingsScreen with per-provider API key management
- Update DI module to provide all three providers
- Add unit tests for GeminiProvider and ProviderManager
- Tested on emulator and physical device (Samsung Galaxy Z Flip)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix SSE streaming: replace inline processSSE with readLine loop
to allow suspend emit() calls inside the flow
- Remove @Serializable from CompletionRequest (ToolApiDefinition
is not serializable)
- Fix LocationTool type inference for suspendCancellableCoroutine
- Add gradlew/gradlew.bat and gradle-wrapper.jar
Build: assembleDebug passes, APK generated (20.7MB)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>