Commit Graph
55 Commits
Author SHA1 Message Date
Brent Vatne c9ab89025b Screens: a filmstrip layout beside the grid, switched at the top right; the sidebar is headed by its find field (#64) 2026-10-23 12:03:24 -07:00
Brent Vatne f2de6c9002 Repack sharing: list the EAS environment without --non-interactive, and check every eas flag against the pinned eas-cli (#61) 2026-10-20 17:13:34 -07:00
Brent Vatne 8e86e6a14e Argent capture waits for a new session's tool server, and a side keeps its light captures when only its dark session fails (#58) 2026-10-20 16:38:49 -07:00
Brent Vatne ebbcbb62c4 A failed hosted repack starts again, and a run's matrix jobs share one repack of each commit (#59) 2026-10-20 16:34:15 -07:00
Brent Vatne f620577e30 A review waits beside head for a baseline of its base commit that is still capturing (#56) 2026-10-20 14:15:25 -07:00
Brent Vatne b72a70f7d8 Capture asks again when simulator:control --list fails, and a session that can't switch to its appearance stops before folding (#54) 2026-10-20 13:46:16 -07:00
devin-ai-integration[bot]andbrent e47399440f Store opened iPhone Duo screenshots upright in explore:binary/session (#51)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-20 12:18:17 -07:00
devin-ai-integration[bot]andbrent 46b46bb184 Add --replay to explore:binary and explore:session (#50)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-20 12:11:32 -07:00
Brent Vatne 942bdaad40 Capture waits for a focused field's keyboard, and the comment names off-screen changes (#52) 2026-10-20 12:09:40 -07:00
Brent Vatne b1edd7ea81 Reviews survive one target's flaky session: resend a tool whose service didn't start, and report the targets that captured (#48) 2026-10-19 19:47:06 -07:00
Brent Vatne 50230b7f93 Viewer previews: wait 20 s for the alias, then link it with a going-live note (#46) 2026-10-19 19:18:48 -07:00
Brent Vatne 33f31da08e CI: retry a failed simulator:control action and a GitHub lookup the Actions API hasn't caught up on (#47) 2026-10-19 19:18:43 -07:00
devin-ai-integration[bot]andbrent 6daf0a4391 Phone header: the pill leaves out the app's name, then the PR link, before anything overlaps (#43)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-19 17:20:22 -07:00
Brent Vatne 1796a9b810 Viewer: screenshots fade in, go blank on a target switch, and Compare reads the next screen ahead (#44) 2026-10-19 16:17:56 -07:00
Brent Vatne 87aec5b820 Screens, search and the counts leave out routes a public report never captured, as the Map does (#42) 2026-10-19 12:51:11 -07:00
Brent Vatne 6539b5c002 Source planning: follow every single-directory tsconfig paths alias (#38) 2026-10-19 09:28:17 -07:00
Brent Vatne 422cf8caf4 Viewer: theme, full screen and shortcuts in a "…" menu; the top right keeps only the Map's camera (#37) 2026-10-19 09:24:13 -07:00
devin-ai-integration[bot]andbrent b281c734f4 Viewer: make the Inspector resizable from its left edge (#34)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 22:39:36 -07:00
Brent Vatne 9150a24cd9 Map: ring the selected screen instead of fading the rest; Return opens the screen the arrows reached (#35) 2026-10-18 22:05:21 -07:00
devin-ai-integration[bot]andbrent 2c5f8f85a3 Compare: outline changed areas on After only, linked to Before on hover (#33)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 21:52:45 -07:00
devin-ai-integration[bot]andBrent Vatne 23227ca55c capture.maxSessions: a review-wide session ceiling, spent on separate light/dark sessions when that pays (#32)
Co-authored-by: Brent Vatne <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 21:42:28 -07:00
devin-ai-integration[bot]andBrent Vatne ed1bf34434 Faster capture: parallel compare with early-abort region search, one Argent bridge thread per capture (#29)
Co-authored-by: Brent Vatne <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 21:29:58 -07:00
Brent Vatne bdf9e597d3 Large moves read as one moved region instead of fragments (#18) 2026-10-18 17:03:07 -07:00
devin-ai-integration[bot]andbrent 9063de5c52 Inspector: stack Before over After for landscape screenshots (#24)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:55:35 -07:00
devin-ai-integration[bot]andbrent 21ed8c06f6 Text that differs between a build's own light and dark captures is runtime state, not a change (#28)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:49:03 -07:00
devin-ai-integration[bot]andbrent 6795f19d04 Viewer: ⌘K is a command palette (#22)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:47:31 -07:00
devin-ai-integration[bot]andbrent 990e2ecc8d Ignore a foldable's rail status-bar pill like a phone's status bar (#23)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:44:10 -07:00
devin-ai-integration[bot]andbrent 95be8b5248 Viewer: calmer Map hover — no screen fading, Open in Inspector as a tooltip (#30)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:40:12 -07:00
devin-ai-integration[bot]andbrent 6fa7cba087 Viewer: switch targets in place, glide [ ] and +/- from the key down, keep screenshots up while they swap (#20)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:38:35 -07:00
devin-ai-integration[bot]andbrent f728eb187b Quiet PR comment: count + report link heading, per-device subtitle, changed screens as a list, previous run kept while a new run works (#19)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:36:23 -07:00
devin-ai-integration[bot]andbrent d069a892dc Clip diff regions that cross a system band; Android status-bar band 7 % (#25)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:33:21 -07:00
devin-ai-integration[bot]andbrent 4499a999d1 Viewer: / finds screens on the Screens page (#21)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:32:31 -07:00
devin-ai-integration[bot]andbrent 929ac82765 A comment or whitespace-only edit to a source file changes no screen (#26)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:31:59 -07:00
devin-ai-integration[bot]andbrent d5d6a5ff72 Inspector says why an excluded or redirect route has no screenshot (#31)
Co-authored-by: brent <[email protected]>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 16:31:26 -07:00
devin-ai-integration[bot] 5c19061b0f Excluded routes leave the public map instead of showing as "Not compared" (#27) 2026-10-18 14:45:06 -07:00
Brent Vatne 1254a99841 Viewer preview fixtures: one report per target (#16) 2026-10-18 10:00:26 -07:00
Brent Vatne c2bae00f31 Fix flaky CI: stray SIGTERMs, port-lock race, fixture colour collisions, mid-review downloads, cold-Vite reloads (#17) 2026-10-18 09:56:13 -07:00
Brent Vatne 65b79684f3 Hosted previews serve the report as static files under the token, with no encryption and no Explore expiry (#14) 2026-10-18 09:45:24 -07:00
Brent Vatne b8b43ee2c8 Hosted previews open from a manifest, load screenshots on demand, and switch targets in place (#11) 2026-10-18 09:45:23 -07:00
Brent Vatne c59ccce32b PR comment map: opt in with report.comment.map; README: Compare at full width; release 0.19.7 (#13) 2026-10-17 21:54:20 -07:00
Brent Vatne c24049c443 README: animated hero and Compare, a map of changed screens in the PR comment (#12) 2026-10-17 21:31:58 -07:00
Brent Vatne 078902710b Capture iPhone Duo on EAS Simulator with eas simulator:control, for both controllers (#9)
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.
2026-10-17 20:44:41 -07:00
Brent Vatne 46ff99aad1 Viewer: held keys repeat and glide, arrows enter the map, held modifiers show their keys, T and ⇧T (#10) 2026-10-17 18:52:55 -07:00
Brent Vatne a75cbf84ea Link the deployment when the example alias still serves an earlier one
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.
2026-10-17 16:26:40 -07:00
Brent Vatne 6c10477c5b Run explore:binary on a local simulator, and bring the README up to date (#8)
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.
2026-10-17 15:53:21 -07:00
Brent Vatne 284ae6a780 Local simulators and emulators, capture targets, faster and sturdier runs (#7)
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.
2026-10-17 14:55:21 -07:00
Brent VatneandClaude Opus 5.5 88a73dd2a9 Drive EAS Simulator with Argent as an alternative to agent-device (#6)
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-16 19:24:56 -07:00
Brent Vatne 6a8dbfb5a3 Pin eas-cli 25.0.0, and start Explore's sessions with a public preview link (#5) 2026-10-16 14:26:45 -07:00
Brent Vatne d26e65db47 Add a README quick start, and run local reviews with no setup
- 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.
2026-10-16 12:36:38 -07:00
Brent Vatne 1a5a95af63 Show Screens as one grid of screen cards, with arrow-key stepping and ⌃1/2/3 (#4) 2026-10-15 23:06:09 -07:00