stim 1.36.0 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +3 -1
  2. package/dist/{acquire-artifact-DGTHCd0Q.mjs → acquire-artifact-zBUbPuDP.mjs} +2 -2
  3. package/dist/{act-CvN9xyV6.mjs → act-BGAFjY8f.mjs} +21 -21
  4. package/dist/{activity-BpdDvA8Q.mjs → activity-CdpXXSq2.mjs} +6 -6
  5. package/dist/{agent-device-usage-output-pbhaW7_k.mjs → agent-device-usage-output-D0582GHy.mjs} +5 -5
  6. package/dist/{android-e9WP10cE.mjs → android-BBwLpxRh.mjs} +43 -40
  7. package/dist/{android-5wkcMFDG.mjs → android-BPBARZMR.mjs} +2 -2
  8. package/dist/{android-SJx1V3R3.mjs → android-CGctfYpv.mjs} +7 -7
  9. package/dist/{android-B0qTdwnt.mjs → android-CaSsewbu.mjs} +5 -5
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/{android-cas-BS9_55U5.mjs → android-cas-p8gna03x.mjs} +4 -4
  12. package/dist/{android-image-BZ57YL6R.mjs → android-image-DY8KxK2m.mjs} +3 -3
  13. package/dist/api.d.mts +10 -3
  14. package/dist/api.mjs +34 -31
  15. package/dist/{apk-signed-tail-eZyXIrnc.mjs → apk-signed-tail-BMv-KLcB.mjs} +2 -2
  16. package/dist/{artifact-ubNdxo_K.mjs → artifact-BrNZTZtA.mjs} +12 -12
  17. package/dist/{artifact-C3srrGVU.mjs → artifact-BsimBWxG.mjs} +13 -13
  18. package/dist/{artifact-platform-DqCWUieN.mjs → artifact-platform-BaGL1i1X.mjs} +1 -1
  19. package/dist/{auto-placement-CKFpFCuq.mjs → auto-placement-CFKNrWLU.mjs} +7 -7
  20. package/dist/{browser-web-B63vLrj6.mjs → browser-web-YFsgCP_a.mjs} +15 -15
  21. package/dist/{build-B_Dx9SKJ.mjs → build-DIhuoozz.mjs} +29 -28
  22. package/dist/{build-cache-BW8T4oD2.mjs → build-cache-Dt-dhCJF.mjs} +6 -6
  23. package/dist/{build-plan-CeIooJqn.mjs → build-plan-CgnLDof9.mjs} +7 -7
  24. package/dist/{cache-manifest-CxWkZmUr.mjs → cache-manifest-BO0TIcPV.mjs} +1 -1
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{cdp-C216kOAn.mjs → cdp-CgT47_9A.mjs} +1 -1
  27. package/dist/{chrome-C8sC5tdl.mjs → chrome-DL5znvmo.mjs} +1 -1
  28. package/dist/{cli-COdXswmc.mjs → cli-BGUrlSH3.mjs} +21 -21
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-KSWIeQLA.mjs → client-DU6dnGX1.mjs} +7 -7
  31. package/dist/collector-run.mjs +7 -7
  32. package/dist/{command-output-T3cDctRE.mjs → command-output-ByEmIwur.mjs} +1 -1
  33. package/dist/{config-BA3TgoIP.mjs → config-CNmN-ndb.mjs} +2 -2
  34. package/dist/{dependencies-LH-7k1Vr.mjs → dependencies-BozoTBqa.mjs} +102 -64
  35. package/dist/{dependency-state-Blfp3AkG.mjs → dependency-state-BQeC4FVn.mjs} +2 -2
  36. package/dist/{detached-entry-tfrgGVWb.mjs → detached-entry-VqFeEE9W.mjs} +1 -1
  37. package/dist/{dev-client-MO_DjTZr.mjs → dev-client-3SQzMRXZ.mjs} +2 -2
  38. package/dist/{device-BZWt_aPJ.mjs → device-BIg1iExg.mjs} +11 -11
  39. package/dist/{device-DNTWFFB1.mjs → device-DGMvzoZZ.mjs} +13 -13
  40. package/dist/{device-android-BB9Lugr8.mjs → device-android-CBat355q.mjs} +9 -9
  41. package/dist/{device-capacity-CpAVcKgq.mjs → device-capacity-DWUOvY13.mjs} +19 -19
  42. package/dist/device-host-worker.mjs +16 -16
  43. package/dist/{device-pool-BJToGG-q.mjs → device-pool-B8IqZKqm.mjs} +3 -3
  44. package/dist/{device-provision-CxQDCtrc.mjs → device-provision-DWAoSKEw.mjs} +10 -10
  45. package/dist/{doctor-CYZ45LnX.mjs → doctor-Bknt0121.mjs} +24 -24
  46. package/dist/{doctor-DV639Iw_.mjs → doctor-CPzwqcXY.mjs} +15 -15
  47. package/dist/{doctor-C-46SkBe.mjs → doctor-CxgR5vPi.mjs} +1 -1
  48. package/dist/{doctor-fingerprint-DqWvIhMb.mjs → doctor-fingerprint-Bo4z8YNP.mjs} +1 -1
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-watchman-TZxYt_98.mjs → doctor-watchman-CPE4C8KV.mjs} +5 -5
  51. package/dist/{eas-build-Xf5Jd6LR.mjs → eas-build-CwOXKJwa.mjs} +4 -4
  52. package/dist/{eas-fallback-DNYPNinw.mjs → eas-fallback-Cnb12a50.mjs} +6 -6
  53. package/dist/{eas-session-ledger-CXZ4aix0.mjs → eas-session-ledger-TE1miVz5.mjs} +6 -6
  54. package/dist/{error-diagnostics-CvB5bpPU.mjs → error-diagnostics-CXTT3bYC.mjs} +10 -10
  55. package/dist/{exec-CGuDzt40.mjs → exec-L37dbiIb.mjs} +7 -1
  56. package/dist/{gc-DiUhrVFo.mjs → gc-0jdcnDHs.mjs} +19 -19
  57. package/dist/{gc-8Qm_K1iy.mjs → gc-1ZLq1djg.mjs} +2 -2
  58. package/dist/{guide-CuvHRP53.mjs → guide-COxIANZu.mjs} +76 -40
  59. package/dist/{hosted-android-D__HGVIO.mjs → hosted-android-D8JbIzgC.mjs} +4 -4
  60. package/dist/{hosted-client-DMOOu8vD.mjs → hosted-client-BLwuXEZS.mjs} +4 -4
  61. package/dist/{hosted-logs-CClIktQM.mjs → hosted-logs-BWEQNJx_.mjs} +7 -7
  62. package/dist/{hosted-logs-sync-B7XCeqVm.mjs → hosted-logs-sync-uWSrH2mf.mjs} +5 -5
  63. package/dist/{hosted-macos-D4sDJIbB.mjs → hosted-macos-BnCYAv1y.mjs} +6 -6
  64. package/dist/{hosted-native-BiiUG_Q6.mjs → hosted-native-OBT2sJxn.mjs} +8 -8
  65. package/dist/{ios-Qam0bT9n.mjs → ios-2Qr4_Zu2.mjs} +1 -1
  66. package/dist/{ios-BZuhvLGr.mjs → ios-Bjz7aPLy.mjs} +8 -8
  67. package/dist/{ios-BhfpRfNf.mjs → ios-BveW7qK1.mjs} +16 -6
  68. package/dist/{ios-BhpUWyN7.mjs → ios-CGyx4PA7.mjs} +32 -31
  69. package/dist/{ios-device-vhYL1N--.mjs → ios-device-ByrDWSpC.mjs} +3 -3
  70. package/dist/{ios-device-DLdEDWJj.mjs → ios-device-ygijU78G.mjs} +1 -1
  71. package/dist/{ios-project-Cz0S1Sz-.mjs → ios-project-XHg87vyQ.mjs} +7 -7
  72. package/dist/{ios-signing-BcH88ecn.mjs → ios-signing-CRYQ1W42.mjs} +3 -3
  73. package/dist/{ios-state-Avwz2cbZ.mjs → ios-state-enWc5P6U.mjs} +1 -1
  74. package/dist/{js-swap-Desu2iII.mjs → js-swap-C6vl3vEd.mjs} +60 -13
  75. package/dist/{launch-6ckG9UrC.mjs → launch-f3RnbFW5.mjs} +48 -28
  76. package/dist/{lightened-B6TnpHMX.mjs → lightened-Cdfmo8MO.mjs} +5 -5
  77. package/dist/{logs-CO0CJRiC.mjs → logs-DAjxBF3c.mjs} +6 -6
  78. package/dist/{logs-B-DMy1K0.mjs → logs-x3em2-oI.mjs} +7 -7
  79. package/dist/{macos-B1aCXhem.mjs → macos-D_LAseN9.mjs} +22 -22
  80. package/dist/{macos-CduEmWAK.mjs → macos-ZfpWlzBO.mjs} +1 -1
  81. package/dist/macos-run.mjs +1 -1
  82. package/dist/maintenance-run.mjs +6 -6
  83. package/dist/{metro-DM3yJL1M.mjs → metro-TIQ1Wft-.mjs} +4 -4
  84. package/dist/{metro-request-O8Q-JvBg.mjs → metro-request-DcUxyaq8.mjs} +2 -2
  85. package/dist/{named-ports-BvB_CO9B.mjs → named-ports-BfEMi9bK.mjs} +3 -3
  86. package/dist/{native-android-28NOG2-y.mjs → native-android-COOrNDk2.mjs} +18 -18
  87. package/dist/{native-gradle-artifact-inputs-DxVEtS6_.mjs → native-gradle-artifact-inputs-B4Mwydmf.mjs} +5 -5
  88. package/dist/{native-runtime-C3_NkUlW.mjs → native-runtime-UxUBU8up.mjs} +6 -6
  89. package/dist/{native-source-ChAGj7R1.mjs → native-source-D2ZfiQ6U.mjs} +1 -1
  90. package/dist/{native-xcode-inputs-BWFTw5cJ.mjs → native-xcode-inputs-DUv7Q3ok.mjs} +3 -3
  91. package/dist/{native-xcode-ios-B4Qoc7-U.mjs → native-xcode-ios-DXcteLVi.mjs} +18 -19
  92. package/dist/offload-worker.mjs +22 -22
  93. package/dist/{operation-exec-DKlBcKAL.mjs → operation-exec-DNynwpqO.mjs} +1 -1
  94. package/dist/{ownership-C3y8wLSl.mjs → ownership-CQTg6v1d.mjs} +3 -3
  95. package/dist/{page-Dj8IqvGM.mjs → page-CoN9al_x.mjs} +2 -2
  96. package/dist/{phone-reverses-BhSxbqom.mjs → phone-reverses-CHtco460.mjs} +4 -4
  97. package/dist/{placement-log-B8RCSzOm.mjs → placement-log-oQnELAvQ.mjs} +1 -1
  98. package/dist/{plan-placement-BI4r55aP.mjs → plan-placement-45EOlIG1.mjs} +6 -6
  99. package/dist/{ports-DhOSyWm9.mjs → ports-DKO7EUNt.mjs} +3 -3
  100. package/dist/{prebuild-Di2IhUue.mjs → prebuild-BKkj3OyL.mjs} +12 -12
  101. package/dist/{project-Clk1JAWL.mjs → project-BCtQz48d.mjs} +16 -16
  102. package/dist/{pull-request-BpMTNkMB.mjs → pull-request-m8cMZ3aE.mjs} +2 -2
  103. package/dist/pull-requests.mjs +1 -1
  104. package/dist/{react-native-android-bdHBMrnf.mjs → react-native-android-MI4ktuhL.mjs} +27 -31
  105. package/dist/{react-native-build-CJega_NM.mjs → react-native-build-dixAL2G8.mjs} +9 -9
  106. package/dist/{react-native-doctor-CY7BGITE.mjs → react-native-doctor-CvkWincj.mjs} +6 -6
  107. package/dist/{react-native-ios-Bo5EDVel.mjs → react-native-ios-DF5otoBR.mjs} +17 -18
  108. package/dist/{recorded-build-BuGL_fnm.mjs → recorded-build-CGHGCO8m.mjs} +20 -2
  109. package/dist/{recordings-6i2-x8LU.mjs → recordings-BcOzqFD1.mjs} +1 -1
  110. package/dist/{registration-DKjJGQ6p.mjs → registration-C-3PDR3X.mjs} +1 -1
  111. package/dist/{reload-A_axEbeS.mjs → reload-DGWfNFwQ.mjs} +16 -16
  112. package/dist/{reload-BvDuvygc.mjs → reload-DWxmO9dY.mjs} +1 -1
  113. package/dist/{remote-WK_swZEw.mjs → remote-CV2jBcLv.mjs} +9 -9
  114. package/dist/{remote-PD6CM0xp.mjs → remote-DWYGW2f5.mjs} +4 -4
  115. package/dist/{result-BkDpN5Mz.mjs → result-CWyxwPvZ.mjs} +17 -17
  116. package/dist/{run-CTFi4Nq2.mjs → run-FZtMQgrx.mjs} +2 -2
  117. package/dist/{server-bare-W0aPsRZE.mjs → server-bare-Ksh1NKeI.mjs} +2 -2
  118. package/dist/{server-command-S00-ddjK.mjs → server-command-BO2DIsJV.mjs} +5 -5
  119. package/dist/server-expo-9hQwyLze.mjs +2 -0
  120. package/dist/{server-expo-cc-cmfsl.mjs → server-expo-ZS9_WaNG.mjs} +3 -3
  121. package/dist/{settings-Bap-qjnp.mjs → settings-Ag4pbs0z.mjs} +5 -4
  122. package/dist/{settings-C_Xu4RNZ.mjs → settings-TYrzDh8T.mjs} +2 -2
  123. package/dist/{settings-payload-D5jjhmrw.mjs → settings-payload-CUM0DYwz.mjs} +5 -5
  124. package/dist/{settings-write-C5huI-iS.mjs → settings-write-D_9_IEx7.mjs} +6 -6
  125. package/dist/{simslim-DlBvwgeF.mjs → simslim-BMgpTRWe.mjs} +2 -2
  126. package/dist/{slot-launch-qEQVTth7.mjs → slot-launch-DW_29Bmu.mjs} +6 -6
  127. package/dist/{stage-CxVI_MlP.mjs → stage-_8k8p7uq.mjs} +2 -2
  128. package/dist/{start-CVzivp35.mjs → start-CdgtOksb.mjs} +1 -1
  129. package/dist/{start-YpT_JpQQ.mjs → start-CzBB5R7N.mjs} +12 -12
  130. package/dist/{state-B9VFI6r0.mjs → state-CfP-ccP8.mjs} +4 -4
  131. package/dist/{state-B4B5P4LU.mjs → state-DsrFh3yv.mjs} +2 -2
  132. package/dist/{stats-COoePEri.mjs → stats-BgTyuzib.mjs} +5 -5
  133. package/dist/{stats-report-BVRCqwWA.mjs → stats-report-Ci6TAfFm.mjs} +1 -1
  134. package/dist/{status-CIg0k7Qb.mjs → status-Bcdy5eHt.mjs} +24 -24
  135. package/dist/{status-CQWmNl1f.mjs → status-C2PdxK6q.mjs} +1 -1
  136. package/dist/{status-CIvU5-TF.mjs → status-C7Zzb-Eh.mjs} +1 -1
  137. package/dist/{status-watch--rfZynD_.mjs → status-watch-DY0EZcmg.mjs} +5 -5
  138. package/dist/status-worker.mjs +1 -1
  139. package/dist/{stim-desktop-D0P_bzmd.mjs → stim-desktop-DWGAfaud.mjs} +2 -2
  140. package/dist/{stop-BEBBruvD.mjs → stop-CbxsTKyZ.mjs} +5 -5
  141. package/dist/{stop-C3d5qG7C.mjs → stop-CkmBkNyg.mjs} +16 -16
  142. package/dist/{stop-BiI4_VFG.mjs → stop-iGkvEvDn.mjs} +2 -2
  143. package/dist/supervisor-run.mjs +15 -15
  144. package/dist/{support-BJbXovoO.mjs → support-CfYmOdQs.mjs} +13 -14
  145. package/dist/{support-Vckdzrmk.mjs → support-JZ4KRW0C.mjs} +7 -7
  146. package/dist/{swiftpm-artifact-inputs-DbuF-Yrr.mjs → swiftpm-artifact-inputs-C1rZDRDs.mjs} +4 -4
  147. package/dist/{swiftpm-macos-Bu8xeBfM.mjs → swiftpm-macos-DRTjC7Ff.mjs} +11 -11
  148. package/dist/{toolchain-DCnWAxQL.mjs → toolchain-BeD7tbBW.mjs} +6 -6
  149. package/dist/{toolchain-CIRdNl-c.mjs → toolchain-CNlKc9pH.mjs} +1 -1
  150. package/dist/trigger-Bp3lruF2.mjs +2 -0
  151. package/dist/{trigger-BtB4kbe0.mjs → trigger-G_gbfIVB.mjs} +2 -2
  152. package/dist/{warm-progress-DwsGBpph.mjs → warm-progress-CJQ8tk5O.mjs} +6 -6
  153. package/dist/{web-D2En0Wa5.mjs → web-BXbmysa1.mjs} +9 -9
  154. package/dist/web-BcaySU05.mjs +2 -0
  155. package/dist/web-run.mjs +8 -8
  156. package/dist/windows-report.mjs +1 -1
  157. package/dist/{workspace-state-BhwAJBgA.mjs → workspace-state-DOPXG2Gp.mjs} +3 -3
  158. package/dist/{workspaces-Dh5N70qW.mjs → workspaces-DCzDzydB.mjs} +15 -14
  159. package/dist/{worktree-DLm4s2Ib.mjs → worktree-6ngObKkw.mjs} +1 -1
  160. package/dist/{worktree-Yw3EW77B.mjs → worktree-BAC43Kio.mjs} +27 -27
  161. package/package.json +7 -7
  162. package/dist/server-expo-BWJDa7Qb.mjs +0 -2
  163. package/dist/trigger-D8B7QR0q.mjs +0 -2
  164. package/dist/web-Dpj70t4p.mjs +0 -2
