rnxsim 0.1.335 → 0.1.337
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/README.md +104 -76
- package/cli/auth.ts +2 -2
- package/cli/bin.ts +7 -3
- package/cli/bridge-flow-runner.ts +2 -2
- package/cli/commands/agent-wrapper.ts +1 -1
- package/cli/commands/agent.ts +12 -12
- package/cli/commands/app-fonts.ts +1 -1
- package/cli/commands/assert.ts +7 -7
- package/cli/commands/auth.ts +4 -4
- package/cli/commands/camera.ts +13 -13
- package/cli/commands/cleanup.ts +6 -6
- package/cli/commands/compat.ts +4 -4
- package/cli/commands/config.ts +2 -2
- package/cli/commands/control.ts +37 -43
- package/cli/commands/cpu-profile.ts +2 -2
- package/cli/commands/daemon-mac-app.ts +2 -2
- package/cli/commands/daemon.ts +12 -12
- package/cli/commands/debug.ts +22 -22
- package/cli/commands/desktop.ts +3 -3
- package/cli/commands/detox.ts +17 -17
- package/cli/commands/device.ts +9 -9
- package/cli/commands/diagnose.ts +11 -11
- package/cli/commands/electron.ts +7 -7
- package/cli/commands/film.ts +6 -6
- package/cli/commands/inspect/core.ts +6 -7
- package/cli/commands/inspect/find.ts +2 -2
- package/cli/commands/inspect.ts +36 -36
- package/cli/commands/install-desktop.ts +8 -8
- package/cli/commands/login.ts +6 -6
- package/cli/commands/maestro-generate.ts +2 -2
- package/cli/commands/maestro.ts +23 -23
- package/cli/commands/mode.ts +4 -4
- package/cli/commands/no-bridge-hint.ts +9 -9
- package/cli/commands/perf.ts +11 -11
- package/cli/commands/permissions.ts +5 -5
- package/cli/commands/profile.ts +11 -11
- package/cli/commands/react.ts +15 -15
- package/cli/commands/record.ts +15 -15
- package/cli/commands/report-issue.ts +2 -2
- package/cli/commands/reset.ts +2 -2
- package/cli/commands/runtime.ts +18 -18
- package/cli/commands/screenshot-mode.ts +5 -5
- package/cli/commands/screenshot.ts +12 -12
- package/cli/commands/screenshots-capture.ts +7 -7
- package/cli/commands/screenshots.ts +6 -6
- package/cli/commands/serve.ts +6 -6
- package/cli/commands/setup.ts +13 -15
- package/cli/commands/skills.ts +14 -14
- package/cli/commands/slides.ts +19 -23
- package/cli/commands/state.ts +2 -2
- package/cli/commands/storage.ts +3 -3
- package/cli/commands/telemetry.ts +1 -1
- package/cli/commands/three-mode.ts +16 -16
- package/cli/commands/timeline.ts +4 -4
- package/cli/commands/upgrade.ts +1 -1
- package/cli/commands/upload.ts +11 -11
- package/cli/commands/version.ts +3 -5
- package/cli/commands/what-happened.ts +11 -11
- package/cli/drivers/electron.ts +3 -3
- package/cli/hints.ts +8 -8
- package/cli/recording-access.ts +1 -1
- package/cli/ws-bridge.ts +5 -5
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-XSJMAFVA.js → agent-QQ3RJNRY.js} +14 -14
- package/dist-cli/chunks/{agent-wrapper-NFLJ5K64.js → agent-wrapper-M6SQSMRY.js} +3 -3
- package/dist-cli/chunks/app-fonts-F6NDV3XC.js +4 -0
- package/dist-cli/chunks/{assert-ILAXIYB5.js → assert-5VB3KQNK.js} +12 -12
- package/dist-cli/chunks/auth-PFXODKFN.js +12 -0
- package/dist-cli/chunks/{beta-TDR6UKJU.js → beta-WUWYHT4F.js} +2 -2
- package/dist-cli/chunks/camera-V3MMTKP7.js +33 -0
- package/dist-cli/chunks/{chunk-INBPUR4T.js → chunk-2ANFH72P.js} +11 -11
- package/dist-cli/chunks/chunk-2GIA5T6B.js +74 -0
- package/dist-cli/chunks/{chunk-GP6QEBZA.js → chunk-4FRSEZ7Z.js} +1 -1
- package/dist-cli/chunks/{chunk-USGOQ3YJ.js → chunk-4GXBZHNA.js} +2 -2
- package/dist-cli/chunks/{chunk-R3CMECGC.js → chunk-4HESY5E7.js} +4 -4
- package/dist-cli/chunks/{chunk-WKT7YM5Q.js → chunk-4VJEXQGD.js} +1 -1
- package/dist-cli/chunks/{chunk-FE6ZHPKD.js → chunk-5LJNNHZH.js} +1 -1
- package/dist-cli/chunks/{chunk-I2HQB5NN.js → chunk-5QXGSTYI.js} +2 -2
- package/dist-cli/chunks/{chunk-FJSHIWAM.js → chunk-5SHAOQHJ.js} +2 -2
- package/dist-cli/chunks/{chunk-CGZWLSYD.js → chunk-5UPRBMIG.js} +1 -1
- package/dist-cli/chunks/{chunk-ZTM2MKNI.js → chunk-5ZEFRPCC.js} +1 -1
- package/dist-cli/chunks/{chunk-RTD3CPDQ.js → chunk-6ART4XVJ.js} +23 -23
- package/dist-cli/chunks/{chunk-MTD6IAEA.js → chunk-6CAUT2LH.js} +1 -1
- package/dist-cli/chunks/{chunk-ZYHCWCMM.js → chunk-7ATIH7OU.js} +1 -1
- package/dist-cli/chunks/{chunk-RVUGKXJD.js → chunk-7Q4QKHMA.js} +1 -1
- package/dist-cli/chunks/{chunk-MTNIDSOA.js → chunk-ABK2V2PR.js} +1 -1
- package/dist-cli/chunks/{chunk-TL4DNDDY.js → chunk-B53ILAHI.js} +2 -2
- package/dist-cli/chunks/{chunk-POC3QTA6.js → chunk-BSSVLFZR.js} +2 -2
- package/dist-cli/chunks/chunk-BVOBXTPN.js +30 -0
- package/dist-cli/chunks/{chunk-4KC35DMK.js → chunk-CPDEUWL5.js} +2 -2
- package/dist-cli/chunks/{chunk-HNQLZZJA.js → chunk-DINU267S.js} +2 -2
- package/dist-cli/chunks/{chunk-DCDKJ4NC.js → chunk-DQQ4CZVC.js} +2 -2
- package/dist-cli/chunks/{chunk-JWAY6DIH.js → chunk-EDWN2HOO.js} +18 -18
- package/dist-cli/chunks/{chunk-3CS4EUMG.js → chunk-EWVG4A3B.js} +2 -2
- package/dist-cli/chunks/{chunk-RTEJXUXN.js → chunk-F3NKCQHM.js} +6 -6
- package/dist-cli/chunks/{chunk-M7CBQ5I4.js → chunk-GEAGFYKP.js} +1 -1
- package/dist-cli/chunks/chunk-GGNH44PZ.js +5 -0
- package/dist-cli/chunks/{chunk-YSUIYK6B.js → chunk-HAHJJJUC.js} +2 -2
- package/dist-cli/chunks/chunk-HPJ5EKIZ.js +4 -0
- package/dist-cli/chunks/{chunk-IN2PZBQD.js → chunk-IBTHGFKE.js} +2 -2
- package/dist-cli/chunks/{chunk-ZZWO6Y7X.js → chunk-J6BYRRZQ.js} +2 -2
- package/dist-cli/chunks/{chunk-6Y3PVPTF.js → chunk-JK4OZ2TQ.js} +5 -5
- package/dist-cli/chunks/{chunk-PO3TOAED.js → chunk-KGQAO25M.js} +2 -2
- package/dist-cli/chunks/{chunk-J7XFINJG.js → chunk-L6UUIQE7.js} +2 -2
- package/dist-cli/chunks/{chunk-35XNGT5C.js → chunk-LXYLCETR.js} +1 -1
- package/dist-cli/chunks/{chunk-JWK5WD44.js → chunk-LZAL3DMP.js} +2 -2
- package/dist-cli/chunks/{chunk-3ZDOPKHE.js → chunk-M43UU7UG.js} +4 -4
- package/dist-cli/chunks/{chunk-ROPHZJ6P.js → chunk-M4LGUVBM.js} +2 -2
- package/dist-cli/chunks/{chunk-RELRA5VW.js → chunk-NCG6C5AH.js} +2 -2
- package/dist-cli/chunks/{chunk-42KDXJUD.js → chunk-NR5TSR2Y.js} +2 -2
- package/dist-cli/chunks/{chunk-R2UL5VFY.js → chunk-OCPWXT73.js} +3 -3
- package/dist-cli/chunks/{chunk-VV4MXLFR.js → chunk-ODKS6JUJ.js} +1 -1
- package/dist-cli/chunks/{chunk-F33DUJGG.js → chunk-R2WBREGQ.js} +1 -1
- package/dist-cli/chunks/chunk-RKY3ZNTA.js +5 -0
- package/dist-cli/chunks/{chunk-MGGRL2Z2.js → chunk-SW7BHOMO.js} +9 -9
- package/dist-cli/chunks/{chunk-GVKISFQ3.js → chunk-TJTLXG3R.js} +1 -1
- package/dist-cli/chunks/chunk-TNI4PW75.js +124 -0
- package/dist-cli/chunks/{chunk-CL3PREIE.js → chunk-UWEDNDND.js} +2 -2
- package/dist-cli/chunks/{chunk-IV36DY6M.js → chunk-WRID5SBV.js} +1 -1
- package/dist-cli/chunks/{chunk-42ALI64M.js → chunk-WUYI3XJ5.js} +2 -2
- package/dist-cli/chunks/{chunk-6VN5ULGQ.js → chunk-X7MHCEGG.js} +2 -2
- package/dist-cli/chunks/chunk-XIQFYLWD.js +15 -0
- package/dist-cli/chunks/{chunk-LCVUJCRJ.js → chunk-ZUK5ZQU7.js} +1 -1
- package/dist-cli/chunks/{cleanup-X6ZRPFDV.js → cleanup-6WBS3MUO.js} +10 -10
- package/dist-cli/chunks/cli-version-HUQCDGMA.js +4 -0
- package/dist-cli/chunks/{compat-VRXJ5J56.js → compat-2WOPKJYK.js} +9 -9
- package/dist-cli/chunks/{config-LHPPE4EP.js → config-FPD7WUYB.js} +5 -5
- package/dist-cli/chunks/{control-TVTNGSSF.js → control-B3XNER7I.js} +2 -2
- package/dist-cli/chunks/daemon-T4D4X2P5.js +4 -0
- package/dist-cli/chunks/{debug-EUHBBPGM.js → debug-LKV5CEAV.js} +17 -17
- package/dist-cli/chunks/desktop-EMDPOYQT.js +31 -0
- package/dist-cli/chunks/detox-4J4UTZE7.js +52 -0
- package/dist-cli/chunks/{device-PONITUZJ.js → device-PMZ7RPXQ.js} +11 -11
- package/dist-cli/chunks/{diagnose-2PN4K4L2.js → diagnose-MLEP727D.js} +12 -12
- package/dist-cli/chunks/{disk-cleanup-U2PQLOEW.js → disk-cleanup-CVEDIPEE.js} +2 -2
- package/dist-cli/chunks/drivers-NTUKJEL6.js +4 -0
- package/dist-cli/chunks/{film-XGZCFTQL.js → film-4RNECABF.js} +9 -9
- package/dist-cli/chunks/flow-5IOCAHVO.js +4 -0
- package/dist-cli/chunks/help-NUJUYEWP.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-I4MYF5CO.js → hidden-runtime-alias-YIF25W4F.js} +2 -2
- package/dist-cli/chunks/{home-paths-YRAPZ5LE.js → home-paths-WNJCCCCZ.js} +2 -2
- package/dist-cli/chunks/inspect-MFEIYUCN.js +4 -0
- package/dist-cli/chunks/install-desktop-NB65KI4D.js +4 -0
- package/dist-cli/chunks/{login-ZMAIAQ6F.js → login-VEHHGN42.js} +6 -6
- package/dist-cli/chunks/{logout-UQZ5JBJU.js → logout-VE7PNXL2.js} +2 -2
- package/dist-cli/chunks/{maestro-BQYKDUC4.js → maestro-ZXHTDEOI.js} +25 -25
- package/dist-cli/chunks/{maestro-generate-VQYMMQJ5.js → maestro-generate-TK33E2Z6.js} +3 -3
- package/dist-cli/chunks/mode-ZDKJ56NT.js +26 -0
- package/dist-cli/chunks/{optional-demo-registry-DUWHCLGD.js → optional-demo-registry-GBZ3WVDW.js} +2 -2
- package/dist-cli/chunks/{perf-7RAU7WRZ.js → perf-JXNZOUKW.js} +28 -28
- package/dist-cli/chunks/permissions-WQ62PW7Y.js +13 -0
- package/dist-cli/chunks/record-4S3ZMDIO.js +72 -0
- package/dist-cli/chunks/{report-issue-P376KFFU.js → report-issue-KKBADTWO.js} +4 -4
- package/dist-cli/chunks/reset-H5XIISJE.js +4 -0
- package/dist-cli/chunks/runtime-FK7EEMWA.js +4 -0
- package/dist-cli/chunks/{screenshot-command-NE7BKTQ2.js → screenshot-command-42U5MVQL.js} +34 -34
- package/dist-cli/chunks/{screenshot-layers-UE4R64PZ.js → screenshot-layers-4G42AHOX.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-ULXPLXMC.js → screenshots-capture-HMQ2OO3I.js} +11 -11
- package/dist-cli/chunks/{serve-P7BT4XHR.js → serve-S4V5EDW2.js} +16 -16
- package/dist-cli/chunks/setup-T43V7GA6.js +32 -0
- package/dist-cli/chunks/{skills-NTRYKJSF.js → skills-O426K26J.js} +16 -16
- package/dist-cli/chunks/{state-4D5YAM47.js → state-ZEEPDKJG.js} +5 -5
- package/dist-cli/chunks/storage-4GQLOFGG.js +37 -0
- package/dist-cli/chunks/store-RFMSNWLJ.js +4 -0
- package/dist-cli/chunks/telemetry-NFAAPSMN.js +4 -0
- package/dist-cli/chunks/{timeline-GZNFGD3Q.js → timeline-ONCYX7KW.js} +6 -6
- package/dist-cli/chunks/{upgrade-A46D6PEY.js → upgrade-A36T52AM.js} +2 -2
- package/dist-cli/chunks/upload-36O32DII.js +4 -0
- package/dist-cli/chunks/version-67HA253N.js +6 -0
- package/dist-cli/chunks/{web-H2IXO5SC.js → web-PWXQHQIE.js} +2 -2
- package/dist-cli/chunks/{what-happened-Z7UII5GH.js → what-happened-WNXE622R.js} +16 -16
- package/dist-lib/agent-daemon-client.cjs +5 -5
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +4 -4
- 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.cjs +1 -1
- package/dist-lib/cli-constants.cjs +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 +7 -7
- 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/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +248 -98
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/menu.cjs +2 -2
- package/dist-lib/menu.mjs +2 -2
- package/dist-lib/metro-host-modules/react-dom.js +6 -0
- package/dist-lib/metro-host-modules/react-native-web.js +6 -0
- package/dist-lib/metro-host-modules/react-native.js +6 -0
- package/dist-lib/metro-host-modules/react.js +6 -0
- package/dist-lib/metro-host-modules/react__jsx-dev-runtime.js +6 -0
- package/dist-lib/metro-host-modules/react__jsx-runtime.js +6 -0
- package/dist-lib/metro-production-bundle.cjs +72 -0
- package/dist-lib/metro-production-bundle.mjs +44 -0
- package/dist-lib/metro.cjs +152 -8
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +2 -2
- package/dist-lib/react-native-host-modules.cjs +50 -0
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +6 -7
- package/dist-lib/sdk.mjs +6 -7
- package/dist-lib/skills.cjs +71 -77
- package/dist-lib/vite.cjs +104 -85
- package/package.json +15 -2
- package/scripts/preuninstall.cjs +1 -1
- package/skills/contrast/SKILL.md +67 -75
- package/skills/rnx-debug/SKILL.md +84 -84
- package/skills/rnx-perf/SKILL.md +8 -8
- package/skills/rnx-setup/SKILL.md +54 -54
- package/skills/rnx-test/SKILL.md +35 -35
- package/skills/rnx-visual/SKILL.md +18 -18
- package/src/agent-daemon-client.ts +2 -2
- package/src/agent-sessions.ts +2 -2
- package/src/connect.ts +6 -6
- package/src/disk-cleanup.ts +1 -1
- package/src/home-paths.ts +1 -1
- package/src/host/bridge-host.ts +6 -6
- package/src/index.ts +1 -1
- package/src/metro-host-modules/react-dom.js +6 -0
- package/src/metro-host-modules/react-native-web.js +6 -0
- package/src/metro-host-modules/react-native.js +6 -0
- package/src/metro-host-modules/react.js +6 -0
- package/src/metro-host-modules/react__jsx-dev-runtime.js +6 -0
- package/src/metro-host-modules/react__jsx-runtime.js +6 -0
- package/src/metro-plugin.ts +249 -10
- package/src/metro-production-bundle.ts +51 -0
- package/src/public-brand.ts +1 -1
- package/src/react-native-host-modules.ts +25 -0
- package/src/runtime-assets.ts +1 -1
- package/src/sim-client.ts +1 -1
- package/src/vite-plugin-one.ts +171 -145
- package/dist-cli/chunks/app-fonts-L3UXFYVE.js +0 -4
- package/dist-cli/chunks/auth-ISX2EUQL.js +0 -12
- package/dist-cli/chunks/camera-4SWTNJUA.js +0 -33
- package/dist-cli/chunks/chunk-BRHZEZKN.js +0 -124
- package/dist-cli/chunks/chunk-EJPYPJWP.js +0 -5
- package/dist-cli/chunks/chunk-KWCD5MOK.js +0 -15
- package/dist-cli/chunks/chunk-MJ7QGY7Z.js +0 -4
- package/dist-cli/chunks/chunk-RSA4XWHN.js +0 -5
- package/dist-cli/chunks/chunk-S3EIOAWZ.js +0 -74
- package/dist-cli/chunks/chunk-TYANJQLO.js +0 -30
- package/dist-cli/chunks/cli-version-NZUSWKZR.js +0 -4
- package/dist-cli/chunks/daemon-XUEC47EC.js +0 -4
- package/dist-cli/chunks/desktop-LLHMP4A3.js +0 -31
- package/dist-cli/chunks/detox-QLNWLXA4.js +0 -52
- package/dist-cli/chunks/drivers-7IU37M2E.js +0 -4
- package/dist-cli/chunks/flow-NZZLR4BN.js +0 -4
- package/dist-cli/chunks/help-D7URIJRD.js +0 -4
- package/dist-cli/chunks/inspect-TJYWKY56.js +0 -4
- package/dist-cli/chunks/install-desktop-LD3W5RS7.js +0 -4
- package/dist-cli/chunks/mode-ZQ6H7KWM.js +0 -26
- package/dist-cli/chunks/permissions-DRZ3HCFL.js +0 -13
- package/dist-cli/chunks/record-J5JAYW4Y.js +0 -72
- package/dist-cli/chunks/reset-KXYRDEFU.js +0 -4
- package/dist-cli/chunks/runtime-66CEPOG6.js +0 -4
- package/dist-cli/chunks/setup-QO5KZAX3.js +0 -32
- package/dist-cli/chunks/storage-X2K2MDPX.js +0 -37
- package/dist-cli/chunks/store-TUJPIRTT.js +0 -4
- package/dist-cli/chunks/telemetry-CF5DVEKI.js +0 -4
- package/dist-cli/chunks/upload-UIQJIBEZ.js +0 -4
- package/dist-cli/chunks/version-CMBB3FXL.js +0 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rnx-debug
|
|
3
|
-
description: Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under rnx. Reach for this whenever an animation looks wrong (janky, stutters, snaps, only updates once, or doesn't move at all), a swipe/transition/gesture misbehaves or feels broken, scrolling drops frames or feels slow, the UI renders the wrong tree/props, or a screen reader can't reach something — and drive the
|
|
3
|
+
description: Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under rnx. Reach for this whenever an animation looks wrong (janky, stutters, snaps, only updates once, or doesn't move at all), a swipe/transition/gesture misbehaves or feels broken, scrolling drops frames or feels slow, the UI renders the wrong tree/props, or a screen reader can't reach something — and drive the rnx CLI debug tooling first, not screenshots or ad-hoc logging.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# rnx debug
|
|
@@ -12,13 +12,13 @@ same diff/snapshot workflow. start here for any rendering, interaction,
|
|
|
12
12
|
event-order, or correctness question. for pixel-level rendering fidelity
|
|
13
13
|
load `/rnx-visual` instead.
|
|
14
14
|
|
|
15
|
-
> needs a connected, pinned sim. if `
|
|
15
|
+
> needs a connected, pinned sim. if `rnx describe` errors, load
|
|
16
16
|
> `/rnx-setup` first.
|
|
17
17
|
|
|
18
18
|
## principle — drive the CLI, don't probe by hand
|
|
19
19
|
|
|
20
20
|
for any rendering, animation, gesture, or interaction bug, reach for the
|
|
21
|
-
|
|
21
|
+
rnx CLI debug tooling **first** — `describe` and `find` to read the
|
|
22
22
|
tree, `debug snapshot` + `debug diff` to capture before/after, `debug
|
|
23
23
|
recent` on a channel and `perf shell` for frame-by-frame stats, and the
|
|
24
24
|
timeline for "what just happened". **do not** debug these by eye with
|
|
@@ -49,8 +49,8 @@ regression test. a pile of ad-hoc logs helps no one and gets deleted.
|
|
|
49
49
|
|
|
50
50
|
## anti-patterns (apply to every branch)
|
|
51
51
|
|
|
52
|
-
- **`a1`/`a2`/`b0` style ids mean
|
|
53
|
-
says "look at a3", that's the `
|
|
52
|
+
- **`a1`/`a2`/`b0` style ids mean rnx sims, never browser tabs.** when a user
|
|
53
|
+
says "look at a3", that's the `rnx list` sim id. do not open chrome
|
|
54
54
|
MCP unless the user explicitly says "use chrome" — the canvas has no
|
|
55
55
|
DOM to inspect anyway.
|
|
56
56
|
- **the CLI auto-settles. don't add `sleep`.** every read waits up to
|
|
@@ -62,10 +62,10 @@ regression test. a pile of ad-hoc logs helps no one and gets deleted.
|
|
|
62
62
|
changes, and duplicate strings. add `testID` during implementation and
|
|
63
63
|
query against it.
|
|
64
64
|
- **pin a sim once.** if more than one is live, an unpinned command
|
|
65
|
-
refuses to choose. run `
|
|
66
|
-
- **keep one sim and reuse its browser tab.** before `
|
|
67
|
-
`
|
|
68
|
-
`
|
|
65
|
+
refuses to choose. run `rnx use <id>` at the start of the workflow.
|
|
66
|
+
- **keep one sim and reuse its browser tab.** before `rnx open`, run
|
|
67
|
+
`rnx list --all`. pin the target and use `rnx do reload`; a plain
|
|
68
|
+
`rnx open <target>` also navigates the saved sim. reserve `--new` for a
|
|
69
69
|
genuinely concurrent sim. repeated browser trees consume memory and CPU on a
|
|
70
70
|
shared machine.
|
|
71
71
|
- **`debug eval` is an escape hatch.** if a top-level command feels
|
|
@@ -85,13 +85,13 @@ fetches resolve. the timeline records them so you can ask "what
|
|
|
85
85
|
happened" instead of racing the UI with `find`.
|
|
86
86
|
|
|
87
87
|
```sh
|
|
88
|
-
|
|
88
|
+
rnx timeline start # arm recording (cheap kinds default-on)
|
|
89
89
|
# reproduce the flow
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
rnx what-happened # events since the last CLI call
|
|
91
|
+
rnx what-happened --since 10s # absolute window
|
|
92
|
+
rnx what-happened --kinds toast,fetch # filter to a few kinds
|
|
93
|
+
rnx what-happened --summary # one-line counts
|
|
94
|
+
rnx what-happened --flow # section events by screen/route
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
semantic kinds the timeline understands: `keyboard`, `screen`, `route`,
|
|
@@ -99,12 +99,12 @@ semantic kinds the timeline understands: `keyboard`, `screen`, `route`,
|
|
|
99
99
|
`gesture`, `text-input`, `reanimated`, `animation`, `fetch`, `console`,
|
|
100
100
|
`app-launch`, `shell`. cheap kinds record by default; heavier kinds
|
|
101
101
|
(scroll, gesture, text-input, reanimated, animation) opt in via
|
|
102
|
-
`
|
|
102
|
+
`rnx timeline start scroll,gesture,…`.
|
|
103
103
|
|
|
104
104
|
every other CLI command also prints a one-line footer for events since
|
|
105
105
|
the last call — that's the headline indicator. when the footer is empty,
|
|
106
106
|
there's nothing new to look at; when it says `since last: 1 error · 1
|
|
107
|
-
toast · 1 screen push`, run `
|
|
107
|
+
toast · 1 screen push`, run `rnx what-happened` to see the detail.
|
|
108
108
|
|
|
109
109
|
> reach for the timeline first when the question involves *something
|
|
110
110
|
> that appeared briefly and disappeared*. it's faster than a screenshot
|
|
@@ -125,11 +125,11 @@ need a manual wait when:
|
|
|
125
125
|
(no pulsing dots, no shimmer, no looping Lottie).
|
|
126
126
|
|
|
127
127
|
```sh
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
SOOTSIM_NO_AUTO_WAIT=1
|
|
128
|
+
rnx do settle 5 # wait up to 5s for layout stability
|
|
129
|
+
rnx wait idle --max-ms 5000 # same thing under the `wait` verb
|
|
130
|
+
rnx wait idle --strict # also require animation flags clear
|
|
131
|
+
rnx do tap-id play --no-wait # skip auto-settle on one command
|
|
132
|
+
SOOTSIM_NO_AUTO_WAIT=1 rnx ... # disable auto-settle for a lane
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
## branch — debugging
|
|
@@ -137,22 +137,22 @@ SOOTSIM_NO_AUTO_WAIT=1 rnxsim ... # disable auto-settle for a lane
|
|
|
137
137
|
the playbook for "wrong tree / wrong props / wrong handler":
|
|
138
138
|
|
|
139
139
|
```sh
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
rnx describe # what's on screen now
|
|
141
|
+
rnx get errors 5 # any console smoke?
|
|
142
|
+
rnx find --testid <node> # locate the suspect
|
|
143
|
+
rnx debug snapshot before
|
|
144
144
|
# reproduce
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
rnx debug snapshot after
|
|
146
|
+
rnx debug diff before after # structural diff: what changed?
|
|
147
|
+
rnx what-happened # timeline events during the repro
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
for nested scroll ownership or momentum transfer, compare the shell's resolved
|
|
151
151
|
gesture chain with the published scroll registry:
|
|
152
152
|
|
|
153
153
|
```sh
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
rnx debug state scroll-input
|
|
155
|
+
rnx debug state scroll-mirror
|
|
156
156
|
```
|
|
157
157
|
|
|
158
158
|
reading `describe` output:
|
|
@@ -169,9 +169,9 @@ for transitions, alerts, native UI, or anything spanning the shell ↔
|
|
|
169
169
|
tenant boundary, lean on the timeline before reaching for traces:
|
|
170
170
|
|
|
171
171
|
```sh
|
|
172
|
-
|
|
172
|
+
rnx timeline start
|
|
173
173
|
# reproduce the launch / dismiss / alert
|
|
174
|
-
|
|
174
|
+
rnx what-happened --kinds shell,alert,screen,animation
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
you're done when:
|
|
@@ -184,10 +184,10 @@ you're done when:
|
|
|
184
184
|
## branch — performance
|
|
185
185
|
|
|
186
186
|
```sh
|
|
187
|
-
|
|
187
|
+
rnx perf shell start # arm capture (also clears prior frames)
|
|
188
188
|
# reproduce the slow interaction
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
rnx perf shell stop # full report, including worst frames
|
|
190
|
+
rnx perf shell stop --json # machine-readable summary
|
|
191
191
|
```
|
|
192
192
|
|
|
193
193
|
`perf shell` output:
|
|
@@ -209,8 +209,8 @@ budget. **p95 >20 ms is visible jank for a scrolling surface.**
|
|
|
209
209
|
profiling a whole flow:
|
|
210
210
|
|
|
211
211
|
```sh
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
rnx maestro test .maestro/scroll-feed.yaml --profile # per-step + frame stats
|
|
213
|
+
rnx perf cpu --duration 5 --output /tmp/trace.cpuprofile # sampled CPU
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
common patterns → first probe:
|
|
@@ -227,11 +227,11 @@ debug channels that help, but cost 1–3 ms/frame on their own — enable
|
|
|
227
227
|
only what you're investigating:
|
|
228
228
|
|
|
229
229
|
```sh
|
|
230
|
-
|
|
230
|
+
rnx debug enable layout,onlayout,render,animated
|
|
231
231
|
# reproduce
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
rnx debug recent layout 20 # last 20 layout events
|
|
233
|
+
rnx debug recent render 20 # last 20 draw passes
|
|
234
|
+
rnx debug disable layout,onlayout,render,animated
|
|
235
235
|
```
|
|
236
236
|
|
|
237
237
|
you're done when: a p95 number for the interaction + named hot path +
|
|
@@ -251,9 +251,9 @@ watch out for:
|
|
|
251
251
|
## branch — accessibility
|
|
252
252
|
|
|
253
253
|
```sh
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
rnx get a11y # roles, labels, hints, and target geometry
|
|
255
|
+
rnx get layout --styling # boxes, styles, and native pixel contrast
|
|
256
|
+
rnx describe --a11y # inline a11y info on every node
|
|
257
257
|
```
|
|
258
258
|
|
|
259
259
|
native styled layout reads rendered pixels rather than inferring contrast from
|
|
@@ -269,9 +269,9 @@ contrast summary format:
|
|
|
269
269
|
finding offenders fast:
|
|
270
270
|
|
|
271
271
|
```sh
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
272
|
+
rnx find --no-label # interactive nodes missing label
|
|
273
|
+
rnx find --no-role # interactive nodes missing role
|
|
274
|
+
rnx find --pressable --max-dim 44 # undersized tap targets
|
|
275
275
|
```
|
|
276
276
|
|
|
277
277
|
what gets checked:
|
|
@@ -280,7 +280,7 @@ what gets checked:
|
|
|
280
280
|
- **missing roles** — `Pressable`/`Touchable` without `accessibilityRole`
|
|
281
281
|
- **missing hints** — complex interactions without `accessibilityHint`
|
|
282
282
|
- **touch target size** — tappable nodes with hitSlop-expanded rect <44×44
|
|
283
|
-
- **contrast** — run `
|
|
283
|
+
- **contrast** — run `rnx get layout --styling`; it samples final text and
|
|
284
284
|
text-suppressed background pixels, including gradients and composited opacity
|
|
285
285
|
- **label / visible-text mismatch** — label that reads differently from
|
|
286
286
|
the text VoiceOver would fall back to (often a translation bug)
|
|
@@ -297,11 +297,11 @@ triage order:
|
|
|
297
297
|
fix → verify loop (the same shape as debugging):
|
|
298
298
|
|
|
299
299
|
```sh
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
rnx get a11y > before-a11y.txt
|
|
301
|
+
rnx get layout --styling --json > before-layout.json
|
|
302
302
|
# apply the fix
|
|
303
|
-
|
|
304
|
-
|
|
303
|
+
rnx get a11y > after-a11y.txt
|
|
304
|
+
rnx get layout --styling --json > after-layout.json
|
|
305
305
|
diff before-a11y.txt after-a11y.txt
|
|
306
306
|
diff before-layout.json after-layout.json
|
|
307
307
|
```
|
|
@@ -372,45 +372,45 @@ type names sneak in).
|
|
|
372
372
|
### finding and interacting
|
|
373
373
|
|
|
374
374
|
```sh
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
375
|
+
rnx describe # all visible elements with styles
|
|
376
|
+
rnx describe button # filter by text/role/label/testID
|
|
377
|
+
rnx describe --testid foo # only the subtree under a testID
|
|
378
|
+
rnx describe --verbose # include every style property
|
|
379
|
+
|
|
380
|
+
rnx find "Sign in" # by text content
|
|
381
|
+
rnx find --testid loginButton
|
|
382
|
+
rnx find --role button
|
|
383
|
+
rnx find --pressable
|
|
384
|
+
rnx find --visible # only on-screen nodes
|
|
385
|
+
|
|
386
|
+
rnx do tap-id loginButton # tap by testID (preferred)
|
|
387
|
+
rnx do tap-text "Submit" # tap by text
|
|
388
|
+
rnx do tap 196 400 # tap at coordinates
|
|
389
|
+
rnx do type "hello world" # type into focused input
|
|
390
|
+
rnx do type-into emailInput "a@b" # focus then type
|
|
391
|
+
rnx do key return # special key (return, backspace, …)
|
|
392
|
+
rnx do scroll feed-list 0 500 # scroll a testID by dx/dy
|
|
393
|
+
rnx do swipe feed-list left # directional swipe
|
|
394
|
+
rnx do long-press messageRow 800 # ms hold
|
|
395
395
|
```
|
|
396
396
|
|
|
397
397
|
### errors and requests
|
|
398
398
|
|
|
399
399
|
```sh
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
400
|
+
rnx get errors 5 # last 5 console errors
|
|
401
|
+
rnx get warnings 5
|
|
402
|
+
rnx get requests 5 # recent failed requests
|
|
403
|
+
rnx logs --since 30s # recent console output
|
|
404
|
+
rnx network --since 30s # recent network traffic
|
|
405
405
|
```
|
|
406
406
|
|
|
407
407
|
### snapshots and diff
|
|
408
408
|
|
|
409
409
|
```sh
|
|
410
|
-
|
|
410
|
+
rnx debug snapshot before
|
|
411
411
|
# interact
|
|
412
|
-
|
|
413
|
-
|
|
412
|
+
rnx debug snapshot after
|
|
413
|
+
rnx debug diff before after # added / removed / changed nodes
|
|
414
414
|
```
|
|
415
415
|
|
|
416
416
|
### debug channels
|
|
@@ -419,7 +419,7 @@ useful: `animated`, `layout`, `onlayout`, `render`, `sheets`, `portals`,
|
|
|
419
419
|
`gesture`, `scroll`, `text`, `image`.
|
|
420
420
|
|
|
421
421
|
```sh
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
422
|
+
rnx debug enable animated,layout,sheets,portals
|
|
423
|
+
rnx debug recent layout 20 # last 20 events on the channel
|
|
424
|
+
rnx debug disable animated,layout,sheets,portals
|
|
425
425
|
```
|
package/skills/rnx-perf/SKILL.md
CHANGED
|
@@ -57,7 +57,7 @@ indict, remeasure — and every wasted week came from skipping a step.
|
|
|
57
57
|
|
|
58
58
|
### presentation proof must stay outside the simulator
|
|
59
59
|
|
|
60
|
-
Performance acceptance must not use `
|
|
60
|
+
Performance acceptance must not use `rnx record`, `liveComposite`,
|
|
61
61
|
`captureBitmaps`, Chrome screencast, or another in-page frame-copy path. Those
|
|
62
62
|
paths add work to the simulator or browser and can change the cadence being
|
|
63
63
|
measured. Record the visible window with the operating system's native screen
|
|
@@ -120,10 +120,10 @@ property on the transform owner can move the whole trajectory to the browser's
|
|
|
120
120
|
main thread. Paint stable decoration once or give it a distinct layer.
|
|
121
121
|
|
|
122
122
|
```sh
|
|
123
|
-
|
|
123
|
+
rnx perf shell start # arm shell frame capture (clears prior)
|
|
124
124
|
# reproduce — e.g. 8 fling swipes:
|
|
125
|
-
# for i in {1..8}; do
|
|
126
|
-
|
|
125
|
+
# for i in {1..8}; do rnx do swipe 196 650 196 250 8 8 --no-wait; sleep 0.9; done
|
|
126
|
+
rnx perf shell stop # report (add --json for scripting)
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
the report and how to read it:
|
|
@@ -190,10 +190,10 @@ identify from its own output is not evidence.
|
|
|
190
190
|
deeper tools when the frame report isn't enough:
|
|
191
191
|
|
|
192
192
|
```sh
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
193
|
+
rnx maestro test .maestro/scroll.yaml --profile # per-step + frame stats
|
|
194
|
+
rnx perf cpu --duration 5 --output /tmp/t.cpuprofile # sampled CPU
|
|
195
|
+
rnx open 8089 --new --driver playwright --cdp-port 9222 # cpu-profile a driveable sim
|
|
196
|
+
rnx debug enable layout,render && rnx debug recent layout 40
|
|
197
197
|
```
|
|
198
198
|
|
|
199
199
|
### the cadence block: frames that never happened
|
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rnx-setup
|
|
3
|
-
description: Get rnx connected to your React Native app — from `
|
|
3
|
+
description: Get rnx connected to your React Native app — from `rnx setup` to a driveable sim
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# rnx setup
|
|
7
7
|
|
|
8
8
|
you want to drive a React Native app with rnx from the CLI. this skill
|
|
9
|
-
takes you from `
|
|
10
|
-
|
|
11
|
-
`
|
|
9
|
+
takes you from `rnx setup` to a connected, pinned sim that every other
|
|
10
|
+
rnx skill assumes exists. no per-app rnx install is required. if
|
|
11
|
+
`rnx describe` already
|
|
12
12
|
returns a tree, you're past this skill — load `/rnx-debug` for
|
|
13
13
|
debugging or `/rnx-test` for writing tests.
|
|
14
14
|
|
|
15
15
|
## anti-patterns (read first)
|
|
16
16
|
|
|
17
|
-
- **never `
|
|
17
|
+
- **never `rnx claim --force` a sim held by another CLI.** the lease
|
|
18
18
|
exists for a reason. forcing strands the other agent and corrupts the
|
|
19
|
-
bridge state. use `
|
|
20
|
-
- **don't switch sims mid-investigation.** pin once with `
|
|
19
|
+
bridge state. use `rnx open --new` to start a fresh sim instead.
|
|
20
|
+
- **don't switch sims mid-investigation.** pin once with `rnx use
|
|
21
21
|
<id>` and keep it pinned. an unpinned command refuses to choose when more
|
|
22
22
|
than one driveable sim is live.
|
|
23
|
-
- **an empty `
|
|
23
|
+
- **an empty `rnx list` is not "broken rnx".** it usually means the
|
|
24
24
|
daemon is down, the dev server port is wrong, or the runtime is missing.
|
|
25
25
|
walk the recovery checklist before reinstalling.
|
|
26
|
-
- **keep one sim for your whole session.** the first `
|
|
26
|
+
- **keep one sim for your whole session.** the first `rnx open <port>`
|
|
27
27
|
launches Chrome for Testing with an isolated profile. later opens reuse the
|
|
28
|
-
saved sim and navigate it in place. use `
|
|
28
|
+
saved sim and navigate it in place. use `rnx do reload` when the target
|
|
29
29
|
has not changed:
|
|
30
30
|
|
|
31
31
|
```sh
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
rnx open 8086 # first call creates your isolated sim
|
|
33
|
+
rnx open 8090 # same sim, different app
|
|
34
|
+
rnx do reload # same sim, same app
|
|
35
|
+
rnx close <id> # dispose it when you are done
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
`--new`, `--profile`, and `--ephemeral` create another isolated browser
|
|
39
39
|
tree. use them only when separate storage or a genuinely concurrent sim is
|
|
40
40
|
required. repeated new trees consume enough memory and CPU to starve other
|
|
41
41
|
work on a shared machine.
|
|
42
|
-
- **pin the sim before driving it.** `
|
|
42
|
+
- **pin the sim before driving it.** `rnx open` records the new sim for the
|
|
43
43
|
current CLI identity. read its id and pin it explicitly before a longer flow:
|
|
44
44
|
|
|
45
45
|
```sh
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
rnx open 8086
|
|
47
|
+
rnx list
|
|
48
|
+
rnx use <id>
|
|
49
|
+
rnx describe --sim <id>
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
- **never retry-loop `
|
|
52
|
+
- **never retry-loop `rnx open` against a wedged or slow stack.** a
|
|
53
53
|
connect timeout means diagnose the stack. do not retry. if the first launch
|
|
54
54
|
never connects, each retry can create another browser tree before there is a
|
|
55
55
|
saved sim to reuse. verify the development server and rnx runtime, then
|
|
@@ -58,47 +58,47 @@ debugging or `/rnx-test` for writing tests.
|
|
|
58
58
|
## first move
|
|
59
59
|
|
|
60
60
|
```sh
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
rnx setup # one-time guided setup; installs daemon
|
|
62
|
+
rnx compat --json # scan the app's native package compatibility
|
|
63
|
+
rnx open 8081 # load a metro/expo dev server
|
|
64
|
+
rnx list # confirm exactly one sim is reachable
|
|
65
|
+
rnx use <id> # pin it for the rest of the workflow
|
|
66
|
+
rnx describe # smoke test — should print a render tree
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
if you do not know the port, run `
|
|
69
|
+
if you do not know the port, run `rnx open` with no target and pick from
|
|
70
70
|
the detected dev servers. for hosted or unusual targets, pass the URL
|
|
71
71
|
explicitly:
|
|
72
72
|
|
|
73
73
|
```sh
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
rnx open 8081 # load a metro dev server
|
|
75
|
+
rnx open https://my-app.local # load a hosted bundle
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
## you're done when
|
|
79
79
|
|
|
80
|
-
- `
|
|
81
|
-
- `
|
|
82
|
-
- the same sim id appears in `
|
|
80
|
+
- `rnx list` shows your sim and no orphans
|
|
81
|
+
- `rnx describe` returns a render tree, not an error
|
|
82
|
+
- the same sim id appears in `rnx describe`, `rnx find`, and
|
|
83
83
|
every subsequent command
|
|
84
|
-
- `
|
|
84
|
+
- `rnx get errors 5` and `rnx get requests 5` are quiet (or the
|
|
85
85
|
warnings are ones you understand)
|
|
86
86
|
- the compatibility scan's partial, unsupported, unknown, and version-mismatched
|
|
87
87
|
packages have been summarized without treating its aggregate score as a pass/fail gate
|
|
88
88
|
|
|
89
89
|
## compatibility feedback requires approval
|
|
90
90
|
|
|
91
|
-
run `
|
|
91
|
+
run `rnx compat --json` from the app project root during setup. if the scan
|
|
92
92
|
identifies a plausible missing rnx seam, or the running app gives concrete
|
|
93
93
|
evidence that behavior is missing or broken specifically in rnx, summarize
|
|
94
94
|
the package, expected behavior, actual behavior, and runtime evidence for the
|
|
95
|
-
user. then offer to send that finding with `
|
|
95
|
+
user. then offer to send that finding with `rnx report-issue`.
|
|
96
96
|
|
|
97
97
|
**never submit a report automatically or behind the user's back.** wait for an
|
|
98
98
|
explicit yes. only then run this from the app project root:
|
|
99
99
|
|
|
100
100
|
```sh
|
|
101
|
-
|
|
101
|
+
rnx report-issue --yes "<package; expected behavior; actual behavior; runtime evidence>"
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
the command automatically attaches the local compatibility scan plus bounded
|
|
@@ -110,32 +110,32 @@ it records the user's approval after the offer.
|
|
|
110
110
|
|
|
111
111
|
## recovery — common failure modes
|
|
112
112
|
|
|
113
|
-
**`
|
|
113
|
+
**`rnx list` is empty.** walk this checklist in order:
|
|
114
114
|
|
|
115
115
|
```sh
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
rnx daemon status # is the bridge daemon up?
|
|
117
|
+
rnx runtime list # is at least one engine runtime installed?
|
|
118
|
+
rnx open <port> # does loading explicitly work?
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
if daemon is down: run `
|
|
122
|
-
a foreground bridge. if no runtime is installed, `
|
|
121
|
+
if daemon is down: run `rnx setup`, or `rnx serve` in another shell for
|
|
122
|
+
a foreground bridge. if no runtime is installed, `rnx open` installs it
|
|
123
123
|
before launching. if open errors with "port unreachable": confirm your dev
|
|
124
|
-
server is actually serving — the bundler has to be up before
|
|
124
|
+
server is actually serving — the bundler has to be up before rnx can
|
|
125
125
|
attach.
|
|
126
126
|
|
|
127
|
-
**two sims appear unexpectedly.** an earlier `
|
|
127
|
+
**two sims appear unexpectedly.** an earlier `rnx claim` didn't
|
|
128
128
|
release on exit. close the orphan explicitly:
|
|
129
129
|
|
|
130
130
|
```sh
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
rnx list # note the stale id
|
|
132
|
+
rnx close <id> # release it cleanly
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
**`
|
|
136
|
-
Run `
|
|
135
|
+
**`rnx open` errors with "no runtime".** the engine binary isn't installed.
|
|
136
|
+
Run `rnx runtime install`, then retry `rnx open <port>`.
|
|
137
137
|
|
|
138
|
-
**`
|
|
138
|
+
**`rnx open` times out ("timed out waiting for opened sim to connect").**
|
|
139
139
|
do not retry in a loop. verify the development server first: `__soot/` must
|
|
140
140
|
respond and the engine watchers must be running. inspect the driver diagnostic
|
|
141
141
|
path printed by the failed command. restart the broken development stack at its
|
|
@@ -143,13 +143,13 @@ supervisor, then retry once. rnx owns the isolated browser profile and its
|
|
|
143
143
|
process tree; do not open the shell URL through an operating-system browser.
|
|
144
144
|
|
|
145
145
|
**bridge disconnects mid-sim.** the WebSocket dropped (laptop slept,
|
|
146
|
-
network blip). re-pin: `
|
|
146
|
+
network blip). re-pin: `rnx use <id>`. the daemon retries reconnection
|
|
147
147
|
automatically; you usually just need to re-issue the command.
|
|
148
148
|
|
|
149
149
|
**"sim held by another CLI".** another agent or your own previous CLI
|
|
150
|
-
process has the lease. find it (`
|
|
151
|
-
<id>`), or start a clean sim (`
|
|
152
|
-
`
|
|
150
|
+
process has the lease. find it (`rnx list`), close it (`rnx close
|
|
151
|
+
<id>`), or start a clean sim (`rnx open --new`) — do **not**
|
|
152
|
+
`rnx claim --force`.
|
|
153
153
|
|
|
154
154
|
## related
|
|
155
155
|
|