Index and query commands: README.md. New entries go at the end.
U-20260525-01 · 2026-05-25 · Self-healing locators, Wayland/Android/iOS, agent loop · #release #locators #platforms #agent
Twenty-seven additions covering smarter locators, deeper IDE / ops
tooling, four new platforms (Wayland, Wayland-libei, Android
widget-tree, iOS), screenshot PII redaction, and a generic
plan-execute-verify agent loop. Each ships with a headless API, an
AC_* executor command, an ac_* MCP tool, and (where it makes
sense) a Qt GUI tab. Full reference page:
docs/source/Eng/doc/new_features/v2_features_doc.rst.
Locator + selector intelligence
- Self-healing locator —
image_template → VLMfallback with a JSON-lines audit log (AC_self_heal_locate / _click). - Anchor-based locator — find element B by spatial relation (
above,below,left_of,right_of,near) to anchor A; anchor and target can use different backends (image / OCR / VLM / a11y). - OCR with structured output — cluster raw OCR matches into rows, tables, and
label:valueform fields (AC_ocr_read_structure). - Smart waits —
wait_until_screen_stable,wait_until_pixel_changes,wait_until_region_idle: frame-diff replacements fortime.sleep. - A/B locator framework — race N strategies for the same target; recommend the historically best one from a persisted ledger.
Operations + observability
- LLM cost telemetry — per-call token + USD log with day / model / provider rollup (
record_llm_call,summarise_llm_costs). - Trace replay UI — scrubbable timeline over the existing time-travel recordings with per-step action list.
- Failure → ticket automation — fan a failure report out to Jira / Linear / GitHub Issues when a scheduled / triggered / REST run fails.
- Container CI templates — GitHub Actions + GitLab CI workflows that build the image, run the headless pytest suite under Xvfb, and smoke-test the REST entrypoint; XFCE+x11vnc Dockerfile variant for flows that need a real WM.
- Cross-host DAG orchestrator — parallel execution with skip-on-failure cascade across local + admin-console-registered hosts (
run_dag,AC_run_dag). - Multi-viewer presence — roster + controller/observer roles for the remote desktop, with a thread-safe Python
PresenceRegistryindependent of aiortc.
Agent + integrations
- Computer-use high-level API —
run_computer_use(goal, ...)wrapsComputerUseAgentBackend+AgentLoop; auto-detects display size; bounded bymax_steps/wall_seconds. - Generic agent loop JSON + MCP —
AC_run_agent/ac_run_agentexpose the closed-loopAgentLoop(plan → act → verify → retry) with pluggable Anthropic / OpenAI backends; the Anthropic-only Computer-Use raw path remains viaAC_computer_use. - WebRunner convenience commands —
web_open/web_quit/web_screenshot/web_current_urlon top of the existingje_web_runnerbridge; same surface exposed asAC_web_*andac_web_*. - Chat-ops bot — transport-agnostic
CommandRouter+ polling Slack adapter. Built-in commands:/help,/scripts,/run,/screenshot,/status. RBAC viarequired_role.
Privacy + safety
- Screenshot PII redaction —
RedactionEnginewith built-in detectors for email / credit card / SSN / phone (regex against caller-supplied OCR tokens) plus accessibility-tree secure-text-field detection. Forced regions for sticky overlays. Env-var-driven default policyJE_AUTOCONTROL_REDACTION=off|moderate|strict. Wired throughAC_redact_screenshot+ac_redact_screenshot.
Platform coverage
- Wayland CLI backend —
wtype/ydotool/grimwithXDG_SESSION_TYPEauto-detect and X11 (XWayland) fallback; override viaJE_AUTOCONTROL_LINUX_DISPLAY_SERVER=x11|wayland|auto. - Wayland libei native — ctypes binding to
libei.so.*for microsecond-latency input; opt-in viaJE_AUTOCONTROL_WAYLAND_INPUT_BACKEND=libei|cli|auto. Defaults to libei when loadable. - macOS Accessibility deep-dive — recursive
dump_accessibility_tree()plus a pollingAccessibilityRecorderfor focus / bounds events. - Android — adb shell primitives —
AC_android_tap/swipe/key/text/screenshotroute throughadbfor any phone over USB / Wi-Fi adb. No daemon required. - Android — uiautomator2 widget tree —
AC_android_find_element/click_element/dump_hierarchyadd selector-based widget lookup (text/resource_id/description/class_name) and live XML hierarchy dump on top of the adb path. - iOS — XCUITest via WebDriverAgent — new
je_auto_control.ios.*namespace:tap,swipe,long_press,type_text,press_key,screenshot,screen_size,find_element/click_element(XCUITest selectors:name,class_name,predicate),dump_source. Seven newAC_ios_*executor commands and matchingac_ios_*MCP tools.facebook-wdais an optional pip dep; loads lazily so non-Mac hosts still import the package.
Developer experience
- autocontrol-lsp completion — the language server now tracks
didOpen/didChange/didClose, publishes diagnostics for invalid JSON and unknownAC_*commands, and provides signature help generated from the live executor table. .pyistub generator —python -m je_auto_control.utils.stubs.generator je_auto_control/actions.pyiemits an IDE-facing stub so everyAC_*command autocompletes with parameter hints.- VS Code extension — bundled extension now ships
AutoControl: Run / Screenshot / Previewcommands that hit the local REST API. - Browser extension recorder — Manifest V3 extension under
browser-extension/: capture clicks, typing, navigation, form submissions in a tab and export them asAC_web_*/WR_*JSON. - pytest plugin + Gherkin BDD —
pytest11entry point auto-loads;@pytest.mark.autocontrolarms screenshot-on-failure;bdd_steps.register_pytest_bdd_steps(pytest_bdd)wiresGiven/When/Thenonto everyAC_*verb. - Visual flow editor — node-based view that round-trips to the same JSON action format the list-based Script Builder uses.