@@ -1,8 +1,8 @@
1
- import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-Bap-qjnp.mjs";
2
- import { i as findProjectRoot$1 } from "./project-Clk1JAWL.mjs";
3
- import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-CXZ4aix0.mjs";
4
- import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-TZxYt_98.mjs";
5
- import "./status-watch--rfZynD_.mjs";
1
+ import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-Ag4pbs0z.mjs";
2
+ import { i as findProjectRoot$1 } from "./project-BCtQz48d.mjs";
3
+ import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-TE1miVz5.mjs";
4
+ import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-CPE4C8KV.mjs";
5
+ import "./status-watch-DY0EZcmg.mjs";
6
6
  import { SETTINGS, SETTINGS_SCHEMA_URL, TUTORIAL_VERSION } from "@stim-cli/core/state";
7
7
  import chalk from "chalk";
8
8
  //#region src/guide/agent.ts
@@ -616,8 +616,15 @@ All methods accept signal. run builds, installs and launches. iOS and Android ru
616
616
  also accept recordedBuild: true, which installs and launches the app the last
617
617
  build with the same scheme and configuration (or variant) recorded in this
618
618
  workspace, without fingerprinting, building or replacing its JS, and refuses with
619
- STIM_NO_RECORDED_BUILD when there is none. @stim-cli/ci uses it; the CLI and the
620
- private Desktop transport do not.
619
+ STIM_NO_RECORDED_BUILD when there is none. They also accept cleanAppState: true,
620
+ which before install uninstalls every other user app except XCUITest runners
621
+ (*.xctrunner) and clears the app's data
622
+ (iOS: defaults, data container and the simulator keychain; Android: pm clear),
623
+ whether or not the install is skipped, on a local simulator or emulator only: a
624
+ run placed on another machine or on EAS is not cleaned. Both refuse device, and
625
+ cleanAppState refuses a local simulator or emulator Stim does not own, with
626
+ STIM_BAD_ARG.
627
+ @stim-cli/ci sets both; the CLI and the private Desktop transport set neither.
621
628
  Web requires a running server, just like stim web.
