- [changed] Per-flow artifacts are now a leaner flat bundle with a structured manifest, readable step names, device logs, and crash/ANR reports
- [new] A screenshot is captured before every step and paired with the view hierarchy on failure for easier debugging
- [new] First-party Unicode input on Android
- [changed] Longer Android screen recordings via the extended
screenrecordentry point - [changed] Errors from
launchApp,setPermissions, andclearStateare surfaced instead of swallowed - [fix] Element bounds reported in non-standard formats are parsed correctly, preventing selector and tap failures
- [fix]
disableAnsi=falseis honored so ANSI output is no longer suppressed - [fix] Jansi upgrade fixes terminal warnings and errors
- [fix]
maestro.logis captured even when the host disables logging additivity - [fix] Archiving debug logs failing at the end of a run no longer crashes the CLI
- [fix] AI HTML report filename is correct when a flow name contains a slash
- [removed]
maestro chatis discontinued; use Maestro MCP instead
MCP & agents
- [new]
describe_cloud_run— inspect status and results of a Maestro Cloud run by per-flowrun_id(status, failure reason, device spec, timing, and signed artifact URLs; optional whole-run archive viainclude_archive)
Platforms
Android
- [new] First-party Unicode input support
- [changed] Extended
screenrecordentry point for longer recordings - [fix] Stalled WebView DevTools endpoint no longer hangs a command
- [fix] Native (SIGSEGV) crashes are detected, not only JVM ones
iOS
- [fix] Taps after
scrollUntilVisibleno longer land on the wrong position - [changed] Faster hierarchy retrieval via direct snapshot traversal
- [fix] Home screen hierarchy on iPad (iOS 26) falls back to SpringBoard
- [fix] False app-crash errors when launching apps avoided
- [fix] Timeout handling when stopping and starting apps
- [fix] Upside-down orientation
- [changed] Device locale set with region-qualified language tags
- [fix] Leftover driver files on simulators cleaned up after runs
- [fix] Transient
kAXErrorInvalidUIElementerrors during hierarchy retrieval recovered - [fix] Crash reports waited on before collection
- [fix] Simulator recording duration matches the actual movie duration
Web
- [fix] CSS selector matching failure
- [changed]
id:selectors resolve against Flutter’sflt-semantics-identifier - [fix] Broken screen recorder no longer breaks hierarchy retrieval
- [fix] Transient JavaScript errors are retried
- [changed] Fail fast when the driver lacks DevTools; drop empty recording placeholders
Under the hood
Hierarchy and crash-collection paths on iOS are more resilient (direct snapshot traversal, SpringBoard fallback, crash-report wait). Android gains dedicated Unicode IME/receiver support and logcat-based native crash detection. Artifact generation is centralized around a structured manifest and flatter on-disk layout. Temp-file lifecycle guidance for agents/long-lived JVMs prefers TempFileHandler so /tmp does not leak.
Upgrade notes
maestro chatno longer runs MaestroGPT. Existing invocations print a discontinuation message and point at Maestro MCP (https://docs.maestro.dev/get-started/maestro-mcp). Scripted--askusage exits non-zero.- Per-flow artifact layout changed: expect a flat bundle with
manifest.json(and related outputs) rather than the previous shape.--test-output-diris the directory for that run’s artifacts (manifest, commands, logs, screenshots, recordings). - Flows that depended on
launchApp,setPermissions, orclearStatefailing silently may now fail loudly — fix the underlying error or handle it explicitly.