Skip to content

Multi-device trails, trailblaze usages, and a report viewer bundled into the CLI - #244

Merged
handstandsam merged 1 commit into
mainfrom
upstream-2026.08.25
Aug 26, 2026
Merged

Multi-device trails, trailblaze usages, and a report viewer bundled into the CLI#244
handstandsam merged 1 commit into
mainfrom
upstream-2026.08.25

Conversation

@handstandsam

Copy link
Copy Markdown
Collaborator

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 its
own app target, network capture arms per device (TRAILBLAZE_NETWORK_CAPTURE_DEVICES) and writes
per-device artifacts, and bindings come from TRAILBLAZE_DEVICE_BINDINGS. A handover naming a
device 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, with
the device classifiers per usage. --changed-since <ref> derives the tool set from your diff
instead — 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 --trails covers a
repo whose trails live under more than one root.

Report viewer bundled into the CLI. trailblaze viewer --output out/index.html is now a file
copy out of the binary — no bun, no Gradle, no checkout — so a hosted viewer can't drift from the
renderer that generated the reports it opens. A new generateRunIndex task produces the
evidence-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 app launches the legacy desktop app; --v2 opts in to Trail Runner while
it'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.

@handstandsam
handstandsam merged commit 1d3fb30 into main Aug 26, 2026
9 of 10 checks passed
@handstandsam
handstandsam deleted the upstream-2026.08.25 branch August 26, 2026 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant