rnxsim 0.1.334 → 0.1.336
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-XB27DMQ6.js → agent-PZLF36FY.js} +14 -14
- package/dist-cli/chunks/{agent-wrapper-B3HNORTW.js → agent-wrapper-6TA43SJ2.js} +3 -3
- package/dist-cli/chunks/app-fonts-MTZTCJUY.js +4 -0
- package/dist-cli/chunks/{assert-6CUEOSSO.js → assert-2CVO2TYX.js} +12 -12
- package/dist-cli/chunks/auth-LKXFRFOT.js +12 -0
- package/dist-cli/chunks/{beta-H5SAI4RD.js → beta-OATC5IPA.js} +2 -2
- package/dist-cli/chunks/camera-VX65VO5N.js +33 -0
- package/dist-cli/chunks/{chunk-R3JUSXCG.js → chunk-262YA5CJ.js} +2 -2
- package/dist-cli/chunks/{chunk-2W7J4B3D.js → chunk-2J4OBR7W.js} +18 -18
- package/dist-cli/chunks/{chunk-GO7WTRY4.js → chunk-2PFDFGOG.js} +1 -1
- package/dist-cli/chunks/{chunk-BH3NYOFU.js → chunk-2Q6S7X5O.js} +4 -4
- package/dist-cli/chunks/{chunk-JZFZ7NGF.js → chunk-2VOFUIKQ.js} +9 -9
- package/dist-cli/chunks/chunk-3QCSDI3B.js +5 -0
- package/dist-cli/chunks/{chunk-IZITFEO5.js → chunk-4532OPNZ.js} +3 -3
- package/dist-cli/chunks/{chunk-S5Q2TACY.js → chunk-5YCVNKD7.js} +23 -23
- package/dist-cli/chunks/{chunk-R5KHC7VZ.js → chunk-6ALTVOXE.js} +6 -6
- package/dist-cli/chunks/chunk-6TN3YWA6.js +124 -0
- package/dist-cli/chunks/{chunk-KSJTW5ZW.js → chunk-7FHAHI5V.js} +2 -2
- package/dist-cli/chunks/{chunk-TKTAVBKB.js → chunk-7PMNRG53.js} +4 -4
- package/dist-cli/chunks/{chunk-752UYKC6.js → chunk-ARFQOYRO.js} +1 -1
- package/dist-cli/chunks/chunk-BHXQ7MUW.js +5 -0
- package/dist-cli/chunks/{chunk-HMZS7LD4.js → chunk-BIZE6NBI.js} +1 -1
- package/dist-cli/chunks/{chunk-INV6BZQY.js → chunk-BOZARB6P.js} +2 -2
- package/dist-cli/chunks/chunk-BVGUTE2T.js +74 -0
- package/dist-cli/chunks/{chunk-K2NYE3XT.js → chunk-BYOFHYKS.js} +1 -1
- package/dist-cli/chunks/{chunk-TLAYQHXB.js → chunk-DMD24WAG.js} +1 -1
- package/dist-cli/chunks/{chunk-PSVQUW3M.js → chunk-EAPHUH2R.js} +2 -2
- package/dist-cli/chunks/{chunk-ELFSL6AX.js → chunk-FMWEQNK2.js} +2 -2
- package/dist-cli/chunks/{chunk-OJJUPWLY.js → chunk-FWGDP2J4.js} +2 -2
- package/dist-cli/chunks/{chunk-VCBH7RDB.js → chunk-G3FVXFPF.js} +2 -2
- package/dist-cli/chunks/{chunk-U5JW25P3.js → chunk-GI3GZ54J.js} +1 -1
- package/dist-cli/chunks/{chunk-AH7KCTAP.js → chunk-HDHHEWEA.js} +2 -2
- package/dist-cli/chunks/{chunk-G2UNJ4TN.js → chunk-JIWE66VU.js} +1 -1
- package/dist-cli/chunks/{chunk-7HXPSUI6.js → chunk-KDRDDPNN.js} +1 -1
- package/dist-cli/chunks/{chunk-ANO5CHPQ.js → chunk-KPL344LX.js} +2 -2
- package/dist-cli/chunks/{chunk-3OGSYYLZ.js → chunk-M2OWBYUG.js} +1 -1
- package/dist-cli/chunks/{chunk-7D2P57SZ.js → chunk-M2XGXP7G.js} +1 -1
- package/dist-cli/chunks/{chunk-KV653SVK.js → chunk-MARPC3GM.js} +2 -2
- package/dist-cli/chunks/{chunk-ZYWOBHVL.js → chunk-MQES3MTN.js} +2 -2
- package/dist-cli/chunks/{chunk-ZVBWTXV6.js → chunk-NDLRQH7U.js} +5 -5
- package/dist-cli/chunks/{chunk-DECDURI3.js → chunk-NJMBQLAU.js} +2 -2
- package/dist-cli/chunks/{chunk-X6LGVNYE.js → chunk-NL2HXO7U.js} +1 -1
- package/dist-cli/chunks/{chunk-XCI6HRMH.js → chunk-NVPZLIMW.js} +1 -1
- package/dist-cli/chunks/{chunk-CYXIDSTO.js → chunk-NWVH2X7F.js} +2 -2
- package/dist-cli/chunks/{chunk-PFOKFWHU.js → chunk-OUAYBJ4G.js} +2 -2
- package/dist-cli/chunks/{chunk-WJJYIBVW.js → chunk-OXRDTNVL.js} +2 -2
- package/dist-cli/chunks/{chunk-Q2KHHFU3.js → chunk-QIVOOERS.js} +2 -2
- package/dist-cli/chunks/{chunk-WXUWD5JK.js → chunk-RZ2PXHA7.js} +11 -11
- package/dist-cli/chunks/{chunk-32AHRTE2.js → chunk-S33NCWJV.js} +2 -2
- package/dist-cli/chunks/{chunk-YX7RESF2.js → chunk-STMCT3G3.js} +2 -2
- package/dist-cli/chunks/{chunk-25BPBDWK.js → chunk-SV6NVD7P.js} +1 -1
- package/dist-cli/chunks/{chunk-62GN45A4.js → chunk-TA4GBBGC.js} +2 -2
- package/dist-cli/chunks/{chunk-MCX66YUZ.js → chunk-TV457FWW.js} +2 -2
- package/dist-cli/chunks/chunk-UB3JHBDW.js +4 -0
- package/dist-cli/chunks/{chunk-CLJ5KDZQ.js → chunk-UU2KMAIA.js} +1 -1
- package/dist-cli/chunks/chunk-UZCNKUSS.js +15 -0
- package/dist-cli/chunks/{chunk-R7XQX7CV.js → chunk-V4OZDPTA.js} +1 -1
- package/dist-cli/chunks/{chunk-UBZ7VUVM.js → chunk-WBTT5WIO.js} +1 -1
- package/dist-cli/chunks/chunk-YYBC6VB2.js +30 -0
- package/dist-cli/chunks/{chunk-PPTUVZET.js → chunk-ZI6YQKD6.js} +2 -2
- package/dist-cli/chunks/{cleanup-L5RZFZHK.js → cleanup-ZC5OVBIM.js} +10 -10
- package/dist-cli/chunks/cli-version-NOYHDN6P.js +4 -0
- package/dist-cli/chunks/{compat-6UV3RZBK.js → compat-BS2E7XDD.js} +9 -9
- package/dist-cli/chunks/{config-PCDG3T44.js → config-VDCDUYMZ.js} +5 -5
- package/dist-cli/chunks/{control-3F5UWGSP.js → control-IKS3CUP4.js} +2 -2
- package/dist-cli/chunks/daemon-MM3C4O2B.js +4 -0
- package/dist-cli/chunks/{debug-U3AW3DE7.js → debug-BKMZ5SRR.js} +17 -17
- package/dist-cli/chunks/desktop-FZQHSNF7.js +31 -0
- package/dist-cli/chunks/detox-52AM3DKY.js +52 -0
- package/dist-cli/chunks/{device-Z7QIRPK3.js → device-7FL5Y542.js} +11 -11
- package/dist-cli/chunks/{diagnose-XTLKRGK4.js → diagnose-YT4BKJ7I.js} +12 -12
- package/dist-cli/chunks/{disk-cleanup-EGA7FHY2.js → disk-cleanup-O6ICYLAC.js} +2 -2
- package/dist-cli/chunks/drivers-YY3YRD2L.js +4 -0
- package/dist-cli/chunks/{film-VCD3LX7E.js → film-7YBOFSOZ.js} +9 -9
- package/dist-cli/chunks/flow-I4PVS52A.js +4 -0
- package/dist-cli/chunks/help-35ESSWJH.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-WIG4O25J.js → hidden-runtime-alias-M3UFKZB6.js} +2 -2
- package/dist-cli/chunks/{home-paths-35K3WNLQ.js → home-paths-VW7G7LVZ.js} +2 -2
- package/dist-cli/chunks/inspect-PCJ6C2BN.js +4 -0
- package/dist-cli/chunks/install-desktop-NGQWMGQO.js +4 -0
- package/dist-cli/chunks/{login-JMQOKJS4.js → login-5VAHTGHC.js} +6 -6
- package/dist-cli/chunks/{logout-SBZ42HSW.js → logout-CXZFNMYF.js} +2 -2
- package/dist-cli/chunks/{maestro-3ZOPLMLN.js → maestro-THMBR6L3.js} +25 -25
- package/dist-cli/chunks/{maestro-generate-UZ75KHE6.js → maestro-generate-R73J53KE.js} +3 -3
- package/dist-cli/chunks/mode-5RJYFW76.js +26 -0
- package/dist-cli/chunks/{optional-demo-registry-B5RN64RF.js → optional-demo-registry-U7SCVX5U.js} +2 -2
- package/dist-cli/chunks/{perf-HDAR6QCJ.js → perf-AW6LG6FW.js} +28 -28
- package/dist-cli/chunks/permissions-6JWNMXYT.js +13 -0
- package/dist-cli/chunks/record-LLPM3BJT.js +72 -0
- package/dist-cli/chunks/{report-issue-45ECETI7.js → report-issue-YO2NAMJS.js} +4 -4
- package/dist-cli/chunks/reset-5LDPRL3W.js +4 -0
- package/dist-cli/chunks/runtime-IAICY2UL.js +4 -0
- package/dist-cli/chunks/{screenshot-command-ZTTTH5DS.js → screenshot-command-X7ECU2SK.js} +34 -34
- package/dist-cli/chunks/{screenshot-layers-NBYY3W7W.js → screenshot-layers-E7GLIOHG.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-EPPIKH5Q.js → screenshots-capture-TKR2YV6U.js} +11 -11
- package/dist-cli/chunks/{serve-4I2GY23Q.js → serve-HFNYO3YS.js} +16 -16
- package/dist-cli/chunks/setup-2HQHROP3.js +32 -0
- package/dist-cli/chunks/{skills-FBQ52ZMO.js → skills-PFCCKOPW.js} +16 -16
- package/dist-cli/chunks/{state-LQEZWXEX.js → state-NOCC6IGB.js} +5 -5
- package/dist-cli/chunks/storage-4SYN4ZWP.js +37 -0
- package/dist-cli/chunks/store-7QDSVAZ4.js +4 -0
- package/dist-cli/chunks/telemetry-LGTXJEJC.js +4 -0
- package/dist-cli/chunks/{timeline-3AIKN2SF.js → timeline-E2SFUV76.js} +6 -6
- package/dist-cli/chunks/{upgrade-HYPCBXGF.js → upgrade-KD76JQCK.js} +2 -2
- package/dist-cli/chunks/upload-FI2TS5S7.js +4 -0
- package/dist-cli/chunks/version-B23A4BFH.js +6 -0
- package/dist-cli/chunks/{web-Q6TI7YFH.js → web-6OAWYV5Z.js} +2 -2
- package/dist-cli/chunks/{what-happened-4PNRFBVS.js → what-happened-IYXUFM72.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-R3Z7ZW4A.js +0 -4
- package/dist-cli/chunks/auth-LAGALWLO.js +0 -12
- package/dist-cli/chunks/camera-QN6WUAYK.js +0 -33
- package/dist-cli/chunks/chunk-2A4XQAO5.js +0 -5
- package/dist-cli/chunks/chunk-CFRBWE4I.js +0 -124
- package/dist-cli/chunks/chunk-FSS73GUP.js +0 -4
- package/dist-cli/chunks/chunk-KKLCABLJ.js +0 -15
- package/dist-cli/chunks/chunk-L4JC72JR.js +0 -5
- package/dist-cli/chunks/chunk-LGO27KAL.js +0 -30
- package/dist-cli/chunks/chunk-ZS3IA2TO.js +0 -74
- package/dist-cli/chunks/cli-version-YLZLS2WD.js +0 -4
- package/dist-cli/chunks/daemon-7KWRXNTD.js +0 -4
- package/dist-cli/chunks/desktop-NXZL7FFL.js +0 -31
- package/dist-cli/chunks/detox-ZVCZR6RI.js +0 -52
- package/dist-cli/chunks/drivers-NCRG3DPA.js +0 -4
- package/dist-cli/chunks/flow-XTAZ54NO.js +0 -4
- package/dist-cli/chunks/help-HXJS23VT.js +0 -4
- package/dist-cli/chunks/inspect-FGQNWT3J.js +0 -4
- package/dist-cli/chunks/install-desktop-PRZH7KML.js +0 -4
- package/dist-cli/chunks/mode-PUJBFJV2.js +0 -26
- package/dist-cli/chunks/permissions-FG2BLOZH.js +0 -13
- package/dist-cli/chunks/record-2733FYSQ.js +0 -72
- package/dist-cli/chunks/reset-7RTBJQT7.js +0 -4
- package/dist-cli/chunks/runtime-FWAZCY6A.js +0 -4
- package/dist-cli/chunks/setup-FAQDSB56.js +0 -32
- package/dist-cli/chunks/storage-6CRLZNEX.js +0 -37
- package/dist-cli/chunks/store-PNV6NRDU.js +0 -4
- package/dist-cli/chunks/telemetry-ZS6SFANV.js +0 -4
- package/dist-cli/chunks/upload-EMRR47KT.js +0 -4
- package/dist-cli/chunks/version-P4NCNAW7.js +0 -6
|
@@ -27,14 +27,14 @@ import { rnxPublicBrand } from '../../src/public-brand'
|
|
|
27
27
|
import { resolveCliAuth, type CliAuth } from '../auth'
|
|
28
28
|
|
|
29
29
|
const HELP = `
|
|
30
|
-
|
|
30
|
+
rnx screenshot appstore capture — headlessly capture + upload App Store slides
|
|
31
31
|
|
|
32
32
|
usage:
|
|
33
|
-
|
|
33
|
+
rnx screenshot appstore capture --org <org> --repo <repo> [options]
|
|
34
34
|
|
|
35
35
|
what it does:
|
|
36
36
|
boots the org-mode build shell in headless GPU Chrome (authed via your
|
|
37
|
-
\`
|
|
37
|
+
\`rnx login\` session), captures each slide through the live screenshot
|
|
38
38
|
composer so every slide gets editable layers (captureRef + cleanRef +
|
|
39
39
|
screenRef), and lets the shell auto-upload them to your org deck.
|
|
40
40
|
|
|
@@ -53,8 +53,8 @@ options:
|
|
|
53
53
|
--json machine-readable summary
|
|
54
54
|
|
|
55
55
|
examples:
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
rnx screenshot appstore capture --org acme --repo my-app --dry-run
|
|
57
|
+
rnx screenshot appstore capture --org acme --repo my-app --branch main --force
|
|
58
58
|
`
|
|
59
59
|
|
|
60
60
|
interface CaptureSlide {
|
|
@@ -125,8 +125,8 @@ function resolveSessionAuth(): { token: string; origin: string } {
|
|
|
125
125
|
const auth: CliAuth | null = resolveCliAuth()
|
|
126
126
|
if (auth && auth.kind === 'session') return { token: auth.token, origin: auth.origin }
|
|
127
127
|
process.stderr.write(
|
|
128
|
-
'\n
|
|
129
|
-
' run `
|
|
128
|
+
'\n rnx screenshot appstore capture needs a logged-in session.\n' +
|
|
129
|
+
' run `rnx login` first (the captured slides upload to that account).\n\n',
|
|
130
130
|
)
|
|
131
131
|
process.exit(1)
|
|
132
132
|
}
|
|
@@ -13,10 +13,10 @@ export async function runScreenshots(
|
|
|
13
13
|
): Promise<number> {
|
|
14
14
|
if (args.includes('--help') || args.includes('-h')) {
|
|
15
15
|
console.log(`
|
|
16
|
-
|
|
16
|
+
rnx screenshot appstore — capture and compose app-store screenshot sets
|
|
17
17
|
|
|
18
18
|
usage:
|
|
19
|
-
|
|
19
|
+
rnx screenshot appstore --plan <plan.yaml> [options]
|
|
20
20
|
|
|
21
21
|
options:
|
|
22
22
|
--plan <path> screenshot plan yaml
|
|
@@ -31,9 +31,9 @@ options:
|
|
|
31
31
|
--compose-only skip flow capture, reuse existing raw screenshots
|
|
32
32
|
|
|
33
33
|
examples:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
rnx screenshot appstore --plan app-store.yaml
|
|
35
|
+
rnx screenshot appstore --plan app-store.yaml --sim a9
|
|
36
|
+
rnx screenshot appstore --plan app-store.yaml --org acme --repo mobile
|
|
37
37
|
`)
|
|
38
38
|
return 0
|
|
39
39
|
}
|
|
@@ -77,7 +77,7 @@ examples:
|
|
|
77
77
|
const auth = resolveCliAuth()
|
|
78
78
|
if (!auth) {
|
|
79
79
|
console.error(
|
|
80
|
-
' error: --org/--repo needs auth — run `
|
|
80
|
+
' error: --org/--repo needs auth — run `rnx login` or set RNX_API_KEY.',
|
|
81
81
|
)
|
|
82
82
|
return 1
|
|
83
83
|
}
|
package/cli/commands/serve.ts
CHANGED
|
@@ -37,22 +37,22 @@ interface ServeOptions {
|
|
|
37
37
|
export async function runServe(args: string[], opts: ServeOptions = {}) {
|
|
38
38
|
if (args.includes('--help') || args.includes('-h')) {
|
|
39
39
|
console.log(`
|
|
40
|
-
|
|
40
|
+
rnx serve — run the rnx bridge in the foreground
|
|
41
41
|
|
|
42
42
|
hosts the WS bridge that CLI commands talk to. once running, any rnx
|
|
43
43
|
renderer (browser, electron, headless playwright) that connects to port 7668
|
|
44
|
-
becomes drivable from '
|
|
44
|
+
becomes drivable from 'rnx describe', 'rnx do tap', etc.
|
|
45
45
|
|
|
46
46
|
usage:
|
|
47
|
-
|
|
47
|
+
rnx serve [options]
|
|
48
48
|
|
|
49
49
|
options:
|
|
50
50
|
--port <n> bridge port (defaults to ${DEFAULT_SOOTSIM_BRIDGE_PORT})
|
|
51
51
|
--quiet suppress per-connection logging
|
|
52
52
|
|
|
53
53
|
examples:
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
rnx serve
|
|
55
|
+
rnx serve --port 7668 --quiet
|
|
56
56
|
`)
|
|
57
57
|
process.exit(0)
|
|
58
58
|
}
|
|
@@ -76,7 +76,7 @@ examples:
|
|
|
76
76
|
console.error(
|
|
77
77
|
` an rnx bridge is already running (pid ${existingLock.pid}, port ${existingLock.bridgePort})`,
|
|
78
78
|
)
|
|
79
|
-
console.error(` stop it with '
|
|
79
|
+
console.error(` stop it with 'rnx daemon stop' first`)
|
|
80
80
|
process.exit(1)
|
|
81
81
|
}
|
|
82
82
|
|
package/cli/commands/setup.ts
CHANGED
|
@@ -103,7 +103,7 @@ export async function runSetup(args: string[]): Promise<SetupResult | undefined>
|
|
|
103
103
|
const runtimeVersion = resolvedRuntime.version
|
|
104
104
|
const cliVersion = getCliVersion()
|
|
105
105
|
if (cliVersion === '0.0.0') {
|
|
106
|
-
throw new Error('could not resolve the installed
|
|
106
|
+
throw new Error('could not resolve the installed rnx CLI version')
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
let repositoryPlan: RepositorySetupPlan | null = null
|
|
@@ -416,7 +416,7 @@ function runtimeCacheMetadata(runtimeVersion: string) {
|
|
|
416
416
|
|
|
417
417
|
function printIntro(options: SetupOptions): void {
|
|
418
418
|
if (options.json) return
|
|
419
|
-
console.log(`\n ${options.fromWelcome ? 'welcome to rnx' : '
|
|
419
|
+
console.log(`\n ${options.fromWelcome ? 'welcome to rnx' : 'rnx setup'}`)
|
|
420
420
|
}
|
|
421
421
|
|
|
422
422
|
function printMachineSection(
|
|
@@ -482,7 +482,7 @@ function printCompatibilitySection(
|
|
|
482
482
|
if (options.json) return
|
|
483
483
|
console.log(`\n 4. compatibility`)
|
|
484
484
|
if (!scan) {
|
|
485
|
-
console.log(` no package.json found; run \`
|
|
485
|
+
console.log(` no package.json found; run \`rnx compat\` inside an app later`)
|
|
486
486
|
return
|
|
487
487
|
}
|
|
488
488
|
console.log(` ${formatScanCounts(scan)}`)
|
|
@@ -497,19 +497,17 @@ function printReadySection(repository: RepositorySetupPlan | null): void {
|
|
|
497
497
|
const command =
|
|
498
498
|
repository.packageManager === 'bun'
|
|
499
499
|
? 'bun run sootsim'
|
|
500
|
-
: `${repository.packageManager} run
|
|
500
|
+
: `${repository.packageManager} run rnx`
|
|
501
501
|
console.log(` start your app normally, then ${command} -- <port>`)
|
|
502
502
|
} else {
|
|
503
|
-
console.log(` start your app normally, then
|
|
503
|
+
console.log(` start your app normally, then rnx open <port>`)
|
|
504
504
|
}
|
|
505
|
+
console.log(` useful next commands: rnx describe; rnx get errors; rnx compat`)
|
|
505
506
|
console.log(
|
|
506
|
-
`
|
|
507
|
+
` install agent skills with \`rnx skill install\`, then start a new session`,
|
|
507
508
|
)
|
|
508
509
|
console.log(
|
|
509
|
-
`
|
|
510
|
-
)
|
|
511
|
-
console.log(
|
|
512
|
-
` if a concrete rnx seam is missing or broken, preview \`rnxsim report-issue\` and confirm separately`,
|
|
510
|
+
` if a concrete rnx seam is missing or broken, preview \`rnx report-issue\` and confirm separately`,
|
|
513
511
|
)
|
|
514
512
|
}
|
|
515
513
|
|
|
@@ -520,13 +518,13 @@ function boundedMessage(error: unknown): string {
|
|
|
520
518
|
|
|
521
519
|
function printHelp(): void {
|
|
522
520
|
console.log(`
|
|
523
|
-
|
|
521
|
+
rnx setup — configure a machine and optionally prepare the current repository
|
|
524
522
|
|
|
525
523
|
usage:
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
524
|
+
rnx setup
|
|
525
|
+
rnx setup --yes
|
|
526
|
+
rnx setup --ci --yes --json
|
|
527
|
+
rnx setup --dry-run --yes
|
|
530
528
|
|
|
531
529
|
decisions:
|
|
532
530
|
--service | --no-service
|
package/cli/commands/skills.ts
CHANGED
|
@@ -37,14 +37,14 @@ interface InstallTarget {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
function printSkillHelp() {
|
|
40
|
-
console.log(`
|
|
40
|
+
console.log(`rnx skill
|
|
41
41
|
|
|
42
42
|
install and inspect bundled rnx agent skills.
|
|
43
43
|
|
|
44
44
|
usage:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
rnx skill install [all|codex|claude] [skill-name...]
|
|
46
|
+
rnx skill install --target <dir> [skill-name...]
|
|
47
|
+
rnx skill show [skill-name]
|
|
48
48
|
|
|
49
49
|
commands:
|
|
50
50
|
install install skills; no target means all supported local agents
|
|
@@ -58,7 +58,7 @@ targets:
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
function printInstallHelp() {
|
|
61
|
-
console.log(`
|
|
61
|
+
console.log(`rnx skill install
|
|
62
62
|
|
|
63
63
|
install bundled rnx skills in the agent skill layout: <skill>/SKILL.md.
|
|
64
64
|
each skill directory is symlinked back to its source, so edits stay live
|
|
@@ -66,17 +66,17 @@ without a re-install. an existing install from an older CLI is upgraded in
|
|
|
66
66
|
place; an unrelated skill directory is left alone unless --force is passed.
|
|
67
67
|
|
|
68
68
|
usage:
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
rnx skill install [all|codex|claude] [skill-name...]
|
|
70
|
+
rnx skill install --target <dir> [skill-name...]
|
|
71
71
|
|
|
72
72
|
options:
|
|
73
73
|
--force, -f replace a conflicting existing skill with the symlink
|
|
74
74
|
|
|
75
75
|
examples:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
rnx skill install
|
|
77
|
+
rnx skill install codex
|
|
78
|
+
rnx skill install codex rnx-debug
|
|
79
|
+
rnx skill install --force rnx-debug
|
|
80
80
|
`)
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -330,8 +330,8 @@ function printSkillList(skills: SkillInfo[]) {
|
|
|
330
330
|
console.log(` ${skill.name}`)
|
|
331
331
|
console.log(` ${skill.description}\n`)
|
|
332
332
|
}
|
|
333
|
-
console.log(' usage:
|
|
334
|
-
console.log(' usage:
|
|
333
|
+
console.log(' usage: rnx skill install [all|codex|claude] [skill-name...]')
|
|
334
|
+
console.log(' usage: rnx skill show [skill-name]\n')
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
function parseInstallArgs(args: string[]): {
|
|
@@ -385,7 +385,7 @@ function parseInstallArgs(args: string[]): {
|
|
|
385
385
|
async function runInstall(args: string[]) {
|
|
386
386
|
const skills = listSkills()
|
|
387
387
|
if (skills.length === 0) {
|
|
388
|
-
console.error(' no skills found in
|
|
388
|
+
console.error(' no skills found in rnx package')
|
|
389
389
|
process.exit(1)
|
|
390
390
|
}
|
|
391
391
|
|
package/cli/commands/slides.ts
CHANGED
|
@@ -16,18 +16,18 @@ import {
|
|
|
16
16
|
} from '../ws-bridge'
|
|
17
17
|
|
|
18
18
|
const HELP = `
|
|
19
|
-
|
|
19
|
+
rnx screenshot slides — compose App Store screenshots in the live sim
|
|
20
20
|
|
|
21
21
|
usage:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
rnx screenshot slides list slides (alias: slides list)
|
|
23
|
+
rnx screenshot slides set <n> [fields] patch a slide's copy/colors
|
|
24
|
+
rnx screenshot slides add append a blank slide (focuses it)
|
|
25
|
+
rnx screenshot slides remove <n> delete a slide
|
|
26
|
+
rnx screenshot slides move <n> <position> reorder a slide
|
|
27
|
+
rnx screenshot slides focus <n> open a slide (device flips into it)
|
|
28
|
+
rnx screenshot slides overview back to the gallery
|
|
29
|
+
rnx screenshot slides capture [<n>] capture the live frame into a slide
|
|
30
|
+
rnx screenshot slides export [<n>] [--out <dir>]
|
|
31
31
|
write composed App-Store PNG(s)
|
|
32
32
|
|
|
33
33
|
set fields:
|
|
@@ -43,12 +43,12 @@ set fields:
|
|
|
43
43
|
notes:
|
|
44
44
|
slides are addressed by 1-based index. screenshot mode is auto-enabled.
|
|
45
45
|
capture shoots whatever the sim currently shows — navigate the app first
|
|
46
|
-
(
|
|
46
|
+
(rnx do tap-id …), then capture.
|
|
47
47
|
|
|
48
48
|
examples:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
rnx screenshot slides set 1 --title "The ultimate MMA community." --bg-top cyan --bg-bottom black
|
|
50
|
+
rnx screenshot slides capture 1
|
|
51
|
+
rnx screenshot slides export --out ./exports
|
|
52
52
|
`
|
|
53
53
|
|
|
54
54
|
interface SlideRow {
|
|
@@ -220,9 +220,7 @@ export async function runSlides(
|
|
|
220
220
|
}
|
|
221
221
|
case 'set': {
|
|
222
222
|
if (refArg == null)
|
|
223
|
-
throw new Error(
|
|
224
|
-
'usage: rnxsim screenshot slides set <n> --title … (see --help)',
|
|
225
|
-
)
|
|
223
|
+
throw new Error('usage: rnx screenshot slides set <n> --title … (see --help)')
|
|
226
224
|
const patch: Record<string, string> = {}
|
|
227
225
|
for (const key of [
|
|
228
226
|
'title',
|
|
@@ -259,7 +257,7 @@ export async function runSlides(
|
|
|
259
257
|
break
|
|
260
258
|
}
|
|
261
259
|
case 'remove': {
|
|
262
|
-
if (refArg == null) throw new Error('usage:
|
|
260
|
+
if (refArg == null) throw new Error('usage: rnx screenshot slides remove <n>')
|
|
263
261
|
emit(
|
|
264
262
|
await callInBridgeWrite<ControlState>(
|
|
265
263
|
bridge,
|
|
@@ -271,7 +269,7 @@ export async function runSlides(
|
|
|
271
269
|
}
|
|
272
270
|
case 'move': {
|
|
273
271
|
if (refArg == null || !Number.isInteger(positionArg) || positionArg < 1) {
|
|
274
|
-
throw new Error('usage:
|
|
272
|
+
throw new Error('usage: rnx screenshot slides move <n> <position>')
|
|
275
273
|
}
|
|
276
274
|
emit(
|
|
277
275
|
await callInBridgeWrite<ControlState>(
|
|
@@ -284,7 +282,7 @@ export async function runSlides(
|
|
|
284
282
|
break
|
|
285
283
|
}
|
|
286
284
|
case 'focus': {
|
|
287
|
-
if (refArg == null) throw new Error('usage:
|
|
285
|
+
if (refArg == null) throw new Error('usage: rnx screenshot slides focus <n>')
|
|
288
286
|
emit(
|
|
289
287
|
await callInBridgeWrite<ControlState>(
|
|
290
288
|
bridge,
|
|
@@ -351,9 +349,7 @@ export async function runSlides(
|
|
|
351
349
|
break
|
|
352
350
|
}
|
|
353
351
|
default:
|
|
354
|
-
throw new Error(
|
|
355
|
-
`unknown subcommand "${sub}" — see rnxsim screenshot slides --help`,
|
|
356
|
-
)
|
|
352
|
+
throw new Error(`unknown subcommand "${sub}" — see rnx screenshot slides --help`)
|
|
357
353
|
}
|
|
358
354
|
} finally {
|
|
359
355
|
bridge.close()
|
package/cli/commands/state.ts
CHANGED
|
@@ -12,10 +12,10 @@ function isSimStateResult(value: unknown): value is SimStateResult {
|
|
|
12
12
|
|
|
13
13
|
function printHelp(): void {
|
|
14
14
|
console.log(`
|
|
15
|
-
|
|
15
|
+
rnx state - capture the current app state in one call
|
|
16
16
|
|
|
17
17
|
usage:
|
|
18
|
-
|
|
18
|
+
rnx state [--json] [--sim <id>]
|
|
19
19
|
|
|
20
20
|
options:
|
|
21
21
|
--json print the complete structured result, including the screenshot
|
package/cli/commands/storage.ts
CHANGED
|
@@ -23,11 +23,11 @@ function findSubcommand(args: string[]): { name: string; index: number } | null
|
|
|
23
23
|
|
|
24
24
|
function printHelp(): void {
|
|
25
25
|
console.log(`
|
|
26
|
-
|
|
26
|
+
rnx storage — manage sim and app storage
|
|
27
27
|
|
|
28
28
|
usage:
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
rnx storage profile <subcommand>
|
|
30
|
+
rnx storage clear [--full] [--sim <id>] [--json]
|
|
31
31
|
|
|
32
32
|
subcommands:
|
|
33
33
|
profile list
|
|
@@ -46,7 +46,7 @@ export async function runTelemetry(args: string[]): Promise<void> {
|
|
|
46
46
|
|
|
47
47
|
default:
|
|
48
48
|
console.error(` unknown telemetry action: ${sub}`)
|
|
49
|
-
console.error(' usage:
|
|
49
|
+
console.error(' usage: rnx config telemetry [on|off|status]')
|
|
50
50
|
process.exit(1)
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -30,16 +30,16 @@ const TIMELINE_ACTIONS = new Set(['load', 'seek', 'play', 'pause', 'render', 'me
|
|
|
30
30
|
export async function runThreeMode(args: string[], opts: ShellBooleanModeOptions) {
|
|
31
31
|
if (args.includes('--help') || args.includes('-h')) {
|
|
32
32
|
console.log(`
|
|
33
|
-
|
|
33
|
+
rnx mode three — toggle the 3d device stage
|
|
34
34
|
|
|
35
35
|
usage:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
rnx mode three [on|off|toggle]
|
|
37
|
+
rnx mode three configure [options]
|
|
38
|
+
rnx mode three load <timeline.json>
|
|
39
|
+
rnx mode three seek <time-ms>
|
|
40
|
+
rnx mode three play|pause
|
|
41
|
+
rnx mode three render <timeline.json> --output <dir> [options]
|
|
42
|
+
rnx mode three measure <timeline.json> [options]
|
|
43
43
|
|
|
44
44
|
arguments:
|
|
45
45
|
on enable 3d mode
|
|
@@ -92,13 +92,13 @@ measure options (projected bounds only — no pixels rendered):
|
|
|
92
92
|
--output <file.json> write the measurement JSON here instead of stdout
|
|
93
93
|
|
|
94
94
|
examples:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
rnx mode three
|
|
96
|
+
rnx mode three on
|
|
97
|
+
rnx mode three configure --script hero-arc --background gradient-tide
|
|
98
|
+
rnx mode three configure --environment on --env-shape pane --setting room
|
|
99
|
+
rnx mode three render ./cinematic.json --output ./frames --fps 30
|
|
100
|
+
rnx mode three measure ./cinematic.json --width 450 --height 900 --at 0,1200
|
|
101
|
+
rnx mode three off
|
|
102
102
|
`)
|
|
103
103
|
process.exit(0)
|
|
104
104
|
}
|
|
@@ -237,7 +237,7 @@ export async function waitForThreeModeRuntimeReadyOnBridge(bridge: WsBridge) {
|
|
|
237
237
|
|
|
238
238
|
if (state?.ready === true) return state
|
|
239
239
|
if (state?.disabled) {
|
|
240
|
-
throw new Error('3d mode is off; run `
|
|
240
|
+
throw new Error('3d mode is off; run `rnx mode three on` before configure')
|
|
241
241
|
}
|
|
242
242
|
throw new Error('3d mode runtime did not become ready')
|
|
243
243
|
}
|
package/cli/commands/timeline.ts
CHANGED
|
@@ -25,10 +25,10 @@ interface TimelineOptions {
|
|
|
25
25
|
|
|
26
26
|
function printHelp() {
|
|
27
27
|
console.log(`
|
|
28
|
-
|
|
28
|
+
rnx timeline — control the semantic event timeline
|
|
29
29
|
|
|
30
30
|
usage:
|
|
31
|
-
|
|
31
|
+
rnx timeline <subcommand> [args]
|
|
32
32
|
|
|
33
33
|
subcommands:
|
|
34
34
|
status show enabled kinds and ring sizes
|
|
@@ -42,7 +42,7 @@ toast, notification, route, shell, actionsheet, picker) record at all times.
|
|
|
42
42
|
start/stop enables opt-in kinds (react-commit, scroll, gesture, text-input,
|
|
43
43
|
layout, reanimated, animation).
|
|
44
44
|
|
|
45
|
-
read the timeline with:
|
|
45
|
+
read the timeline with: rnx what-happened
|
|
46
46
|
`)
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -96,7 +96,7 @@ export async function runTimeline(args: string[], opts: TimelineOptions) {
|
|
|
96
96
|
case 'dump': {
|
|
97
97
|
const outPath = rest[0]
|
|
98
98
|
if (!outPath) {
|
|
99
|
-
console.error(' usage:
|
|
99
|
+
console.error(' usage: rnx timeline dump <file>')
|
|
100
100
|
process.exit(1)
|
|
101
101
|
}
|
|
102
102
|
const result = await callInBridge<{ events: unknown[] }>(
|
package/cli/commands/upgrade.ts
CHANGED
|
@@ -43,7 +43,7 @@ export async function runUpgrade(args: string[]): Promise<void> {
|
|
|
43
43
|
const channel =
|
|
44
44
|
channelIdx >= 0 && args[channelIdx + 1] ? args[channelIdx + 1] : undefined
|
|
45
45
|
|
|
46
|
-
console.log('
|
|
46
|
+
console.log('rnx upgrade\n')
|
|
47
47
|
|
|
48
48
|
// --- 1. engine runtime --------------------------------------------------
|
|
49
49
|
// runtime first, CLI last: the CLI self-update replaces this process's
|
package/cli/commands/upload.ts
CHANGED
|
@@ -182,10 +182,10 @@ export function resolvePublicPreviewOrigin(
|
|
|
182
182
|
|
|
183
183
|
function printHelp() {
|
|
184
184
|
console.log(`
|
|
185
|
-
|
|
185
|
+
rnx record upload — publish the current recorded bundle as a /preview/<id> link
|
|
186
186
|
|
|
187
187
|
usage:
|
|
188
|
-
|
|
188
|
+
rnx record upload [--origin <url>] [--public-origin <url>] (--events <path> | --video <path>) [--screenshot <path>] [--owner <org> --repo <repo>] [--sim <sim>] [--open] [--assets-only]
|
|
189
189
|
|
|
190
190
|
options:
|
|
191
191
|
--origin <url> upload target (default: auto)
|
|
@@ -222,7 +222,7 @@ options:
|
|
|
222
222
|
to the local/org team that owns the link
|
|
223
223
|
--billing-kind test_run
|
|
224
224
|
meter this upload as a natural-language test run
|
|
225
|
-
--sim <sim> target a specific sim (see:
|
|
225
|
+
--sim <sim> target a specific sim (see: rnx list)
|
|
226
226
|
--open open the resulting /preview/<id> url in the browser
|
|
227
227
|
--assets-only drop API/JSON/HTML records before upload; keep images,
|
|
228
228
|
fonts, css, js, and binary blobs. live-data demos hit
|
|
@@ -231,9 +231,9 @@ options:
|
|
|
231
231
|
-h, --help
|
|
232
232
|
|
|
233
233
|
examples:
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
rnx record upload --events ./my-session.jsonl.gz
|
|
235
|
+
rnx record upload --origin https://contrast.localhost:3000 --events ./my-session.jsonl.gz --open
|
|
236
|
+
rnx record upload --video /tmp/sootsim-flow.mp4 --video-duration-ms 12000
|
|
237
237
|
`)
|
|
238
238
|
}
|
|
239
239
|
|
|
@@ -493,8 +493,8 @@ export async function runUpload(
|
|
|
493
493
|
if (!eventsPath && !videoPath) {
|
|
494
494
|
console.error(
|
|
495
495
|
' preview uploads require playback data: pass --events or --video.\n' +
|
|
496
|
-
' for a normal local preview, use `
|
|
497
|
-
' or `
|
|
496
|
+
' for a normal local preview, use `rnx record --mode combined --open`\n' +
|
|
497
|
+
' or `rnx maestro test --preview` instead of uploading a bundle-only snapshot.',
|
|
498
498
|
)
|
|
499
499
|
process.exit(1)
|
|
500
500
|
}
|
|
@@ -701,7 +701,7 @@ export async function runUpload(
|
|
|
701
701
|
if (!snapshot.bundleUrl) {
|
|
702
702
|
console.error(
|
|
703
703
|
' no ?bundle= URL on the current rnx tab.\n' +
|
|
704
|
-
' open the app you want to share first (e.g.
|
|
704
|
+
' open the app you want to share first (e.g. rnx open 8082), then run upload.',
|
|
705
705
|
)
|
|
706
706
|
process.exit(2)
|
|
707
707
|
}
|
|
@@ -896,7 +896,7 @@ export async function runUpload(
|
|
|
896
896
|
if (!cliAuth) {
|
|
897
897
|
console.error(' preview uploads need auth.')
|
|
898
898
|
console.error(
|
|
899
|
-
' set RNX_API_KEY=sk_rnx_..., run `
|
|
899
|
+
' set RNX_API_KEY=sk_rnx_..., run `rnx login`, or use the Contrast github runner.',
|
|
900
900
|
)
|
|
901
901
|
await flushCliTelemetry()
|
|
902
902
|
process.exit(1)
|
|
@@ -1193,7 +1193,7 @@ export async function runUpload(
|
|
|
1193
1193
|
}
|
|
1194
1194
|
if (e.phase === 'init' && e.status === 401) {
|
|
1195
1195
|
console.error(' preview upload requires a valid login.')
|
|
1196
|
-
console.error(' run `
|
|
1196
|
+
console.error(' run `rnx login` and retry.')
|
|
1197
1197
|
await flushCliTelemetry()
|
|
1198
1198
|
process.exit(1)
|
|
1199
1199
|
}
|
package/cli/commands/version.ts
CHANGED
|
@@ -17,7 +17,7 @@ import { getRuntimeSummary } from '../runtime-summary'
|
|
|
17
17
|
export async function runVersion(_args: string[]): Promise<void> {
|
|
18
18
|
const { IS_BETA, BETA_LABEL } = await import('../../src/beta')
|
|
19
19
|
const suffix = IS_BETA ? ` · ${BETA_LABEL}` : ''
|
|
20
|
-
console.log(`
|
|
20
|
+
console.log(`rnx v${getCliVersion()}${suffix}`)
|
|
21
21
|
|
|
22
22
|
const runtime = getRuntimeSummary()
|
|
23
23
|
const channel = sootsimRuntime.resolveChannel()
|
|
@@ -25,7 +25,7 @@ export async function runVersion(_args: string[]): Promise<void> {
|
|
|
25
25
|
console.log(runtime.primary)
|
|
26
26
|
if (runtime.installedRuntime) console.log(`${runtime.installedRuntime} · ${channel}`)
|
|
27
27
|
} else if (runtime.primary === 'runtime not installed') {
|
|
28
|
-
console.log(`runtime not installed — run \`
|
|
28
|
+
console.log(`runtime not installed — run \`rnx runtime install\``)
|
|
29
29
|
} else {
|
|
30
30
|
console.log(`${runtime.primary} · ${channel}`)
|
|
31
31
|
}
|
|
@@ -45,9 +45,7 @@ export async function runVersion(_args: string[]): Promise<void> {
|
|
|
45
45
|
// best-effort network check; never fail the command on a flaky network.
|
|
46
46
|
const check = await sootsimRuntime.checkUpToDate({ channel })
|
|
47
47
|
if (check.outdated && check.latest) {
|
|
48
|
-
console.log(
|
|
49
|
-
`\n ↑ default runtime v${check.latest} available; run \`rnxsim upgrade\``,
|
|
50
|
-
)
|
|
48
|
+
console.log(`\n ↑ default runtime v${check.latest} available; run \`rnx upgrade\``)
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
console.log(`\n what's new: ${SOOTSIM_CHANGELOG_URL}`)
|
|
@@ -166,21 +166,21 @@ export async function runWhatHappened(args: string[], opts: WhatHappenedOptions)
|
|
|
166
166
|
|
|
167
167
|
if (args.includes('--help') || args.includes('-h')) {
|
|
168
168
|
console.log(`
|
|
169
|
-
|
|
169
|
+
rnx what-happened — show recent events from the semantic timeline
|
|
170
170
|
|
|
171
171
|
usage:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
172
|
+
rnx what-happened # since last CLI call
|
|
173
|
+
rnx what-happened --summary # one-line counts
|
|
174
|
+
rnx what-happened --all # full ring (ignore cursor)
|
|
175
|
+
rnx what-happened --since 5s # absolute window
|
|
176
|
+
rnx what-happened --kinds toast,fetch
|
|
177
|
+
rnx what-happened --noisy # include react-commit/layout/scroll
|
|
178
|
+
rnx what-happened --limit 50
|
|
179
|
+
rnx what-happened --json
|
|
180
|
+
rnx what-happened --no-advance # don't advance cursor after read
|
|
181
181
|
|
|
182
182
|
note: react-commit, layout, and scroll are opt-in/noisy events. enable them
|
|
183
|
-
with "
|
|
183
|
+
with "rnx timeline start <kind>", then pass --noisy or include them in
|
|
184
184
|
--kinds to see them.
|
|
185
185
|
`)
|
|
186
186
|
process.exit(0)
|
package/cli/drivers/electron.ts
CHANGED
|
@@ -16,7 +16,7 @@ function probe(): DriverAvailability {
|
|
|
16
16
|
if (!install) {
|
|
17
17
|
return {
|
|
18
18
|
available: false,
|
|
19
|
-
reason: '
|
|
19
|
+
reason: 'rnx desktop app not installed (run `rnx desktop install`)',
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
return {
|
|
@@ -31,7 +31,7 @@ async function launch(opts: DriverLaunchOptions): Promise<DriverLaunchResult> {
|
|
|
31
31
|
if (!install) {
|
|
32
32
|
return {
|
|
33
33
|
launched: false,
|
|
34
|
-
message: '
|
|
34
|
+
message: 'rnx desktop app not installed',
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
try {
|
|
@@ -63,7 +63,7 @@ async function launch(opts: DriverLaunchOptions): Promise<DriverLaunchResult> {
|
|
|
63
63
|
export const electronDriver: Driver = {
|
|
64
64
|
id: 'electron',
|
|
65
65
|
name: 'electron',
|
|
66
|
-
description: '
|
|
66
|
+
description: 'rnx desktop companion app (native window, menu bar)',
|
|
67
67
|
kind: 'native',
|
|
68
68
|
availability: probe,
|
|
69
69
|
launch,
|