Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
5426404
test: a picture that changes size gets a new meta frame and a keyfram…
V3RON Nov 11, 2026
1657958
feat(capture): a picture that changes size gets a new scale, a meta f…
V3RON Nov 11, 2026
d3847f1
test: a log line names the panel in use (#1534)
V3RON Nov 11, 2026
e1b0eb6
feat(capture): read the panel in use from SpringBoard's log line (#1534)
V3RON Nov 11, 2026
3146f8b
test: the follower picks the panel at start (#1534)
V3RON Nov 11, 2026
3236039
feat(capture): the panel follower picks the lit panel at start (#1534)
V3RON Nov 11, 2026
359b69b
test: the follower follows live moves (#1534)
V3RON Nov 11, 2026
e1d35d7
feat(capture): the panel follower follows live moves and restarts a l…
V3RON Nov 11, 2026
33bd43c
test: a capture's log children end with it (#1534)
V3RON Nov 11, 2026
b1ef2be
feat(capture): a watchdog ends a command when its stdin pipe closes (…
V3RON Nov 11, 2026
a59ce3a
feat(capture): a foldable simulator streams the panel in use, upright…
V3RON Nov 11, 2026
ec70c54
test: a viewer of a leased Duo sees the panel in use, and the capture…
V3RON Nov 11, 2026
ce19a05
docs(capture): the stream's size may change, a foldable shows the pan…
V3RON Nov 11, 2026
222d565
fix(capture): read a panel's screenshot from a file, simctl writes no…
V3RON Nov 11, 2026
8150236
test: the panel parser's arrow and tag cases and the stop-then-end ca…
V3RON Nov 11, 2026
7894359
test: the slow lane waits for the log stream inside the simulator to …
V3RON Nov 11, 2026
744e3ac
test: the follower's restart, boot-read bound and log lines are strad…
V3RON Nov 11, 2026
a4ca4a8
test: the slow lane finds the in-simulator log stream as launchd_sim'…
V3RON Nov 12, 2026
a860e8c
test: the foldable lane file keeps one daemon for both tests and stop…
V3RON Nov 12, 2026
2183bd4
test: the foldable lane file waits for the panel it switched to to be…
V3RON Nov 12, 2026
ba2ff10
test: the switch after a fold is bounded at 5 s, not 3 s (#1534)
V3RON Nov 12, 2026
82b58af
fix(capture): the watchdog ends the log process inside the simulator …
V3RON Nov 12, 2026
3f08d70
fix(capture): the watchdog's follow-up runs from its main script, whi…
V3RON Nov 12, 2026
23d4a68
fix(capture): each log command ends by a token of its own, and the fo…
V3RON Nov 12, 2026
6f8919b
test: the 5 s switch bound counts from the start of the fold command …
V3RON Nov 12, 2026
21ed896
Merge remote-tracking branch 'origin/feature/1531-adr' into HEAD
V3RON Nov 12, 2026
358ef29
Merge remote-tracking branch 'origin/feature/1531-adr' into HEAD
V3RON Nov 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/internal/agent-rules/toolchain.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,10 @@ screen, which means real devices and the slow lane. The lanes cover what this
repo writes -- the stream module, the drivers' capture code against fakes, the
envelope -- and the console lane runs a stand-in program that writes the same
envelope from stills (`e2e/console/screen-capture.ts`), named by the fake
driver's `screenCaptureCommand`. A change to the Swift program is checked by
driver's `screenCaptureCommand`. On a Mac with Xcode, `swift test
--package-path vendor/screen-capture` runs the Swift tests (the envelope's
size changes, the log-line parser, the panel follower and its watchdog). A
change to the Swift program that reads a real screen is checked by
hand on a machine with a simulator, where
`node vendor/screen-capture/scripts/unframe.mjs <capture> out.264` turns the
bytes it wrote into Annex-B and counts each tag, and `ffprobe out.264` says
Expand Down Expand Up @@ -202,6 +205,7 @@ The machine can run a line only if:
| Android | `command -v emulator adb` finds both |
| iOS window | the iOS check; `mdfind "kMDItemCFBundleIdentifier == 'com.apple.dt.Devices'"` prints a path; `stat -f %Su /dev/console` is not `root` (someone is logged in); `pgrep -x DeviceHub` finds nothing (the test starts DeviceHub itself with `-shutdownStartedDevicesOnQuit NO` and quits it at the end). Run `scripts/slow-e2e.sh e2e/slow-ios-window.test.ts` |
| Physical iOS | `uname -s` is `Darwin`; `SIMLOCK_PHYSICAL_IOS` is the UDID of an iPhone on USB (trusted, Developer Mode on, unlocked, Auto-Lock Never); `SIMLOCK_PHYSICAL_IOS_APP` is a `.app` signed for it. `/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" /Library/Developer/PrivateFrameworks/CoreDevice.framework/Resources/Info.plist` prints a version whose major is 642 or later (streaming a phone needs the CoreDevice of Xcode 27 or later; the framework is machine-wide and does not follow `xcode-select`). DeviceHub and Xcode are not running during the lane. The stream cases need the iPhone on iOS 27 or later; an older iPhone runs the refusal case instead. Run `scripts/slow-e2e.sh --physical e2e/slow-ios-physical.test.ts` |
| iOS foldable | the iOS check; `xcrun simctl list runtimes` lists iOS 27.1 or later and `xcrun simctl list devicetypes` lists `iPhone Duo`; `SIMLOCK_E2E_AGENT_DEVICE` names agent-device 0.21.35 or later; `command -v ffmpeg` finds it. Run `scripts/slow-e2e.sh e2e/slow-ios-foldable.test.ts` |
| agent-device through simlock | `node -v` is 22.12.0 or later (agent-device's own minimum); the iOS check and `uname -m` is `arm64` (the fixture app is arm64 only), or the Android check; `SIMLOCK_E2E_AGENT_DEVICE` (in `.slow-lane.env`) is the absolute path of `bin/agent-device.mjs` in an install of the agent-device version `package.json` pins for `@agent-device/proxy` (`npm install -g agent-device@<version>`, or a checkout at tag `v<version>` built with `pnpm install && pnpm build && pnpm build:android`, the last building the Android snapshot helper); room for two devices: `node -p "os.totalmem() / 2**30"` prints at least 7 for iOS or 12 for Android (simlock's 4 GiB OS reserve plus two of its default 1.5 GiB iOS or 4 GiB Android per-device budgets). Run `scripts/slow-e2e.sh e2e/slow-agent-device.test.ts` or `scripts/slow-e2e.sh e2e/slow-agent-device-gateway.test.ts` |
| Physical Android | `command -v adb` finds it; `adb devices -l` lists `$SIMLOCK_PHYSICAL_ANDROID` on a USB transport (a `usb:` field) in state `device`; `SIMLOCK_PHYSICAL_ANDROID_APK` names an APK. Run `scripts/slow-e2e.sh --physical e2e/slow-android-physical.test.ts` |
| agent-device with a physical phone | the agent-device through simlock checks above (the Android or iOS one), and the Physical Android checks with `SIMLOCK_PHYSICAL_ANDROID`, or the Physical iOS checks with `SIMLOCK_PHYSICAL_IOS`; for iOS also `SIMLOCK_E2E_IOS_TEAM_ID` and `SIMLOCK_E2E_IOS_BUNDLE_ID` (in `.slow-lane.env`); set `SIMLOCK_E2E_IOS_PROVISIONING_PROFILE` and `SIMLOCK_E2E_IOS_SIGNING_IDENTITY` only for manual signing, which an Xcode-managed profile fails. Run `scripts/slow-e2e.sh --physical e2e/slow-agent-device-physical.test.ts` |
Expand Down
Loading
Loading