peachsim 0.1.833 → 0.1.835

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 (78) hide show
  1. package/detox/index.ts +82 -20
  2. package/dist-lib/agent-daemon-client.cjs +1 -1
  3. package/dist-lib/agent-events.cjs +1 -1
  4. package/dist-lib/agent-identity.cjs +1 -1
  5. package/dist-lib/agent-sessions.cjs +1 -1
  6. package/dist-lib/attached-projects.cjs +1 -1
  7. package/dist-lib/auth/shared-session.cjs +1 -1
  8. package/dist-lib/backend-origin.cjs +1 -1
  9. package/dist-lib/beta.cjs +1 -1
  10. package/dist-lib/beta.mjs +1 -1
  11. package/dist-lib/bridge-constants.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.mjs +1 -1
  14. package/dist-lib/bridge-contract.cjs +1 -1
  15. package/dist-lib/bridge-contract.mjs +1 -1
  16. package/dist-lib/bundle-channel.cjs +9 -9
  17. package/dist-lib/capture-contract.cjs +1 -1
  18. package/dist-lib/capture-contract.mjs +1 -1
  19. package/dist-lib/cli-constants.cjs +1 -1
  20. package/dist-lib/cloud-contract.cjs +1 -1
  21. package/dist-lib/cloud-contract.mjs +1 -1
  22. package/dist-lib/cloud-test-args.cjs +1 -1
  23. package/dist-lib/cloud-test-args.mjs +1 -1
  24. package/dist-lib/cloud.cjs +1 -1
  25. package/dist-lib/cloud.mjs +1 -1
  26. package/dist-lib/config.cjs +1 -1
  27. package/dist-lib/detox/index.cjs +48 -18
  28. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  29. package/dist-lib/expo-swift-bundle.cjs +9 -9
  30. package/dist-lib/expo-swift-metadata.cjs +1 -1
  31. package/dist-lib/expo-swift-metadata.mjs +1 -1
  32. package/dist-lib/home-paths.cjs +1 -1
  33. package/dist-lib/host/bridge-host.cjs +9 -9
  34. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  37. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  38. package/dist-lib/host/websocket-proxy.cjs +1 -1
  39. package/dist-lib/index.cjs +1 -1
  40. package/dist-lib/jump-to-source-babel.cjs +1 -1
  41. package/dist-lib/jump-to-source-native.cjs +1 -1
  42. package/dist-lib/kotlin-host.cjs +1 -1
  43. package/dist-lib/menu.cjs +1 -1
  44. package/dist-lib/menu.mjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  47. package/dist-lib/metro-production-bundle.cjs +1 -1
  48. package/dist-lib/metro-production-bundle.mjs +1 -1
  49. package/dist-lib/metro.cjs +1 -1
  50. package/dist-lib/native-app-identity.cjs +1 -1
  51. package/dist-lib/native-app-identity.mjs +1 -1
  52. package/dist-lib/native-firebase-metadata.cjs +1 -1
  53. package/dist-lib/native-firebase-metadata.mjs +1 -1
  54. package/dist-lib/plist.cjs +1 -1
  55. package/dist-lib/plist.mjs +1 -1
  56. package/dist-lib/profiles.cjs +1 -1
  57. package/dist-lib/public-brand.cjs +1 -1
  58. package/dist-lib/react-native-host-modules.cjs +1 -1
  59. package/dist-lib/react-native-host-modules.mjs +1 -1
  60. package/dist-lib/render-mode.cjs +1 -1
  61. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  62. package/dist-lib/sdk.cjs +1 -1
  63. package/dist-lib/sdk.mjs +1 -1
  64. package/dist-lib/skills.cjs +9 -9
  65. package/dist-lib/swift-compile.cjs +1 -1
  66. package/dist-lib/swift-compile.mjs +1 -1
  67. package/dist-lib/swift-package.cjs +1 -1
  68. package/dist-lib/swift-package.mjs +1 -1
  69. package/dist-lib/swift-submit.cjs +1 -1
  70. package/dist-lib/swift-submit.mjs +1 -1
  71. package/dist-lib/swift-toolchain.cjs +1 -1
  72. package/dist-lib/swift.cjs +1 -1
  73. package/dist-lib/vite-swift.cjs +9 -9
  74. package/dist-lib/vite.cjs +1 -1
  75. package/dist-lib/worklet-executable.cjs +1 -1
  76. package/dist-lib/worklet-executable.mjs +1 -1
  77. package/package.json +1 -1
  78. package/src/swift-distribution.lock.json +8 -8