622
629
 
623
630
  build produces an artifact without acquiring a device, starting a runtime, or
@@ -635,13 +642,18 @@ Build options:
635
642
  ios: scheme, configuration, arch (arm64, x86_64, all), buildCache, remoteBuild, easProfile
636
643
  android: variant, abi (arm64-v8a, armeabi-v7a, x86, x86_64, all), buildCache, remoteBuild, easProfile
637
644
  macos: remoteBuild
638
- An iOS build targets the simulator. A Debug build defaults to the host
639
- architecture (Android only while optimizations.android.targetAbiOnly is on, the
640
- default); Release defaults to all. macOS builds the configured Debug SwiftPM app.
645
+ An iOS build targets the simulator and defaults to the host architecture in
646
+ every configuration; arch all builds every architecture the project lists. An
647
+ Android Debug build defaults to the host ABI while
648
+ optimizations.android.targetAbiOnly is on, the default; Release defaults to all.
649
+ macOS builds the configured Debug SwiftPM app.
641
650
  Build results retain an owned appPath (iOS), apkPath (Android) or bundle (macOS)
642
- inside this workspace until worktree removal. Later builds keep earlier copies. An iOS or
643
- Android build also records its app in workspace state for recordedBuild runs; the
644
- last build per scheme and configuration or variant wins. easProfile downloads a
651
+ inside this workspace. An iOS or Android build also records its app in workspace
652
+ state for recordedBuild runs; the last build per scheme and configuration or
653
+ variant wins. A successful build removes the workspace's other copies for its
654
+ platform that no recorded build points to, so a copy lasts until a build replaces
655
+ its record (for macOS, until the next macOS build) or the worktree is removed.
656
+ Copy or export a result you need to keep before the next build. easProfile downloads a
645
657
  completed EAS development build instead of compiling; it never starts an EAS build.
