peachsim 0.1.853 → 0.1.871

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 (93) hide show
  1. package/cli/commands/control.ts +37 -7
  2. package/cli/commands/do-chain.ts +1 -1
  3. package/cli/commands/inspect/settling.ts +2 -0
  4. package/cli/commands/inspect.ts +2 -2
  5. package/cli/commands/preview.ts +0 -11
  6. package/cli/current-sim.ts +11 -4
  7. package/cli/drivers/playwright-sim-host.ts +21 -4
  8. package/cli/drivers/playwright.ts +2 -47
  9. package/dist-lib/agent-daemon-client.cjs +1 -1
  10. package/dist-lib/agent-events.cjs +1 -1
  11. package/dist-lib/agent-identity.cjs +1 -1
  12. package/dist-lib/agent-sessions.cjs +1 -1
  13. package/dist-lib/attached-projects.cjs +1 -1
  14. package/dist-lib/auth/shared-session.cjs +1 -1
  15. package/dist-lib/backend-origin.cjs +1 -1
  16. package/dist-lib/beta.cjs +1 -1
  17. package/dist-lib/beta.mjs +1 -1
  18. package/dist-lib/bridge-constants.cjs +1 -1
  19. package/dist-lib/bridge-contract-input.cjs +1 -1
  20. package/dist-lib/bridge-contract-input.mjs +1 -1
  21. package/dist-lib/bridge-contract.cjs +1 -1
  22. package/dist-lib/bridge-contract.mjs +1 -1
  23. package/dist-lib/bundle-channel.cjs +13 -12
  24. package/dist-lib/capture-contract.cjs +1 -1
  25. package/dist-lib/capture-contract.mjs +1 -1
  26. package/dist-lib/cli-constants.cjs +1 -1
  27. package/dist-lib/cloud-contract.cjs +1 -1
  28. package/dist-lib/cloud-contract.mjs +1 -1
  29. package/dist-lib/cloud-test-args.cjs +1 -1
  30. package/dist-lib/cloud-test-args.mjs +1 -1
  31. package/dist-lib/cloud.cjs +1 -1
  32. package/dist-lib/cloud.mjs +1 -1
  33. package/dist-lib/config.cjs +1 -1
  34. package/dist-lib/detox/index.cjs +5 -3
  35. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  36. package/dist-lib/expo-swift-bundle.cjs +13 -12
  37. package/dist-lib/expo-swift-metadata.cjs +1 -1
  38. package/dist-lib/expo-swift-metadata.mjs +1 -1
  39. package/dist-lib/home-paths.cjs +1 -1
  40. package/dist-lib/host/bridge-host.cjs +13 -12
  41. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  42. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  43. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  44. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  45. package/dist-lib/host/websocket-proxy.cjs +1 -1
  46. package/dist-lib/index.cjs +7 -3
  47. package/dist-lib/jump-to-source-babel.cjs +1 -1
  48. package/dist-lib/jump-to-source-native.cjs +1 -1
  49. package/dist-lib/kotlin-host.cjs +1 -1
  50. package/dist-lib/menu.cjs +1 -1
  51. package/dist-lib/menu.mjs +1 -1
  52. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  53. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  54. package/dist-lib/metro-production-bundle.cjs +1 -1
  55. package/dist-lib/metro-production-bundle.mjs +1 -1
  56. package/dist-lib/metro.cjs +1 -1
  57. package/dist-lib/native-app-identity.cjs +1 -1
  58. package/dist-lib/native-app-identity.mjs +1 -1
  59. package/dist-lib/native-firebase-metadata.cjs +1 -1
  60. package/dist-lib/native-firebase-metadata.mjs +1 -1
  61. package/dist-lib/plist.cjs +1 -1
  62. package/dist-lib/plist.mjs +1 -1
  63. package/dist-lib/profiles.cjs +1 -1
  64. package/dist-lib/public-brand.cjs +1 -1
  65. package/dist-lib/react-native-host-modules.cjs +1 -1
  66. package/dist-lib/react-native-host-modules.mjs +1 -1
  67. package/dist-lib/render-mode.cjs +1 -1
  68. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  69. package/dist-lib/sdk.cjs +3 -1
  70. package/dist-lib/sdk.mjs +3 -1
  71. package/dist-lib/skills.cjs +53 -48
  72. package/dist-lib/swift-compile.cjs +1 -1
  73. package/dist-lib/swift-compile.mjs +1 -1
  74. package/dist-lib/swift-package.cjs +1 -1
  75. package/dist-lib/swift-package.mjs +1 -1
  76. package/dist-lib/swift-submit.cjs +1 -1
  77. package/dist-lib/swift-submit.mjs +1 -1
  78. package/dist-lib/swift-toolchain.cjs +1 -1
  79. package/dist-lib/swift.cjs +1 -1
  80. package/dist-lib/vite-swift.cjs +14 -13
  81. package/dist-lib/vite.cjs +1 -1
  82. package/dist-lib/worklet-executable.cjs +1 -1
  83. package/dist-lib/worklet-executable.mjs +1 -1
  84. package/kotlin/fork/NOTICE +4 -2
  85. package/kotlin/fork/README.md +12 -6
  86. package/kotlin/fork/build.sh +9 -2
  87. package/kotlin/fork/fork.json +1 -1
  88. package/kotlin/fork/skia-android-shaping.patch +124 -1
  89. package/kotlin/toolchain.json +3 -3
  90. package/package.json +1 -1
  91. package/skills/contrast/SKILL.md +2 -2
  92. package/skills/peach-debug/SKILL.md +2 -2
  93. package/src/swift-host.ts +14 -15
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -8052,11 +8052,13 @@ function packageSources(packagePath) {
8052
8052
  }
