Multi-device trails, trailblaze usages, and a report viewer bundled into the CLI - #244
Merged
Conversation
handstandsam
force-pushed
the
upstream-2026.08.25
branch
from
August 26, 2026 01:08
e298c39 to
cd61723
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Syncs the latest upstream changes through 2026.08.25.
Multi-device sessions. A trail can now declare several named devices and hand the session
between them with
switchDevice, replaying recorded handovers mechanically. Each device runs itsown app target, network capture arms per device (
TRAILBLAZE_NETWORK_CAPTURE_DEVICES) and writesper-device artifacts, and bindings come from
TRAILBLAZE_DEVICE_BINDINGS. A handover naming adevice the session never bound is caught before the first step runs rather than halfway through.
A web browser and a phone can share one session.
trailblaze usages. IDE-style "find usages" for tools: every trail that invokes a tool, withthe device classifiers per usage.
--changed-since <ref>derives the tool set from your diffinstead — hashing each tool's source with its resolved import closure, and separately inferring
tools that dispatch a changed tool, which no import graph can see. Repeatable
--trailscovers arepo whose trails live under more than one root.
Report viewer bundled into the CLI.
trailblaze viewer --output out/index.htmlis now a filecopy out of the binary — no
bun, no Gradle, no checkout — so a hosted viewer can't drift from therenderer that generated the reports it opens. A new
generateRunIndextask produces theevidence-free index for builds too large to embed, so a big CI build always has a report you can
open.
Report and desktop. The timeline collapses steps that already passed and shows the steps a
failure never reached. Reports name their device classifier. Trail Runner opens in 70 ms instead of
6 seconds.
trailblaze applaunches the legacy desktop app;--v2opts in to Trail Runner whileit's still being validated.
Android and iOS. A recorded tap records when it landed on coordinates because its selector
missed. Text input can name the field it types into. Accessibility asserts get the same wait window
as instrumentation. The shared iOS driver closes when its last owner lets go.
Docs. Don't commit
tools/tsconfig.json(and why); host-tool typechecking with// @ts-nocheck; the run index; tool blast-radius guidance in the bundled agent skill.