646
658
  A build leaves a running app's last build record and build log untouched; it
647
659
  writes its own build-artifact-<platform>.ndjson. No distribution archive or web build
@@ -958,12 +970,14 @@ leased until <time>" for each one.`,
958
970
  the ios.scheme setting; absent for automatic selection;
959
971
  not the app URL scheme
960
972
  cacheKey the shared-build-cache key derived from it (the
961
- configuration is part of it: -release-sim vs
973
+ configuration is part of it: -release-sim-arm64 vs
962
974
  -debug-sim-arm64). A single-architecture simulator build
963
- ends in its architecture (-arm64 or -x86-64): a local Debug
964
- build compiles this machine's, a --remote build the remote
965
- host's. A local non-Debug simulator build compiles every
966
- architecture the project lists and has no suffix
975
+ ends in its architecture (-arm64 or -x86-64): a local build
976
+ compiles this machine's in every configuration, a --remote
977
+ build the remote host's (a React Native Release build
978
+ offloaded to a worker may also contain other
979
+ architectures). A build of every architecture the project
980
+ lists (stim build --arch all) has no suffix
967
981
  With --eas-profile, fingerprint is computed by EAS CLI using the selected
968
982
  profile/environment, and cacheKey identifies the EAS project and build ID
969
983
  separately from local native builds. cacheHit is "remote" for the EAS
@@ -1759,7 +1773,7 @@ RULES
1759
1773
  workspaceBuildOutputs { dir, projectRoot, inTreeDirs, bytes, idleDays,
1760
1774
  willClear, reason, detail } derived-data,
1761
1775
  gradle-build, android-cas, cache-provider,
1762
- macos/build, macos/<Product>.app and
1776
+ js-swap-tmp, macos/build, macos/<Product>.app and
1763
1777
  macos/staging-* of each workspace; inTreeDirs
1764
1778
  lists the project's android/app/build,
1765
1779
  android/build,
@@ -6228,6 +6242,16 @@ Metro from run. With no recorded build for the selectors, run refuses with
6228
6242
  STIM_NO_RECORDED_BUILD and names the stim-ci build command. Build and run must
6229
6243
  share the Stim home (--home or STIM_HOME). macOS and web run unchanged: macOS
6230
6244
  run builds the app itself.
6245
+ Every iOS and Android run on this machine starts from clean app state, even when
6246
+ the install is skipped: it uninstalls every other user app except XCUITest runners
6247
+ (*.xctrunner), clears the app's defaults and data
6248
+ container and resets the simulator keychain on iOS, and runs pm clear on Android.
6249
+ A run that ios.remote or android.remote places on another machine or on EAS is
6250
+ not cleaned. build always compiles on this machine and ignores remote.build. An
6251
+ iOS build, and an Android Debug build, target this machine's architecture only;
6252
+ when run can land on
6253
+ another machine or on EAS, build with --arch all (iOS) or --abi all (Android).
6254
+ Plain stim ios and stim android clean only a device they adopt.
6231
6255
  build exports nothing unless --export <path> is given (an APK, or a tar.gz).
6232
6256
  --artifacts selects a directory for result, test and diagnostic files; without
6233
6257
  it none are written, no logs are copied and the action uploads nothing.