8053
8053
  return files2;
8054
8054
  }
8055
- function packageSnapshot(project) {
8055
+ function packageSnapshot(project, entry) {
8056
8056
  const files2 = packageSources(project.packagePath);
8057
+ const layout = xcodeLayout(project.packagePath);
8057
8058
  const native = nativeSourceDescriptor(project.packagePath);
8058
8059
  return {
8059
8060
  files: files2,
8061
+ entry: layout ? xcodeInputKey(layout, import_node_path15.default.resolve(project.packagePath, entry), entry) : entry,
8060
8062
  resourcePaths: swiftImplicitResourcePaths(
8061
8063
  resourceCandidateFiles(project.packagePath).map(
8062
8064
  (file) => import_node_path15.default.relative(project.packagePath, file).split(import_node_path15.default.sep).join(import_node_path15.default.posix.sep)
@@ -8074,18 +8076,18 @@ function packageSnapshot(project) {
8074
8076
  } : {}
8075
8077
  };
8076
8078
  }
8077
- function snapshotCompileInput(snapshot, entry) {
8079
+ function snapshotCompileInput(snapshot) {
8078
8080
  const input = {
8079
8081
  files: snapshot.files,
8080
8082
  resourcePaths: snapshot.resourcePaths,
8081
8083
  resources: snapshot.bundleFiles.files,
8082
8084
  images: snapshot.resources.images,
8083
- entry,
8085
+ entry: snapshot.entry,
8084
8086
  oneModule: true
8085
8087
  };
8086
8088
  return snapshot.glue ? withNativeSourceGlue(input, snapshot.glue) : input;
8087
8089
  }
8088
- async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, snapshot) {
8090
+ async function compile(packagePath, stamp, moduleRootOverride, hosted, snapshot) {
8089
8091
  const resources = {
8090
8092
  table: snapshot.resources.table,
8091
8093
  colors: snapshot.resources.colors,
@@ -8099,7 +8101,7 @@ async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, sn
8099
8101
  };
8100
8102
  if (hosted)
8101
8103
  return {
8102
- ...await compileRemote(packagePath, entry, snapshot, hosted),
8104
+ ...await compileRemote(packagePath, snapshot, hosted),
8103
8105
  stamp,
8104
8106
  package: content
8105
8107
  };
@@ -8108,12 +8110,12 @@ async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, sn
8108
8110
  ) ?? await swiftDistributionRoot();
8109
8111
  if (!moduleRoot)
8110
8112
  return {
8111
- ...await compileRemote(packagePath, entry, snapshot),
8113
+ ...await compileRemote(packagePath, snapshot),
8112
8114
  stamp,
8113
8115
  package: content
8114
8116
  };
8115
8117
  const toolchain = swiftModuleToolchain(moduleRoot);
8116
- const input = snapshotCompileInput(snapshot, entry);
8118
+ const input = snapshotCompileInput(snapshot);
8117
8119
  const targets = compileTargets(input).map((target) => target.name);
8118
8120
  const missing = missingSwiftModules(
8119
8121
  input.files,
@@ -8250,7 +8252,7 @@ async function missingModulesMessage(packagePath, missing) {
8250
8252
  })
8251
8253
  ].join("\n");
8252
8254
  }
8253
- async function compileRemote(packagePath, entry, snapshot, hosted) {
8255
+ async function compileRemote(packagePath, snapshot, hosted) {
8254
8256
  const auth = hosted ? null : resolveCliAuth();
8255
8257
  if (!hosted && (!auth || auth.kind === "github")) {
8256
8258
  throw new Error(
@@ -8284,7 +8286,7 @@ async function compileRemote(packagePath, entry, snapshot, hosted) {
8284
8286
  resourcePaths: snapshot.resourcePaths,
8285
8287
  resources: snapshot.bundleFiles.files,
8286
8288
  images: snapshot.resources.images,
8287
- entry,
8289
+ entry: snapshot.entry,
8288
8290
  packageId: descriptor?.packageId ?? swiftPackageId(packagePath)
8289
8291
  },
8290
8292
  origin,
@@ -8332,13 +8334,12 @@ function artifactFor(project, entry, moduleRoot) {
8332
8334
  const again = () => artifactFor(project, entry, moduleRoot);
8333
8335
  return running.promise.then(again, again);
8334
8336
  }
8335
- const snapshot = packageSnapshot(project);
8337
+ const snapshot = packageSnapshot(project, entry);
8336
8338
  if (sourceStamp(project.packagePath, moduleRoot, Boolean(project.hosted)) !== stamp) {
8337
8339
  return artifactFor(project, entry, moduleRoot);
8338
8340
  }
8339
8341
  const promise = compile(
8340
8342
  project.packagePath,
8341
- entry,
8342
8343
  stamp,
8343
8344
  moduleRoot,
8344
8345
  project.hosted,
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/expoSwiftContract.ts
4
4
  function record(value) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -17245,11 +17245,13 @@ function packageSources(packagePath) {
17245
17245
  }
17246
17246
  return files2;
17247
17247
  }
17248
- function packageSnapshot(project) {
17248
+ function packageSnapshot(project, entry) {
17249
17249
  const files2 = packageSources(project.packagePath);
17250
+ const layout = xcodeLayout(project.packagePath);
17250
17251
  const native = nativeSourceDescriptor(project.packagePath);
17251
17252
  return {
17252
17253
  files: files2,
17254
+ entry: layout ? xcodeInputKey(layout, import_node_path20.default.resolve(project.packagePath, entry), entry) : entry,
17253
17255
  resourcePaths: swiftImplicitResourcePaths(
17254
17256
  resourceCandidateFiles(project.packagePath).map(
17255
17257
  (file) => import_node_path20.default.relative(project.packagePath, file).split(import_node_path20.default.sep).join(import_node_path20.default.posix.sep)
@@ -17267,18 +17269,18 @@ function packageSnapshot(project) {
17267
17269
  } : {}
17268
17270
  };
17269
17271
  }
17270
- function snapshotCompileInput(snapshot, entry) {
17272
+ function snapshotCompileInput(snapshot) {
17271
17273
  const input = {
17272
17274
  files: snapshot.files,
17273
17275
  resourcePaths: snapshot.resourcePaths,
17274
17276
  resources: snapshot.bundleFiles.files,
17275
17277
  images: snapshot.resources.images,
17276
- entry,
17278
+ entry: snapshot.entry,
17277
17279
  oneModule: true
17278
17280
  };
17279
17281
  return snapshot.glue ? withNativeSourceGlue(input, snapshot.glue) : input;
17280
17282
  }
17281
- async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, snapshot) {
17283
+ async function compile(packagePath, stamp, moduleRootOverride, hosted, snapshot) {
17282
17284
  const resources = {
17283
17285
  table: snapshot.resources.table,
17284
17286
  colors: snapshot.resources.colors,
@@ -17292,7 +17294,7 @@ async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, sn
17292
17294
  };
17293
17295
  if (hosted)
17294
17296
  return {
17295
- ...await compileRemote(packagePath, entry, snapshot, hosted),
17297
+ ...await compileRemote(packagePath, snapshot, hosted),
17296
17298
  stamp,
17297
17299
  package: content
17298
17300
  };
@@ -17301,12 +17303,12 @@ async function compile(packagePath, entry, stamp, moduleRootOverride, hosted, sn
17301
17303
  ) ?? await swiftDistributionRoot();
17302
17304
  if (!moduleRoot)
17303
17305
  return {
17304
- ...await compileRemote(packagePath, entry, snapshot),
17306
+ ...await compileRemote(packagePath, snapshot),
17305
17307
  stamp,
17306
17308
  package: content
17307
17309
  };
17308
17310
  const toolchain = swiftModuleToolchain(moduleRoot);
17309
- const input = snapshotCompileInput(snapshot, entry);
17311
+ const input = snapshotCompileInput(snapshot);
17310
17312
  const targets = compileTargets(input).map((target) => target.name);
17311
17313
  const missing = missingSwiftModules(
17312
17314
  input.files,
@@ -17443,7 +17445,7 @@ async function missingModulesMessage(packagePath, missing) {
17443
17445
  })
17444
17446
  ].join("\n");
17445
17447
  }
17446
- async function compileRemote(packagePath, entry, snapshot, hosted) {
17448
+ async function compileRemote(packagePath, snapshot, hosted) {
17447
17449
  const auth = hosted ? null : resolveCliAuth();
17448
17450
  if (!hosted && (!auth || auth.kind === "github")) {
17449
17451
  throw new Error(
@@ -17477,7 +17479,7 @@ async function compileRemote(packagePath, entry, snapshot, hosted) {
17477
17479
  resourcePaths: snapshot.resourcePaths,
17478
17480
  resources: snapshot.bundleFiles.files,
17479
17481
  images: snapshot.resources.images,
17480
- entry,
17482
+ entry: snapshot.entry,
17481
17483
  packageId: descriptor?.packageId ?? swiftPackageId(packagePath)
17482
17484
  },
17483
17485
  origin,
@@ -17525,13 +17527,12 @@ function artifactFor(project, entry, moduleRoot) {
17525
17527
  const again = () => artifactFor(project, entry, moduleRoot);
17526
17528
  return running.promise.then(again, again);
17527
17529
  }
17528
- const snapshot = packageSnapshot(project);
17530
+ const snapshot = packageSnapshot(project, entry);
17529
17531
  if (sourceStamp(project.packagePath, moduleRoot, Boolean(project.hosted)) !== stamp) {
17530
17532
  return artifactFor(project, entry, moduleRoot);
17531
17533
  }
17532
17534
  const promise = compile(
17533
17535
  project.packagePath,
17534
- entry,
17535
17536
  stamp,
17536
17537
  moduleRoot,
17537
17538
  project.hosted,
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -5410,12 +5410,14 @@ var IDENTITY_ENV_VARS = [
5410
5410
  // vscode integrated terminal
5411
5411
  ];
5412
5412
  var IMMORTAL_HOST_COMM_RE = /^(?:tmux|screen)|^tm$/i;
5413
+ var INIT_COMM_RE = /^(?:init|systemd|launchd|tini|docker-init|dumb-init|catatonit|s6-svscan|runsvdir)$/i;
5413
5414
  function findTopAncestor(start, maxDepth = 20) {
5414
5415
  let prev = start;
5415
5416
  let pid = getParentPid(start);
5416
5417
  if (!pid || pid <= 1) {
5417
5418
  const comm = getProcessComm(start);
5418
- return start > 1 && comm && !IMMORTAL_HOST_COMM_RE.test(comm) ? start : null;
5419
+ if (!comm || start < 1 || IMMORTAL_HOST_COMM_RE.test(comm)) return null;
5420
+ return start > 1 || !INIT_COMM_RE.test(comm) ? start : null;
5419
5421
  }
5420
5422
  for (let i = 0; i < maxDepth; i++) {
5421
5423
  const comm = getProcessComm(pid);
@@ -5437,7 +5439,7 @@ function getCliIdentity() {
5437
5439
  }
5438
5440
  }
5439
5441
  const topPid = findTopAncestor(process.ppid);
5440
- if (topPid && topPid > 1) {
5442
+ if (topPid) {
5441
5443
  return { key: `gppid-${topPid}`, source: "grand-ppid", stable: true };
5442
5444
  }
5443
5445
  return { key: `pid-${process.ppid}`, source: "ppid", stable: false };
@@ -6941,6 +6943,8 @@ async function waitForSootsimIdle({
6941
6943
  if (paintStill && !last.screenPixels) blockers.push('screen pixels unavailable')
6942
6944
  else if (paintStill && !screenUnchanged(last.screenPixels)) blockers.push('screen pixels still changing')
6943
6945
  if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
6946
+ else if (last.requestTotal !== lastRequestTotal) blockers.push('new requests issued')
6947
+ if (polls < 2) blockers.push('sim too busy to poll twice')
6944
6948
  return {
6945
6949
  settled: false,
6946
6950
  elapsed: Date.now() - start,
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "Peach";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/native-app-identity.ts
4
4
  var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/native-firebase-metadata.ts
4
4
  var PREFIX = "globalThis.__peachNativeFirebaseConfig=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/plist.ts
4
4
  import plist from "plist";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1731,6 +1731,8 @@ async function waitForSootsimIdle({
1731
1731
  if (paintStill && !last.screenPixels) blockers.push('screen pixels unavailable')
1732
1732
  else if (paintStill && !screenUnchanged(last.screenPixels)) blockers.push('screen pixels still changing')
1733
1733
  if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
1734
+ else if (last.requestTotal !== lastRequestTotal) blockers.push('new requests issued')
1735
+ if (polls < 2) blockers.push('sim too busy to poll twice')
1734
1736
  return {
1735
1737
  settled: false,
1736
1738
  elapsed: Date.now() - start,
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.853 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.871 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1627,6 +1627,8 @@ async function waitForSootsimIdle({
1627
1627
  if (paintStill && !last.screenPixels) blockers.push('screen pixels unavailable')
1628
1628
  else if (paintStill && !screenUnchanged(last.screenPixels)) blockers.push('screen pixels still changing')
1629
1629
  if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
1630
+ else if (last.requestTotal !== lastRequestTotal) blockers.push('new requests issued')
1631
+ if (polls < 2) blockers.push('sim too busy to poll twice')
1630
1632
  return {
1631
1633
  settled: false,
1632
1634
  elapsed: Date.now() - start,