Capture iPhone Duo on EAS Simulator with eas simulator:control, for both controllers
- eas-cli 25.2.0: app.approveUrlScheme after install, appearance.set for Argent on
iOS EAS sessions, and springboard.restart as the last fold recovery step. The
controller's own tools come first; these only fill what neither controller has.
- iPhone Duo on EAS: both controllers' folds are verified (Argent by its tree,
agent-device by its screenshot) and recovered by restarting SpringBoard and
folding again, once; never by stopping the session's tool-server.
- agent-device opens the app before folding on EAS, as it does locally.
- agent-device pinned to 0.21.29-nightly.20261018.74 for callstack/agent-device#3776,
which stops @expo/ui sliders on a regular-width display from wedging its runner.
- A session EAS fails to start is replaced, up to five times within 30 minutes,
with a growing wait, only when the failure is provably EAS's.
- doctor warns about Argent's single appearance only for Android EAS sessions.
The example report reuses one token and the same fixture reports, so an alias
still pointing at the previous deployment serves the token page and the same
report bytes; only its reports.json (an older Viewer's listing) differed, and
that mismatch failed the job as PREVIEW_VERIFY_FAILED. The alias now counts as
moved only once it serves this deployment's listing and reports, and an alias
that never does is PREVIEW_ALIAS_BEHIND: the verified deployment is linked
with a warning. The deployment's own origin is still checked strictly.
The README's "Run it yourself" now opens with the two ways to use Explore and
which one needs an Expo account.
explore:binary --simulator local explores a build on a simulator or emulator
it creates on this Mac, with no EAS login: the same devices capture uses,
recorded for the startup sweep, driven by agent-device with its own daemon or
by a local Argent tool-server. The report opens in the local Viewer; --upload
hosts it.
The README now covers local repack and local simulators, a single-path quick
start that reviews a change or explores a build, targets, and requirements
split by what each path needs. The explore-binary, explore-setup and
readme-refresh skills follow.
Capture on this machine (local iOS simulators and Android emulators, with agent-device or Argent) as well as on EAS Simulator; name several capture targets per config (a phone, a foldable closed and open, Android) and review them in parallel with shared builds; repack locally with a local simulator; and make captures faster and harder to break: controller fault containment, an Argent fold recovery, upright captures of an opened iPhone Duo, a settle after each root reset, a route retry after an adb drop, emulator port reservation, a startup sweep of what interrupted captures leave running, and agent-device 0.21.28.
- README: a Quick start of two steps (make the app buildable on EAS, then
`npx @expo/explore capture`), with a prompt to paste into Claude Code or Codex.
- `capture` is a one-word name for `capture:review`.
- A local review reviews the working tree by default, untracked files included,
as `eas build` uploads it. `--committed` reviews HEAD alone, and an eas.json
with `cli.requireCommit: true` leaves uncommitted changes out, as eas build does.
- Without `.expo-explore/config.yaml`, a local review uses the config `setup`
would write (or an uncommitted one in the checkout), so it works before setup.
- setup prefers a simulator profile named `explore` when there are several.
A screen whose source changed but whose before and after captures match is
now Unchanged ("No visible change"), not Needs review: Explore reports
visual changes. Needs review is left for comparisons that could not tell.
The PR comment's counts and lists, saved runs, report uploads and the agent
API follow, and reports from before this change read the same way: their
"Source changed; no visible difference was captured" verdict is unchanged.
The agent API's screen counts and status filter use the review verdict the
Viewer and comment show (with sourceStatus kept when it differs), so
status=modified means visibly modified.
Adds explore-compare.yml and capture:review --compare for reviews without a PR; local reviews with capture:review (worktrees, local logins, capture cache, local Viewer with the agent API); report:upload and expo-explore reports (saved runs and a terminal picker); and moves the workflows' inline logic into ci:* commands. Release 0.19.0.