peachsim 0.1.838 → 0.1.853
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.
- package/cli/commands/control.ts +7 -0
- package/cli/ws-bridge.ts +16 -5
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/bundle-channel.cjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +1 -1
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +7 -12
- package/dist-lib/host/fetch-proxy-handler.cjs +4 -3
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +26 -18
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/package.json +1 -1
- package/skills/contrast/SKILL.md +1 -0
- package/src/host/fetch-proxy-handler.ts +11 -3
- package/src/host/fetch-proxy-transport.ts +3 -1
package/cli/commands/control.ts
CHANGED
|
@@ -368,6 +368,8 @@ function looksLikeSootsimUrl(target: string): boolean {
|
|
|
368
368
|
url.searchParams.has('port') ||
|
|
369
369
|
url.searchParams.has('bundle') ||
|
|
370
370
|
url.searchParams.has('demo') ||
|
|
371
|
+
url.searchParams.has('test') ||
|
|
372
|
+
url.searchParams.has('case') ||
|
|
371
373
|
url.pathname.includes(PEACH_SIMULATOR_SHELL_FILE) ||
|
|
372
374
|
isPeachSimulatorDocumentPath(pathname) ||
|
|
373
375
|
pathname === '/sootsim' ||
|
|
@@ -533,6 +535,9 @@ function buildConnectOpenUrl(target: string, baseUrl: string): string {
|
|
|
533
535
|
}
|
|
534
536
|
|
|
535
537
|
function shouldResolveBundleTargetInCli(target: string): boolean {
|
|
538
|
+
// a shell url already names its app; resolving it as a dev server turned
|
|
539
|
+
// http://localhost:5173/?demo=x into the native app /rn/443.
|
|
540
|
+
if (looksLikeSootsimUrl(target)) return false
|
|
536
541
|
const normalizedTarget = normalizeKnownTarget(target)
|
|
537
542
|
if (/^\d+$/.test(normalizedTarget)) return true
|
|
538
543
|
if (/^https?:\/\//i.test(normalizedTarget)) return true
|
|
@@ -2530,3 +2535,5 @@ export async function runCloseCommand(args: string[], opts: ControlCommandOption
|
|
|
2530
2535
|
bridge.close()
|
|
2531
2536
|
}
|
|
2532
2537
|
}
|
|
2538
|
+
|
|
2539
|
+
export { looksLikeSootsimUrl, shouldResolveBundleTargetInCli, looksLikeShellPathTarget }
|
package/cli/ws-bridge.ts
CHANGED
|
@@ -997,8 +997,18 @@ async function resolveBridgePortForSim(parsed: ParsedBridgeCliArgs): Promise<num
|
|
|
997
997
|
}
|
|
998
998
|
}),
|
|
999
999
|
)
|
|
1000
|
-
const
|
|
1001
|
-
|
|
1000
|
+
const owners = checked.filter((world) => world.ownsSim)
|
|
1001
|
+
// an explicit --port names the world; the same alias in another world never
|
|
1002
|
+
// redirects it.
|
|
1003
|
+
if (parsed.explicitPort) {
|
|
1004
|
+
if (owners.some((world) => world.port === parsed.wsPort)) return parsed.wsPort
|
|
1005
|
+
if (owners.length > 0) {
|
|
1006
|
+
throw new Error(
|
|
1007
|
+
`--sim ${parsed.simId} belongs to bridge port ${owners[0].port}, but --port ${parsed.wsPort} names another world`,
|
|
1008
|
+
)
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
if (owners.length === 0) {
|
|
1002
1012
|
const names = checked.map(
|
|
1003
1013
|
(world) =>
|
|
1004
1014
|
`${world.record} (bridge :${world.port}${'error' in world ? `, ${world.error}` : ''})`,
|
|
@@ -1007,12 +1017,13 @@ async function resolveBridgePortForSim(parsed: ParsedBridgeCliArgs): Promise<num
|
|
|
1007
1017
|
`no live peach world holds sim ${parsed.simId}; worlds checked: ${names.join(', ') || 'none (no fresh dev-bridge or daemon lockfiles)'}`,
|
|
1008
1018
|
)
|
|
1009
1019
|
}
|
|
1010
|
-
if (
|
|
1020
|
+
if (owners.length > 1) {
|
|
1021
|
+
const candidates = owners.map((w) => `${w.record} (:${w.port})`).join(', ')
|
|
1011
1022
|
throw new Error(
|
|
1012
|
-
|
|
1023
|
+
`sim ${parsed.simId} exists in multiple worlds (${candidates}); pin one with --port`,
|
|
1013
1024
|
)
|
|
1014
1025
|
}
|
|
1015
|
-
return
|
|
1026
|
+
return owners[0].port
|
|
1016
1027
|
}
|
|
1017
1028
|
|
|
1018
1029
|
interface SimHealthProbe {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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;
|
|
@@ -2466,14 +2466,6 @@ function getDevice(model, posture, orientation, landscapeSide) {
|
|
|
2466
2466
|
// the fold band exists on the open profile even though the os region
|
|
2467
2467
|
// reads inactive while flat; two-group compositions anchor to its centre.
|
|
2468
2468
|
reservedDivisionWidth: DUO_DIVISION_REGION_WIDTH,
|
|
2469
|
-
// the ios 27.1 duo simulator's open display delivers a tap at y 20 and
|
|
2470
|
-
// below to the app across the whole window and none above it
|
|
2471
|
-
// (plans/contrast/duo-platform.md)
|
|
2472
|
-
systemTopEdgeHeight: 20,
|
|
2473
|
-
// reservedRegions' system-control occlusion on the ios 27.1 duo
|
|
2474
|
-
// simulator's open display; taps at x 900, y 10..60 never reach the app
|
|
2475
|
-
// and y 130 does (plans/contrast/duo-platform.md)
|
|
2476
|
-
systemControlRegion: isRotatedPortrait ? { x: 585, y: 0, width: 84, height: 120 } : { x: 867, y: 0, width: 84, height: 120 },
|
|
2477
2469
|
orientation: resolvedOrientation,
|
|
2478
2470
|
// open inner display in landscape carries the same trailing column as
|
|
2479
2471
|
// the closed outer display, so it takes the same 84pt inset: a ~50pt
|
|
@@ -19683,7 +19675,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
19683
19675
|
},
|
|
19684
19676
|
resolve5
|
|
19685
19677
|
);
|
|
19686
|
-
const abort = () => proxyReq.destroy(
|
|
19678
|
+
const abort = () => proxyReq.destroy();
|
|
19687
19679
|
req.once("aborted", abort);
|
|
19688
19680
|
proxyReq.once("close", () => req.off("aborted", abort));
|
|
19689
19681
|
proxyReq.on("error", reject);
|
|
@@ -19753,7 +19745,8 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
19753
19745
|
}
|
|
19754
19746
|
}
|
|
19755
19747
|
}
|
|
19756
|
-
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
19748
|
+
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
19749
|
+
req.stream.destroy(new Error("fetch proxy upstream failed", { cause: err }));
|
|
19757
19750
|
else req.socket.destroy();
|
|
19758
19751
|
}
|
|
19759
19752
|
}
|
|
@@ -19897,7 +19890,9 @@ async function startFetchProxyTransport(identityPath) {
|
|
|
19897
19890
|
res.end();
|
|
19898
19891
|
return;
|
|
19899
19892
|
}
|
|
19900
|
-
void handleFetchProxyRequest(req, res).catch(
|
|
19893
|
+
void handleFetchProxyRequest(req, res).catch(
|
|
19894
|
+
(error) => res.destroy(new Error("fetch proxy failed", { cause: error }))
|
|
19895
|
+
);
|
|
19901
19896
|
}
|
|
19902
19897
|
);
|
|
19903
19898
|
server.on("session", (session) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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;
|
|
@@ -301,7 +301,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
301
301
|
},
|
|
302
302
|
resolve
|
|
303
303
|
);
|
|
304
|
-
const abort = () => proxyReq.destroy(
|
|
304
|
+
const abort = () => proxyReq.destroy();
|
|
305
305
|
req.once("aborted", abort);
|
|
306
306
|
proxyReq.once("close", () => req.off("aborted", abort));
|
|
307
307
|
proxyReq.on("error", reject);
|
|
@@ -371,7 +371,8 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
|
-
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
374
|
+
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
375
|
+
req.stream.destroy(new Error("fetch proxy upstream failed", { cause: err }));
|
|
375
376
|
else req.socket.destroy();
|
|
376
377
|
}
|
|
377
378
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/kotlin-host.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/plist.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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/plist.mjs
CHANGED
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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);
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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;
|
|
@@ -39639,7 +39639,7 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
39639
39639
|
},
|
|
39640
39640
|
resolve10
|
|
39641
39641
|
);
|
|
39642
|
-
const abort = () => proxyReq.destroy(
|
|
39642
|
+
const abort = () => proxyReq.destroy();
|
|
39643
39643
|
req.once("aborted", abort);
|
|
39644
39644
|
proxyReq.once("close", () => req.off("aborted", abort));
|
|
39645
39645
|
proxyReq.on("error", reject);
|
|
@@ -39709,7 +39709,8 @@ async function handleFetchProxyRequest(req, res) {
|
|
|
39709
39709
|
}
|
|
39710
39710
|
}
|
|
39711
39711
|
}
|
|
39712
|
-
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
39712
|
+
if (req instanceof import_node_http2.Http2ServerRequest)
|
|
39713
|
+
req.stream.destroy(new Error("fetch proxy upstream failed", { cause: err }));
|
|
39713
39714
|
else req.socket.destroy();
|
|
39714
39715
|
}
|
|
39715
39716
|
}
|
|
@@ -39874,7 +39875,9 @@ async function startFetchProxyTransport(identityPath) {
|
|
|
39874
39875
|
res.end();
|
|
39875
39876
|
return;
|
|
39876
39877
|
}
|
|
39877
|
-
void handleFetchProxyRequest(req, res).catch(
|
|
39878
|
+
void handleFetchProxyRequest(req, res).catch(
|
|
39879
|
+
(error) => res.destroy(new Error("fetch proxy failed", { cause: error }))
|
|
39880
|
+
);
|
|
39878
39881
|
}
|
|
39879
39882
|
);
|
|
39880
39883
|
server.on("session", (session) => {
|
|
@@ -41567,14 +41570,6 @@ function getDevice(model, posture, orientation, landscapeSide) {
|
|
|
41567
41570
|
// the fold band exists on the open profile even though the os region
|
|
41568
41571
|
// reads inactive while flat; two-group compositions anchor to its centre.
|
|
41569
41572
|
reservedDivisionWidth: DUO_DIVISION_REGION_WIDTH,
|
|
41570
|
-
// the ios 27.1 duo simulator's open display delivers a tap at y 20 and
|
|
41571
|
-
// below to the app across the whole window and none above it
|
|
41572
|
-
// (plans/contrast/duo-platform.md)
|
|
41573
|
-
systemTopEdgeHeight: 20,
|
|
41574
|
-
// reservedRegions' system-control occlusion on the ios 27.1 duo
|
|
41575
|
-
// simulator's open display; taps at x 900, y 10..60 never reach the app
|
|
41576
|
-
// and y 130 does (plans/contrast/duo-platform.md)
|
|
41577
|
-
systemControlRegion: isRotatedPortrait ? { x: 585, y: 0, width: 84, height: 120 } : { x: 867, y: 0, width: 84, height: 120 },
|
|
41578
41573
|
orientation: resolvedOrientation,
|
|
41579
41574
|
// open inner display in landscape carries the same trailing column as
|
|
41580
41575
|
// the closed outer display, so it takes the same 84pt inset: a ~50pt
|
|
@@ -48564,8 +48559,16 @@ async function resolveBridgePortForSim(parsed) {
|
|
|
48564
48559
|
}
|
|
48565
48560
|
})
|
|
48566
48561
|
);
|
|
48567
|
-
const
|
|
48568
|
-
if (
|
|
48562
|
+
const owners = checked.filter((world) => world.ownsSim);
|
|
48563
|
+
if (parsed.explicitPort) {
|
|
48564
|
+
if (owners.some((world) => world.port === parsed.wsPort)) return parsed.wsPort;
|
|
48565
|
+
if (owners.length > 0) {
|
|
48566
|
+
throw new Error(
|
|
48567
|
+
`--sim ${parsed.simId} belongs to bridge port ${owners[0].port}, but --port ${parsed.wsPort} names another world`
|
|
48568
|
+
);
|
|
48569
|
+
}
|
|
48570
|
+
}
|
|
48571
|
+
if (owners.length === 0) {
|
|
48569
48572
|
const names = checked.map(
|
|
48570
48573
|
(world) => `${world.record} (bridge :${world.port}${"error" in world ? `, ${world.error}` : ""})`
|
|
48571
48574
|
);
|
|
@@ -48573,12 +48576,13 @@ async function resolveBridgePortForSim(parsed) {
|
|
|
48573
48576
|
`no live peach world holds sim ${parsed.simId}; worlds checked: ${names.join(", ") || "none (no fresh dev-bridge or daemon lockfiles)"}`
|
|
48574
48577
|
);
|
|
48575
48578
|
}
|
|
48576
|
-
if (
|
|
48579
|
+
if (owners.length > 1) {
|
|
48580
|
+
const candidates = owners.map((w) => `${w.record} (:${w.port})`).join(", ");
|
|
48577
48581
|
throw new Error(
|
|
48578
|
-
|
|
48582
|
+
`sim ${parsed.simId} exists in multiple worlds (${candidates}); pin one with --port`
|
|
48579
48583
|
);
|
|
48580
48584
|
}
|
|
48581
|
-
return
|
|
48585
|
+
return owners[0].port;
|
|
48582
48586
|
}
|
|
48583
48587
|
function describeVisibleSimCandidate(sims, currentId) {
|
|
48584
48588
|
const open = sims.filter((sim) => sim.readyState === "open" && sim.id !== currentId);
|
|
@@ -53455,6 +53459,8 @@ __export(control_exports, {
|
|
|
53455
53459
|
buildShellUrl: () => buildShellUrl,
|
|
53456
53460
|
closeSimsBulk: () => closeSimsBulk,
|
|
53457
53461
|
ensureBridgeForOpen: () => ensureBridgeForOpen,
|
|
53462
|
+
looksLikeShellPathTarget: () => looksLikeShellPathTarget,
|
|
53463
|
+
looksLikeSootsimUrl: () => looksLikeSootsimUrl,
|
|
53458
53464
|
planBulkCloseTargets: () => planBulkCloseTargets,
|
|
53459
53465
|
playwrightHostPidForSim: () => playwrightHostPidForSim,
|
|
53460
53466
|
printOpenedSim: () => printOpenedSim,
|
|
@@ -53467,6 +53473,7 @@ __export(control_exports, {
|
|
|
53467
53473
|
runLinkCommand: () => runLinkCommand,
|
|
53468
53474
|
runOpenCommand: () => runOpenCommand,
|
|
53469
53475
|
runUseCommand: () => runUseCommand,
|
|
53476
|
+
shouldResolveBundleTargetInCli: () => shouldResolveBundleTargetInCli,
|
|
53470
53477
|
signalDriverLaunchConnected: () => signalDriverLaunchConnected,
|
|
53471
53478
|
terminatePlaywrightHostsForSims: () => terminatePlaywrightHostsForSims,
|
|
53472
53479
|
waitForSimMatch: () => waitForSimMatch,
|
|
@@ -53626,7 +53633,7 @@ function looksLikeSootsimUrl(target) {
|
|
|
53626
53633
|
try {
|
|
53627
53634
|
const url = new URL(target);
|
|
53628
53635
|
const pathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
53629
|
-
return url.searchParams.has("open") || url.searchParams.has("port") || url.searchParams.has("bundle") || url.searchParams.has("demo") || url.pathname.includes(PEACH_SIMULATOR_SHELL_FILE) || isPeachSimulatorDocumentPath(pathname) || pathname === "/sootsim" || url.pathname === "/__soot" || url.pathname === "/__soot/" || pathname === "/rn" || /^\/rn\/[^/]+$/i.test(pathname) || /^\/app\/[^/]+$/i.test(pathname) || pathname === "/__soot/rn" || /^\/__soot\/rn\/[^/]+$/i.test(pathname) || /^\/__soot\/app\/[^/]+$/i.test(pathname);
|
|
53636
|
+
return url.searchParams.has("open") || url.searchParams.has("port") || url.searchParams.has("bundle") || url.searchParams.has("demo") || url.searchParams.has("test") || url.searchParams.has("case") || url.pathname.includes(PEACH_SIMULATOR_SHELL_FILE) || isPeachSimulatorDocumentPath(pathname) || pathname === "/sootsim" || url.pathname === "/__soot" || url.pathname === "/__soot/" || pathname === "/rn" || /^\/rn\/[^/]+$/i.test(pathname) || /^\/app\/[^/]+$/i.test(pathname) || pathname === "/__soot/rn" || /^\/__soot\/rn\/[^/]+$/i.test(pathname) || /^\/__soot\/app\/[^/]+$/i.test(pathname);
|
|
53630
53637
|
} catch {
|
|
53631
53638
|
return false;
|
|
53632
53639
|
}
|
|
@@ -53726,6 +53733,7 @@ function buildConnectOpenUrl(target, baseUrl) {
|
|
|
53726
53733
|
return url.toString();
|
|
53727
53734
|
}
|
|
53728
53735
|
function shouldResolveBundleTargetInCli(target) {
|
|
53736
|
+
if (looksLikeSootsimUrl(target)) return false;
|
|
53729
53737
|
const normalizedTarget = normalizeKnownTarget(target);
|
|
53730
53738
|
if (/^\d+$/.test(normalizedTarget)) return true;
|
|
53731
53739
|
if (/^https?:\/\//i.test(normalizedTarget)) return true;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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/vite-swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.853 | (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.
|
|
1
|
+
/*! rnx v0.1.853 | (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/package.json
CHANGED
package/skills/contrast/SKILL.md
CHANGED
|
@@ -51,6 +51,7 @@ automation, inspecting the render tree, and managing sims.
|
|
|
51
51
|
| `peach android` | start an Android simulator |
|
|
52
52
|
| `peach remote` | run a prebuilt bundle on a remote simulator |
|
|
53
53
|
| `peach open` | load a target into the current sim or open a new one |
|
|
54
|
+
| `peach preview` | publish an Expo project or bundle as a standalone preview |
|
|
54
55
|
| `peach list` | list connected sims or available launch drivers |
|
|
55
56
|
| `peach use` | select a connected sim |
|
|
56
57
|
| `peach skill` | install and inspect bundled peach agent skills |
|
|
@@ -230,7 +230,12 @@ export async function handleFetchProxyRequest(
|
|
|
230
230
|
},
|
|
231
231
|
resolve,
|
|
232
232
|
)
|
|
233
|
-
|
|
233
|
+
// destroy without an error: destroy(err) hands err to the upstream
|
|
234
|
+
// socket, and bun's synchronous res._dump() can finish a buffered
|
|
235
|
+
// response and return that socket to the pool, error listener detached,
|
|
236
|
+
// before the socket emits it. the request still fails through its own
|
|
237
|
+
// 'error' (socket hang up)
|
|
238
|
+
const abort = () => proxyReq.destroy()
|
|
234
239
|
req.once('aborted', abort)
|
|
235
240
|
proxyReq.once('close', () => req.off('aborted', abort))
|
|
236
241
|
// listen for the request's whole life, never once: how many 'error'
|
|
@@ -344,8 +349,11 @@ export async function handleFetchProxyRequest(
|
|
|
344
349
|
// 5xx reads as a live server answering (the bundle loader then polls it as
|
|
345
350
|
// a cold build) and hands guest code a Response where React Native rejects.
|
|
346
351
|
// close the connection itself: bun's node:http answers a destroyed
|
|
347
|
-
// response that never sent headers with an empty 200.
|
|
348
|
-
|
|
352
|
+
// response that never sent headers with an empty 200. an http/2 stream is
|
|
353
|
+
// reset with an error: under bun, destroy() and close(code) send a reset
|
|
354
|
+
// a node http/2 client never sees close, and its whole session wedges
|
|
355
|
+
if (req instanceof Http2ServerRequest)
|
|
356
|
+
req.stream.destroy(new Error('fetch proxy upstream failed', { cause: err }))
|
|
349
357
|
else req.socket.destroy()
|
|
350
358
|
}
|
|
351
359
|
}
|
|
@@ -97,7 +97,9 @@ export async function startFetchProxyTransport(identityPath: string) {
|
|
|
97
97
|
res.end()
|
|
98
98
|
return
|
|
99
99
|
}
|
|
100
|
-
void handleFetchProxyRequest(req, res).catch(() =>
|
|
100
|
+
void handleFetchProxyRequest(req, res).catch((error: unknown) =>
|
|
101
|
+
res.destroy(new Error('fetch proxy failed', { cause: error })),
|
|
102
|
+
)
|
|
101
103
|
},
|
|
102
104
|
)
|
|
103
105
|
server.on('session', (session) => {
|