Skip to content

Changelog

[v0.0.13] - 2026-02-13

Other

  • Add CI checks for host control Docker scripts across macOS/Linux/Windows (#981) (ci, env)
  • Publish to official MCP registry (#26) (release engineering)
  • Publish AutoMobile on Docker Hub (#25) (release engineering)

[v0.0.12] - 2026-02-11

Other

  • No changes.

[v0.0.11] - 2026-02-11

Added

  • IDE plugin: always use active (white) toolbar icon (#1214) (intellij plugin)
  • Remove feature flag for video test recording (#1203) (video)
  • IDE plugin: show ‘Device Disconnected’ when observed device becomes unavailable (#1202) (intellij plugin)
  • IDE Plugin: Add full-window FileEditor mode for dashboard (#1167) (intellij plugin)
  • feat: iOS version matrix testing in CI (#836) (ios, ci, testing)
  • Support custom accessibility rules (#104) (devxp, a11y)

Changed

  • refactor: ViewHierarchy has near-clone findFocusedElement / findAccessibilityFocusedElement (#1191)
  • refactor: UIStateExtractor reimplements ElementParser traversal and property extraction (#1190)
  • refactor: BugReport.traverseNode() reimplements ElementParser inline (#1189)
  • refactor: DebugSearch reimplements ElementParser, TextMatcher, and ElementFinder inline (#1188)
  • chore: upgrade GitHub Actions upload-artifact and download-artifact to v4.6+ (#1158) (ci)
  • Dead Code Detection: Threshold Exceeded (#1143) (automated, dead-code)

Fixed

  • IDE plugin: device disconnected notification is too aggressive (#1244) (intellij plugin)
  • iOS: toggle switch tap does not trigger view hierarchy or screenshot update (#1227)
  • bug: IDE plugin settings page fails to load feature flags with MCP error -32603 (#1213) (intellij plugin)
  • Bug: IDE plugin crashes with IllegalArgumentException when opening test plan YAML file (#1205) (intellij plugin)
  • Bug: failing JUnit Runner test does not produce a failing JUnit test result (#1204) (testing)
  • iOS: Unable to observe system permission dialogs in view hierarchy (#1147) (ios)

Other

  • CI: add Xcode 26 to iOS build and test matrix (#1207) (ios, ci)
  • CI: auto-retry iOS jobs when no simulator runtimes are installed on macOS runner (#1206) (ios, ci)
  • CI: add macOS job for iOS Accessibility Bridge build + XCTest runner tests (#372) (ios, ci)
  • Publish AutoMobile Android SDK on Maven Central (#122) (android, ci, release engineering)
  • Publish AutoMobile JUnitRunner Library (#121) (android, ci, release engineering, testing)

[v0.0.10] - 2026-02-06

Added

  • Support custom accessibility rules (#104) (devxp, a11y)

Other

  • chore: upgrade GitHub Actions upload-artifact and download-artifact to v4.6+ (#1158)
  • Publish AutoMobile Android SDK on Maven Central (#122) (android, ci, release engineering)
  • Publish AutoMobile JUnitRunner Library (#121) (android, ci, release engineering, testing)

[v0.0.9] - 2026-02-04

Added

  • Test Runners: Cascade MCP tool failures to JUnitRunner/XCTestRunner via executePlan response (#1078) (android, ios, testing)
  • IDE Plugin: Add Cancel button to Record Test entry screen (#1075) (intellij plugin)
  • IDE Plugin: Add ‘Refine’ button to simplify exported test plans with AI (#1074) (intellij plugin, ai)
  • IDE Plugin: Merge Exploratory Test into Record Test UX (#1072) (intellij plugin)
  • IDE Plugin: Expose startTestRecording MCP tool (#1071) (intellij plugin)
  • IDE Plugin: Expose exportPlan MCP tool for Finish Recording (#1070) (intellij plugin)
  • [IDE Plugin] Wire up StreamingFailuresDataSource for real-time failure updates (#1066) (intellij plugin)
  • [SDK] Add handled exceptions API for non-fatal error reporting (#1065) (android)
  • [IDE Plugin] Implement RealStorageDataSource for key-value storage inspection (#1064) (intellij plugin)
  • [MCP Server] Add storage inspection tools and Unix socket push channel for key-value data (#1063)
  • [AccessibilityService] Add WebSocket message types for storage data and real-time sync (#1062) (android)
  • [SDK] Add SharedPreferences/DataStore reading API for key-value storage inspection (#1061) (android)
  • Live performance data for currently selected app (#1060) (performance, intellij plugin)
  • Navigation Graph should only accept named nodes (#1059)
  • Navigation Graph Fog Mode (#1058)
  • Research: iOS real-time screen streaming options (#1034) (ios, research)
  • Android: Implement video server JAR (VirtualDisplay + MediaCodec) (#1031) (android)
  • Research: Android real-time screen streaming architecture (MediaProjection/MediaCodec) (#1030) (research)
  • Feature: Android SharedPreferences Inspection and Management (#1021) (android, devxp, testing)
  • Feature: Crash and ANR Monitoring via ADB, simctl, and AccessibilityService (#1020) (android, ios, devxp, testing)
  • Feature: Database Inspection and Management for Android AutoMobile SDK (#1019) (android, devxp, testing)
  • feat(mcp): add setUI tool for declarative form field population (#986) (android, ai)
  • IDE plugin: Compose charting for performance timelines (#306) (android, intellij plugin)
  • IDE Plugin: Display recent performance debug data (#283) (android, performance, intellij plugin)
  • IDE plugin: MCP resource viewer UI (#255) (intellij plugin)
  • IDE plugin: add source mapping support (#247) (intellij plugin)

Changed

  • refactor: move src/features/observe/accessibility/ to src/features/observe/android/ (#1123) (android)
  • refactor: consolidate screenshot utilities (#1121)
  • refactor: decompose SwipeOn - extract overlay detection and scroll-until (#1120) (android)
  • refactor: decompose ViewHierarchy - separate screenshot handling (#1119) (android)
  • refactor: decompose TapOnElement - extract focus navigation (#1118) (android)
  • refactor: replace getInstance() singletons with constructor injection (#1117)
  • refactor: add interfaces for ObserveScreen, Window, AwaitIdle (#1116)
  • refactor: decompose XCTestServiceClient using delegate pattern (#1115) (ios)
  • refactor: migrate raw setTimeout/setInterval to Timer interface (#1114)
  • refactor: replace inline retry logic with DefaultRetryExecutor (#1113)
  • refactor: consolidate ad-hoc caches to use TTLCache (#1112)
  • Decompose Explore.ts (1870 lines) (#1108)
  • Decompose AccessibilityServiceClient.ts (4652 lines) (#1107) (android)
  • Migrate remaining AdbClient instantiations to AdbClientFactory (#1106) (android)
  • Dead Code Detection: Threshold Exceeded (#1027) (automated, dead-code)

Fixed

  • pressButton should properly await fresh view hierarchy before returning observation (#1051)

Other

  • perf: explore queueMicrotask optimization for FakeTimer (#1130) (devxp, performance)
  • Navigation nodes should preserve aspect ratio instead of cropping screenshots (#1052) (android, devxp, intellij plugin)
  • Research: DevXP for work profile app install tracking (#754) (android, devxp, research)

[v0.0.8] - 2026-01-24

Added

  • View hierarchy contains duplicate elements from merged sources (#999) (performance)
  • criticalSection: accept normalized params in nested steps (#960)
  • Abstract other macOS CLI tools through host control daemon (#932) (ios, env)
  • Abstract xcodebuild commands through host control daemon for Docker support (#931) (ios, env)
  • Abstract simctl commands through host control daemon for Docker support (#930) (ios, env)
  • feat(ios): Xcode provisioning profile integration for physical device deployment (#913) (ios)
  • feat(ios): Add iproxy port forwarding lifecycle management for physical devices (#912) (ios)
  • feat(ios): download XCTestService.ipa from GitHub releases instead of building from source (#906) (ios, release engineering, devxp)
  • Automatic wakefulness check and unlock on Android emulator boot (#879) (android, devxp)
  • feat: streamlined development workflow for iOS XCTestService updates (#878) (ios, devxp)
  • iOS: Interactive installer with Xcode/simulator validation (#871) (ios)
  • iOS: Doctor tool for iOS dependency verification (#869) (ios)
  • iOS: MCP resources for simulator sessions and installed apps (#868) (ios)
  • iOS: Parallel multi-simulator test orchestration (#867) (ios)
  • iOS: Session context for multi-simulator tool execution (#866) (ios)
  • iOS: Multi-simulator session allocation in daemon (#865) (ios)
  • iOS: Integrate visual highlights with bug report generation (#864) (ios)
  • iOS: Integrate visual highlights with video recording (#863) (ios, video)
  • iOS: MCP tool for visual highlighting during debugging (#862) (ios)
  • iOS: WebSocket commands for visual highlight control (#861) (ios)
  • iOS: Visual highlight overlay for XCTest service (#860) (ios)
  • iOS: Expose navigation graph as MCP resource (#859) (ios)
  • iOS: Implement identifyInteractions tool (#858) (ios)
  • iOS: Implement explore tool for automatic app discovery (#857) (ios)
  • iOS: Navigation graph building and exploration (#856) (ios)
  • iOS: MCP tools and resources for video recording (#855) (ios, video)
  • iOS: Integrate video recordings with FFmpeg post-processing (#854) (ios, video)
  • iOS: Video recording capture backend using simctl (#853) (ios, video)
  • iOS: Add comprehensive tests for simulator snapshot feature (#852) (ios, testing)
  • iOS: Implement simulator snapshot restore (#851) (ios)
  • iOS: Implement simulator snapshot capture using simctl (#850) (ios)
  • feat: built-in Claude plugin for marketplace distribution with AutoMobile skills (#848) (release engineering, devxp)
  • feat: optimize CLAUDE.md for progressive disclosure and automatic validation updates (#847) (documentation, devxp, ai)
  • feat: simplify MCP tool schema - move selector id/text to top-level parameters (#845) (devxp)
  • feat: seamless release workflow - consolidate bump version and changelog into single Release workflow (#844) (ci, release engineering)
  • feat: automatically match target device light/dark mode to host system settings (#837) (android, ios, devxp)
  • feat: harden regex parsing for device data (#834) (android, ios)
  • feat: streamlined development workflow for Android/iOS embedded service updates (#831) (android, ios, devxp)
  • ci: only run iOS CI checks when iOS or TypeScript code changes (#829) (ios, ci, devxp)
  • ci: only run Android CI checks when Android or TypeScript code changes (#828) (android, ci, devxp)
  • MCP resource URIs are confusing and inconsistent (#804) (devxp)
  • Integrate focus-based navigation into tapOn tool (transparent to MCP consumers) (#471) (android, a11y)
  • Set up release keystore for production builds (#431) (android, ci, release engineering)
  • Validation: implement all_fast_validate_checks.sh aggregator (#371) (ci, devxp)
  • doctor: iOS checks for missing companion app + download link (#363) (ios, devxp)
  • XCTest Runner: timing capture + publish timing history (#356) (ios, testing)
  • XCTest Runner: implement AutoMobileTestCase + plan executor (#355) (ios, testing)
  • Daemon: add iOS simulator discovery + session allocation (#354) (ios, devxp)
  • simctl integration: status bar demo mode configuration (#352) (ios)
  • simctl integration: app install/launch/terminate + capability reporting (#351) (ios)
  • simctl integration: simulator lifecycle management (#350) (ios)
  • AXe automation layer: coordinate translation + gesture injection (#349) (ios)
  • AXe automation layer: MCP tool handlers + WebSocket client (#348) (ios)
  • Accessibility Bridge: emit view hierarchy change events over WebSocket (#347) (ios)
  • Accessibility Bridge: implement element lookup + bounds + focus state (#346) (ios)
  • IDE plugin: real-time performance streaming + cache (#305) (android, performance, intellij plugin)
  • Enhanced contrast detection for gradients and overlays (#102) (a11y)

Changed

  • Upgrade json-schema-validator to 3.0.0 (requires Jackson 3 migration) (#967) (android, dependencies)
  • Remove unused kotlinx-datetime dependency (#966) (android, dependencies)
  • Remove p99 from MCP Tool Throughput Benchmarks (#950) (performance)
  • Improving TypeScript dead code detection (#946) (devxp, dead-code)
  • Dead Code Detection: Threshold Exceeded (#939) (automated, dead-code)
  • Reduce slow wakeAndUnlock unit tests (<100ms) (#919) (testing)
  • chore: remove checkForeground parallel mode - single dumpsys is 12.9x faster (#872) (android, performance)
  • chore: cleanup top-level leftover planning markdown files (#849) (documentation)
  • chore: set up GitHub Sponsors for project donations (#846)
  • chore: update changelog for v0.0.7 release (#843) (documentation, release engineering)
  • chore: set up release key signing for iOS libraries (#842) (ios, release engineering)
  • chore: set up Dependabot for iOS Swift Package Manager dependencies (#841) (ios, dependencies)
  • chore: set up Dependabot for Android Gradle dependencies (#840) (android, dependencies)
  • chore: update Python/uv dependencies in /scripts/github (#839) (dependencies, python:uv)
  • chore: update TypeScript dependencies - research major version upgrades (#838) (dependencies)
  • docs: clean up and organize documentation (#830) (documentation)
  • Chore: Test notification triggering (#765)

Fixed

  • MCP startup benchmark sometimes hangs without reasonable timeout (#1002) (ci, performance)
  • setActiveDevice does not single out iOS simulators for observe (#1001) (ios)
  • rawViewHierarchy tool doesn’t support iOS (#1000) (ios)
  • iOS: Cannot detect or launch system apps (Settings, Fitness, etc.) (#984) (ios)
  • iOS: Home button press and homeScreen tool not working (#983) (ios)
  • MCP tools/list fails due to tapOn schema using union type at root (#973) (ai)
  • Security: Update qs to fix arrayLimit bypass DoS vulnerability (#964) (dependencies)
  • Security: Update @modelcontextprotocol/sdk to fix ReDoS vulnerability (#963) (dependencies)
  • Security: Update hono to fix JWT Middleware algorithm confusion (#962) (dependencies)
  • Security: Update hono to fix JWK Auth Middleware JWT algorithm confusion (#961) (dependencies)
  • Handle corrupted migrations in daemon startup (#947)
  • bug: hot reload development workflow not working (#832) (devxp)
  • Bug: Auto-generated bump versions PR does not trigger CI workflows (#812) (ci, release engineering)
  • Upgrade Bun to 1.3.6 to fix CI segmentation fault crashes (#811) (ci, dependencies)
  • Accessibility service state detection issues after automatic setup (#801) (android, a11y)
  • Prevent automated changelog PR from erroring on fork origin (#793) (ci, release engineering)
  • Fallback to uiautomator when AccessibilityWindowInfo.root returns null for active window (#775) (android, a11y)

Other

  • docs: add reveal/collapse wrappers for demos to reduce page distraction (#987) (documentation)
  • Add CI checks for host control docker scripts across macOS/Linux/Windows (#980)
  • ci: run TypeScript Node build/test on macOS/Windows/Linux matrix (#958) (ci, testing)
  • ci: run interactive installer on macOS/Windows/Linux matrix (#957) (ci, release engineering, testing)
  • Add recorded GIF demo to interactive install script documentation (#953) (documentation)
  • AGP 9.0 bump fails due to org.jetbrains.kotlin.android plugin (#896) (android, ci, automated, dependencies)
  • Dependabot Android PRs fail CI due to missing signing secrets (#895) (android, ci, automated, dependencies)
  • iOS: First-run path documentation from setup to first task (#870) (documentation, ios)
  • chore: research slim Docker image for Android emulator management (#833) (android, env, research)
  • Codex setup missing in install docs (#825) (documentation, ai)
  • Explore automatic retry for flaky emulator tests in CI (#808) (flaky test, ci, research)
  • Benchmark NPM Unpacked Size (#796) (release engineering, research)
  • Reduce NPM Unpacked Size (#795) (release engineering, performance)
  • Accessibility Bridge distribution without App Store (#376) (ios, release engineering)
  • CI: audit workflows to keep Linux for non-iOS checks and macOS only where required (#374) (ios, ci, devxp)
  • XCTest Runner: configuration via env vars + sample test target docs (#357) (documentation, ios, testing)
  • Run AutoMobile self tests on Emulator.wtf (#77) (android, ci, testing)
  • iOS ViewHierarchy WebSocket Accessibility Service/App (#33) (ios)

[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

  • Test authoring fixes

[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

  • Initial release