Skip to content

fix(ios): use current devicectl capture-screenshot syntax for physical devices - #1769

Merged
thymikee merged 1 commit into
mainfrom
claude/issue-1760-fix-72df0c
Aug 12, 2026
Merged

fix(ios): use current devicectl capture-screenshot syntax for physical devices#1769
thymikee merged 1 commit into
mainfrom
claude/issue-1760-fix-72df0c

Conversation

@thymikee

Copy link
Copy Markdown
Member

Summary

  • The physical-iOS direct-capture path ran devicectl device screenshot --device <id> <path>, which current Xcode devicectl rejects with Unknown option '--device', forcing every physical-device screenshot into the slower XCTest runner fallback.
  • Xcode's devicectl now requires devicectl device capture screenshot --device <id> --destination <path>. Updated the invocation in physical-device-screenshot.ts accordingly.

Fixes #1760

Test plan

  • Added a regression test asserting the exact devicectl args (device capture screenshot --device <id> --destination <path>) — physical-device-screenshot.test.ts
  • npx vitest run src/platforms/apple/core/__tests__/ — 504/504 passing
  • npx tsc --noEmit — clean
  • npx oxlint on changed files — clean
  • Live verification on a connected, unlocked physical iPhone (thymikee-iphone): agent-device screenshot produced a valid 1206x2622 PNG via the direct devicectl path with no XCTest fallback triggered

…l devices

The direct-capture fallback ran `devicectl device screenshot --device <id> <path>`,
which current Xcode devicectl rejects with "Unknown option '--device'", forcing
every physical-device screenshot into the slower XCTest runner path. Xcode's
devicectl now requires `devicectl device capture screenshot --device <id>
--destination <path>`.

Fixes #1760
@github-actions

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 2.19 MB 2.18 MB -9.5 kB
JS gzip 716.2 kB 713.3 kB -2.9 kB
npm tarball 841.9 kB 839.4 kB -2.6 kB
npm unpacked 2.93 MB 2.92 MB -9.6 kB

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 30.0 ms 30.4 ms +0.4 ms
CLI --help 70.3 ms 71.0 ms +0.6 ms

Top changed chunks:

Chunk Raw diff Gzip diff
dist/src/server.js +24.4 kB +8.7 kB
dist/src/runtime2.js -3.0 kB -1.0 kB
dist/src/dispatch.js +814 B +247 B
dist/src/session.js -877 B -213 B
dist/src/internal/daemon.js -847 B -192 B

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Aug 12, 2026
@thymikee

thymikee commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

Exact-head review at 9ac47ac5: code-clean and ready for human review. The production CoreDevice path now uses the current devicectl device capture screenshot --device … --destination … syntax, the focused regression asserts the exact shipped invocation and prevents XCTest fallback, and live physical-iPhone evidence produced a valid 1206×2622 PNG through the direct path. Completed checks are green; remaining CI is still running. Applied ready-for-human.

@thymikee
thymikee merged commit b990271 into main Aug 12, 2026
31 checks passed
@thymikee
thymikee deleted the claude/issue-1760-fix-72df0c branch August 12, 2026 10:09
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-12 10:09 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS physical screenshot fallback calls devicectl with unsupported --device flag

1 participant