rnxsim 0.1.554 → 0.1.555
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 +13 -0
- package/cli/commands/inspect/core.ts +2 -4
- package/cli/commands/inspect.ts +9 -8
- package/cli/ws-bridge.ts +3 -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/capture-contract.cjs +2 -2
- package/dist-lib/capture-contract.mjs +2 -2
- 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.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/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +1 -1
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- 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 +2 -2
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.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/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 +8 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/skills/rnx-debug/SKILL.md +10 -0
- package/src/bridge-contract.ts +18 -0
- package/src/capture-contract.ts +2 -1
- package/src/sim-client.ts +2 -4
package/cli/commands/control.ts
CHANGED
|
@@ -1374,6 +1374,19 @@ export async function runOpenCommand(
|
|
|
1374
1374
|
}
|
|
1375
1375
|
const target = parsed.positional[0] || ''
|
|
1376
1376
|
|
|
1377
|
+
// `--port` is the WS BRIDGE port; the app/dev-server port is positional. the
|
|
1378
|
+
// two read identically at a glance, so `rnx open --new --port 4260` used to
|
|
1379
|
+
// launch the Connect launcher against the default bridge and report success,
|
|
1380
|
+
// and the probe that followed measured whatever sim happened to be selected.
|
|
1381
|
+
// there is no meaningful `open --port` without a target, so refuse it.
|
|
1382
|
+
if (!target && args.includes('--port')) {
|
|
1383
|
+
const portValue = args[args.indexOf('--port') + 1] ?? '<number>'
|
|
1384
|
+
console.error(
|
|
1385
|
+
` rnx open: --port is the WS bridge port, not the app port. to open the app on ${portValue}, pass it positionally: \`rnx open ${portValue}\``,
|
|
1386
|
+
)
|
|
1387
|
+
rnxExit(1)
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1377
1390
|
if (isAppDeepLinkTarget(target)) {
|
|
1378
1391
|
if (openInNewSim) {
|
|
1379
1392
|
console.error(
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
16
16
|
PUBLIC_NO_NETWORK_MARKER,
|
|
17
17
|
type SemanticWaitResult,
|
|
18
|
+
type WsBridgeCommand,
|
|
18
19
|
} from '../../../src/bridge-contract'
|
|
19
20
|
export {
|
|
20
21
|
readyProbeHasContent,
|
|
@@ -56,10 +57,7 @@ export function resolveMaxMsFlag(args: string[], fallbackMs: number): number {
|
|
|
56
57
|
// rnx instance.
|
|
57
58
|
export interface InspectBridge {
|
|
58
59
|
readonly plane?: 'local' | 'cloud'
|
|
59
|
-
send(
|
|
60
|
-
cmd: { type: string; [k: string]: any },
|
|
61
|
-
opts?: { timeoutMs?: number },
|
|
62
|
-
): Promise<any>
|
|
60
|
+
send(cmd: WsBridgeCommand, opts?: { timeoutMs?: number }): Promise<any>
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
const INSPECT_PICK_COMMANDS = new Set([
|
package/cli/commands/inspect.ts
CHANGED
|
@@ -103,6 +103,7 @@ import { runWaitSelectorSubcommand } from './inspect/wait-selector'
|
|
|
103
103
|
import { printMissingSimHint, printUnknownSimHint } from './no-bridge-hint'
|
|
104
104
|
import type { PerformResult, PerformStep } from '../../src/bridge-contract'
|
|
105
105
|
import type {
|
|
106
|
+
SootSimReplayTarget,
|
|
106
107
|
SootSimRequestEntry,
|
|
107
108
|
SootSimScreenTransitionWaitResult,
|
|
108
109
|
SootSimScrollPerformanceTrace,
|
|
@@ -2615,7 +2616,7 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
2615
2616
|
? keyboardState.focusedInput.text
|
|
2616
2617
|
: ''
|
|
2617
2618
|
for (let i = 0; i < existingText.length; i++) {
|
|
2618
|
-
await bridge.send({ type: 'keyboard', action: 'press',
|
|
2619
|
+
await bridge.send({ type: 'keyboard', action: 'press', text: 'delete' })
|
|
2619
2620
|
}
|
|
2620
2621
|
await bridge.send({ type: 'keyboard', action: 'type', text })
|
|
2621
2622
|
const secureTextEntry =
|
|
@@ -2742,8 +2743,12 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
2742
2743
|
console.error(inspectUsage('keycode', '<code> [<code> ...]'))
|
|
2743
2744
|
rnxExit(1)
|
|
2744
2745
|
}
|
|
2745
|
-
const
|
|
2746
|
-
const unsupported =
|
|
2746
|
+
const mapped = codes.map((code) => ({ code, key: keyCodeToVisualKey(code) }))
|
|
2747
|
+
const unsupported = mapped.filter((entry) => !entry.key)
|
|
2748
|
+
const keys = mapped.filter(
|
|
2749
|
+
(entry): entry is { code: string; key: string } =>
|
|
2750
|
+
typeof entry.key === 'string',
|
|
2751
|
+
)
|
|
2747
2752
|
if (unsupported.length > 0) {
|
|
2748
2753
|
console.error(
|
|
2749
2754
|
` unsupported keycode(s): ${unsupported.map((entry) => entry.code).join(', ')}`,
|
|
@@ -2836,11 +2841,7 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
2836
2841
|
let x = Number(positional[1])
|
|
2837
2842
|
let y = Number(positional[2])
|
|
2838
2843
|
const target = readTargetFlag(args, positional)
|
|
2839
|
-
let resolvedTarget:
|
|
2840
|
-
testID?: string | null
|
|
2841
|
-
text?: string | null
|
|
2842
|
-
type?: string | null
|
|
2843
|
-
} | null = null
|
|
2844
|
+
let resolvedTarget: SootSimReplayTarget | undefined
|
|
2844
2845
|
if (target) {
|
|
2845
2846
|
const resolved = await resolveTargetCoords(bridge, target)
|
|
2846
2847
|
if (!resolved) {
|
package/cli/ws-bridge.ts
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
readCurrentSimId,
|
|
31
31
|
saveCurrentSimId,
|
|
32
32
|
} from './current-sim'
|
|
33
|
+
import type { WsBridgeCommand } from '../src/bridge-contract'
|
|
33
34
|
|
|
34
35
|
// --- bridge world resolution ---------------------------------------------
|
|
35
36
|
//
|
|
@@ -319,10 +320,7 @@ export interface WsBridge {
|
|
|
319
320
|
// `opts.timeoutMs` overrides the bridge-wide commandTimeoutMs for a single
|
|
320
321
|
// call — used for fast readiness probes so a dead/unresponsive sim fails in
|
|
321
322
|
// seconds instead of stalling the full command timeout.
|
|
322
|
-
send(
|
|
323
|
-
cmd: { type: string; [k: string]: any },
|
|
324
|
-
opts?: { timeoutMs?: number },
|
|
325
|
-
): Promise<any>
|
|
323
|
+
send(cmd: WsBridgeCommand, opts?: { timeoutMs?: number }): Promise<any>
|
|
326
324
|
listSims(): Promise<BridgeSimInfo[]>
|
|
327
325
|
// a guest reload retires the socket and the same page reconnects under a new
|
|
328
326
|
// or restored id. a caller that pins an id resolves that target here; null
|
|
@@ -993,7 +991,7 @@ export async function evalInBridge<T = unknown>(
|
|
|
993
991
|
code: string,
|
|
994
992
|
opts: { acquireLock?: boolean } = {},
|
|
995
993
|
): Promise<T> {
|
|
996
|
-
const payload:
|
|
994
|
+
const payload: WsBridgeCommand = { type: 'evaluate', code }
|
|
997
995
|
if (opts.acquireLock) payload.acquireLock = true
|
|
998
996
|
return bridge.send(payload) as Promise<T>
|
|
999
997
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -40,7 +40,7 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
40
40
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
41
41
|
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (new RegExp("\\p{Emoji_Presentation}", "u").test(node.text) || new RegExp("\\uFE0F|\\u200D|\\u20E3|\\p{Emoji_Modifier}|\\p{Regional_Indicator}", "u").test(
|
|
42
42
|
node.text
|
|
43
|
-
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0) {
|
|
43
|
+
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
44
44
|
unsupported.add(node.nodeId);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/capture-contract.ts
|
|
4
4
|
var RNX_SCREEN_CAPTURE_VERSION = 1;
|
|
@@ -10,7 +10,7 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
10
10
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
11
11
|
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (/\p{Emoji_Presentation}/u.test(node.text) || /\uFE0F|\u200D|\u20E3|\p{Emoji_Modifier}|\p{Regional_Indicator}/u.test(
|
|
12
12
|
node.text
|
|
13
|
-
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0) {
|
|
13
|
+
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
14
14
|
unsupported.add(node.nodeId);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (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.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -3106,7 +3106,7 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
3106
3106
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
3107
3107
|
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (new RegExp("\\p{Emoji_Presentation}", "u").test(node.text) || new RegExp("\\uFE0F|\\u200D|\\u20E3|\\p{Emoji_Modifier}|\\p{Regional_Indicator}", "u").test(
|
|
3108
3108
|
node.text
|
|
3109
|
-
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0) {
|
|
3109
|
+
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
3110
3110
|
unsupported.add(node.nodeId);
|
|
3111
3111
|
}
|
|
3112
3112
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (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.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -35153,6 +35153,13 @@ async function runOpenCommand(args, opts = {}) {
|
|
|
35153
35153
|
rnxExit(1);
|
|
35154
35154
|
}
|
|
35155
35155
|
const target = parsed.positional[0] || "";
|
|
35156
|
+
if (!target && args.includes("--port")) {
|
|
35157
|
+
const portValue = args[args.indexOf("--port") + 1] ?? "<number>";
|
|
35158
|
+
console.error(
|
|
35159
|
+
` rnx open: --port is the WS bridge port, not the app port. to open the app on ${portValue}, pass it positionally: \`rnx open ${portValue}\``
|
|
35160
|
+
);
|
|
35161
|
+
rnxExit(1);
|
|
35162
|
+
}
|
|
35156
35163
|
if (isAppDeepLinkTarget(target)) {
|
|
35157
35164
|
if (openInNewSim) {
|
|
35158
35165
|
console.error(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.555 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/package.json
CHANGED
|
@@ -76,6 +76,16 @@ regression test. a pile of ad-hoc logs helps no one and gets deleted.
|
|
|
76
76
|
them*. a "fixed" behavior with a new console error is not fixed.
|
|
77
77
|
- **"found a testID" is not done.** done is: reliable repro + identified
|
|
78
78
|
root cause (specific node + prop, or event + handler) + verified fix.
|
|
79
|
+
- **an empty `find --pressable` is not proof there is no affordance.** it
|
|
80
|
+
lists registered touch responders, and a tamagui `styled()` view whose
|
|
81
|
+
`onPress` comes from the call site is tappable without ever appearing there.
|
|
82
|
+
before concluding a screen has no way out, corroborate with `get a11y` or an
|
|
83
|
+
actual `do tap-text`.
|
|
84
|
+
- **after an unexplained restart, re-establish which sim you are on.** a sim
|
|
85
|
+
that reconnected, or a dev stack that came back on a port another process now
|
|
86
|
+
holds, is a fresh instrument; a port answering 200 says something is
|
|
87
|
+
listening, not that it is yours. every rnx command prints its own `→ <sim>`
|
|
88
|
+
line, so reading that line is the check.
|
|
79
89
|
|
|
80
90
|
## the timeline ("what happened")
|
|
81
91
|
|
package/src/bridge-contract.ts
CHANGED
|
@@ -42,11 +42,29 @@ export type BridgeCommandType =
|
|
|
42
42
|
| 'diagnostics'
|
|
43
43
|
| 'storageSnapshot'
|
|
44
44
|
|
|
45
|
+
// the bridge host answers these itself, before the engine's handleCommand ever
|
|
46
|
+
// sees them. they are not engine commands and the cloud plane does not route
|
|
47
|
+
// them, so they stay out of BridgeCommandType and out of its cloud scope table.
|
|
48
|
+
export type BridgeHostCommandType = 'bridge:list-sims' | 'bridge:claim'
|
|
49
|
+
|
|
50
|
+
// what a caller hands a bridge's `send`: the command minus the correlation id,
|
|
51
|
+
// which the transport assigns. every send seam names this type rather than an
|
|
52
|
+
// index-signature bag, because an index signature erases excess-property
|
|
53
|
+
// checking and a field spelled wrong then compiles and arrives as `undefined`.
|
|
54
|
+
export type WsBridgeCommand = Omit<WsCommand, 'id' | 'type'> & {
|
|
55
|
+
type: BridgeCommandType | BridgeHostCommandType
|
|
56
|
+
}
|
|
57
|
+
|
|
45
58
|
export interface WsCommand {
|
|
46
59
|
id: string | number
|
|
47
60
|
type: BridgeCommandType
|
|
48
61
|
// local daemon routing; cloud transport strips it before execution.
|
|
49
62
|
simId?: string
|
|
63
|
+
// take or refresh the cli lease on the target sim before running. reads omit
|
|
64
|
+
// it; anything that mutates user-facing state sets it. read in bridge-host.
|
|
65
|
+
acquireLock?: boolean
|
|
66
|
+
// bridge:claim — take the lease even when another cli holds it.
|
|
67
|
+
force?: boolean
|
|
50
68
|
// flowStatus — live flow-runner progress payload (see flow-run-store)
|
|
51
69
|
status?: Record<string, unknown>
|
|
52
70
|
code?: string
|
package/src/capture-contract.ts
CHANGED
|
@@ -188,7 +188,8 @@ export function selectRnxRasterNodeIds(tree: RnxRasterRegionTree): Set<number> {
|
|
|
188
188
|
node.text,
|
|
189
189
|
))) ||
|
|
190
190
|
node.style._liquidGlass !== undefined ||
|
|
191
|
-
node.style._liquidGlassEdge !== undefined
|
|
191
|
+
node.style._liquidGlassEdge !== undefined ||
|
|
192
|
+
node.style._liquidGlassMaterialTint !== undefined
|
|
192
193
|
) {
|
|
193
194
|
unsupported.add(node.nodeId)
|
|
194
195
|
}
|
package/src/sim-client.ts
CHANGED
|
@@ -60,6 +60,7 @@ import type {
|
|
|
60
60
|
SimSemanticResolveSelector,
|
|
61
61
|
SimStateOptions,
|
|
62
62
|
SimStateResult,
|
|
63
|
+
WsBridgeCommand,
|
|
63
64
|
} from './bridge-contract'
|
|
64
65
|
|
|
65
66
|
// ---------------------------------------------------------------------------
|
|
@@ -250,10 +251,7 @@ export class SimClient implements WsBridge, InspectBridge {
|
|
|
250
251
|
|
|
251
252
|
// --- transport (WsBridge/InspectBridge) ---
|
|
252
253
|
|
|
253
|
-
send(
|
|
254
|
-
cmd: { type: string; [k: string]: any },
|
|
255
|
-
opts?: { timeoutMs?: number },
|
|
256
|
-
): Promise<any> {
|
|
254
|
+
send(cmd: WsBridgeCommand, opts?: { timeoutMs?: number }): Promise<any> {
|
|
257
255
|
if (this.closed) {
|
|
258
256
|
return Promise.reject(new SimConnectError('sim client is closed'))
|
|
259
257
|
}
|