Skip to content

[eas-cli] Fix simulator control help, literal inputs, and app uploads - #4679

Closed
gwdp wants to merge 5 commits into
mainfrom
gwdp/simulator-control-feedback
Closed

gwdp wants to merge 5 commits into
mainfrom
gwdp/simulator-control-feedback

Conversation

@gwdp

@gwdp gwdp commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Superseded by focused PRs

Split into four independent draft PRs targeting main:

Each has its own changeset, tests, and Devin review request. The original branch is preserved; this combined PR is closed in favor of those replacements.

Why

Fix simulator control failures found while testing the new command: help routing and incomplete flags, literal values after --, missing local files being treated as host paths, and uploading Simulator app bundles.

Fixes #4674, fixes #4675, fixes #4676, fixes #4677. Targets main.

How

  • Route action help through oclif's command lifecycle and fall back to normal help for incomplete flags.
  • Treat values after -- as literal positional input, including text beginning with a property name and =.
  • Default upload sources to local files; require host:/absolute/path for files on the simulator host.
  • Package local .app bundles when the host advertises archive support, preserve the supplied name through symlinks, and remove temporary archives after success or failure.

The host archive companion is expo/expo-device-hub#389 and expo/expo-device-hub#393.

Test Plan

Codex ran 492 simulator/help tests, the production CLI build, package typecheck, changed-file lint/format checks, and built-CLI help checks for both command names. The symlink-name regression fails before the correction and passes afterward. CI passed on b0db455 before the split. Fresh CI and Devin review are pending on the replacement PRs.

Earlier local validation installed four app sources on an owned iPhone 17 Pro Simulator (iOS 27.0, Xcode 27.1 beta): .app/, a symlinked .app, local .tar.gz, and explicit host:.../build.tgz. It used real host actions/upload/install with a local bridge and stubbed cloud discovery/transport. This device validation was not repeated for the standalone revision; hosted EAS acceptance remains pending.

Authorship and LLM use

Gabe directed the fixes, requested adversarial review, and requested a standalone PR. Codex wrote the code, tests and description, reviewed the main-based implementation, and ran the checks above. Devin's earlier symlink finding is retained as a regression. Human review of the final diff is pending.

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

/devin review

Codex authored this follow-up code, tests, and description under Gabe's direction. Please review the current head against #4672, especially real oclif help routing, the literal -- boundary, local versus host paths, preflight side effects, archive symlinks, and cleanup on failure/cancellation. 195 focused tests and typecheck/targeted lint passed; local real Simulator installation passed with a bridge, not hosted EAS.

— Codex

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

devin-ai-integration[bot]

This comment was marked as resolved.

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

/devin review

Review current head 849254b against #4672. The symlink-without-extension regression now fails on the original implementation and passes on this head; the archive keeps the supplied .app name. All 195 focused tests, package typecheck, and targeted lint pass.

Codex authored these follow-up changes and tests under Gabe's direction. Human review remains pending.

— Codex

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Investigated the Node 22 failure on 849254b: build-tools' existing stops retrying after ten consecutive failures test observed six retries after its fixed 150 ms wait instead of ten. Its source and test are unchanged from main. Codex ran the recorder suite locally on Node 22.23.3 with coverage: all 16 tests passed. Retried the failed CI job once; no source change. Node 24 already passed. This supports a timing-sensitive test failure; the full Node 22 rerun remains pending.

— Codex

@codecov

codecov Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.45283% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.17%. Comparing base (f949f34) to head (b0db455).

Files with missing lines Patch % Lines
packages/eas-cli/src/commands/simulator/control.ts 91.12% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4679      +/-   ##
==========================================
+ Coverage   75.15%   75.17%   +0.02%     
==========================================
  Files        1051     1051              
  Lines       51856    51898      +42     
  Branches    11318    11330      +12     
==========================================
+ Hits        38969    39008      +39     
- Misses      11896    11899       +3     
  Partials      991      991              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

/devin review

Please review current head a0b3c80 against #4672. Codex merged the refreshed parent, including startup output ordering and the failed-JSON-import credential fix from 93f0f2d. All 686 simulator tests, the production CLI build, typecheck, formatting and changed-file lint pass on this merged head. Review interactions with the local upload/literal/help fixes. No new hosted validation; human review pending.

— Codex

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

/devin review

Please review current head f029d6f against #4672. Codex merged the parent's a9b06e1 fix for Ctrl+C during the final JSON-mode dotenv write. All 688 simulator tests, CLI build, typecheck, formatting and changed-file lint pass on this merged head. Please check interaction with this layer's local upload, literal-input and help behavior. No new hosted validation; human review pending.

— Codex

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@gwdp
gwdp force-pushed the gwdp/simulator-control-feedback branch from f029d6f to eda1e20 Compare October 18, 2026 02:09
@gwdp
gwdp changed the base branch from gwdp/simulator-start-import to main October 18, 2026 02:09
@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

/devin review

Please review current head eda1e20 against main. Gabe requested a standalone PR. Codex published the implementation against current main and preserved the symlink-target/name correction from earlier review. The diff contains seven files for help routing, literal values, local/host paths and app-bundle uploads. All 492 simulator/help tests, production CLI build, typecheck, changed-file formatting/lint and built-CLI help checks pass. The symlink-name regression failed before the correction and passes here. Earlier local device evidence is documented separately; no new hosted validation. Please review this standalone implementation, including archive cleanup and literal parsing. Human review pending.

— Codex

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

The standalone revision's two green statuses did not include the normal Node 22/24 test jobs. Codex pushed an empty commit to trigger the PR workflows after changing the base to main. Its code tree is identical to eda1e20; the 492-test local validation still applies. Full CI results remain pending.

— Codex

@github-actions

Copy link
Copy Markdown

✅ Thank you for adding a changeset!

@gwdp

gwdp commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Split this combined change into four independent draft PRs against main:

Codex prepared the split, added packaging-failure cleanup coverage, and validated each branch with focused tests, build, typecheck, and lint/format checks. All four merge cleanly together; the combined result passes 493 tests and typecheck. Fresh Devin reviews were requested on each. Closing this PR as superseded; its branch and local backup are preserved.

— Codex

@gwdp gwdp closed this Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant