sootsim 0.1.227 → 0.1.229

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 (175) hide show
  1. package/README.md +14 -14
  2. package/detox/element-types.ts +3 -3
  3. package/detox/expectations.ts +29 -24
  4. package/detox/gestures.ts +16 -16
  5. package/detox/index.ts +34 -32
  6. package/dist-cli/bin.js +4 -4
  7. package/dist-cli/chunks/{agent-HBVXCRJT.js → agent-O26YYN6Z.js} +2 -2
  8. package/dist-cli/chunks/{agent-wrapper-X376DPV2.js → agent-wrapper-GSMHXP6S.js} +2 -2
  9. package/dist-cli/chunks/{app-fonts-LIQTD5RP.js → app-fonts-TVTDVD7S.js} +2 -2
  10. package/dist-cli/chunks/{assert-X6PPLN72.js → assert-KEWRJSST.js} +2 -2
  11. package/dist-cli/chunks/{auth-INRWIM2C.js → auth-KQXLD6AC.js} +2 -2
  12. package/dist-cli/chunks/beta-BXBII74U.js +2 -0
  13. package/dist-cli/chunks/{camera-LGFHYCJ5.js → camera-RTNVNBMT.js} +2 -2
  14. package/dist-cli/chunks/{chunk-YB2LM6VB.js → chunk-32O3YKA2.js} +6 -6
  15. package/dist-cli/chunks/{chunk-SBIAPF6E.js → chunk-3FGXJMSF.js} +1 -1
  16. package/dist-cli/chunks/{chunk-QWRYD2QV.js → chunk-3FYUTNM4.js} +18 -18
  17. package/dist-cli/chunks/{chunk-A4BOYB55.js → chunk-3UE5OA64.js} +2 -2
  18. package/dist-cli/chunks/{chunk-LCJSTEIR.js → chunk-456MZ4LU.js} +2 -2
  19. package/dist-cli/chunks/{chunk-E75EBS77.js → chunk-4O73AHYA.js} +2 -2
  20. package/dist-cli/chunks/chunk-4WAZOAAS.js +2 -0
  21. package/dist-cli/chunks/{chunk-RNWJQ4UR.js → chunk-62GPXYH7.js} +1 -1
  22. package/dist-cli/chunks/chunk-6Q3M6FMW.js +24 -0
  23. package/dist-cli/chunks/chunk-6VQIZJLG.js +1 -0
  24. package/dist-cli/chunks/chunk-7FSM4I7A.js +1 -0
  25. package/dist-cli/chunks/{chunk-J2JAOIMN.js → chunk-7IBNJPSB.js} +2 -2
  26. package/dist-cli/chunks/{chunk-GUCFICA4.js → chunk-7LSM7YNF.js} +1 -1
  27. package/dist-cli/chunks/{chunk-J7IFVTWX.js → chunk-AB7XCG3A.js} +1 -1
  28. package/dist-cli/chunks/{chunk-MG6JE3AM.js → chunk-AZWH6YSL.js} +2 -2
  29. package/dist-cli/chunks/{chunk-ESK7B2BQ.js → chunk-BZOTL2IQ.js} +6 -6
  30. package/dist-cli/chunks/{chunk-2XXPF6LP.js → chunk-CE3XI55C.js} +2 -2
  31. package/dist-cli/chunks/{chunk-HRYKZ5YY.js → chunk-DXF6DHIR.js} +5 -5
  32. package/dist-cli/chunks/{chunk-DB3GMVOH.js → chunk-FF7GZMWQ.js} +2 -2
  33. package/dist-cli/chunks/chunk-GVOFX6LJ.js +118 -0
  34. package/dist-cli/chunks/{chunk-HXHB5A6R.js → chunk-HKBDDBKZ.js} +2 -2
  35. package/dist-cli/chunks/{chunk-UGWURWHN.js → chunk-HKZICBKI.js} +2 -2
  36. package/dist-cli/chunks/{chunk-E3DLUOFK.js → chunk-JK4AGL2U.js} +7 -7
  37. package/dist-cli/chunks/{chunk-NIN75M5H.js → chunk-OUJVQUX4.js} +2 -2
  38. package/dist-cli/chunks/chunk-OWSZCLYZ.js +2 -0
  39. package/dist-cli/chunks/{chunk-XESYTWFM.js → chunk-P3ORPGKZ.js} +29 -29
  40. package/dist-cli/chunks/{chunk-Q4FB222M.js → chunk-PNLTVAPK.js} +3 -3
  41. package/dist-cli/chunks/{chunk-4J7BIXEB.js → chunk-PY65YXHI.js} +2 -2
  42. package/dist-cli/chunks/{chunk-7LDHOQ7B.js → chunk-S4CJUMUZ.js} +34 -34
  43. package/dist-cli/chunks/{chunk-T6MEERRI.js → chunk-SCGYOJJP.js} +2 -2
  44. package/dist-cli/chunks/{chunk-HXSV263V.js → chunk-SHBXXKJW.js} +1 -1
  45. package/dist-cli/chunks/chunk-SPBHQVJ4.js +2 -0
  46. package/dist-cli/chunks/{chunk-F53C5HAB.js → chunk-SYZKYAPC.js} +1 -1
  47. package/dist-cli/chunks/{chunk-3L5EXWCP.js → chunk-THDVL3ST.js} +1 -1
  48. package/dist-cli/chunks/{chunk-HTVB3FW2.js → chunk-TJXRSDEU.js} +2 -2
  49. package/dist-cli/chunks/{chunk-NU755HCE.js → chunk-TWUPMUWQ.js} +1 -1
  50. package/dist-cli/chunks/{chunk-F5HOYUD2.js → chunk-U4OPCVAL.js} +1 -1
  51. package/dist-cli/chunks/chunk-UCVK6JDW.js +3 -0
  52. package/dist-cli/chunks/chunk-UGFZIHBA.js +2 -0
  53. package/dist-cli/chunks/{chunk-LM544J6V.js → chunk-V2TABN7W.js} +1 -1
  54. package/dist-cli/chunks/{chunk-D42IRY2Y.js → chunk-VKVRAWJR.js} +2 -2
  55. package/dist-cli/chunks/{chunk-7L5IKIHC.js → chunk-VUJ5FLL7.js} +1 -1
  56. package/dist-cli/chunks/{chunk-2BQOZATN.js → chunk-WRPO6J3Z.js} +3 -3
  57. package/dist-cli/chunks/chunk-XQHCHVHE.js +4 -0
  58. package/dist-cli/chunks/{chunk-NHE3YHDU.js → chunk-ZORXBO54.js} +2 -2
  59. package/dist-cli/chunks/cli-version-W42GGXV7.js +2 -0
  60. package/dist-cli/chunks/{compat-MH673TEJ.js → compat-HPS6RGWD.js} +3 -3
  61. package/dist-cli/chunks/{config-SSCDV5ZJ.js → config-EKIT7WKS.js} +2 -2
  62. package/dist-cli/chunks/{control-54R2XDLV.js → control-QFNWOCLW.js} +2 -2
  63. package/dist-cli/chunks/daemon-B6RUIEYN.js +2 -0
  64. package/dist-cli/chunks/{debug-PFP646II.js → debug-EU5JDWZR.js} +3 -3
  65. package/dist-cli/chunks/{desktop-BPYYJ3EM.js → desktop-OOCDJB3I.js} +3 -3
  66. package/dist-cli/chunks/{detox-BIUVHXYH.js → detox-BXXEPJ3F.js} +2 -2
  67. package/dist-cli/chunks/{device-BNSPNIP6.js → device-6B6NKGAW.js} +2 -2
  68. package/dist-cli/chunks/{diagnose-BPTDSGOB.js → diagnose-FOWBMKO6.js} +2 -2
  69. package/dist-cli/chunks/drivers-DC6SRA2P.js +2 -0
  70. package/dist-cli/chunks/{film-ILA6VSOG.js → film-MVJCHWBU.js} +3 -3
  71. package/dist-cli/chunks/flow-XO4D3LRA.js +2 -0
  72. package/dist-cli/chunks/help-WNPSM6ZU.js +2 -0
  73. package/dist-cli/chunks/{hidden-runtime-alias-TD7IVAPF.js → hidden-runtime-alias-OVGHDXOR.js} +2 -2
  74. package/dist-cli/chunks/{home-paths-H36JDTNO.js → home-paths-3W46OKY6.js} +2 -2
  75. package/dist-cli/chunks/inspect-4J5NJCXS.js +2 -0
  76. package/dist-cli/chunks/install-desktop-GAEFTQ2K.js +2 -0
  77. package/dist-cli/chunks/{login-5WGZX2ZD.js → login-CU72MJHE.js} +4 -4
  78. package/dist-cli/chunks/{logout-V53WTVIZ.js → logout-SF5EPW7M.js} +2 -2
  79. package/dist-cli/chunks/{maestro-HGKYRD54.js → maestro-NYFSOD2H.js} +3 -3
  80. package/dist-cli/chunks/{maestro-generate-6DNZSKDP.js → maestro-generate-VDAXEVCE.js} +3 -3
  81. package/dist-cli/chunks/{mode-YFMKORE5.js → mode-VSABDCU5.js} +2 -2
  82. package/dist-cli/chunks/optional-demo-registry-YQZA2MRD.js +2 -0
  83. package/dist-cli/chunks/{perf-EOIGFDWM.js → perf-5XMCN7A2.js} +2 -2
  84. package/dist-cli/chunks/{record-2F54QS6Y.js → record-NAYAEQPD.js} +10 -10
  85. package/dist-cli/chunks/runtime-LR63M7XX.js +2 -0
  86. package/dist-cli/chunks/screenshot-command-HFNYL2CY.js +151 -0
  87. package/dist-cli/chunks/{screenshots-capture-DIICN24R.js → screenshots-capture-JCBFMJFS.js} +3 -3
  88. package/dist-cli/chunks/{serve-66NC6PPZ.js → serve-Z5HVGJ3C.js} +5 -5
  89. package/dist-cli/chunks/{setup-ZYN4BTBR.js → setup-YKDBK3RX.js} +3 -3
  90. package/dist-cli/chunks/{skills-MDBIER7U.js → skills-DQOWHZBC.js} +2 -2
  91. package/dist-cli/chunks/{storage-AQ3SEO4Y.js → storage-TKTKWTWE.js} +2 -2
  92. package/dist-cli/chunks/store-FPAX23SK.js +2 -0
  93. package/dist-cli/chunks/telemetry-CWRFOESH.js +2 -0
  94. package/dist-cli/chunks/{timeline-VEGHQZ36.js → timeline-QJPIAP7L.js} +2 -2
  95. package/dist-cli/chunks/{upgrade-RNDCRPLJ.js → upgrade-4ZEV4BY2.js} +3 -3
  96. package/dist-cli/chunks/upload-OF4CO6WM.js +2 -0
  97. package/dist-cli/chunks/{version-XUMPKQUM.js → version-OVU37MXP.js} +2 -2
  98. package/dist-cli/chunks/{web-ESQGHVPD.js → web-JUDK5W4T.js} +2 -2
  99. package/dist-cli/chunks/{what-happened-6NJENKUF.js → what-happened-TKCIGNLL.js} +2 -2
  100. package/dist-lib/agent-daemon-client.cjs +1 -1
  101. package/dist-lib/agent-events.cjs +1 -1
  102. package/dist-lib/agent-identity.cjs +1 -1
  103. package/dist-lib/agent-sessions.cjs +1 -1
  104. package/dist-lib/attached-projects.cjs +1 -1
  105. package/dist-lib/auth/shared-session.cjs +2 -2
  106. package/dist-lib/backend-origin.cjs +18 -18
  107. package/dist-lib/beta.cjs +1 -1
  108. package/dist-lib/beta.mjs +1 -1
  109. package/dist-lib/bridge-constants.cjs +4 -4
  110. package/dist-lib/cli-constants.cjs +1 -1
  111. package/dist-lib/config.cjs +1 -1
  112. package/dist-lib/detox/index.cjs +321 -79
  113. package/dist-lib/dev-bundle-resolution.cjs +2 -2
  114. package/dist-lib/home-paths.cjs +1 -1
  115. package/dist-lib/host/bridge-host.cjs +18 -13
  116. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  117. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  118. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  119. package/dist-lib/host/websocket-proxy.cjs +1 -1
  120. package/dist-lib/index.cjs +1 -1
  121. package/dist-lib/jump-to-source-babel.cjs +1 -1
  122. package/dist-lib/menu.cjs +1 -1
  123. package/dist-lib/menu.mjs +1 -1
  124. package/dist-lib/metro.cjs +1 -1
  125. package/dist-lib/profiles.cjs +1 -1
  126. package/dist-lib/render-mode.cjs +1 -1
  127. package/dist-lib/scripts/dev-server-scanner.cjs +7 -7
  128. package/dist-lib/sdk.cjs +12 -4
  129. package/dist-lib/sdk.mjs +12 -4
  130. package/dist-lib/skills.cjs +456 -170
  131. package/dist-lib/vite.cjs +1 -1
  132. package/package.json +4 -4
  133. package/scripts/dev-server-scanner.ts +5 -5
  134. package/scripts/postinstall.cjs +1 -1
  135. package/scripts/preuninstall.cjs +1 -1
  136. package/skills/{soot → contrast}/SKILL.md +4 -4
  137. package/skills/sootsim-perf/SKILL.md +3 -1
  138. package/src/auth/shared-session.ts +1 -1
  139. package/src/backend-origin.ts +11 -11
  140. package/src/bridge-constants.ts +3 -3
  141. package/src/home-paths.ts +1 -1
  142. package/src/host/agent-host.ts +2 -2
  143. package/src/host/bridge-host.ts +21 -21
  144. package/src/native-dev-bundle-url.ts +3 -3
  145. package/src/runtime-assets.ts +3 -3
  146. package/src/runtime-delivery.ts +10 -4
  147. package/src/screenshots/compose.ts +4 -1
  148. package/src/screenshots/frame-compose.ts +4 -1
  149. package/src/screenshots/orchestrate.ts +7 -2
  150. package/src/vite-plugin-one.ts +3 -3
  151. package/src/vite-plugin.ts +3 -3
  152. package/dist-cli/chunks/beta-WLLSIVLW.js +0 -2
  153. package/dist-cli/chunks/chunk-35EAEAN4.js +0 -24
  154. package/dist-cli/chunks/chunk-44Z2X5R4.js +0 -2
  155. package/dist-cli/chunks/chunk-4BLOZ3AF.js +0 -2
  156. package/dist-cli/chunks/chunk-7K5K5NKB.js +0 -2
  157. package/dist-cli/chunks/chunk-7RWDQCIT.js +0 -1
  158. package/dist-cli/chunks/chunk-BVD2JFOX.js +0 -1
  159. package/dist-cli/chunks/chunk-HBEEYWK5.js +0 -2
  160. package/dist-cli/chunks/chunk-JNUGPBWC.js +0 -118
  161. package/dist-cli/chunks/chunk-KBSJA7HK.js +0 -3
  162. package/dist-cli/chunks/chunk-Z2E2DDIQ.js +0 -4
  163. package/dist-cli/chunks/cli-version-NNBCIQKL.js +0 -2
  164. package/dist-cli/chunks/daemon-GL5GQTWB.js +0 -2
  165. package/dist-cli/chunks/drivers-KBKJVF2Y.js +0 -2
  166. package/dist-cli/chunks/flow-L247VVBM.js +0 -2
  167. package/dist-cli/chunks/help-QIZEANNK.js +0 -2
  168. package/dist-cli/chunks/inspect-6OAVS27G.js +0 -2
  169. package/dist-cli/chunks/install-desktop-LKYAUUQY.js +0 -2
  170. package/dist-cli/chunks/optional-demo-registry-YGNESGBH.js +0 -2
  171. package/dist-cli/chunks/runtime-FYVV4DCQ.js +0 -2
  172. package/dist-cli/chunks/screenshot-command-R535TYXY.js +0 -151
  173. package/dist-cli/chunks/store-6ZGLOTZI.js +0 -2
  174. package/dist-cli/chunks/telemetry-V76UPVDV.js +0 -2
  175. package/dist-cli/chunks/upload-KRBS3Y7Q.js +0 -2
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -117,7 +117,7 @@ function applyPreviewProdBundle(parsed) {
117
117
  function normalizeNativeDevBundleUrl(bundleUrl) {
118
118
  try {
119
119
  const isAbsolute = isAbsoluteHttpUrl(bundleUrl);
120
- const parsed = new URL(bundleUrl, "http://soot.local");
120
+ const parsed = new URL(bundleUrl, "http://sootsim.local");
121
121
  parsed.pathname = parsed.pathname.replace(/\.\.bundle$/, ".bundle");
122
122
  if (!isNativeDevBundlePath(parsed.pathname)) return bundleUrl;
123
123
  parsed.searchParams.delete("transform.bytecode");
@@ -472,7 +472,7 @@ async function probePort(port, buildIconProxyUrl) {
472
472
  knownNonPatched.add(port);
473
473
  return null;
474
474
  }
475
- function isSootSelfServer(server) {
475
+ function isSootSimSelfServer(server) {
476
476
  const bundleId = server.bundleId?.trim().toLowerCase();
477
477
  if (bundleId?.startsWith("dev.sootsim.")) return true;
478
478
  return false;
@@ -559,7 +559,7 @@ async function scanDevServers(opts = {}) {
559
559
  for (const pid of [...cwdByPid.keys()]) {
560
560
  if (!livePids.has(pid)) cwdByPid.delete(pid);
561
561
  }
562
- return results.filter((r) => !isSootSelfServer(r));
562
+ return results.filter((r) => !isSootSimSelfServer(r));
563
563
  }
564
564
 
565
565
  // src/bridge-constants.ts
@@ -832,7 +832,7 @@ var import_fs2 = __toESM(require("fs"), 1);
832
832
  var import_path2 = __toESM(require("path"), 1);
833
833
  var import_stream = require("stream");
834
834
  var import_promises = require("stream/promises");
835
- var DEFAULT_RUNTIME_CDN_ORIGIN = "https://sootbean.com";
835
+ var DEFAULT_RUNTIME_CDN_ORIGIN = "https://contrast.dev";
836
836
  var RUNTIME_CDN_ORIGIN_ENV = "SOOTSIM_CDN_ORIGIN";
837
837
  var RUNTIME_CHANNEL_ENV = "SOOTSIM_RUNTIME_CHANNEL";
838
838
  var RUNTIME_PIN_ENV = "SOOTSIM_RUNTIME_VERSION";
@@ -966,7 +966,12 @@ async function updateRuntimeToLatest(opts = {}) {
966
966
  latestVersion: pin
967
967
  };
968
968
  }
969
- const install2 = await installRuntime({ version: pin, channel, cdnOrigin, setActive: false });
969
+ const install2 = await installRuntime({
970
+ version: pin,
971
+ channel,
972
+ cdnOrigin,
973
+ setActive: false
974
+ });
970
975
  return {
971
976
  checked: true,
972
977
  updated: true,
@@ -2971,7 +2976,7 @@ var HTTP_MIME_TYPES = {
2971
2976
  ".map": "application/json",
2972
2977
  ".txt": "text/plain; charset=utf-8"
2973
2978
  };
2974
- function injectSharedConfigIntoHtml(data, bridgePort, sootbeanOrigin) {
2979
+ function injectSharedConfigIntoHtml(data, bridgePort, contrastOrigin) {
2975
2980
  let payload;
2976
2981
  try {
2977
2982
  const cfg = readSharedConfig();
@@ -2980,8 +2985,8 @@ function injectSharedConfigIntoHtml(data, bridgePort, sootbeanOrigin) {
2980
2985
  payload = "{}";
2981
2986
  }
2982
2987
  const bridgePortTag = bridgePort > 0 ? `window.__sootsimBridgePort=${bridgePort};` : "";
2983
- const sootbeanOriginTag = sootbeanOrigin ? `window.__sootsimSootbeanOrigin=${JSON.stringify(sootbeanOrigin)};` : "";
2984
- const tag = `<script>window.__sootsimSharedConfig=${payload};` + bridgePortTag + sootbeanOriginTag + `window.__sootsimCliVersion=${JSON.stringify(getCliVersion())};</script>`;
2988
+ const contrastOriginTag = contrastOrigin ? `window.__sootsimContrastOrigin=${JSON.stringify(contrastOrigin)};` : "";
2989
+ const tag = `<script>window.__sootsimSharedConfig=${payload};` + bridgePortTag + contrastOriginTag + `window.__sootsimCliVersion=${JSON.stringify(getCliVersion())};</script>`;
2985
2990
  const html = data.toString("utf8");
2986
2991
  if (html.includes("<head>")) return html.replace("<head>", `<head>${tag}`);
2987
2992
  if (html.includes("</head>")) return html.replace("</head>", tag + "</head>");
@@ -3052,7 +3057,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
3052
3057
  shouldWriteLockfile;
3053
3058
  shouldWriteDevLockfile;
3054
3059
  getShellPort;
3055
- sootbeanOrigin = null;
3060
+ contrastOrigin = null;
3056
3061
  effectivePort = 0;
3057
3062
  startedAt = 0;
3058
3063
  heartbeatTimer = null;
@@ -3099,7 +3104,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
3099
3104
  } : null;
3100
3105
  }
3101
3106
  });
3102
- this.sootbeanOrigin = opts.sootbeanOrigin?.replace(/\/$/, "") || null;
3107
+ this.contrastOrigin = opts.contrastOrigin?.replace(/\/$/, "") || null;
3103
3108
  this.simIdleReapTtlMs = opts.simIdleReapTtlMs ?? _SootSimBridgeHost.SIM_IDLE_REAP_TTL_MS;
3104
3109
  this.automationSimIdleReapTtlMs = opts.automationSimIdleReapTtlMs ?? _SootSimBridgeHost.AUTOMATION_SIM_IDLE_REAP_TTL_MS;
3105
3110
  this.maxConcurrentAutomationSims = opts.maxConcurrentAutomationSims ?? _SootSimBridgeHost.MAX_CONCURRENT_AUTOMATION_SIMS;
@@ -4077,7 +4082,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
4077
4082
  return;
4078
4083
  }
4079
4084
  res.end(
4080
- injectSharedConfigIntoHtml(data, this.effectivePort, this.sootbeanOrigin)
4085
+ injectSharedConfigIntoHtml(data, this.effectivePort, this.contrastOrigin)
4081
4086
  );
4082
4087
  });
4083
4088
  return;
@@ -4102,7 +4107,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
4102
4107
  return;
4103
4108
  }
4104
4109
  res.end(
4105
- injectSharedConfigIntoHtml(data, this.effectivePort, this.sootbeanOrigin)
4110
+ injectSharedConfigIntoHtml(data, this.effectivePort, this.contrastOrigin)
4106
4111
  );
4107
4112
  });
4108
4113
  return;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/menu.ts
4
4
  var SOOTSIM_ENGINE_EVENT_NAME = "sootsim:engine-event";
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -33,7 +33,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
33
33
  var dev_server_scanner_exports = {};
34
34
  __export(dev_server_scanner_exports, {
35
35
  __applyManifestForTests: () => __applyManifestForTests,
36
- __isSootSelfServerForTests: () => __isSootSelfServerForTests,
36
+ __isSootSimSelfServerForTests: () => __isSootSimSelfServerForTests,
37
37
  __resetScannerCache: () => __resetScannerCache,
38
38
  __shouldReuseScannerCacheEntry: () => __shouldReuseScannerCacheEntry,
39
39
  discoverListeningPorts: () => discoverListeningPorts,
@@ -83,7 +83,7 @@ function applyPreviewProdBundle(parsed) {
83
83
  function normalizeNativeDevBundleUrl(bundleUrl) {
84
84
  try {
85
85
  const isAbsolute = isAbsoluteHttpUrl(bundleUrl);
86
- const parsed = new URL(bundleUrl, "http://soot.local");
86
+ const parsed = new URL(bundleUrl, "http://sootsim.local");
87
87
  parsed.pathname = parsed.pathname.replace(/\.\.bundle$/, ".bundle");
88
88
  if (!isNativeDevBundlePath(parsed.pathname)) return bundleUrl;
89
89
  parsed.searchParams.delete("transform.bytecode");
@@ -464,12 +464,12 @@ async function probePort(port, buildIconProxyUrl) {
464
464
  knownNonPatched.add(port);
465
465
  return null;
466
466
  }
467
- function isSootSelfServer(server) {
467
+ function isSootSimSelfServer(server) {
468
468
  const bundleId = server.bundleId?.trim().toLowerCase();
469
469
  if (bundleId?.startsWith("dev.sootsim.")) return true;
470
470
  return false;
471
471
  }
472
- var __isSootSelfServerForTests = isSootSelfServer;
472
+ var __isSootSimSelfServerForTests = isSootSimSelfServer;
473
473
  var portCache = /* @__PURE__ */ new Map();
474
474
  var NEGATIVE_CACHE_TTL_MS = 3e4;
475
475
  var WEAK_RESULT_CACHE_TTL_MS = 1500;
@@ -560,12 +560,12 @@ async function scanDevServers(opts = {}) {
560
560
  for (const pid of [...cwdByPid.keys()]) {
561
561
  if (!livePids.has(pid)) cwdByPid.delete(pid);
562
562
  }
563
- return results.filter((r) => !isSootSelfServer(r));
563
+ return results.filter((r) => !isSootSimSelfServer(r));
564
564
  }
565
565
  // Annotate the CommonJS export names for ESM import in node:
566
566
  0 && (module.exports = {
567
567
  __applyManifestForTests,
568
- __isSootSelfServerForTests,
568
+ __isSootSimSelfServerForTests,
569
569
  __resetScannerCache,
570
570
  __shouldReuseScannerCacheEntry,
571
571
  discoverListeningPorts,
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -789,6 +789,9 @@ function readyProbeHasTargetContent(probe) {
789
789
  return probe.targets > 0;
790
790
  }
791
791
  function waitReadyReason(status) {
792
+ if (status.bridgeError) {
793
+ return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`sootsim list\`, reopen with \`sootsim open\`)`;
794
+ }
792
795
  const base = status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
793
796
  return !status.externalError && status.suppressedEntryError ? `${base} (suppressed entry error: ${status.suppressedEntryError})` : base;
794
797
  }
@@ -799,6 +802,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
799
802
  let nextProgressAt = start + progressIntervalMs;
800
803
  let lastNodes = -1;
801
804
  let nodeStableSince = start;
805
+ let bridgeError = "";
802
806
  let last = {
803
807
  flag: void 0,
804
808
  at: 0,
@@ -814,7 +818,9 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
814
818
  while (Date.now() < deadline) {
815
819
  try {
816
820
  last = await bridge.send({ type: "evaluate", code: WAIT_READY_PROBE }) ?? last;
817
- } catch {
821
+ bridgeError = "";
822
+ } catch (error) {
823
+ bridgeError = error instanceof Error ? error.message : String(error);
818
824
  }
819
825
  const now = Date.now();
820
826
  const status = {
@@ -828,7 +834,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
828
834
  externalStatus: last.externalStatus,
829
835
  externalError: last.externalError,
830
836
  suppressedEntryError: last.suppressedEntryError,
831
- errors: last.errors
837
+ errors: last.errors,
838
+ bridgeError
832
839
  };
833
840
  if (last.nodes !== lastNodes) {
834
841
  lastNodes = last.nodes;
@@ -863,7 +870,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
863
870
  externalStatus: last.externalStatus,
864
871
  externalError: last.externalError,
865
872
  suppressedEntryError: last.suppressedEntryError,
866
- errors: last.errors
873
+ errors: last.errors,
874
+ bridgeError
867
875
  };
868
876
  }
869
877
  async function inspectWaitSelector(bridge, testId, timeoutMs = 5e3, opts = {}) {
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.227 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.229 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {
@@ -699,6 +699,9 @@ function readyProbeHasTargetContent(probe) {
699
699
  return probe.targets > 0;
700
700
  }
701
701
  function waitReadyReason(status) {
702
+ if (status.bridgeError) {
703
+ return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`sootsim list\`, reopen with \`sootsim open\`)`;
704
+ }
702
705
  const base = status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
703
706
  return !status.externalError && status.suppressedEntryError ? `${base} (suppressed entry error: ${status.suppressedEntryError})` : base;
704
707
  }
@@ -709,6 +712,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
709
712
  let nextProgressAt = start + progressIntervalMs;
710
713
  let lastNodes = -1;
711
714
  let nodeStableSince = start;
715
+ let bridgeError = "";
712
716
  let last = {
713
717
  flag: void 0,
714
718
  at: 0,
@@ -724,7 +728,9 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
724
728
  while (Date.now() < deadline) {
725
729
  try {
726
730
  last = await bridge.send({ type: "evaluate", code: WAIT_READY_PROBE }) ?? last;
727
- } catch {
731
+ bridgeError = "";
732
+ } catch (error) {
733
+ bridgeError = error instanceof Error ? error.message : String(error);
728
734
  }
729
735
  const now = Date.now();
730
736
  const status = {
@@ -738,7 +744,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
738
744
  externalStatus: last.externalStatus,
739
745
  externalError: last.externalError,
740
746
  suppressedEntryError: last.suppressedEntryError,
741
- errors: last.errors
747
+ errors: last.errors,
748
+ bridgeError
742
749
  };
743
750
  if (last.nodes !== lastNodes) {
744
751
  lastNodes = last.nodes;
@@ -773,7 +780,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
773
780
  externalStatus: last.externalStatus,
774
781
  externalError: last.externalError,
775
782
  suppressedEntryError: last.suppressedEntryError,
776
- errors: last.errors
783
+ errors: last.errors,
784
+ bridgeError
777
785
  };
778
786
  }
779
787
  async function inspectWaitSelector(bridge, testId, timeoutMs = 5e3, opts = {}) {