package/detox/index.ts CHANGED
@@ -57,6 +57,15 @@ import type { Browser, BrowserContext, Page } from 'playwright-core'
57
57
  export { by }
58
58
  export type { SootSimElement } from './element-types'
59
59
 
60
+ declare global {
61
+ interface Window {
62
+ // installed by takeScreenshotStagesFast; each input action calls it just
63
+ // before handing its input to the engine so an input-anchored capture
64
+ // starts its stage clock at that dispatch
65
+ __sootsimAnchorTimedInput?: () => void
66
+ }
67
+ }
68
+
60
69
  const BASE_URL = process.env.PEACH_URL || 'http://localhost:5173'
61
70
  const SCREENSHOT_DIR =
62
71
  process.env.PEACH_SCREENSHOT_DIR ||
@@ -744,6 +753,7 @@ async function dispatchTapAtSootsimPoint(page: Page, x: number, y: number) {
744
753
  await page.evaluate(
745
754
  async ({ x, y }) => {
746
755
  const interactTap = window.SootSim?.bridges?.interact?.tap
756
+ window.__sootsimAnchorTimedInput?.()
747
757
  if (typeof interactTap === 'function') {
748
758
  const result = await interactTap(x, y)
749
759
  if (result && (typeof result !== 'object' || result.hit !== false)) return
@@ -762,7 +772,16 @@ async function isFocusedTextInputNode(page: Page, nodeInfo: any): Promise<boolea
762
772
  const focused = await page.evaluate(
763
773
  async () => (await window.__sootsimTest!.getFocusedNode?.()) ?? null,
764
774
  )
765
- return !!focused && typeof focused === 'object' && focused.nodeId === nodeInfo?.nodeId
775
+ return !!focused && focusIsWithin(focused, nodeInfo?.nodeId)
776
+ }
777
+
778
+ // espresso's typeText taps the matched view and types into whatever took
779
+ // focus, so a native host whose editor child holds focus takes the text.
780
+ function focusIsWithin(
781
+ focused: { nodeId: number; ancestorNodeIds: number[] },
782
+ nodeId: number,
783
+ ): boolean {
784
+ return focused.nodeId === nodeId || focused.ancestorNodeIds.includes(nodeId)
766
785
  }
767
786
 
768
787
  async function focusElementForTextEntry(el: SootSimElement): Promise<void> {
@@ -777,10 +796,8 @@ async function focusElementForTextEntry(el: SootSimElement): Promise<void> {
777
796
  // would edit around a caret the tap then moves, so wait for its focus.
778
797
  await pollUntil(
779
798
  () =>
780
- page.evaluate(
781
- async () => (await window.__sootsimTest!.getFocusedNode?.())?.nodeId ?? null,
782
- ),
783
- (focusedNodeId) => focusedNodeId === node.nodeId,
799
+ page.evaluate(async () => (await window.__sootsimTest!.getFocusedNode?.()) ?? null),
800
+ (focused) => focused !== null && focusIsWithin(focused, node.nodeId),
784
801
  {
785
802
  timeoutMs: 5000,
786
803
  label: `SootSim text input ${node.nodeId} to focus`,
@@ -1157,6 +1174,7 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
1157
1174
  if (typeof longPress !== 'function') {
1158
1175
  throw new Error('sootsim longPress bridge is not installed')
1159
1176
  }
1177
+ window.__sootsimAnchorTimedInput?.()
1160
1178
  await longPress(x, y, duration)
1161
1179
  },
1162
1180
  { duration, x: target.x, y: target.y },
@@ -1433,6 +1451,7 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
1433
1451
  if (typeof drag !== 'function') {
1434
1452
  throw new Error('sootsim interact bridge is not installed')
1435
1453
  }
1454
+ window.__sootsimAnchorTimedInput?.()
1436
1455
  await drag(fromX, fromY, toX, toY, steps, stepMs)
1437
1456
  },
1438
1457
  {
@@ -2854,6 +2873,7 @@ export const device = {
2854
2873
  label: string
2855
2874
  offsetMs: number
2856
2875
  actualMs: number
2876
+ captureCompletedMs: number
2857
2877
  captureRequestedAtMs: number
2858
2878
  path: string
2859
2879
  }>
@@ -2862,18 +2882,25 @@ export const device = {
2862
2882
  }> {
2863
2883
  const page = getPage()
2864
2884
  const token = `timed-${process.pid}-${Date.now()}-${Math.random()}`
2885
+ // anchorAfterTrigger false anchors the stages at the moment the trigger
2886
+ // hands its input to the engine's interact bridge, after the trigger has
2887
+ // resolved its target. arming before the trigger counted node resolution
2888
+ // and layout polling as elapsed press time.
2889
+ const anchorOnInput = options.anchorAfterTrigger === false
2865
2890
  const capturePromise: Promise<{
2866
2891
  captureAnchorMs: number
2867
2892
  frames: Array<{
2868
2893
  label: string
2869
2894
  offsetMs: number
2870
2895
  actualMs: number
2896
+ captureCompletedMs: number
2871
2897
  captureRequestedAtMs: number
2872
2898
  dataUrl: string
2873
2899
  }>
2874
2900
  }> = page.evaluate(
2875
2901
  async (input) => {
2876
2902
  type CaptureState = {
2903
+ anchorOnInput: boolean
2877
2904
  anchorPerformanceMs: number | null
2878
2905
  anchorWallMs: number | null
2879
2906
  cancelled: boolean
@@ -2903,12 +2930,23 @@ export const device = {
2903
2930
  captureWindow.__sootsimTimedCaptures ??
2904
2931
  (captureWindow.__sootsimTimedCaptures = {})
2905
2932
  const state: CaptureState = {
2933
+ anchorOnInput: input.anchorOnInput,
2906
2934
  anchorPerformanceMs: null,
2907
2935
  anchorWallMs: null,
2908
2936
  cancelled: false,
2909
2937
  ready: false,
2910
2938
  }
2911
2939
  registry[input.token] = state
2940
+ window.__sootsimAnchorTimedInput = () => {
2941
+ const anchorPerformanceMs = performance.now()
2942
+ const anchorWallMs = Date.now()
2943
+ for (const capture of Object.values(registry)) {
2944
+ if (!capture.anchorOnInput || !capture.ready) continue
2945
+ if (capture.anchorPerformanceMs !== null) continue
2946
+ capture.anchorPerformanceMs = anchorPerformanceMs
2947
+ capture.anchorWallMs = anchorWallMs
2948
+ }
2949
+ }
2912
2950
  // initial warm-up: ensure the worker has produced at least one
2913
2951
  // frame after the menu's portal mount before we start sampling.
2914
2952
  // (a pump at higher cadence was tried and starved tap propagation —
@@ -2928,6 +2966,7 @@ export const device = {
2928
2966
  label: string
2929
2967
  offsetMs: number
2930
2968
  actualMs: number
2969
+ captureCompletedMs: number
2931
2970
  captureRequestedAtMs: number
2932
2971
  dataUrl: string | null
2933
2972
  }
@@ -2943,6 +2982,10 @@ export const device = {
2943
2982
  const fire = async () => {
2944
2983
  const actualMs = performance.now() - captureAnchorPerformanceMs
2945
2984
  const captureRequestedAtMs = Date.now()
2985
+ // the sample's content is fixed somewhere between the
2986
+ // request and the completed composite paint; the engine
2987
+ // exposes no producer timestamp for the frame it reads.
2988
+ let captureCompletedMs = actualMs
2946
2989
  try {
2947
2990
  let dataUrl: string | null = null
2948
2991
  if (live && typeof live.captureFresh === 'function') {
@@ -2950,6 +2993,7 @@ export const device = {
2950
2993
  // worker round-trip. the background pump keeps the
2951
2994
  // canvas fresh.
2952
2995
  const { canvas } = await live.captureFresh()
2996
+ captureCompletedMs = performance.now() - captureAnchorPerformanceMs
2953
2997
  if (canvas) {
2954
2998
  const bmp = await createImageBitmap(canvas)
2955
2999
  const enc = document.createElement('canvas')
@@ -2965,11 +3009,13 @@ export const device = {
2965
3009
  }
2966
3010
  if (!dataUrl) {
2967
3011
  dataUrl = await screenshot({ format: 'png' })
3012
+ captureCompletedMs = performance.now() - captureAnchorPerformanceMs
2968
3013
  }
2969
3014
  resolve({
2970
3015
  label: stage.label,
2971
3016
  offsetMs: stage.offsetMs,
2972
3017
  actualMs,
3018
+ captureCompletedMs,
2973
3019
  captureRequestedAtMs,
2974
3020
  dataUrl,
2975
3021
  })
@@ -2978,6 +3024,7 @@ export const device = {
2978
3024
  label: stage.label,
2979
3025
  offsetMs: stage.offsetMs,
2980
3026
  actualMs,
3027
+ captureCompletedMs,
2981
3028
  captureRequestedAtMs,
2982
3029
  dataUrl: null,
2983
3030
  })
@@ -2999,6 +3046,7 @@ export const device = {
2999
3046
  label: string
3000
3047
  offsetMs: number
3001
3048
  actualMs: number
3049
+ captureCompletedMs: number
3002
3050
  captureRequestedAtMs: number
3003
3051
  dataUrl: string
3004
3052
  }> = []
@@ -3008,6 +3056,7 @@ export const device = {
3008
3056
  label: snap.label,
3009
3057
  offsetMs: snap.offsetMs,
3010
3058
  actualMs: snap.actualMs,
3059
+ captureCompletedMs: snap.captureCompletedMs,
3011
3060
  captureRequestedAtMs: snap.captureRequestedAtMs,
3012
3061
  dataUrl: snap.dataUrl,
3013
3062
  })
@@ -3015,7 +3064,7 @@ export const device = {
3015
3064
  delete registry[input.token]
3016
3065
  return { captureAnchorMs, frames: out }
3017
3066
  },
3018
- { stages, skipWarmup: options.skipWarmup === true, token },
3067
+ { anchorOnInput, stages, skipWarmup: options.skipWarmup === true, token },
3019
3068
  )
3020
3069
 
3021
3070
  await page.waitForFunction(
@@ -3031,7 +3080,7 @@ export const device = {
3031
3080
  { timeout: 5000 },
3032
3081
  )
3033
3082
 
3034
- const armCapture = (anchorMs?: number) =>
3083
+ const armCapture = (anchorMs: number) =>
3035
3084
  page.evaluate(
3036
3085
  ({ anchorMs, captureToken }) => {
3037
3086
  const registry = (
@@ -3048,9 +3097,8 @@ export const device = {
3048
3097
  ).__sootsimTimedCaptures
3049
3098
  const capture = registry?.[captureToken]
3050
3099
  if (!capture?.ready) throw new Error('peach timed capture was not armed')
3051
- const nowMs = Date.now()
3052
- capture.anchorWallMs = anchorMs ?? nowMs
3053
- capture.anchorPerformanceMs = performance.now() - (nowMs - capture.anchorWallMs)
3100
+ capture.anchorWallMs = anchorMs
3101
+ capture.anchorPerformanceMs = performance.now() - (Date.now() - anchorMs)
3054
3102
  return capture.anchorWallMs
3055
3103
  },
3056
3104
  { anchorMs, captureToken: token },
@@ -3060,17 +3108,29 @@ export const device = {
3060
3108
  let triggerCompletedMs = 0
3061
3109
  try {
3062
3110
  let captureAnchorMs: number
3063
- if (options.anchorAfterTrigger === false) {
3064
- captureAnchorMs = await armCapture()
3065
- triggerStartMs = captureAnchorMs
3066
- const triggerPromise = Promise.resolve()
3067
- .then(options.trigger)
3068
- .then(() => {
3069
- triggerCompletedMs = Date.now()
3070
- })
3071
- const [capture] = await Promise.all([capturePromise, triggerPromise])
3111
+ if (anchorOnInput) {
3112
+ triggerStartMs = Date.now()
3113
+ await Promise.resolve(options.trigger())
3114
+ triggerCompletedMs = Date.now()
3115
+ // the capture deletes its entry once every stage is sampled, which
3116
+ // can precede a long trigger's return; only a live entry can be unanchored
3117
+ const unanchored = await page.evaluate(
3118
+ (captureToken) =>
3119
+ (
3120
+ window as Window & {
3121
+ __sootsimTimedCaptures?: Record<string, { anchorWallMs: number | null }>
3122
+ }
3123
+ ).__sootsimTimedCaptures?.[captureToken]?.anchorWallMs === null,
3124
+ token,
3125
+ )
3126
+ if (unanchored) {
3127
+ throw new Error(
3128
+ 'peach timed capture: the trigger completed without dispatching input to anchor its stages',
3129
+ )
3130
+ }
3131
+ const capture = await capturePromise
3072
3132
  return {
3073
- captureAnchorMs,
3133
+ captureAnchorMs: capture.captureAnchorMs,
3074
3134
  frames: writeFastScreenshotFrames(namePrefix, capture.frames),
3075
3135
  triggerCompletedMs,
3076
3136
  triggerStartMs,
@@ -3252,6 +3312,7 @@ export const device = {
3252
3312
  await page.evaluate(
3253
3313
  async ({ x: tx, y: ty }) => {
3254
3314
  const interactTap = window.SootSim?.bridges?.interact?.tap
3315
+ window.__sootsimAnchorTimedInput?.()
3255
3316
  if (typeof interactTap === 'function') {
3256
3317
  const result = await interactTap(tx, ty)
3257
3318
  if (result && (typeof result !== 'object' || result.hit !== false)) return
@@ -3281,6 +3342,7 @@ export const device = {
3281
3342
  if (typeof longPress !== 'function') {
3282
3343
  throw new Error('sootsim longPress bridge is not installed')
3283
3344
  }
3345
+ window.__sootsimAnchorTimedInput?.()
3284
3346
  const hit = await longPress(px, py, ms)
3285
3347
  if (!hit) {
3286
3348
  throw new Error(`sootsim longPress missed at ${px},${py}`)
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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;
@@ -2369,24 +2369,24 @@ var swift_distribution_lock_default;
2369
2369
  var init_swift_distribution_lock = __esm({
2370
2370
  "src/swift-distribution.lock.json"() {
2371
2371
  swift_distribution_lock_default = {
2372
- id: "642e8ba58c1377f3",
2372
+ id: "8a53b074b33eb8b5",
2373
2373
  release: "swift-6.3-RELEASE",
2374
2374
  wasmSdkId: "swift-6.3-RELEASE_wasm-peach-41921598-peach-edd95e37",
2375
2375
  wasmSdkUrl: "https://r2.rnxsim.com/swift-wasm-sdk/swift-6.3-RELEASE_wasm-peach-41921598-peach-edd95e37.artifactbundle.tar.gz",
2376
2376
  wasmSdkChecksum: "e8b76a6b78c21e9e16a6943a691ea001aeb0a18518d775a26130520303eb5c6d",
2377
- source: "190b339124af00c8f241d98d37d87e7e21aef602",
2377
+ source: "882ff4ff4b262e108926af9d13985fba69132c1a",
2378
2378
  hosts: {
2379
2379
  "darwin-arm64": {
2380
- sha256: "0767f112f7eeb60f75d06771c88c90dcf8c1441b8ae37436e87e97362ef6f5cd",
2381
- size: 38560393
2380
+ sha256: "6199b51b4d4f963db72bff2fc7174d7944bbf7c6f0379b58fc9fe1db81081dd7",
2381
+ size: 39773614
2382
2382
  },
2383
2383
  "linux-x64": {
2384
- sha256: "20f9ff482226897fd165361ffd81a2dbed0f3fd99d1cb0fe764afe23f38b2d06",
2385
- size: 38565958
2384
+ sha256: "dd414d2c73175b5ea4e142f414615e2648102f827a998b8a80edf3c0a8acbb0f",
2385
+ size: 39779064
2386
2386
  },
2387
2387
  "linux-arm64": {
2388
- sha256: "51ffea003f2d6b701daed2df9e6f22b5edd1c3d5977961b7a73f096a88c0599c",
2389
- size: 38564898
2388
+ sha256: "67396e3baa888a4463ecfdeb9f14996e8f5ee397c181e64cf0e82868b27d3463",
2389
+ size: 39778119
2390
2390
  }
2391
2391
  }
2392
2392
  };
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.833 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.835 | (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;