peachsim 0.1.834 → 0.1.836

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 (81) hide show
  1. package/cli/commands/project-report.ts +4 -1
  2. package/cli/desktop-companion.ts +2 -0
  3. package/detox/index.ts +70 -15
  4. package/dist-lib/agent-daemon-client.cjs +1 -1
  5. package/dist-lib/agent-events.cjs +1 -1
  6. package/dist-lib/agent-identity.cjs +1 -1
  7. package/dist-lib/agent-sessions.cjs +1 -1
  8. package/dist-lib/attached-projects.cjs +1 -1
  9. package/dist-lib/auth/shared-session.cjs +1 -1
  10. package/dist-lib/backend-origin.cjs +1 -1
  11. package/dist-lib/beta.cjs +1 -1
  12. package/dist-lib/beta.mjs +1 -1
  13. package/dist-lib/bridge-constants.cjs +1 -1
  14. package/dist-lib/bridge-contract-input.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.mjs +1 -1
  16. package/dist-lib/bridge-contract.cjs +1 -1
  17. package/dist-lib/bridge-contract.mjs +1 -1
  18. package/dist-lib/bundle-channel.cjs +9 -9
  19. package/dist-lib/capture-contract.cjs +1 -1
  20. package/dist-lib/capture-contract.mjs +1 -1
  21. package/dist-lib/cli-constants.cjs +1 -1
  22. package/dist-lib/cloud-contract.cjs +1 -1
  23. package/dist-lib/cloud-contract.mjs +1 -1
  24. package/dist-lib/cloud-test-args.cjs +1 -1
  25. package/dist-lib/cloud-test-args.mjs +1 -1
  26. package/dist-lib/cloud.cjs +1 -1
  27. package/dist-lib/cloud.mjs +1 -1
  28. package/dist-lib/config.cjs +1 -1
  29. package/dist-lib/detox/index.cjs +42 -13
  30. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  31. package/dist-lib/expo-swift-bundle.cjs +9 -9
  32. package/dist-lib/expo-swift-metadata.cjs +1 -1
  33. package/dist-lib/expo-swift-metadata.mjs +1 -1
  34. package/dist-lib/home-paths.cjs +1 -1
  35. package/dist-lib/host/bridge-host.cjs +9 -9
  36. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  38. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  39. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  40. package/dist-lib/host/websocket-proxy.cjs +1 -1
  41. package/dist-lib/index.cjs +1 -1
  42. package/dist-lib/jump-to-source-babel.cjs +1 -1
  43. package/dist-lib/jump-to-source-native.cjs +1 -1
  44. package/dist-lib/kotlin-host.cjs +1 -1
  45. package/dist-lib/menu.cjs +1 -1
  46. package/dist-lib/menu.mjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  48. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  49. package/dist-lib/metro-production-bundle.cjs +1 -1
  50. package/dist-lib/metro-production-bundle.mjs +1 -1
  51. package/dist-lib/metro.cjs +1 -1
  52. package/dist-lib/native-app-identity.cjs +1 -1
  53. package/dist-lib/native-app-identity.mjs +1 -1
  54. package/dist-lib/native-firebase-metadata.cjs +1 -1
  55. package/dist-lib/native-firebase-metadata.mjs +1 -1
  56. package/dist-lib/plist.cjs +1 -1
  57. package/dist-lib/plist.mjs +1 -1
  58. package/dist-lib/profiles.cjs +1 -1
  59. package/dist-lib/public-brand.cjs +1 -1
  60. package/dist-lib/react-native-host-modules.cjs +1 -1
  61. package/dist-lib/react-native-host-modules.mjs +1 -1
  62. package/dist-lib/render-mode.cjs +1 -1
  63. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  64. package/dist-lib/sdk.cjs +1 -1
  65. package/dist-lib/sdk.mjs +1 -1
  66. package/dist-lib/skills.cjs +9 -9
  67. package/dist-lib/swift-compile.cjs +1 -1
  68. package/dist-lib/swift-compile.mjs +1 -1
  69. package/dist-lib/swift-package.cjs +1 -1
  70. package/dist-lib/swift-package.mjs +1 -1
  71. package/dist-lib/swift-submit.cjs +1 -1
  72. package/dist-lib/swift-submit.mjs +1 -1
  73. package/dist-lib/swift-toolchain.cjs +1 -1
  74. package/dist-lib/swift.cjs +1 -1
  75. package/dist-lib/vite-swift.cjs +9 -9
  76. package/dist-lib/vite.cjs +1 -1
  77. package/dist-lib/worklet-executable.cjs +1 -1
  78. package/dist-lib/worklet-executable.mjs +1 -1
  79. package/package.json +1 -1
  80. package/src/desktop-host-delivery.ts +3 -0
  81. package/src/swift-distribution.lock.json +8 -8
