Changelog
[0.0.7] - 2026-01-15
Added
- Add configurable fade animation for highlights (1-5 second duration) (#656) (android, devxp)
- Add smooth ink-line path drawing for freehand annotations (#655) (android, devxp)
- Add runtime permission handling for drawing overlays (#654) (android, devxp)
- Integrate visual highlights with video recording for reproduction videos (#653) (devxp)
- Integrate visual highlights with bug report generation (#652) (devxp)
- Add MCP tool for visual highlighting during debugging (#651) (devxp)
- Add Node.js client for visual highlight control (#650) (devxp)
- Add WebSocket commands for controlling visual highlights (#649) (devxp)
- Add drawing API for shapes in AccessibilityService overlay (#648) (android, devxp)
- Add cmdline-tools installation to doctor MCP tool (#620) (android, devxp, ai)
- Detect Homebrew avdmanager when system images are in $ANDROID_HOME (#619) (android, devxp)
- Detect old avdmanager with JAXB error and provide helpful message (#618) (android, devxp)
- Add Device Owner/Device Admin setup for advanced operations and CA certificate management (#615) (android, devxp)
- Complete implementation of Last Screenshot MCP resource (#613)
- Feature: Enable element search across both main hierarchy and window hierarchies in tapOn/interaction tools (#543) (android)
- Feature: Keep screen awake on physical devices during automation (#536) (android)
- Implement Android AccessibilityService clipboard operations (#500) (android)
- Implement focus path calculation and navigation engine (#470) (android, a11y)
- Implement focus position tracking and accessibility tree traversal (#469) (android, a11y)
- Design focus-based navigation algorithm for TalkBack element targeting (#468) (android, a11y, research)
- Implement network traffic capture MCP tools with mitmproxy (#466) (android)
- Implement postNotification MCP tool with SDK hook and cmd notification fallback (#463) (android)
- Implement setNetworkState MCP tool for Wi-Fi/cellular/airplane mode control (#462) (android)
- Implement clipboard MCP tool with ADB and helper APK fallback (#461) (android)
- Implement biometricAuth MCP tool with emulator fingerprint support (#460) (android, research)
- Add accessibility focus tracking to observations (#459) (android, a11y)
- Adapt swipeOn tool for TalkBack using two-finger swipe and scroll actions (#458) (android, a11y)
- Adapt tapOn tool for TalkBack mode using ACTION_CLICK (#457) (android, a11y)
- Implement TalkBack auto-detection and infrastructure (#456) (android, a11y)
- Add capability detection for settings-based accessibility toggle (#409) (android, devxp)
- Implement adb settings-based accessibility service toggle (#408) (android, devxp)
- Add optional device labels to device-scoped tool calls (#388) (android)
- Block MCP tool calls during executePlan (#330) (devxp)
- Video recording: Android + iOS capture backends (#326) (android, ios, video)
- Video recording: MCP tools/resources + CLI config (#324) (devxp, video)
- Video recording: core service + archive retention (#323) (video)
- Interactive install script with gum + animated AutoMobile logo (#322) (env, devxp)
- Implement hybrid iOS automation architecture (#319) (ios)
- Feature Request: Implement pinch-to-zoom gesture in accessibility service (#264) (android, a11y)
- IDE plugin: MCP feature flags UI (#256) (intellij plugin)
- IDE plugin: navigation graph rendering (#253) (intellij plugin)
- IDE plugin: Unix socket transport for MCP attachment (#252) (intellij plugin)
- Explore scrollToward/contentDirection for swipeOn semantics (#249) (android, devxp)
- IDE plugin: support TCP/HTTP transport for bun dev mode (#246) (devxp, intellij plugin)
- Add visual fallback for selected-state detection (#242) (android, devxp, ai)
- Add identifyInteractions MCP tool to suggest available actions (#224) (android)
- Add dry run mode for explore tool call (#223) (android)
- Allow whitelisting navigation graph nodes and edge tool calls (#222) (android)
- Add await element option to tapOn for waiting on next UI state (#219) (android)
- Support tapOn for non-unique text within a specific container (#211) (android)
- Cancel in-progress MCP commands when AI agent or JUnitRunner disconnects (#204) (android, devxp)
- startDevice should error if AVD already running (#176) (devxp)
- openSystemTray should avoid redundant swipe when tray already open (#173) (android, devxp)
- Add retry mechanism for transient CI failures (Maven 403, network issues) (#172) (ci, devxp)
- MCP Resource: Installed Apps per Device (#163) (android)
- MCP Resource: Connected Devices (#162) (devxp)
- MCP Resource: Available Emulators/Simulators List (#161) (devxp)
- Doctor Tool for Onboarding and Diagnosis (#160) (devxp)
- Expose tool call history as MCP resource (#130) (devxp)
- Expose navigation graph nodes as individual MCP resources (#129)
- Expose navigation graph as MCP resource for IntelliJ plugin (#128) (android, intellij plugin)
- Expose internal debugging as MCP resource (#127) (devxp)
- Include Debug Information in MCP Tool Error Responses (#108)
- Back stack awareness (#78)
- IntelliJ IDE plugin (#67) (android, devxp)
- Permission Audit & Capability Inventory (auditPermissions) (#59)
- Sensitive Data Exposure Scanner (scanDataLeakage) (#57)
- Element Search Fallbacks (#54)
- TalkBack Navigation Simulator (simulateTalkBack) (#53)
- Dark Mode Consistency Checker (#50)
- Locale & System Configuration Manager (#49)
- Battery & Charging State Simulator (#48)
- Sensor Simulation Framework (#47)
- Live Interactive Element Inspector (#43)
- HTTP Request Mocking & Recording (mockNetwork) (#42)
- Network Condition Simulator (simulateNetworkCondition) (#41)
- ANR Risk Detector (profileAnrRisk) (#39)
- Navigation graph: Handle bottom sheets, popups, and dialogs (#28)
- Navigation graph: Handle scroll position as UI state (#27)
- Retain and Reuse Navigation (#10)
- clipboard get action returns empty string after successful copy operation (#778)
- systemTray find with both title AND body criteria always fails to find notifications (#777)
- Tool registration regression: interaction tools silently failed to register (#745) (ai)
- dragAndDrop schema allows empty selectors; runtime rejects (#686) (devxp)
- dragAndDrop should check accessibility service availability (enabled + installed) (#681) (android, a11y)
- Android drag requests never execute; dragAndDrop always times out (#680) (android, a11y)
- Preserve double-tap behavior in TalkBack mode (#672) (android, a11y)
- Dead code detection job fails with ‘Argument list too long’ when issue count is high (#641) (ci, devxp)
- Navigation graph MCP resources remain empty after active app observation (#614)
- AutoMobile fails to detect installed Android system images (#612) (android, env)
- Material3 navigation text labels missing from accessibility hierarchy due to sibling occlusion bug (#591)
- installApp MCP tool fails with ‘adb: unknown command dump’ (#587) (android)
- MCP observe responses are excessively large due to unfiltered data (#539) (ai)
- IDE plugin: AutoMobile tool window ignores IntelliJ theme (#335) (android, intellij plugin)
- swipeOn direction parameter causes AI agents to swipe opposite of intended direction (#226) (android, devxp)
- swipeOn tool description causes AI agents to swipe on screen instead of targeting lists (#225) (android, devxp)
- Selected state not correctly interpreted from view hierarchy (#213) (android)
- Git state becomes dirty from .mcp.json and .gitignore changes on branch/worktree checkout (#212) (devxp)
- Stale view hierarchy returned to AI agents after interactions (#205) (android, devxp)
- MCP client fails to connect at startup with handshaking error (#186) (env, devxp)
- AutoMobile CLI hangs and doesn’t exit after executePlan completes (#109)
- Large MCP response warning on Accessibility Service websocket timeout (#86) (devxp)
- Observe call happening right after an action that should have included observation (#66)
- Add stub listDevices MCP tool (#781) (devxp, ai)
- Add stub listApps MCP tool (#780) (devxp, ai)
- Add keyboard MCP tool with open/close/detect actions (#779) (devxp, ai)
- Google Weather app filtered out from listApps MCP resource (#715)
- Accessibility service filters out Android home launcher widgets from view hierarchy (#714)
- Make identifyInteractions a debug-only MCP tool (#673)
- Add polling support to tapOn action with searchUntil parameter (#662)
- Add optional waitFor parameter to observe MCP tool (#658)
- Add overlay window capability to AccessibilityService (#647)
- tapOn should use parent clickable element when matched element is not clickable (#646)
- swipeOn container selection should avoid overlaying clickable elements (#645)
- Playground app: Add accessibility semantics to navigation components (#571)
- Research TalkBack/VoiceOver MCP tool behavior and create design doc (#430) (a11y, research)
- Experiment: Toggle AutoMobile accessibility service via adb settings (#384) (android, a11y, research)
- Feature Request: Implement drag-and-drop gesture and MCP tool call (#265)
- swipeOn tool needs better container parameter schema, docs, examples (#263)
- tapOn tool needs better container parameter schema, docs, examples and validation (#262)
- explore should stay within current foreground app (#174)
- [Android] Automatic Work Profile adaptation (#35) (android)
- Debug Interactions (#11)
- Retain Navigation in Memory (#9)
- Android Library SDK (#8)
- Android WebSocket server (#7)
- Dockerize AutoMobile (#5) (env)
- Database for memory and settings (#2)
- Rewrite internals with interfaces (#1)
Changed
- Cache installed apps list in SQLite and update via package broadcast receivers (#750) (performance)
- Optimize observe: Make screenshot capture async/non-blocking (#749) (performance)
- Optimize launchApp: Run detectTargetUser and checkInstalled in parallel (#748) (performance)
- Add strict ‘exactly one’ selector enforcement to swipeOn.lookFor (#740) (android, testing, chore)
- Add strict ‘exactly one’ selector enforcement to pinchOn container (#739) (android, testing, chore)
- Add strict ‘exactly one’ selector enforcement to tapOn tool (#738) (android, testing, chore)
- Clean up MCP response message when searchUntil doesn’t need to poll (#700)
- Add toolResults parsing in AutoMobilePlanExecutor for JUnitRunner (#697) (android, testing)
- Create Kotlin serialization data classes for tool results in :test-plan-validation (#696) (android, testing)
- Enhance tapOn response to include selectedElement metadata (#694) (android, testing)
- Add selectionStrategy parameter to tapOn tool (#693) (android, testing)
- Add boomerang field to swipeOn for dry-run gesture testing (#675) (devxp, ai)
- Convert listApps to MCP resource with query support to reduce context usage (#674) (devxp, ai)
- Optimize Docker publish job cache export settings to reduce build time by ~60% (#640) (ci, performance)
- Improve error output in startup benchmark script (#639) (ci, performance)
- Convert daemon management tools to unix socket requests (#608) (ai)
- Merge enableDemoMode and disableDemoMode into unified demoMode tool (#605) (ai)
- Merge localization tools into unified changeLocalization tool (#604) (ai)
- Restrict executePlan and criticalSection tools to daemon mode only (#603) (ai)
- Refactor deviceSnapshot MCP tools (#601) (ai)
- Move test recording from MCP tools to unix socket interface (#600) (ai)
- Refactor MCP video recording tools (#596) (ai)
- Evolve MCP tool call openSystemTray (#595) (ai)
- Move identifyInteractions and getNavigationGraph to debug-only tools (#594) (ai)
- Validate accessibility service version compatibility even when skipAccessibilityDownload is true (#580) (android)
- Consolidate MCP benchmark PR comments into a single unified comment (#576) (ci, devxp)
- Optimize accessibility service setup: rename skipAccessibilitySetup to skipAccessibilityDownload (#570) (performance)
- Feature: Merge window hierarchies into main hierarchy for unified view (#544) (android)
- Write integration tests for AccessibilityService focus tracking (#533) (android, a11y, testing)
- Write unit tests for AccessibilityFocusTracker (#532) (testing)
- Implement dead code detection for TypeScript (#518) (ci, devxp, testing)
- Memory leak detection and profiling for TypeScript MCP server (#512) (performance, testing)
- Additional performance benchmarks: observe latency, device boot, test plan execution (#510) (performance, testing)
- Implement MCP server and daemon startup time benchmark (#509) (devxp, performance, testing)
- Implement MCP tool call throughput benchmark (#508) (performance, testing)
- Add comprehensive tests for device snapshot feature (#506) (testing)
- Implement full app data backup and restore for ADB snapshots (#505) (android, testing)
- Refactor: Convert all ‘java’ directories to ‘kotlin’ in Android project structure (#504) (android, chore)
- CI: Cache Android system images to reduce emulator test setup time from 11+ min to <1 min (#497) (android, ci, devxp, performance)
- IDE plugin: YAML autocomplete for test plan files (#493) (devxp, intellij plugin)
- CI: Split IDE Plugin validation into separate Build and Test jobs (#486) (ci, intellij plugin)
- ‘On Merge’ workflow should require all jobs to pass before publishing to Docker Hub (#475) (ci, release engineering)
- Change explore tool to navigate known graph instead of building it (#445) (devxp)
- Skip long-running CI jobs for documentation-only PRs (#438) (documentation, ci, devxp, performance)
- Skip CI checks for accessibility service SHA256 update PRs (#437) (ci, performance, chore)
- Optimize MCP tools context usage to reduce token consumption (#434) (devxp, performance, ai)
- Update accessibility setup flow to prefer settings-based toggle (#410) (android, devxp)
- executePlan schema: multi-device + criticalSection (#392) (devxp, testing)
- JUnitRunner/Daemon: allocate devices for plan labels (#391) (android, testing)
- executePlan: multi-device labels + implicit parallelism (#390) (android, testing)
- Add criticalSection tool call for serialized multi-device steps (#389) (android, testing)
- IDE plugin: test plan YAML linting (#387) (devxp, intellij plugin)
- Validate executePlan YAML on read/author (#386) (devxp, testing)
- Add YAML validation across repo (#385) (devxp, testing)
- Validation: add XML auto-format/fix script (#370) (ci, devxp)
- Validation: add shell script auto-fix via shfmt (#369) (ci, devxp)
- Validation: add TypeScript test validation script (#368) (ci, devxp, testing)
- Validation: add TypeScript build validation script (#367) (ci, devxp)
- Validation: add ESLint validation + auto-fix scripts (#366) (ci, devxp)
- Xcode companion app: core UI surfaces (nav graph, performance, feature flags, logs) (#360) (ios, devxp)
- Accessibility Bridge distribution: bundle vs on-demand download/caching (#353) (ios, release engineering)
- Feature: enforce MCP context thresholds via benchmark script (#339) (devxp, performance)
- Feature: estimate MCP context usage (tools, resources, operations) (#338) (devxp, performance)
- Recorded test plan migrations + MCP versioning (#331) (devxp)
- IDE plugin: migrate all UX to Jewel + Compose (#328) (android, intellij plugin)
- Add curl-based interactive installer entrypoint in README + docs/install (#327) (documentation, env, devxp)
- Video recording: FFmpeg backend with hardware acceleration (macOS/Linux) (#325) (performance, video)
- Add AutoMobile tests/plans for Playground docs/using demos (#321) (android, testing)
- Playground app: add demo flows for docs/using workflows (#320) (android, devxp)
- IDE plugin: add test recording and YAML plan generation (#318) (android, intellij plugin)
- Add MCP resources for test timings and performance results (#317) (performance)
- Feature: Extract Android ‘Displayed’ time metrics from logcat for startup profiling (#311) (android, performance)
- IDE Plugin: Display recent UI performance results (#282) (android, performance, intellij plugin)
- IDE Plugin: Display historical test timing data for visual analysis (#281) (android, performance, testing, intellij plugin)
- JUnitRunner: Use historical test timing to optimize execution order (#280) (android, testing)
- MCP Daemon: Provide historical test timing to JUnitRunner on startup (#279) (android, testing)
- MCP Daemon: Record test execution timing in SQLite database (#278) (testing)
- Rely on view hierarchy updates for navigation destination instead of SDK navigation events (#277) (android)
- Add GHA workflow to update CHANGELOG from issues since last tag (#274) (release engineering)
- Add manually triggered GHA workflow for version bumping (#273) (release engineering)
- Track historical accuracy of predictive UI state (#221) (android, performance)
- Add predictive UI state to observations based on navigation graph (#220) (android, performance)
- Start test recording via in-app overlay or accessibility service shortcut (#218) (android)
- Auto-update accessibility service APK SHA256 via PR when source changes (#217) (android, ci, release engineering)
- Enable AccessibilityService to filter out views completely hidden by overlays (#214) (android, performance)
- Track Compose recomposition counts in observation results (#202) (android, devxp, performance)
- Auto-detect and upgrade accessibility service APK when SHA mismatch (#199) (android, release engineering, devxp)
- Add Codex MCP client installation docs (#184) (documentation, devxp)
- Revamp Hot Reload Development Workflow (#164) (devxp)
- Session State Management to Reduce Required Tool Parameters (#159) (devxp)
- Dynamic MCP Tool Loading via Workflow-Based Selection (#158) (devxp)
- Test parallel execution across multiple devices (#151) (testing)
- Update core tools to respect sessionUuid for device targeting (#150) (testing)
- Integrate session context into tool execution (#149) (testing)
- Update CLI to accept –session-uuid parameter (#148) (testing)
- Add daemon commands for device/session queries (#147) (testing)
- Make UI stability thresholds configurable (#138) (performance)
- Analyze and prevent JUnitRunner test pollution (#134) (android, devxp, testing)
- CI: Run Playground Automobile tests on emulator (#132) (android, ci, testing)
- Expose latest observation as MCP resource (#131) (devxp)
- CI: Auto-install accessibility APK for JUnitRunner emulator tests (#126) (ci, performance)
- MCP Server Daemon for CLI (#125) (performance, testing)
- Optimize accessibility audit performance with contrast caching (#105) (performance, a11y)
- Add comprehensive unit tests for accessibility audit checks (#101) (devxp, a11y)
- Add ESLint rule to prevent .js extensions in TypeScript imports (#90) (devxp)
- Touch latency testing implementation (#85) (devxp, performance)
- Migrate test runner from Mocha to Bun’s built-in test runner (#81) (ci, devxp)
- Natural Language Test Commands (#56)
- Navigation Graph Test Coverage and Recommendations (#55) (testing)
- –accessibility-audit mode where WCAG violations fail tests (#52)
- Flaky Test Detection & Quarantine (#51)
- Device State Snapshot & Restore (#46) (devxp, performance)
- Test Recording & Playback with Smart Locators (#45)
- Parallel Multi-Device Test Orchestration (#44)
- Visual Regression Testing (compareScreenshot) (#40)
- –mem-perf-audit mode where leaks, excessive GC, memory pressure, etc fail tests (#38)
- App Startup Performance Analyzer (profileAppStartup) (#37)
- –ui-perf-audit mode where jank and poor FPS fail tests (#36)
- Consolidate scroll, swipeOnScreen, and swipeOnElement into swipeOn (#30)
- Create monkeyNavigate tool for efficient graph exploration (#29)
- systemTray find returns cached observation instead of system tray when tray is closed (#776) (android)
- gfxinfo not reaching stability after launchApp for simple UX (#699) (performance)
- Test plan/IDE validator doesn’t validate dragAndDrop params (#687) (devxp, intellij plugin)
- dragAndDrop uses stale cached hierarchy (can drag wrong coords) (#684) (android)
- dragAndDrop uses fixed 5s timeout; long gestures always fail (#683) (android, performance, a11y)
- dragAndDrop dropDelay default mismatch with schema/docs (#682) (documentation)
- MCP Startup Benchmark PR comment has mangled output with escaped newlines (#575) (ci, devxp)
- AccessibilityService: Hierarchy optimization removes clickable elements with text labels (#572) (android)
- JUnit runner + MCP daemon parallel execution completely broken (3 critical bugs) (#541) (android, testing, ai)
- CI: Android Emulator Tests Failing Due to Disk Space Exhaustion (#522) (android, ci)
- 3 JUnit Runner emulator tests are skipped due to missing test plan file (#473) (android, testing)
- GitHub Actions runner: No space left on device during Docker Hub publish (#435) (ci, release engineering, env)
- Build Docker Image CI failing: MCP stdio protocol ENOENT /workspace/src/db/migrations (#382) (ci, env)
- Update Changelog workflow should use AUTO_MOBILE_PR_TOKEN for PRs (#297) (ci, release engineering)
- Bump Versions workflow fails because ripgrep is missing (#296) (ci, release engineering)
- Flaky ClockAppAutoMobileTest fails to reach MCP server in CI (#257) (flaky test, testing)
- listApps returns all system apps for every profile, causing huge MCP response (#215) (android, performance)
- Improve long press implementation and add playground testing areas (#203) (android, testing)
- Flaky accessibility-service WebSocketServerIntegrationTest in CI (#197) (android, flaky test, ci, testing)
- Navigation tests fail with Robolectric OnBackPressedDispatcher incompatibility (#190) (android, ci)
- Playground emulator tests fail: koog-agents dependency classloading issue (#189) (android, ci, testing)
- CI: Android emulator tests failing with shell exit code 1 (#156) (android)
- JUnit Runner Emulator Tests failing with shell syntax error (#140) (android, ci)
- Migrate from better-sqlite3 to bun:sqlite for Bun compatibility (#118) (enhancement)
- JUnit Runner: Test Timeout When Running Multiple Tests Together (#107)
- PluginException: TestPlanInspection shortName mismatch (#768)
- Chore: Test clipboard tool (#767)
- Chore: Test system tray lookFor (#766)
- Chore: Test biometrics stubbing (#763)
- Chore: Test takeScreenshot fallback tool (#762)
- Add unit tests for accessibility APK download/verification paths (#730) (android, testing)
- Harden accessibility APK download (HTTP status + curl fallback + integrity check) (#729) (android, release engineering, env)
- Use unique, OS-portable temp path for accessibility APK download (#728) (android, release engineering, env)
- APK download fails on macOS due to sha256sum dependency (#727) (android, release engineering, env)
- Add tests for occlusion filtering behavior (#719) (android, performance, testing)
- Update tool-definitions.json for tapOn selectionStrategy and selectedElement (#695) (documentation, android, testing)
- Add dragAndDrop test coverage; fakes/interface lack requestDrag (#685) (devxp, testing)
- Research effectiveness of current navigation graph implementation (#676) (documentation, research)
- Enhancement: Hybrid hierarchy combining accessibility service + UIAutomator for apps with poor accessibility (#588)
- Change accessibility service SHA256 update to run daily instead of on every main merge (#577)
- CI: bun pm trust heapdump exits 1 in memory leak detection (#569)
- CI failures after #562: native addon build errors (#568)
- Standardize naming convention: auto-mobile for Maven artifacts, automobile for package names (#540) (android, release engineering, chore)
- Build and deploy AccessibilityService APK with focus tracking (#534) (android, devxp)
- CI: Optimize Android emulator test daemon warmup (currently ~90s overhead) (#527) (android, ci, devxp, performance)
- Memory leak detection and profiling for IntelliJ IDE Plugin (#515) (devxp, performance, testing, intellij plugin)
- Memory leak detection and profiling for JUnitRunner library (#514) (android, performance, testing)
- Memory leak detection and profiling for Android AccessibilityService (#513) (android, performance, a11y, testing)
- Validate and test VM snapshot emulator console commands (#507) (android, testing, research)
- End-to-end testing for clipboard MCP tool (#501) (testing)
- Refactor gradle modules: extract shared test plan validation into android/test-plan-validation (#492)
- Standardize environment variable naming: AUTOMOBILE_ vs AUTO_MOBILE_ prefix (#483) (documentation, env, devxp, chore)
- Optimize slow TypeScript unit tests (35 files exceed 100ms) (#481) (performance, testing)
- Add Gradle test report patterns to root .gitignore (#476) (android, testing, chore)
- Optimize Android emulator test job runtime and reduce flakiness (#446) (android, flaky test, ci, performance)
- Enable auto-merge on accessibility service update PR (#436) (ci, devxp, chore)
- Document settings-based accessibility toggle (#412) (documentation, devxp)
- Test settings-based accessibility toggle on API 29 & 35 (#411) (android, devxp, testing)
- Research: validate Android design-doc experiments with adb (#393) (android, research)
- Clarify bug reproduction doc with snapshot and MCP action links (#345) (documentation)
- Link test recording and YAML plan workflow from user docs (#344) (documentation, android)
- Call out accessibility service enablement in install/usage docs (#343) (documentation, android)
- Add decision guide for MCP vs IDE plugin vs JUnitRunner vs SDK (#342) (documentation, android)
- Add Android first-run path from device setup to a concrete task (#341) (documentation, android)
- Review docs/ directory for accuracy and add implementation citations (#276) (documentation)
- Setup Trusted Publishing for npm packages with GitHub Actions (#275) (release engineering)
- Refactor Tap and Long Press tabs into unified screen with real-time duration tracking (#266)
- Optimize JUnitRunner heartbeat mechanism for faster daemon timeout detection (#232) (android, devxp, performance, testing)
- Docker Hub publish job fails: missing bun installation (#188) (ci, release engineering, env, devxp)
- Phase 3b: JUnitRunner Direct Socket IPC (170ms/test optimization) (#145) (android, performance, testing)
- Optimize JUnitRunner performance based on #133 research (#135) (android, ci, devxp, performance)
- Analyze and optimize JUnitRunner performance bottlenecks (#133) (ci, performance)
- Performance Research, Analysis, and Upgrade of Emulator CI jobs (#123) (android, ci, performance)
- Register Maven central namespace (#120) (android, release engineering)
- Enable JUnit Runner tests in GitHub Actions CI (#110) (android, ci, devxp)
- Improve Android user profile parsing to use structured data instead of regex (#106) (android, devxp)
- Run Android AutoMobile self tests on an Android Emulator in GHA (#94) (ci, devxp)
- Android CI Perf Improvements (#93) (ci, devxp, performance)
- Rename monkeyNav MCP tool call to explore (#80) (devxp)
- Migrate from pnpm to bun for peak performance (#79) (ci, devxp)
- Convert from npm to pnpm (#63)
- Skip Docker CI if Dockerfiles and package.json did not change (#62)
- Document Claude Code installation and usage (#31) (documentation)
- Publish scoped package on NPM (#19) (release engineering)
Fixed
- Bug: Duplicate/embedded observe in launchApp causing bloated MCP responses (#751) (performance)
- Fix swipeOn coordinate calculation and overlay detection bugs (#722)
- Bug: swipeOn with lookFor scrolls in wrong direction repeatedly (#671) (android)
- Fix: Taps via accessibility service were being interpreted as long presses (#666) (android)
- Bug: launchApp not correctly observing app state after launch (#537) (android)
- Bug: tapOn schema validation error - container field expects object but receives string (#535)
- Flaky test: planExecutionLock ‘allows MCP tool calls when no plan is executing’ times out in CI (#482) (flaky test, ci, testing)
- Fix Android emulator CI job failures - 13m wasted on bugs, Gradle times out (#447) (android, ci)
- Regression: JUnitRunner tests only using 1 device instead of device pool (#444) (testing)
- Bug: AutoMobile incorrectly identifies system notification permission dialog as permission controller (#402)
- Bug: Work profile apps fail observation due to hardcoded u0 user profile in regex patterns (#314) (android)
- Fix FakeAccessibilityServiceManager interface import path (#731) (android, testing)
- Flaky test: Session Lifecycle with Device Reuse sometimes returns different device (#548) (flaky test, ci, testing)
- Fix MonkeyNavigate integration test timeouts (#73)
- Flaky test: AccessibilityServiceClient WebSocket connection failure handling (#72) (flaky test)
- Flaky test: AccessibilityServiceClient WebSocket connection failure timeout (#68) (flaky test)
Deprecated
- Enhance devices resource with pool status and deprecate listDevices tool (#606) (ai)
Removed
- Remove deprecated listApps MCP tool (#713)
- Remove daemon_available_devices tool and forward usage to listDevices (#607) (ai)
- Remove listSnapshots tool - create automobile:snapshots resource instead (#602) (ai)
- Remove listPerformanceAuditResults MCP tool (#599) (ai)
- Remove getTestTimings tool (#598) (ai)
- Remove listVideoRecordings tool - already exposed via automobile:video/archive resource (#597) (ai)
- Remove duplicate ‘Publish Docker Image’ workflow - Docker publishing already handled by ‘On Merge’ workflow (#474) (ci, release engineering, chore)
- Remove KotlinPoet and automated test authoring references (#200) (documentation, android)
- Remove installPlatformDependencies now that AutoMobile is dockerized (#177)
- Remove getAllConfigs/setDeviceMode/resetConfig MCP tool calls (#175)
- Delete source mapping and automatic test authoring (#4)
- Delete iOS implementation (#3)
Security
- Deep Link Security Validator (validateDeepLinkSecurity) (#58)
- Security: Insecure temporary file creation in daemon manager (#157)
- CodeQL check failing in CI (#141) (ci)
[0.0.6] - Unreleased
Changed
- Placeholder: started fork; release notes not recorded.
[0.0.5] - 2025-07-22
Added
- Add ADB command auto retry
Changed
- Improve view hierarchy search for elements with auto retry
- Refactor ConfigurationManager
Fixed
[0.0.4] - 2025-07-08
Added
- Automate Accessibility Service install and enablement on first ADB command for a device
- Check APK SHA256 before installing
- Allow element search to restrict to specific containers in the view hierarchy
Changed
- Increase accessibility node inspection for better view hierarchy data
- Filter unnecessary view hierarchy data to reduce observe payloads
- Parallelize and cache observation and idling steps
- Refactor BaseVisualChange
- Reduce tool calls to make it easier for agents to determine tool call selection
[0.0.3] - 2025-07-08
Added
- Automate Accessibility Service install and enablement
- Check APK SHA256 before installing
- Allow element search to restrict to specific containers in the view hierarchy
Changed
- Increase accessibility node inspection for better view hierarchy data
- Filter unnecessary view hierarchy data to reduce observe payloads
- Parallelize and cache observation and idling steps
- Refactor BaseVisualChange
- Reduce tool calls to make it easier for agents to determine tool call selection
[0.0.2] - 2025-07-01
Added
- Accessibility service with availability checks
- Active window caching
- Device session management
Changed
- Improved docs for setup and installation
- More test coverage
[0.0.1] - 2025-06-24
Added