Repository navigation
v2026.10.06
Highlights
Trailblaze App replaces the desktop app
trailblaze app now opens Trailblaze App, the web-based workspace for trails, runs and devices, in a native window, and starts the daemon if needed. The old Compose desktop app is gone. Run trailblaze app from a repo and it switches a running daemon to that repo's trails, targets and default target. trailblaze app --headless (or trailblaze app start) starts only the daemon.
One type tool, and openApp for getting to a screen
typetypes into a field by ref, the same waytapworks. It's the tool the AI uses, and the AI no longer clears a field before typing into it.inputTextcan find its field by selector, including the field's label, and gainsclearFirst. On Android it also types into password fields on web pages inside apps.openAppopens or foregrounds an app and returns once it is on screen, without clearing data or changing permissions.launchAppis deprecated but still works.- Trailhead building blocks:
android_forceStop,ios_terminateandios_grantPrivacylet a trailhead spell out every state change it makes. See the trailheads guide. web_dragdrags a web element and drops it somewhere else.
Reports: a Strings tab and a picture for every step
- Strings lists every screen's visible text, with each string cut out of its screenshot.
- A step with no screenshot gets a frame from the session video, and thumbnails play the step's recording. The Timeline can seek anywhere and open any captured event.
- Each failed run says why it failed and where its time went.
- App crashes show on the main timeline, and a passing run fails if its app crashed.
- Multi-device reports give each device its own screenshot lane, and the Grid gains a Strip layout: a sideways gallery of each run's screenshots.
Better session video
- Android recordings place each frame by when the device drew it, through a bundled scrcpy server.
- Multi-device sessions record one video per device, including the browser.
- Web recordings keep small text readable (
TRAILBLAZE_WEB_VIDEO_QUALITY=highfor sharper) and line up with their steps. WebM recordings now play in Chrome.
Faster and steadier
- CLI: the launcher adds ~40ms to a command, down from ~180ms. A run that times out is cancelled on the daemon, so a retry doesn't run beside it. CLI commands show up in the session's
trace.json. - Tool calls: direct tool calls skip screen captures nobody reads, typing and closing the keyboard is one step on Android, and recorded web trails replay at Playwright speed.
- iOS: fewer device and screen re-probes per call. Several simulators can run in one daemon without reconnecting one tearing down another. Stopping the daemon no longer leaves XCTest runners behind, and a dead runner is rebuilt on reconnect instead of reporting "No device connected".
- Android: the runner recovers after an emulator reboot, or when it loses UiAutomation or its shell stops answering. The keyboard is hidden without pressing Back. A late-reported tap, or a post-action wait that timed out, no longer fails the step.
- Web: checks fail fast on a page that stopped responding, and screenshots no longer stall on pages with many links.
Breaking changes
- Koog is the only agent.
TRAILBLAZE_RUNNERandMULTI_AGENT_V3are removed, along with--agentandtrailblaze config agent. Saved settings and logs that name the old agents still load and run on Koog. - The desktop app is removed.
trailblaze app --v2is gone (trailblaze appdoes what it did), and so isTRAILBLAZE_DESKTOP_GUI. Settings formerly under Advanced Configuration now live in Trailblaze App's Settings → Workspace. - Physical iPhones are no longer supported. Only iOS simulators are; a physical device is refused with a message saying so.
- The report's Map tab is removed. Old
tab=map/mode=maplinks open the Grid. - Removed settings:
annotated-screenshots,TRAILBLAZE_AUTO_TERMINATE_VERIFY_STEPSandTRAILBLAZE_IME_DISMISS_VIA_SHOW_MODE. ask,blazeandverifyfail when the LLM call fails, instead of reporting a result.
Other changes
- Self-heal: a failed assertion is healed as a check, so the heal can't re-drive the flow it was checking.
- Scripted tools: TypeScript tools no longer need a duplicate YAML descriptor. They can call Kotlin host helpers without those becoming tools, accept nullable
T | nullargs, read their device's emulator serial or simulator UDID fromctx.device.instanceId, and return the screen after the action. A session only sees the tools that run on its platform. - Trails:
requiresHostmarks a device leg host-only. - Web locale:
TRAILBLAZE_WEB_LOCALE(or a trail'sconfig.locale) opens browser sessions in a given language. tool --yamlaccepts inline YAML, a file path, or-for standard input.waypoint migrate-trailmigrates selectors between any driver pair, with--from/--toto assert the expected dialects.- Decision engine (experimental, off by default): lets the agent make routine moves without an LLM call, using any
POST /v1/systemoneserver. See LLM configuration. TRAILBLAZE_DISABLE_DESKTOP_LOG_FILEstops the daemon copying its output to a log file.assertVisibleno longer crashes on cells with a disabled child. Home-screen icons and other elements under zero-size wrappers now appear in the element list.- The CLI jar is about 34 MB smaller: WebP screenshots are encoded with libwebp instead of Skia.
- Maestro 2.11.0 and dadb 2.0.0, plus security updates to the MCP SDK, logging, metrics, jsoup and fast-uri dependencies.
Install or upgrade
brew install block/tap/trailblaze # or: brew upgrade trailblazeOr install from this release directly (requires Java 17+):
curl -fsSL https://raw.githubusercontent.com/block/trailblaze/main/install.sh | bashWhat's Changed
- Remove the retired WASM report build from GitHub Actions by @handstandsam in #253
- Install libwebp tools on the Linux trail jobs so the gallery animations regenerate by @handstandsam in #255
- Per-device session videos, sharper web recordings, faster CLI calls by @handstandsam in #254
- Add openApp and trailhead building blocks, device-timed Android video, faster iOS calls by @handstandsam in #256
- Strings tab, a picture for every step, inputText by selector, faster iOS calls by @handstandsam in #257
- Replace the desktop app with Trailblaze App, add a single
typetool, and slim the CLI jar by @handstandsam in #258
Full Changelog: v2026.09.25...v2026.10.06
What's Changed
- Remove the retired WASM report build from GitHub Actions by @handstandsam in #253
- Install libwebp tools on the Linux trail jobs so the gallery animations regenerate by @handstandsam in #255
- Per-device session videos, sharper web recordings, faster CLI calls by @handstandsam in #254
- Add openApp and trailhead building blocks, device-timed Android video, faster iOS calls by @handstandsam in #256
- Strings tab, a picture for every step, inputText by selector, faster iOS calls by @handstandsam in #257
- Replace the desktop app with Trailblaze App, add a single
typetool, and slim the CLI jar by @handstandsam in #258
Full Changelog: v2026.09.25...v2026.10.06