@@ -7067,7 +7091,7 @@ result as proof instead of requiring an unrelated screenshot.`
7067
7091
  at adoption renamed for the adopting workspace, then, inside the boot
7068
7092
  the run pays anyway, \`simctl privacy reset all\` and
7069
7093
  \`simctl keychain reset\`; at install, every other user app
7070
- is uninstalled, and this workspace's app, when it is
7094
+ except XCUITest runners (*.xctrunner) is uninstalled, and this workspace's app, when it is
7071
7095
  installed, has its preferences domain deleted (an
7072
7096
  expo-dev-client app's is replaced by the two dev-menu-off
7073
7097
  keys, see \`guide facts devmenu\`) and its data
@@ -8226,16 +8250,18 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
8226
8250
 
8227
8251
  Warm copies installed dependencies, Pods, native output, and other ignored
8228
8252
  paths eligible under the source checkout's Git ignore rules, including .env
8229
- and local configuration. The source's nonempty
8230
- .worktreeexclude replaces its resolved worktree.exclude setting. Nested
8231
- registered worktrees and ignored entries named .DS_Store, .DerivedData,
8232
- .idea, .jj or .pnpm-store are not copied, and neither is
8233
- android/build/generated/autolinking. Warm never walks a copied directory, so
8234
- a .DS_Store or .idea inside a copied directory stays. Warm deletes only
8235
- these paths from the copy: .pnpm-store in a copied node_modules (pnpm
8236
- refills it from the network or its global store), the autolinking directory
8237
- under a copied android, android/build or android/build/generated (Gradle
8238
- regenerates it for the destination checkout on its next build), and the
8253
+ and local configuration. The source's nonempty .worktreeexclude replaces its
8254
+ resolved worktree.exclude setting. Nested registered worktrees and ignored
8255
+ entries named .DS_Store, .DerivedData, .idea, .jj or .pnpm-store are not
8256
+ copied, and neither are android/build/generated/autolinking and .expo/types.
8257
+ Warm never walks a copied directory, so a .DS_Store or .idea inside a copied
8258
+ directory stays. Warm deletes only these paths from the copy: .pnpm-store in
8259
+ a copied node_modules (pnpm refills it from the network or its global
8260
+ store), the autolinking directory under a copied android, android/build or
8261
+ android/build/generated (Gradle regenerates it for the destination checkout
8262
+ on its next build), types in a copied .expo (Expo Router's typed routes,
8263
+ possibly generated from the source's older routes; Expo regenerates them on
8264
+ the destination's first expo start), and the
8239
8265
  expo-modules-jsi/apple/.DerivedData Xcode build state, directly under
8240
8266
  node_modules or in the pnpm virtual store. An ignored directory that Git
8241
8267
  reports above those names (for example an app directory with no tracked
@@ -8243,9 +8269,9 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
8243
8269
  $STIM_HOME/trash and a detached, low-priority rm deletes them after warm
8244
8270
  returns (through the programmatic API, before the call resolves); when the
8245
8271
  rename is not possible (Windows, $STIM_HOME on another volume), warm deletes
8246
- them before it returns. Warm also skips paths
8247
- overlapping a nested destination worktree or below a symlink ancestor.
8248
- Tracked .idea settings come from Git and stay untouched by warm.
8272
+ them before it returns. Warm also skips paths overlapping a nested
8273
+ destination worktree or below a symlink ancestor. Tracked .idea settings
8274
+ come from Git and stay untouched by warm.
8249
8275
 
8250
8276
  A carried ios/Pods still names the source checkout's path in its generated
8251
8277
  files and in the checksum of a podspec that embeds that path (the
@@ -8730,6 +8756,9 @@ THE POOL: WHICH DEVICE AN ID-LESS \`--device\` PICKS
8730
8756
  alive on the device rather than by a bundle fetch. Device logs are still
8731
8757
  collected, so \`logs --errors\` answers "does it repro in release/Hermes
8732
8758
  bytecode".
8759
+ EAS and proxy adapters cannot verify a release or native process launch:
8760
+ launched stays "unverified" with a notice that process verification is
8761
+ unavailable. These adapters collect no device logs or native crash reports.
8733
8762
 
8734
8763
  On a release CACHE HIT the cached APK carries its BUILDER's baked-in JS, so
8735
8764
  it is never installed as-is. Stim copies it aside, regenerates this
@@ -8740,7 +8769,11 @@ THE POOL: WHICH DEVICE AN ID-LESS \`--device\` PICKS
8740
8769
  mmaps it), then zipaligns and re-signs with apksigner. The keystore defaults
8741
8770
  to android/app/debug.keystore with the standard password; android.keystore /
8742
8771
  android.keystorePassword override it (see \`guide settings\`). The cache
8743
- entry itself is never modified.
8772
+ entry itself is never modified. The bundler runs with TMPDIR set to the
8773
+ workspace's js-swap-tmp/, which holds Metro's default cache; Stim empties it
8774
+ when an EXPO_PUBLIC_ value, EXPO_NO_DOTENV, NODE_ENV or a .env* file in the
8775
+ project root differs from the previous swap's. A metro.config.js that sets
8776
+ its own cacheStores keeps its own cache location.
8744
8777
 
8745
8778
  AN EXPO-UPDATES APP GETS A FRESH EMBEDDED UPDATE. expo-updates launches the
8746
8779
  update with the newest commitTime for the binary's runtime version, and the
@@ -8792,13 +8825,16 @@ THE POOL: WHICH DEVICE AN ID-LESS \`--device\` PICKS
8792
8825
  skips Metro ENTIRELY: no gate, no port wiring, no dev-client deep link (a
8793
8826
  plain \`simctl launch\`), and the payload says \`metroPort: null\` --
8794
8827
  \`launched\` is verified by the app PROCESS staying alive, not by a bundle
8795
- fetch. The build cache keys on the configuration
8796
- (\`<fingerprint>-release-sim\`), and because a cached Release .app carries
8797
- its builder's baked-in JS, a cache hit regenerates THIS workspace's bundle
8828
+ fetch. The build cache keys on the configuration and this Mac's simulator
8829
+ architecture, the only one a local build compiles
8830
+ (\`<fingerprint>-release-sim-arm64\`), and because a cached Release .app
8831
+ carries its builder's baked-in JS, a cache hit regenerates THIS workspace's bundle
8798
8832
  (the project's own \`expo export:embed\` / \`react-native bundle\`, plus
8799
8833
  its own hermesc when Hermes is enabled) into a copy of the artifact,
8800
8834
  refreshes an expo-updates manifest as described above, re-signs it and
8801
- installs that; any swap failure falls back to a full build
8835
+ installs that. Like the Android swap, it bundles with a workspace-private
8836
+ default Metro cache that is emptied when the EXPO_PUBLIC_ values,
8837
+ EXPO_NO_DOTENV, NODE_ENV or .env* files change. Any swap failure falls back to a full build
8802
8838
  rather than ever installing stale JS. A simulator Release build can run on
8803
8839
  a remote machine (stim guide settings, remote.build), which bundles the JS
8804
8840
  of the checkout it synced, its gitignored .env.production files included,
@@ -10118,7 +10154,7 @@ a changed value.
10118
10154
 
10119
10155
  WORKSPACE BUILD OUTPUTS
10120
10156
  Each workspace directory holds derived-data/, gradle-build/, android-cas/,
10121
- cache-provider/, macos/build, the staged macos/<Product>.app and macos/staging-*
10157
+ cache-provider/, js-swap-tmp/, macos/build, the staged macos/<Product>.app and macos/staging-*
10122
10158
  leftovers. The project's own android/app/build, android/build,
10123
10159
  android/.gradle and .build count with them when git ignores every file in
10124
10160
  the directory and tracks none; one that fails that check, or is not in a
@@ -10376,7 +10412,7 @@ KEYS STIM READS
10376
10412
  (simulator only). Committing
10377
10413
  { "ios": { "configuration": "Release" } } makes every
10378
10414
  \`stim ios\` in the app a release-shaped build:
10379
- embedded JS, no Metro, cache keyed -release-sim, and
10415
+ embedded JS, no Metro, cache keyed -release-sim-<arch>, and
10380
10416
  a JS-bundle swap on cache hits. The \`--configuration\`
10381
10417
  flag overrides this per invocation. Unset means Debug.
10382
10418
  ios.remote where the simulator runs, with the same meaning as
@@ -1,7 +1,7 @@
1
- import { d as throwIfCancelled } from "./exec-CGuDzt40.mjs";
2
- import { l as call, u as connectHost } from "./hosted-client-DMOOu8vD.mjs";
3
- import { a as requestHostedMetro } from "./metro-request-O8Q-JvBg.mjs";
4
- import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-BiiUG_Q6.mjs";
1
+ import { d as throwIfCancelled } from "./exec-L37dbiIb.mjs";
2
+ import { l as call, u as connectHost } from "./hosted-client-BLwuXEZS.mjs";
3
+ import { a as requestHostedMetro } from "./metro-request-DcUxyaq8.mjs";
4
+ import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-OBT2sJxn.mjs";
5
5
  //#region src/device-host/hosted-android.ts
6
6
  async function prepareHostedAndroid(machine, selectors, recorded, mode) {
7
7
  return await prepareHostedNative(machine, selectors, recorded, "android", false, mode);
@@ -1,7 +1,7 @@
1
- import { d as throwIfCancelled, l as cancellableSleep } from "./exec-CGuDzt40.mjs";
2
- import { F as diagnoseConnectFailure, q as resolveEndpoint } from "./config-BA3TgoIP.mjs";
3
- import { t as BuildConnection } from "./client-KSWIeQLA.mjs";
4
- import { nt as configuredMachines } from "./support-BJbXovoO.mjs";
1
+ import { d as throwIfCancelled, l as cancellableSleep } from "./exec-L37dbiIb.mjs";
2
+ import { F as diagnoseConnectFailure, q as resolveEndpoint } from "./config-CNmN-ndb.mjs";
3
+ import { t as BuildConnection } from "./client-DU6dnGX1.mjs";
4
+ import { nt as configuredMachines } from "./support-CfYmOdQs.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { lstatSync, readFileSync, readdirSync, readlinkSync } from "node:fs";
7
7
  import { join } from "node:path";
@@ -1,11 +1,11 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-BhwAJBgA.mjs";
3
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
4
- import { W as parseMachine$1, dt as deviceSlotFileKey, vt as validateDeviceSlot } from "./config-BA3TgoIP.mjs";
5
- import { n as macosDir } from "./state-B4B5P4LU.mjs";
6
- import { n as androidLogGroups, r as isAndroidCrashText } from "./android-5wkcMFDG.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
4
+ import { W as parseMachine$1, dt as deviceSlotFileKey, vt as validateDeviceSlot } from "./config-CNmN-ndb.mjs";
5
+ import { n as macosDir } from "./state-DsrFh3yv.mjs";
6
+ import { n as androidLogGroups, r as isAndroidCrashText } from "./android-BPBARZMR.mjs";
7
7
  import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
8
- import { l as call } from "./hosted-client-DMOOu8vD.mjs";
8
+ import { l as call } from "./hosted-client-BLwuXEZS.mjs";
9
9
  import { mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { dirname, join } from "node:path";
11
11
  import { LOG_ROTATE_BYTES, ambientWrite, withDirLockAsync } from "@stim-cli/core";
@@ -1,8 +1,8 @@
1
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
2
- import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-CClIktQM.mjs";
3
- import { u as connectHost } from "./hosted-client-DMOOu8vD.mjs";
4
- import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-Avwz2cbZ.mjs";
5
- import "./hosted-macos-D4sDJIbB.mjs";
1
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
2
+ import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-BWEQNJx_.mjs";
3
+ import { u as connectHost } from "./hosted-client-BLwuXEZS.mjs";
4
+ import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-enWc5P6U.mjs";
5
+ import "./hosted-macos-BnCYAv1y.mjs";
6
6
  import { watch } from "node:fs";
7
7
  import { dirname, relative, resolve, sep } from "node:path";
8
8
  import { ambientWrite, configDir } from "@stim-cli/core";
@@ -1,9 +1,9 @@
1
- import { l as cancellableSleep } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
3
- import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-CClIktQM.mjs";
4
- import { n as macosDir } from "./state-B4B5P4LU.mjs";
5
- import { _t as runCancellationSignal } from "./toolchain-DCnWAxQL.mjs";
6
- import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-DMOOu8vD.mjs";
1
+ import { l as cancellableSleep } from "./exec-L37dbiIb.mjs";
2
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-BWEQNJx_.mjs";
4
+ import { n as macosDir } from "./state-DsrFh3yv.mjs";
5
+ import { _t as runCancellationSignal } from "./toolchain-BeD7tbBW.mjs";
6
+ import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-BLwuXEZS.mjs";
7
7
  import { randomUUID } from "node:crypto";
8
8
  import { join } from "node:path";
9
9
  import { ambientContext, ambientWrite } from "@stim-cli/core";
@@ -1,11 +1,11 @@
1
- import { l as cancellableSleep, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-BhwAJBgA.mjs";
3
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
4
- import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-CClIktQM.mjs";
5
- import { _t as runCancellationSignal } from "./toolchain-DCnWAxQL.mjs";
6
- import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-DMOOu8vD.mjs";
7
- import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-O8Q-JvBg.mjs";
8
- import { s as writeHostedNative } from "./ios-state-Avwz2cbZ.mjs";
1
+ import { l as cancellableSleep, w as withDrainingCancellation } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
4
+ import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-BWEQNJx_.mjs";
5
+ import { _t as runCancellationSignal } from "./toolchain-BeD7tbBW.mjs";
6
+ import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-BLwuXEZS.mjs";
7
+ import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-DcUxyaq8.mjs";
8
+ import { s as writeHostedNative } from "./ios-state-enWc5P6U.mjs";
9
9
  import { randomUUID } from "node:crypto";
10
10
  import { readFileSync } from "node:fs";
11
11
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  //#region src/collector/ios.ts
3
3
  const MESSAGE_TYPE_LEVEL = {
4
4
  Debug: "debug",
@@ -1,9 +1,9 @@
1
- import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-T3cDctRE.mjs";
2
- import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-DCnWAxQL.mjs";
3
- import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-BJbXovoO.mjs";
4
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-C3_NkUlW.mjs";
5
- import { t as devClientScheme } from "./dev-client-MO_DjTZr.mjs";
6
- import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-Cz0S1Sz-.mjs";
7
- import { d as replaceCollector, u as collectorEntry } from "./dependencies-LH-7k1Vr.mjs";
8
- import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-BhpUWyN7.mjs";
1
+ import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-ByEmIwur.mjs";
2
+ import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-BeD7tbBW.mjs";
3
+ import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-CfYmOdQs.mjs";
4
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-UxUBU8up.mjs";
5
+ import { t as devClientScheme } from "./dev-client-3SQzMRXZ.mjs";
6
+ import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-XHg87vyQ.mjs";
7
+ import { d as replaceCollector, u as collectorEntry } from "./dependencies-BozoTBqa.mjs";
8
+ import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-CGyx4PA7.mjs";
9
9
  export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
@@ -1,10 +1,10 @@
1
- import { f as WorkspaceProcessCleanupError, l as cancellableSleep, n as isTimeoutError, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { f as WorkspaceProcessCleanupError, l as cancellableSleep, n as isTimeoutError, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { it as formatBytes, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
4
- import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
5
- import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-D0P_bzmd.mjs";
6
- import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-SJx1V3R3.mjs";
7
- import { n as signedTailFor } from "./apk-signed-tail-eZyXIrnc.mjs";
3
+ import { it as formatBytes, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
5
+ import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-DWGAfaud.mjs";
6
+ import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-CGctfYpv.mjs";
7
+ import { n as signedTailFor } from "./apk-signed-tail-BMv-KLcB.mjs";
8
8
  import { createHash } from "node:crypto";
9
9
  import { closeSync, existsSync, lstatSync, mkdtempSync, openSync, readSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { tmpdir, totalmem } from "node:os";
@@ -1013,6 +1013,16 @@ const CLEARED_CONTAINER_DIRS = [
1013
1013
  ];
1014
1014
  async function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
1015
1015
  const exec = getExecutor();
1016
+ try {
1017
+ await exec.runFileAsync("xcrun", [
1018
+ "simctl",
1019
+ "terminate",
1020
+ udid,
1021
+ bundleId
1022
+ ], SIMCTL_OPTIONS);
1023
+ } catch (error) {
1024
+ if (!/found nothing to terminate/.test(error instanceof Error ? error.message : String(error))) throw error;
1025
+ }
1016
1026
  if (defaultsPlist) await exec.runFileAsync("xcrun", [
1017
1027
  "simctl",
1018
1028
  "spawn",
@@ -1,32 +1,32 @@
1
- import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-BhwAJBgA.mjs";
2
- import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-T3cDctRE.mjs";
3
- import { dt as deviceSlotFileKey, ht as parseDeviceSlotOption, vt as validateDeviceSlot } from "./config-BA3TgoIP.mjs";
4
- import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-Bap-qjnp.mjs";
5
- import { t as NO_PROJECT_REFUSAL } from "./project-Clk1JAWL.mjs";
6
- import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-SJx1V3R3.mjs";
7
- import { Hn as exitAfterFlush, Wn as runProcessOperation, dr as ownedSessionName, qt as binOnPath, yn as DEFAULT_METRO_PORT } from "./device-capacity-CpAVcKgq.mjs";
8
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-Dh5N70qW.mjs";
9
- import { A as COMPILATION_CACHE_NOT_RUN, _t as runCancellationSignal, gt as runCancellation, lt as cancelledFailure, vt as withNativeBuildRun } from "./toolchain-DCnWAxQL.mjs";
10
- import { i as createIosSimSnapshot } from "./ios-BhfpRfNf.mjs";
1
+ import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { dt as deviceSlotFileKey, ht as parseDeviceSlotOption, vt as validateDeviceSlot } from "./config-CNmN-ndb.mjs";
4
+ import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-Ag4pbs0z.mjs";
5
+ import { t as NO_PROJECT_REFUSAL } from "./project-BCtQz48d.mjs";
6
+ import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-CGctfYpv.mjs";
7
+ import { Hn as exitAfterFlush, Wn as runProcessOperation, dr as ownedSessionName, qt as binOnPath, yn as DEFAULT_METRO_PORT } from "./device-capacity-DWUOvY13.mjs";
8
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-DCzDzydB.mjs";
9
+ import { A as COMPILATION_CACHE_NOT_RUN, _t as runCancellationSignal, gt as runCancellation, lt as cancelledFailure, vt as withNativeBuildRun } from "./toolchain-BeD7tbBW.mjs";
10
+ import { i as createIosSimSnapshot } from "./ios-BveW7qK1.mjs";
11
11
  import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
12
- import { C as setRemoteLogSink, d as simulatorRuntime } from "./client-KSWIeQLA.mjs";
13
- import { N as parseBuildMachineOption, W as leaseExpiryText, X as waitFlagConflict, _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-BJbXovoO.mjs";
14
- import { i as hostedMetroSettings } from "./metro-request-O8Q-JvBg.mjs";
15
- import { i as writeDevicePlacementAsync } from "./ios-state-Avwz2cbZ.mjs";
16
- import { t as devClientPortBusy } from "./hosted-native-BiiUG_Q6.mjs";
17
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-B6TnpHMX.mjs";
18
- import { r as isEasBuildFailure } from "./eas-build-Xf5Jd6LR.mjs";
19
- import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-vhYL1N--.mjs";
20
- import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-C3_NkUlW.mjs";
21
- import { t as lookupRecordedBuild } from "./recorded-build-BuGL_fnm.mjs";
22
- import "./dev-client-MO_DjTZr.mjs";
23
- import { t as didSetUpDevice } from "./device-BZWt_aPJ.mjs";
12
+ import { C as setRemoteLogSink, d as simulatorRuntime } from "./client-DU6dnGX1.mjs";
13
+ import { N as parseBuildMachineOption, W as leaseExpiryText, X as waitFlagConflict, _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CfYmOdQs.mjs";
14
+ import { i as hostedMetroSettings } from "./metro-request-DcUxyaq8.mjs";
15
+ import { i as writeDevicePlacementAsync } from "./ios-state-enWc5P6U.mjs";
16
+ import { t as devClientPortBusy } from "./hosted-native-OBT2sJxn.mjs";
17
+ import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-Cdfmo8MO.mjs";
18
+ import { r as isEasBuildFailure } from "./eas-build-CwOXKJwa.mjs";
19
+ import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-ByrDWSpC.mjs";
20
+ import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-UxUBU8up.mjs";
21
+ import { t as lookupRecordedBuild } from "./recorded-build-CGHGCO8m.mjs";
22
+ import "./dev-client-3SQzMRXZ.mjs";
23
+ import { t as didSetUpDevice } from "./device-BIg1iExg.mjs";
24
24
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
25
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CeIooJqn.mjs";
26
- import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-Cz0S1Sz-.mjs";
27
- import { n as acquireIosArtifactOrRecorded } from "./artifact-ubNdxo_K.mjs";
28
- import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-WK_swZEw.mjs";
29
- import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-LH-7k1Vr.mjs";
25
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CgnLDof9.mjs";
26
+ import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-XHg87vyQ.mjs";
27
+ import { n as acquireIosArtifactOrRecorded } from "./artifact-BrNZTZtA.mjs";
28
+ import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-CV2jBcLv.mjs";
29
+ import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-BozoTBqa.mjs";
30
30
  import { join } from "node:path";
31
31
  import { workspaceId } from "@stim-cli/core";
32
32
  import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
@@ -312,13 +312,13 @@ function iosProjectTargetRefusal(project, { physical, easProfile, placement, rec
312
312
  };
313
313
  return null;
314
314
  }
315
- function iosArtifactTargetInputs({ udid, physical, remote, hosted, simulatorArch, lanAddress, metroPort, settings }) {
315
+ function iosArtifactTargetInputs({ udid, physical, remote, hosted, simulatorArch, configuration, lanAddress, metroPort, settings }) {
316
316
  return {
317
317
  target: {
318
318
  udid,
319
319
  destination: remote || hosted ? "generic/platform=iOS Simulator" : null,
320
320
  sdk: physical ? "iphoneos" : "iphonesimulator",
321
- arch: remote || hosted ? simulatorArch : null,
321
+ arch: remote || hosted || isReleaseConfiguration(configuration) ? simulatorArch : null,
322
322
  keyArch: simulatorArch,
323
323
  offloadRuntime: () => hosted?.choice.runtimeId ?? (remote ? null : simulatorRuntime(udid)),
324
324
  hostedArchitecture: hosted?.choice.architecture,
@@ -1087,8 +1087,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1087
1087
  const simulatorArch = simulatorBuildArch({
1088
1088
  physical,
1089
1089
  remoteArch,
1090
- hostArch: d.hostSimulatorArch(),
1091
- configuration
1090
+ hostArch: d.hostSimulatorArch()
1092
1091
  });
1093
1092
  const acquiredArtifact = unlessCancelled(context, await acquireIosArtifactOrRecorded(recordedLookup.build, {
1094
1093
  context,
@@ -1110,6 +1109,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1110
1109
  remote: Boolean(remoteDevice),
1111
1110
  hosted: hostedTarget,
1112
1111
  simulatorArch,
1112
+ configuration,
1113
1113
  lanAddress,
1114
1114
  metroPort,
1115
1115
  settings
@@ -1251,6 +1251,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1251
1251
  lanAddress,
1252
1252
  lanOriginUrl,
1253
1253
  remoteDevice,
1254
+ cleanAppState: Boolean(opts.cleanAppState),
1254
1255
  bootPromise,
1255
1256
  bootDuration: () => bootDuration,
1256
1257
  bootPending: () => bootPending,
@@ -1,6 +1,6 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { bn as INSTALL_ERROR, wn as appProcessFromPid } from "./device-capacity-CpAVcKgq.mjs";
3
- import { n as TOOL_ERROR_PREFIX } from "./ios-device-DLdEDWJj.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { bn as INSTALL_ERROR, wn as appProcessFromPid } from "./device-capacity-DWUOvY13.mjs";
3
+ import { n as TOOL_ERROR_PREFIX } from "./ios-device-ygijU78G.mjs";
4
4
  import { mkdtempSync, readFileSync, rmSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  //#region src/collector/ios-device.ts
3
3
  const CONSOLE_ENV = { OS_ACTIVITY_DT_MODE: "enable" };
4
4
  const DEV_MENU_LAUNCH_ARGS = [
@@ -1,10 +1,10 @@
1
- import { w as workspaceAgentDeviceDir } from "./workspace-state-BhwAJBgA.mjs";
2
- import { i as formatDuration, l as phaseLine } from "./command-output-T3cDctRE.mjs";
3
- import { a as workspaceLinkLine } from "./stim-desktop-D0P_bzmd.mjs";
4
- import { Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel } from "./device-capacity-CpAVcKgq.mjs";
5
- import { X as recordFinishedBuild } from "./workspaces-Dh5N70qW.mjs";
6
- import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-DCnWAxQL.mjs";
7
- import { i as deviceLabel } from "./support-BJbXovoO.mjs";
1
+ import { w as workspaceAgentDeviceDir } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { i as formatDuration, l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { a as workspaceLinkLine } from "./stim-desktop-DWGAfaud.mjs";
4
+ import { Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel } from "./device-capacity-DWUOvY13.mjs";
5
+ import { X as recordFinishedBuild } from "./workspaces-DCzDzydB.mjs";
6
+ import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-BeD7tbBW.mjs";
7
+ import { i as deviceLabel } from "./support-CfYmOdQs.mjs";
8
8
  import { buildDiagnostics } from "@stim-cli/core/state";
9
9
  import chalk from "chalk";
10
10
  //#region src/commands/ios/result.ts
@@ -1,6 +1,6 @@
1
- import { d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
3
- import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-DCnWAxQL.mjs";
1
+ import { d as throwIfCancelled, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DNynwpqO.mjs";
3
+ import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-BeD7tbBW.mjs";
4
4
  import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-BhwAJBgA.mjs";
1
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
2
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroRequests, hostedNativeRecords, isJsonObject, parseHostedNativePlacement, unreadableHostedNative } from "@stim-cli/core/state";
3
3
  //#region src/device-host/ios-state.ts
4
4
  function readHostedNative(root, platform, slot) {