@@ -304,7 +304,10 @@ export function createProjectReport(
304
304
  os: `${process.platform} ${release()}`,
305
305
  arch: process.arch,
306
306
  xcode:
307
- process.platform === 'darwin' ? toolVersion('xcodebuild', ['-version']) : null,
307
+ process.platform === 'darwin'
308
+ ? // runner-toolchain-platform: darwin
309
+ toolVersion('xcodebuild', ['-version'])
310
+ : null,
308
311
  node: toolVersion('node'),
309
312
  bun: toolVersion('bun'),
310
313
  peachCli: sanitizeProjectReportVersion(getCliVersion()),
@@ -136,6 +136,7 @@ function findMacApp(): DesktopCompanionInstall | null {
136
136
  }
137
137
 
138
138
  try {
139
+ // runner-toolchain-platform: darwin
139
140
  const result = execFileSync(
140
141
  'mdfind',
141
142
  [`kMDItemCFBundleIdentifier == "${PEACH_BUNDLE_ID}"`],
@@ -222,6 +223,7 @@ function findLinuxInstall(): DesktopCompanionInstall | null {
222
223
  function findWindowsInstall(): DesktopCompanionInstall | null {
223
224
  for (const hive of ['HKCU', 'HKLM']) {
224
225
  try {
226
+ // runner-toolchain-platform: win32
225
227
  const output = execFileSync(
226
228
  'reg',
227
229
  ['query', `${hive}\\Software\\Classes\\peach\\shell\\open\\command`, '/ve'],
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
@@ -1164,6 +1174,7 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
1164
1174
  if (typeof longPress !== 'function') {
1165
1175
  throw new Error('sootsim longPress bridge is not installed')
1166
1176
  }
1177
+ window.__sootsimAnchorTimedInput?.()
1167
1178
  await longPress(x, y, duration)
1168
1179
  },
1169
1180
  { duration, x: target.x, y: target.y },
@@ -1440,6 +1451,7 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
1440
1451
  if (typeof drag !== 'function') {
1441
1452
  throw new Error('sootsim interact bridge is not installed')
1442
1453
  }
1454
+ window.__sootsimAnchorTimedInput?.()
1443
1455
  await drag(fromX, fromY, toX, toY, steps, stepMs)
1444
1456
  },
1445
1457
  {
@@ -2861,6 +2873,7 @@ export const device = {
2861
2873
  label: string
2862
2874
  offsetMs: number
2863
2875
  actualMs: number
2876
+ captureCompletedMs: number
2864
2877
  captureRequestedAtMs: number
2865
2878
  path: string
2866
2879
  }>
@@ -2869,18 +2882,25 @@ export const device = {
2869
2882
  }> {
2870
2883
  const page = getPage()
2871
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
2872
2890
  const capturePromise: Promise<{
2873
2891
  captureAnchorMs: number
2874
2892
  frames: Array<{
2875
2893
  label: string
2876
2894
  offsetMs: number
2877
2895
  actualMs: number
2896
+ captureCompletedMs: number
2878
2897
  captureRequestedAtMs: number
2879
2898
  dataUrl: string
2880
2899
  }>
2881
2900
  }> = page.evaluate(
2882
2901
  async (input) => {
2883
2902
  type CaptureState = {
2903
+ anchorOnInput: boolean
2884
2904
  anchorPerformanceMs: number | null
2885
2905
  anchorWallMs: number | null
2886
2906
  cancelled: boolean
@@ -2910,12 +2930,23 @@ export const device = {
2910
2930
  captureWindow.__sootsimTimedCaptures ??
2911
2931
  (captureWindow.__sootsimTimedCaptures = {})
2912
2932
  const state: CaptureState = {
2933
+ anchorOnInput: input.anchorOnInput,
2913
2934
  anchorPerformanceMs: null,
2914
2935
  anchorWallMs: null,
2915
2936
  cancelled: false,
2916
2937
  ready: false,
2917
2938
  }
2918
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
+ }
2919
2950
  // initial warm-up: ensure the worker has produced at least one
2920
2951
  // frame after the menu's portal mount before we start sampling.
2921
2952
  // (a pump at higher cadence was tried and starved tap propagation —
@@ -2935,6 +2966,7 @@ export const device = {
2935
2966
  label: string
2936
2967
  offsetMs: number
2937
2968
  actualMs: number
2969
+ captureCompletedMs: number
2938
2970
  captureRequestedAtMs: number
2939
2971
  dataUrl: string | null
2940
2972
  }
@@ -2950,6 +2982,10 @@ export const device = {
2950
2982
  const fire = async () => {
2951
2983
  const actualMs = performance.now() - captureAnchorPerformanceMs
2952
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
2953
2989
  try {
2954
2990
  let dataUrl: string | null = null
2955
2991
  if (live && typeof live.captureFresh === 'function') {
@@ -2957,6 +2993,7 @@ export const device = {
2957
2993
  // worker round-trip. the background pump keeps the
2958
2994
  // canvas fresh.
2959
2995
  const { canvas } = await live.captureFresh()
2996
+ captureCompletedMs = performance.now() - captureAnchorPerformanceMs
2960
2997
  if (canvas) {
2961
2998
  const bmp = await createImageBitmap(canvas)
2962
2999
  const enc = document.createElement('canvas')
@@ -2972,11 +3009,13 @@ export const device = {
2972
3009
  }
2973
3010
  if (!dataUrl) {
2974
3011
  dataUrl = await screenshot({ format: 'png' })
3012
+ captureCompletedMs = performance.now() - captureAnchorPerformanceMs
2975
3013
  }
2976
3014
  resolve({
2977
3015
  label: stage.label,
2978
3016
  offsetMs: stage.offsetMs,
2979
3017
  actualMs,
3018
+ captureCompletedMs,
2980
3019
  captureRequestedAtMs,
2981
3020
  dataUrl,
2982
3021
  })
@@ -2985,6 +3024,7 @@ export const device = {
2985
3024
  label: stage.label,
2986
3025
  offsetMs: stage.offsetMs,
2987
3026
  actualMs,
3027
+ captureCompletedMs,
2988
3028
  captureRequestedAtMs,
2989
3029
  dataUrl: null,
2990
3030
  })
@@ -3006,6 +3046,7 @@ export const device = {
3006
3046
  label: string
3007
3047
  offsetMs: number
3008
3048
  actualMs: number
3049
+ captureCompletedMs: number
3009
3050
  captureRequestedAtMs: number
3010
3051
  dataUrl: string
3011
3052
  }> = []
@@ -3015,6 +3056,7 @@ export const device = {
3015
3056
  label: snap.label,
3016
3057
  offsetMs: snap.offsetMs,
3017
3058
  actualMs: snap.actualMs,
3059
+ captureCompletedMs: snap.captureCompletedMs,
3018
3060
  captureRequestedAtMs: snap.captureRequestedAtMs,
3019
3061
  dataUrl: snap.dataUrl,
3020
3062
  })
@@ -3022,7 +3064,7 @@ export const device = {
3022
3064
  delete registry[input.token]
3023
3065
  return { captureAnchorMs, frames: out }
3024
3066
  },
3025
- { stages, skipWarmup: options.skipWarmup === true, token },
3067
+ { anchorOnInput, stages, skipWarmup: options.skipWarmup === true, token },
3026
3068
  )
3027
3069
 
3028
3070
  await page.waitForFunction(
@@ -3038,7 +3080,7 @@ export const device = {
3038
3080
  { timeout: 5000 },
3039
3081
  )
3040
3082
 
3041
- const armCapture = (anchorMs?: number) =>
3083
+ const armCapture = (anchorMs: number) =>
3042
3084
  page.evaluate(
3043
3085
  ({ anchorMs, captureToken }) => {
3044
3086
  const registry = (
@@ -3055,9 +3097,8 @@ export const device = {
3055
3097
  ).__sootsimTimedCaptures
3056
3098
  const capture = registry?.[captureToken]
3057
3099
  if (!capture?.ready) throw new Error('peach timed capture was not armed')
3058
- const nowMs = Date.now()
3059
- capture.anchorWallMs = anchorMs ?? nowMs
3060
- capture.anchorPerformanceMs = performance.now() - (nowMs - capture.anchorWallMs)
3100
+ capture.anchorWallMs = anchorMs
3101
+ capture.anchorPerformanceMs = performance.now() - (Date.now() - anchorMs)
3061
3102
  return capture.anchorWallMs
3062
3103
  },
3063
3104
  { anchorMs, captureToken: token },
@@ -3067,17 +3108,29 @@ export const device = {
3067
3108
  let triggerCompletedMs = 0
3068
3109
  try {
3069
3110
  let captureAnchorMs: number
3070
- if (options.anchorAfterTrigger === false) {
3071
- captureAnchorMs = await armCapture()
3072
- triggerStartMs = captureAnchorMs
3073
- const triggerPromise = Promise.resolve()
3074
- .then(options.trigger)
3075
- .then(() => {
3076
- triggerCompletedMs = Date.now()
3077
- })
3078
- 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
3079
3132
  return {
3080
- captureAnchorMs,
3133
+ captureAnchorMs: capture.captureAnchorMs,
3081
3134
  frames: writeFastScreenshotFrames(namePrefix, capture.frames),
3082
3135
  triggerCompletedMs,
3083
3136
  triggerStartMs,
@@ -3259,6 +3312,7 @@ export const device = {
3259
3312
  await page.evaluate(
3260
3313
  async ({ x: tx, y: ty }) => {
3261
3314
  const interactTap = window.SootSim?.bridges?.interact?.tap
3315
+ window.__sootsimAnchorTimedInput?.()
3262
3316
  if (typeof interactTap === 'function') {
3263
3317
  const result = await interactTap(tx, ty)
3264
3318
  if (result && (typeof result !== 'object' || result.hit !== false)) return
@@ -3288,6 +3342,7 @@ export const device = {
3288
3342
  if (typeof longPress !== 'function') {
3289
3343
  throw new Error('sootsim longPress bridge is not installed')
3290
3344
  }
3345
+ window.__sootsimAnchorTimedInput?.()
3291
3346
  const hit = await longPress(px, py, ms)
3292
3347
  if (!hit) {
3293
3348
  throw new Error(`sootsim longPress missed at ${px},${py}`)
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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.834 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.836 | (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;