- Android: fetch installed apps via PackageManager, send to server on connect
- Android: add QUERY_ALL_PACKAGES permission for full app visibility
- Android: fix duplicate Intent import, increase accessibility retry window
- Android: default server URL to ws:// instead of wss://
- Server: store installed apps in device metadata JSONB
- Server: inject installed apps context into LLM prompt
- Server: preprocessor resolves app names from device's actual installed apps
- Server: add POST /goals/stop endpoint with AbortController cancellation
- Server: rewrite session middleware to direct DB token lookup
- Server: goals route fetches user's saved LLM config from DB
- Web: show installed apps in device detail Overview tab with search
- Web: add Stop button for running goals
- Web: replace API routes with remote commands (submitGoal, stopGoal)
- Web: add error display for goal submission failures
- Shared: add InstalledApp type and apps message to protocol
- Add device/session/step DB persistence in server agent loop
- Add goal preprocessor for compound goals (e.g., "open YouTube and search X")
- Add step-level logging to agent loop
- Fix dashboard WebSocket auth (direct DB token lookup instead of auth.api)
- Fix web layout to use locals.session.token instead of cookie
- Add dashboard-ws.svelte.ts WebSocket store with auto-reconnect
- Rewrite devices page with direct DB queries and real-time updates
- Add device detail page with live step display and session history
- Add Android companion app resources, themes, and screen capture consent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add deleteKeySchema for proper FormData validation
- Return { deleted: true } from deleteKey for change tracking
- Use $state for keysPromise to refresh list after create/delete
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deploying to Railway instead of Cloudflare, so swap
@sveltejs/adapter-cloudflare for @sveltejs/adapter-node.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Server-side agent loop that adapts the CLI kernel to work over WebSocket.
Three new modules: stuck detection, LLM provider abstraction (OpenAI/Groq/
OpenRouter), and the main perception-reasoning-action loop. Also wires up
the goals route to start agent loops with duplicate-device protection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
find_and_tap now scrolls down and rescans (up to 10 times) when the
target element isn't visible on the current screen. Stops as soon as
the element is found — no wasted scrolls. This removes the need for
LLMs to manually scroll-and-check in workflow prompts.
Also simplifies the Gemini-to-WhatsApp workflow prompts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Multi-app workflow: ask Gemini about droidclaw.ai, copy response,
switch to WhatsApp, find contact, paste and send.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Groq (free tier, API key) is the primary setup path.
Ollama (local, no key) shown as secondary option.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Site and README now show both curl one-liner and manual steps.
Explicit note that bun is required (node/npm won't work).
Install script improvements: version check, node detection warning,
curl check, Windows detection, .git dir validation, shallow clone,
fallback on bun install --silent, post-install missing dep summary.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
One-liner install: curl -fsSL https://droidclaw.ai/install.sh | sh
Auto-installs bun and adb, clones repo, sets up .env.
Updated site meta tags and canonical URL to droidclaw.ai.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>