peachsim 0.1.570 → 0.1.572

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +108 -108
  3. package/cli/app-config.ts +1 -1
  4. package/cli/app-fonts.ts +4 -4
  5. package/cli/auth.ts +11 -11
  6. package/cli/bin.ts +4 -4
  7. package/cli/bridge-flow-runner.ts +28 -20
  8. package/cli/browser-evals.ts +2 -2
  9. package/cli/cli-update.ts +6 -6
  10. package/cli/cloud-client.ts +16 -16
  11. package/cli/cloud-dispatch.ts +3 -2
  12. package/cli/cloud-session.ts +12 -12
  13. package/cli/cloud-test-result-files.ts +97 -0
  14. package/cli/cloud-test-tunnel.ts +4 -4
  15. package/cli/command-registry.ts +7 -7
  16. package/cli/commands/agent-wrapper.ts +7 -7
  17. package/cli/commands/agent.ts +16 -16
  18. package/cli/commands/app-fonts.ts +3 -3
  19. package/cli/commands/assert.ts +10 -10
  20. package/cli/commands/auth.ts +5 -5
  21. package/cli/commands/box/checkout-plane.ts +1 -1
  22. package/cli/commands/box/plane-share.ts +2 -2
  23. package/cli/commands/box/rnx-command.ts +5 -5
  24. package/cli/commands/box.ts +38 -38
  25. package/cli/commands/camera.ts +13 -13
  26. package/cli/commands/cleanup.ts +13 -13
  27. package/cli/commands/compat.ts +7 -7
  28. package/cli/commands/config.ts +5 -5
  29. package/cli/commands/control.ts +63 -63
  30. package/cli/commands/cpu-profile.ts +11 -11
  31. package/cli/commands/daemon-mac-app.ts +10 -10
  32. package/cli/commands/daemon.ts +29 -27
  33. package/cli/commands/debug.ts +35 -35
  34. package/cli/commands/desktop.ts +3 -3
  35. package/cli/commands/detox.ts +33 -33
  36. package/cli/commands/device.ts +9 -9
  37. package/cli/commands/diagnose.ts +17 -17
  38. package/cli/commands/do-chain.ts +4 -4
  39. package/cli/commands/electron.ts +9 -9
  40. package/cli/commands/film.ts +9 -9
  41. package/cli/commands/flow.ts +49 -49
  42. package/cli/commands/inspect/core.ts +12 -12
  43. package/cli/commands/inspect/count.ts +1 -1
  44. package/cli/commands/inspect/describe.ts +1 -1
  45. package/cli/commands/inspect/env.ts +2 -2
  46. package/cli/commands/inspect/find.ts +2 -2
  47. package/cli/commands/inspect/get-layout.ts +2 -2
  48. package/cli/commands/inspect/keyboard.ts +1 -1
  49. package/cli/commands/inspect/list.ts +4 -4
  50. package/cli/commands/inspect/memory.ts +1 -1
  51. package/cli/commands/inspect/resolve-target.ts +1 -1
  52. package/cli/commands/inspect/screens.ts +1 -1
  53. package/cli/commands/inspect/shared.ts +1 -1
  54. package/cli/commands/inspect/tree.ts +1 -1
  55. package/cli/commands/inspect/url.ts +1 -1
  56. package/cli/commands/inspect/wait-event.ts +5 -5
  57. package/cli/commands/inspect.ts +82 -82
  58. package/cli/commands/install-cli.ts +16 -16
  59. package/cli/commands/install-desktop.ts +26 -26
  60. package/cli/commands/login.ts +11 -11
  61. package/cli/commands/maestro-generate.ts +10 -10
  62. package/cli/commands/maestro.ts +173 -71
  63. package/cli/commands/mode.ts +4 -4
  64. package/cli/commands/no-bridge-hint.ts +12 -12
  65. package/cli/commands/perf.ts +11 -11
  66. package/cli/commands/permissions.ts +5 -5
  67. package/cli/commands/platform.ts +21 -21
  68. package/cli/commands/preview.ts +5 -5
  69. package/cli/commands/profile.ts +12 -12
  70. package/cli/commands/react.ts +15 -15
  71. package/cli/commands/record.ts +31 -31
  72. package/cli/commands/report-issue.ts +4 -4
  73. package/cli/commands/reset.ts +2 -2
  74. package/cli/commands/runtime.ts +23 -23
  75. package/cli/commands/screenshot-command.ts +2 -2
  76. package/cli/commands/screenshot-layers.ts +5 -5
  77. package/cli/commands/screenshot-mode.ts +7 -7
  78. package/cli/commands/screenshot.ts +24 -24
  79. package/cli/commands/screenshots-capture.ts +13 -13
  80. package/cli/commands/screenshots.ts +6 -6
  81. package/cli/commands/serve.ts +12 -12
  82. package/cli/commands/setup.ts +25 -25
  83. package/cli/commands/skills.ts +30 -23
  84. package/cli/commands/slides.ts +20 -20
  85. package/cli/commands/state.ts +2 -2
  86. package/cli/commands/storage.ts +3 -3
  87. package/cli/commands/telemetry.ts +2 -2
  88. package/cli/commands/test.ts +176 -18
  89. package/cli/commands/three-mode.ts +17 -17
  90. package/cli/commands/timeline.ts +12 -12
  91. package/cli/commands/upgrade.ts +11 -11
  92. package/cli/commands/upload.ts +26 -26
  93. package/cli/commands/version.ts +7 -7
  94. package/cli/commands/what-happened.ts +20 -20
  95. package/cli/current-sim.ts +3 -3
  96. package/cli/desktop-companion.ts +16 -16
  97. package/cli/drivers/electron.ts +4 -4
  98. package/cli/drivers/playwright-sim-host.ts +7 -7
  99. package/cli/drivers/playwright.ts +4 -4
  100. package/cli/drivers/registry.ts +1 -1
  101. package/cli/drivers/types.ts +5 -5
  102. package/cli/flow-export.ts +1 -1
  103. package/cli/flow-file.ts +5 -5
  104. package/cli/flow-session.ts +1 -1
  105. package/cli/help-core.ts +13 -13
  106. package/cli/hints.ts +14 -14
  107. package/cli/inspect-notice-state.ts +1 -1
  108. package/cli/internal-child.ts +2 -2
  109. package/cli/maestro-js.ts +4 -4
  110. package/cli/maestro-report.ts +4 -2
  111. package/cli/main.ts +14 -14
  112. package/cli/outbound-endpoints.ts +32 -30
  113. package/cli/parse-args.ts +7 -7
  114. package/cli/privacy.ts +1 -1
  115. package/cli/recording-access.ts +10 -10
  116. package/cli/resolve-assets.ts +2 -2
  117. package/cli/rnx-in-process.ts +5 -5
  118. package/cli/run-registry.ts +3 -2
  119. package/cli/run-rnx-core.ts +3 -3
  120. package/cli/run-rnx.ts +1 -1
  121. package/cli/runtime-notes.ts +1 -1
  122. package/cli/self-invocation.ts +1 -1
  123. package/cli/send-to-box.ts +1 -1
  124. package/cli/shell-init.ts +40 -40
  125. package/cli/ui.ts +1 -1
  126. package/cli/ws-bridge.ts +22 -22
  127. package/detox/config-loader.ts +1 -1
  128. package/detox/index.ts +28 -28
  129. package/detox/jest-preset.cjs +2 -2
  130. package/detox/navigation.ts +2 -2
  131. package/dist-lib/agent-daemon-client.cjs +12 -12
  132. package/dist-lib/agent-events.cjs +1 -1
  133. package/dist-lib/agent-identity.cjs +2 -2
  134. package/dist-lib/agent-sessions.cjs +12 -12
  135. package/dist-lib/attached-projects.cjs +4 -4
  136. package/dist-lib/auth/shared-session.cjs +4 -4
  137. package/dist-lib/backend-origin.cjs +1 -1
  138. package/dist-lib/beta.cjs +1 -1
  139. package/dist-lib/beta.mjs +1 -1
  140. package/dist-lib/bridge-constants.cjs +4 -4
  141. package/dist-lib/bridge-contract-input.cjs +1 -1
  142. package/dist-lib/bridge-contract-input.mjs +1 -1
  143. package/dist-lib/bridge-contract.cjs +2 -2
  144. package/dist-lib/bridge-contract.mjs +2 -2
  145. package/dist-lib/capture-contract.cjs +1 -1
  146. package/dist-lib/capture-contract.mjs +1 -1
  147. package/dist-lib/cli-constants.cjs +1 -1
  148. package/dist-lib/cloud-contract.cjs +1 -1
  149. package/dist-lib/cloud-contract.mjs +1 -1
  150. package/dist-lib/cloud-test-args.cjs +116 -0
  151. package/dist-lib/cloud-test-args.mjs +86 -0
  152. package/dist-lib/cloud.cjs +42 -42
  153. package/dist-lib/cloud.mjs +42 -42
  154. package/dist-lib/config.cjs +2 -2
  155. package/dist-lib/detox/index.cjs +29 -29
  156. package/dist-lib/detox/jest-preset.cjs +2 -2
  157. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  158. package/dist-lib/home-paths.cjs +12 -12
  159. package/dist-lib/host/bridge-host.cjs +87 -77
  160. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  161. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  162. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  163. package/dist-lib/host/replacement-module-handler.cjs +6 -6
  164. package/dist-lib/host/websocket-proxy.cjs +1 -1
  165. package/dist-lib/index.cjs +63 -73
  166. package/dist-lib/jump-to-source-babel.cjs +1 -1
  167. package/dist-lib/jump-to-source-native.cjs +1 -1
  168. package/dist-lib/menu.cjs +5 -5
  169. package/dist-lib/menu.mjs +5 -5
  170. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  171. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  172. package/dist-lib/metro-production-bundle.cjs +1 -1
  173. package/dist-lib/metro-production-bundle.mjs +1 -1
  174. package/dist-lib/metro.cjs +15 -15
  175. package/dist-lib/profiles.cjs +4 -4
  176. package/dist-lib/public-brand.cjs +3 -3
  177. package/dist-lib/react-native-host-modules.cjs +1 -1
  178. package/dist-lib/react-native-host-modules.mjs +1 -1
  179. package/dist-lib/render-mode.cjs +1 -1
  180. package/dist-lib/scripts/dev-server-scanner.cjs +2 -1
  181. package/dist-lib/sdk.cjs +9 -9
  182. package/dist-lib/sdk.mjs +9 -9
  183. package/dist-lib/skills.cjs +534 -520
  184. package/dist-lib/swift-compile.cjs +372 -0
  185. package/dist-lib/swift-compile.mjs +339 -0
  186. package/dist-lib/swift-package.cjs +78 -0
  187. package/dist-lib/swift-package.mjs +52 -0
  188. package/dist-lib/swift-submit.cjs +1 -1
  189. package/dist-lib/swift-submit.mjs +1 -1
  190. package/dist-lib/swift.cjs +1 -1
  191. package/dist-lib/vite.cjs +479 -161
  192. package/package.json +22 -1
  193. package/scripts/dev-server-scanner.ts +4 -3
  194. package/skills/contrast/SKILL.md +75 -75
  195. package/skills/{rnx-debug → peach-debug}/SKILL.md +90 -90
  196. package/skills/{rnx-perf → peach-perf}/SKILL.md +13 -13
  197. package/skills/{rnx-setup → peach-setup}/SKILL.md +60 -60
  198. package/skills/{rnx-test → peach-test}/SKILL.md +47 -47
  199. package/skills/{rnx-visual → peach-visual}/SKILL.md +26 -26
  200. package/src/agent-daemon-client.ts +5 -5
  201. package/src/agent-events.ts +1 -1
  202. package/src/agent-identity.ts +1 -1
  203. package/src/agent-sessions.ts +13 -13
  204. package/src/attached-projects.ts +1 -1
  205. package/src/auth/shared-session.ts +1 -1
  206. package/src/bridge-constants.ts +3 -3
  207. package/src/bridge-contract-input.ts +1 -1
  208. package/src/bridge-contract.ts +3 -3
  209. package/src/cli-version.ts +6 -6
  210. package/src/cloud-test-args.ts +100 -0
  211. package/src/cloud.ts +40 -40
  212. package/src/config.ts +1 -1
  213. package/src/connect.ts +6 -6
  214. package/src/dev-server-open.ts +8 -8
  215. package/src/disk-cleanup.ts +3 -3
  216. package/src/home-paths.ts +26 -26
  217. package/src/host/agent-host.ts +3 -3
  218. package/src/host/bridge-host.ts +33 -33
  219. package/src/host/fetch-proxy-handler.ts +1 -1
  220. package/src/host/plane-host.ts +2 -2
  221. package/src/host/replacement-module-handler.ts +2 -2
  222. package/src/menu.ts +2 -2
  223. package/src/metro-plugin.ts +7 -7
  224. package/src/metro-production-bundle.ts +2 -2
  225. package/src/native-dev-bundle-url.ts +2 -2
  226. package/src/playwright-host-log.ts +1 -1
  227. package/src/public-brand.ts +2 -2
  228. package/src/react-native-host-modules.ts +1 -1
  229. package/src/rolldown-plugin-swift.ts +11 -10
  230. package/src/runtime-assets.ts +11 -11
  231. package/src/runtime-delivery.ts +6 -6
  232. package/src/screenshots/orchestrate.ts +1 -1
  233. package/src/screenshots/org-deck.ts +1 -1
  234. package/src/screenshots/schema.ts +2 -2
  235. package/src/sim-client.ts +1 -1
  236. package/src/skills/builtin/compat-check.ts +2 -2
  237. package/src/swift-compile.ts +359 -0
  238. package/src/swift-package.ts +69 -0
  239. package/src/swift-submit.ts +3 -2
  240. package/src/vite-plugin-one.ts +8 -8
  241. package/src/vite-plugin-swift.ts +106 -110
  242. package/src/vite-plugin.ts +6 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.570",
3
+ "version": "0.1.572",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for peach.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -46,6 +46,20 @@
46
46
  "import": "./dist-lib/swift-submit.mjs",
47
47
  "default": "./dist-lib/swift-submit.cjs"
48
48
  },
49
+ "./swift-package": {
50
+ "types": "./src/swift-package.ts",
51
+ "source": "./src/swift-package.ts",
52
+ "bun": "./src/swift-package.ts",
53
+ "import": "./dist-lib/swift-package.mjs",
54
+ "default": "./dist-lib/swift-package.cjs"
55
+ },
56
+ "./swift-compile": {
57
+ "types": "./src/swift-compile.ts",
58
+ "source": "./src/swift-compile.ts",
59
+ "bun": "./src/swift-compile.ts",
60
+ "import": "./dist-lib/swift-compile.mjs",
61
+ "default": "./dist-lib/swift-compile.cjs"
62
+ },
49
63
  "./metro": {
50
64
  "source": "./src/metro-plugin.ts",
51
65
  "default": "./dist-lib/metro.cjs"
@@ -150,6 +164,13 @@
150
164
  "import": "./dist-lib/cloud-contract.mjs",
151
165
  "default": "./dist-lib/cloud-contract.cjs"
152
166
  },
167
+ "./cloud-test-args": {
168
+ "types": "./src/cloud-test-args.ts",
169
+ "source": "./src/cloud-test-args.ts",
170
+ "bun": "./src/cloud-test-args.ts",
171
+ "import": "./dist-lib/cloud-test-args.mjs",
172
+ "default": "./dist-lib/cloud-test-args.cjs"
173
+ },
153
174
  "./cloud": {
154
175
  "types": "./src/cloud.ts",
155
176
  "source": "./src/cloud.ts",
@@ -122,7 +122,7 @@ export interface DiscoveredServer {
122
122
  * COULD NOT LOOK MUST NEVER ANSWER AS THOUGH IT LOOKED. silence, timeout and
123
123
  * empty are three different answers, and only `no-manifest` means "there is
124
124
  * nothing there". reading `no-answer` as `no-manifest` is what made
125
- * `rnx open` hand back `<base>/index.bundle` for a One app whose manifest
125
+ * `peach open` hand back `<base>/index.bundle` for a One app whose manifest
126
126
  * names a different entry point entirely. */
127
127
  type ManifestState = 'resolved' | 'no-manifest' | 'no-answer'
128
128
 
@@ -871,7 +871,7 @@ export async function probePort(
871
871
  buildIconProxyUrl?: (externalUrl: string) => string,
872
872
  listeningProcess?: ListeningProcess,
873
873
  ): Promise<DiscoveredServer | null> {
874
- // callers such as `rnx open <port>` probe one port directly instead of
874
+ // callers such as `peach open <port>` probe one port directly instead of
875
875
  // going through scanDevServers. wait for the optional in-repo registry here
876
876
  // too, or a cold CLI process can build the known app's bundle url before its
877
877
  // runtime config is available.
@@ -1110,6 +1110,7 @@ export interface ScanOptions {
1110
1110
  function isSootSimSelfServer(server: DiscoveredServer): boolean {
1111
1111
  const bundleId = server.bundleId?.trim().toLowerCase()
1112
1112
  if (bundleId?.startsWith('dev.sootsim.')) return true
1113
+ if (bundleId?.startsWith('dev.peachsim.')) return true
1113
1114
 
1114
1115
  return false
1115
1116
  }
@@ -1175,7 +1176,7 @@ export function __shouldReuseScannerCacheEntry(
1175
1176
  return true
1176
1177
  }
1177
1178
 
1178
- // exported for tests / `rnx debug` — forces the next scan to re-probe.
1179
+ // exported for tests / `peach debug` — forces the next scan to re-probe.
1179
1180
  export function __resetScannerCache() {
1180
1181
  portCache.clear()
1181
1182
  knownNonPatched.clear()
@@ -14,68 +14,68 @@ overview of all available skills and CLI commands in this repo.
14
14
 
15
15
  ## Peach CLI commands
16
16
 
17
- the `rnx` CLI is the operational surface for booting shells, driving
17
+ the `peach` CLI is the operational surface for booting shells, driving
18
18
  automation, inspecting the render tree, and managing sims.
19
19
 
20
20
  | command | description |
21
21
  | --- | --- |
22
- | `rnx maestro` | author, generate, and run Maestro YAML flows against rnx |
23
- | `rnx detox` | run existing Detox suites against rnx on headless Chromium |
24
- | `rnx cleanup` | inspect and reclaim local rnx disk usage |
25
- | `rnx record` | capture the live sim as webm/mp4/gif, or sample N png frames (--frames) |
26
- | `rnx film` | record a flow on the flat canvas, play it back on the 3d device stage under a camera cinematic, save a clip |
27
- | `rnx storage` | manage guest app storage and launch profiles |
28
- | `rnx permissions` | inspect and change simulated operating-system permissions |
29
- | `rnx perf` | CPU, React render, shell frame, and scroll-layer profiling |
30
- | `rnx describe` | curated human-readable UI summary (default inspection tool) |
31
- | `rnx find` | locate nodes by text / testID / role / type / predicate |
32
- | `rnx assert` | run any read verb and convert its output into an exit code |
33
- | `rnx screenshot` | capture PNGs and manage App Store screenshot assets |
34
- | `rnx get` | read runtime state (tree, a11y, layout, url, count, errors, …) |
35
- | `rnx do` | drive the app (tap, type, scroll, swipe, key, reload, …) |
36
- | `rnx wait` | block until the runtime reaches a known state |
37
- | `rnx shell` | drive shell state and simulator chrome |
38
- | `rnx mode` | toggle screenshot and 3D display modes |
39
- | `rnx device` | inspect or change the live device preset for a sim |
40
- | `rnx network` | inspect live network traffic from the running rnx worker |
41
- | `rnx logs` | inspect live console output from the running rnx worker |
42
- | `rnx debug` | drive __sootsimDebug: channels, snapshots, and inspectors |
43
- | `rnx what-happened` | show recent semantic events: toasts, keyboards, screens, alerts, fetches, errors |
44
- | `rnx timeline` | control the semantic event timeline (enable opt-in kinds, clear, dump) |
45
- | `rnx box` | start a local Box or create a cloud Box |
46
- | `rnx ios` | start an iOS simulator |
47
- | `rnx android` | start an Android simulator |
48
- | `rnx open` | load a target into the current sim or open a new one |
49
- | `rnx list` | list connected sims or available launch drivers |
50
- | `rnx use` | select a connected sim |
51
- | `rnx skill` | install and inspect bundled rnx agent skills |
52
- | `rnx claim` | take an exclusive lease on a sim |
53
- | `rnx agent` | attached projects + local agent sessions (codex/claude) |
54
- | `rnx close` | close a connected sim |
55
- | `rnx setup` | configure optional local conveniences |
56
- | `rnx compat` | check package compatibility |
57
- | `rnx report-issue` | send an explicitly approved compatibility report |
58
- | `rnx desktop` | launch or install the desktop companion |
59
- | `rnx daemon` | manage the recommended background bridge service |
60
- | `rnx version` | show the CLI + engine runtime versions you are running |
61
- | `rnx upgrade` | update the rnx CLI and engine runtime to the latest |
62
- | `rnx serve` | run the rnx bridge in the foreground |
63
- | `rnx runtime` | manage engine runtimes under ~/.rnx/runtimes/ |
64
- | `rnx auth` | inspect active CLI auth |
65
- | `rnx login` | sign in for preview uploads |
66
- | `rnx logout` | clear the local desktop auth session |
67
- | `rnx config` | manage local CLI preferences |
22
+ | `peach maestro` | author, generate, and run Maestro YAML flows against peach |
23
+ | `peach detox` | run existing Detox suites against peach on headless Chromium |
24
+ | `peach cleanup` | inspect and reclaim local peach disk usage |
25
+ | `peach record` | capture the live sim as webm/mp4/gif, or sample N png frames (--frames) |
26
+ | `peach film` | record a flow on the flat canvas, play it back on the 3d device stage under a camera cinematic, save a clip |
27
+ | `peach storage` | manage guest app storage and launch profiles |
28
+ | `peach permissions` | inspect and change simulated operating-system permissions |
29
+ | `peach perf` | CPU, React render, shell frame, and scroll-layer profiling |
30
+ | `peach describe` | curated human-readable UI summary (default inspection tool) |
31
+ | `peach find` | locate nodes by text / testID / role / type / predicate |
32
+ | `peach assert` | run any read verb and convert its output into an exit code |
33
+ | `peach screenshot` | capture PNGs and manage App Store screenshot assets |
34
+ | `peach get` | read runtime state (tree, a11y, layout, url, count, errors, …) |
35
+ | `peach do` | drive the app (tap, type, scroll, swipe, key, reload, …) |
36
+ | `peach wait` | block until the runtime reaches a known state |
37
+ | `peach shell` | drive shell state and simulator chrome |
38
+ | `peach mode` | toggle screenshot and 3D display modes |
39
+ | `peach device` | inspect or change the live device preset for a sim |
40
+ | `peach network` | inspect live network traffic from the running peach worker |
41
+ | `peach logs` | inspect live console output from the running peach worker |
42
+ | `peach debug` | drive __sootsimDebug: channels, snapshots, and inspectors |
43
+ | `peach what-happened` | show recent semantic events: toasts, keyboards, screens, alerts, fetches, errors |
44
+ | `peach timeline` | control the semantic event timeline (enable opt-in kinds, clear, dump) |
45
+ | `peach box` | start a local Box or create a cloud Box |
46
+ | `peach ios` | start an iOS simulator |
47
+ | `peach android` | start an Android simulator |
48
+ | `peach open` | load a target into the current sim or open a new one |
49
+ | `peach list` | list connected sims or available launch drivers |
50
+ | `peach use` | select a connected sim |
51
+ | `peach skill` | install and inspect bundled peach agent skills |
52
+ | `peach claim` | take an exclusive lease on a sim |
53
+ | `peach agent` | attached projects + local agent sessions (codex/claude) |
54
+ | `peach close` | close a connected sim |
55
+ | `peach setup` | configure optional local conveniences |
56
+ | `peach compat` | check package compatibility |
57
+ | `peach report-issue` | send an explicitly approved compatibility report |
58
+ | `peach desktop` | launch or install the desktop companion |
59
+ | `peach daemon` | manage the recommended background bridge service |
60
+ | `peach version` | show the CLI + engine runtime versions you are running |
61
+ | `peach upgrade` | update the peach CLI and engine runtime to the latest |
62
+ | `peach serve` | run the peach bridge in the foreground |
63
+ | `peach runtime` | manage engine runtimes under ~/.peach/runtimes/ |
64
+ | `peach auth` | inspect active CLI auth |
65
+ | `peach login` | sign in for preview uploads |
66
+ | `peach logout` | clear the local desktop auth session |
67
+ | `peach config` | manage local CLI preferences |
68
68
 
69
69
  ### runtime verb groups
70
70
 
71
71
  every runtime verb is organized under one of these grouping prefixes.
72
- run `rnx --help` to see the full list under each group.
72
+ run `peach --help` to see the full list under each group.
73
73
 
74
- - `rnx describe` — summarize the current UI
75
- - `rnx find <...>` — unified finder (bare text, --testid, --role, --type, --pressable, --visible)
76
- - `rnx get <noun>` — read runtime state (tree, a11y, url, count, errors, warnings, requests, globals, layout, node)
77
- - `rnx do <action>` — drive the app (tap, tap-text, tap-id, type, type-into, key, dismiss, scroll, drag, swipe, pinch, reload, shell, sleep, settle, wait)
78
- - `rnx debug <tool>` — instrumentation (state, js, eval, perf, sample-color, enable/disable channels, snapshots, diff, record, recent)
74
+ - `peach describe` — summarize the current UI
75
+ - `peach find <...>` — unified finder (bare text, --testid, --role, --type, --pressable, --visible)
76
+ - `peach get <noun>` — read runtime state (tree, a11y, url, count, errors, warnings, requests, globals, layout, node)
77
+ - `peach do <action>` — drive the app (tap, tap-text, tap-id, type, type-into, key, dismiss, scroll, drag, swipe, pinch, reload, shell, sleep, settle, wait)
78
+ - `peach debug <tool>` — instrumentation (state, js, eval, perf, sample-color, enable/disable channels, snapshots, diff, record, recent)
79
79
 
80
80
  ### global flags
81
81
 
@@ -93,11 +93,11 @@ skills for working with the Peach native preview engine:
93
93
 
94
94
  | skill | description |
95
95
  | --- | --- |
96
- | `/rnx-debug` | Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under Peach. 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. |
97
- | `/rnx-perf` | Optimize Peach engine and app performance — scroll jank, dropped frames, slow animation, idle CPU, memory growth, and "smooth normally but laggy under load" (video calls, busy machines). Covers measuring on the right thread with the right browser, proving each perf tier actually engages via its counters, a CPU-contention test harness, and the map of existing perf machinery so you improve it instead of reinventing it. For general app debugging load /rnx-debug first. |
98
- | `/rnx-setup` | Get Peach connected to your React Native app with no project setup |
99
- | `/rnx-test` | Run automated tests against your React Native app under Peach with Maestro YAML or Detox/Jest |
100
- | `/rnx-visual` | Pixel-level rendering comparison between Peach and native iOS — fonts, gradients, shadows, image fidelity |
96
+ | `/peach-debug` | Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under Peach. 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 peach CLI debug tooling first, not screenshots or ad-hoc logging. |
97
+ | `/peach-perf` | Optimize Peach engine and app performance — scroll jank, dropped frames, slow animation, idle CPU, memory growth, and "smooth normally but laggy under load" (video calls, busy machines). Covers measuring on the right thread with the right browser, proving each perf tier actually engages via its counters, a CPU-contention test harness, and the map of existing perf machinery so you improve it instead of reinventing it. For general app debugging load /peach-debug first. |
98
+ | `/peach-setup` | Get Peach connected to your React Native app with no project setup |
99
+ | `/peach-test` | Run automated tests against your React Native app under Peach with Maestro YAML or Detox/Jest |
100
+ | `/peach-visual` | Pixel-level rendering comparison between Peach and native iOS — fonts, gradients, shadows, image fidelity |
101
101
 
102
102
  ## automatic settling
103
103
 
@@ -115,18 +115,18 @@ commands in your own `sleep` or chain `do settle` "just to be safe"**.
115
115
  `type-into`, `key`, `key-sequence`, `keycode`, `drag`, `swipe`,
116
116
  `long-press`, `touch`, `gesture`, `pinch`, `scroll`, `shell`)
117
117
  the CLI polls the layout hash until it is stable for two consecutive
118
- frames. budget: **400 ms for agents** (`RNX_AGENT=1`, set by the
118
+ frames. budget: **400 ms for agents** (`PEACH_AGENT=1`, set by the
119
119
  harness), 200 ms for humans.
120
120
 
121
121
  what this means:
122
122
 
123
- - `rnx do tap-id login` then `rnx find "Welcome"` Just Works™.
124
- - you only need `rnx do settle <seconds>` or `rnx wait idle
123
+ - `peach do tap-id login` then `peach find "Welcome"` Just Works™.
124
+ - you only need `peach do settle <seconds>` or `peach wait idle
125
125
  --max-ms <N>` when the CLI explicitly prints
126
126
  `⚠ auto-wait timed out after Nms — next command may see mid-animation
127
127
  state`, or when the transition you care about lasts longer than ~400 ms
128
128
  (full stack navigation, crossfades, video load).
129
- - opt-out: `--no-wait` on a single command, `RNX_NO_AUTO_WAIT=1`
129
+ - opt-out: `--no-wait` on a single command, `PEACH_NO_AUTO_WAIT=1`
130
130
  for a whole lane.
131
131
  - if a read keeps racing its write, the fix is **never** a blind `sleep` —
132
132
  prefer `wait selector`, `wait ready`, `wait idle`, or a longer
@@ -139,27 +139,27 @@ what this means:
139
139
 
140
140
  ```sh
141
141
  bun dev # start everything
142
- rnx dev -- pnpm dev # wrap a bundler
143
- rnx open 8081 # load an app
144
- rnx describe # inspect the UI tree
142
+ peach dev -- pnpm dev # wrap a bundler
143
+ peach open 8081 # load an app
144
+ peach describe # inspect the UI tree
145
145
  ```
146
146
 
147
147
  ### debugging
148
148
 
149
149
  ```sh
150
- rnx get errors 5 # recent console errors
151
- rnx get requests 5 # recent failed requests
152
- rnx debug snapshot before # capture state
153
- rnx debug diff before after # compare snapshots
154
- rnx debug state shell # runtime state dump
150
+ peach get errors 5 # recent console errors
151
+ peach get requests 5 # recent failed requests
152
+ peach debug snapshot before # capture state
153
+ peach debug diff before after # compare snapshots
154
+ peach debug state shell # runtime state dump
155
155
  ```
156
156
 
157
157
  ### inspection
158
158
 
159
159
  ```sh
160
- rnx describe # visible elements
161
- rnx find "Sign in" # find by text
162
- rnx find --testid loginButton # find by testID
163
- rnx do tap-text "Submit" # tap by text
164
- rnx do type "hello" # type text
160
+ peach describe # visible elements
161
+ peach find "Sign in" # find by text
162
+ peach find --testid loginButton # find by testID
163
+ peach do tap-text "Submit" # tap by text
164
+ peach do type "hello" # type text
165
165
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: rnx-debug
3
- description: Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under Peach. 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.
2
+ name: peach-debug
3
+ description: Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under Peach. 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 peach CLI debug tooling first, not screenshots or ad-hoc logging.
4
4
  ---
5
5
 
6
6
  # Peach debug
@@ -10,15 +10,15 @@ covers debugging, performance, and accessibility — three branches that
10
10
  share the same CLI primitives, the same auto-settling contract, and the
11
11
  same diff/snapshot workflow. start here for any rendering, interaction,
12
12
  event-order, or correctness question. for pixel-level rendering fidelity
13
- load `/rnx-visual` instead.
13
+ load `/peach-visual` instead.
14
14
 
15
- > needs a connected, pinned sim. if `rnx describe` errors, load
16
- > `/rnx-setup` first.
15
+ > needs a connected, pinned sim. if `peach describe` errors, load
16
+ > `/peach-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
- rnx CLI debug tooling **first** — `describe` and `find` to read the
21
+ peach 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
@@ -44,13 +44,13 @@ regression test. a pile of ad-hoc logs helps no one and gets deleted.
44
44
  - "screen reader can't find this / wrong label / tap target too small" → [accessibility](#branch--accessibility)
45
45
  - "I want to see what just happened" (ephemeral toast, async navigation,
46
46
  fetch + alert sequence) → [the timeline](#the-timeline-what-happened)
47
- - "I want pixel-level fidelity to iOS" → load `/rnx-visual`
48
- - "I want to author a test" → load `/rnx-test`
47
+ - "I want pixel-level fidelity to iOS" → load `/peach-visual`
48
+ - "I want to author a test" → load `/peach-test`
49
49
 
50
50
  ## anti-patterns (apply to every branch)
51
51
 
52
52
  - **`a1`/`a2`/`b0` style ids mean Peach sims, never browser tabs.** when a user
53
- says "look at a3", that's the `rnx list` sim id. do not open chrome
53
+ says "look at a3", that's the `peach 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 `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
65
+ refuses to choose. run `peach use <id>` at the start of the workflow.
66
+ - **keep one sim and reuse its browser tab.** before `peach open`, run
67
+ `peach list --all`. pin the target and use `peach do reload`; a plain
68
+ `peach 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
@@ -95,13 +95,13 @@ fetches resolve. the timeline records them so you can ask "what
95
95
  happened" instead of racing the UI with `find`.
96
96
 
97
97
  ```sh
98
- rnx timeline start # arm recording (cheap kinds default-on)
98
+ peach timeline start # arm recording (cheap kinds default-on)
99
99
  # reproduce the flow
100
- rnx what-happened # events since the last CLI call
101
- rnx what-happened --since 10s # absolute window
102
- rnx what-happened --kinds toast,fetch # filter to a few kinds
103
- rnx what-happened --summary # one-line counts
104
- rnx what-happened --flow # section events by screen/route
100
+ peach what-happened # events since the last CLI call
101
+ peach what-happened --since 10s # absolute window
102
+ peach what-happened --kinds toast,fetch # filter to a few kinds
103
+ peach what-happened --summary # one-line counts
104
+ peach what-happened --flow # section events by screen/route
105
105
  ```
106
106
 
107
107
  semantic kinds the timeline understands: `keyboard`, `screen`, `route`,
@@ -109,12 +109,12 @@ semantic kinds the timeline understands: `keyboard`, `screen`, `route`,
109
109
  `gesture`, `text-input`, `reanimated`, `animation`, `fetch`, `console`,
110
110
  `app-launch`, `shell`. cheap kinds record by default; heavier kinds
111
111
  (scroll, gesture, text-input, reanimated, animation) opt in via
112
- `rnx timeline start scroll,gesture,…`.
112
+ `peach timeline start scroll,gesture,…`.
113
113
 
114
114
  every other CLI command also prints a one-line footer for events since
115
115
  the last call — that's the headline indicator. when the footer is empty,
116
116
  there's nothing new to look at; when it says `since last: 1 error · 1
117
- toast · 1 screen push`, run `rnx what-happened` to see the detail.
117
+ toast · 1 screen push`, run `peach what-happened` to see the detail.
118
118
 
119
119
  > reach for the timeline first when the question involves *something
120
120
  > that appeared briefly and disappeared*. it's faster than a screenshot
@@ -135,11 +135,11 @@ need a manual wait when:
135
135
  (no pulsing dots, no shimmer, no looping Lottie).
136
136
 
137
137
  ```sh
138
- rnx do settle 5 # wait up to 5s for layout stability
139
- rnx wait idle --max-ms 5000 # same thing under the `wait` verb
140
- rnx wait idle --strict # also require animation flags clear
141
- rnx do tap-id play --no-wait # skip auto-settle on one command
142
- RNX_NO_AUTO_WAIT=1 rnx ... # disable auto-settle for a lane
138
+ peach do settle 5 # wait up to 5s for layout stability
139
+ peach wait idle --max-ms 5000 # same thing under the `wait` verb
140
+ peach wait idle --strict # also require animation flags clear
141
+ peach do tap-id play --no-wait # skip auto-settle on one command
142
+ PEACH_NO_AUTO_WAIT=1 peach ... # disable auto-settle for a lane
143
143
  ```
144
144
 
145
145
  ## branch — debugging
@@ -147,14 +147,14 @@ RNX_NO_AUTO_WAIT=1 rnx ... # disable auto-settle for a lane
147
147
  the playbook for "wrong tree / wrong props / wrong handler":
148
148
 
149
149
  ```sh
150
- rnx describe # what's on screen now
151
- rnx get errors 5 # any console smoke?
152
- rnx find --testid <node> # locate the suspect
153
- rnx debug snapshot before
150
+ peach describe # what's on screen now
151
+ peach get errors 5 # any console smoke?
152
+ peach find --testid <node> # locate the suspect
153
+ peach debug snapshot before
154
154
  # reproduce
155
- rnx debug snapshot after
156
- rnx debug diff before after # structural diff: what changed?
157
- rnx what-happened # timeline events during the repro
155
+ peach debug snapshot after
156
+ peach debug diff before after # structural diff: what changed?
157
+ peach what-happened # timeline events during the repro
158
158
  ```
159
159
 
160
160
  when the repro needs several closely timed inputs, replace the individual
@@ -162,15 +162,15 @@ write calls with one inline batch so WebSocket scheduling cannot change the
162
162
  gesture:
163
163
 
164
164
  ```sh
165
- rnx do touch down 200 600 --then sleep 0.03 --then touch move 200 250 --then touch up 200 250
165
+ peach do touch down 200 600 --then sleep 0.03 --then touch move 200 250 --then touch up 200 250
166
166
  ```
167
167
 
168
168
  for nested scroll ownership or momentum transfer, compare the shell's resolved
169
169
  gesture chain with the published scroll registry:
170
170
 
171
171
  ```sh
172
- rnx debug state scroll-input
173
- rnx debug state scroll-mirror
172
+ peach debug state scroll-input
173
+ peach debug state scroll-mirror
174
174
  ```
175
175
 
176
176
  reading `describe` output:
@@ -187,9 +187,9 @@ for transitions, alerts, native UI, or anything spanning the shell ↔
187
187
  tenant boundary, lean on the timeline before reaching for traces:
188
188
 
189
189
  ```sh
190
- rnx timeline start
190
+ peach timeline start
191
191
  # reproduce the launch / dismiss / alert
192
- rnx what-happened --kinds shell,alert,screen,animation
192
+ peach what-happened --kinds shell,alert,screen,animation
193
193
  ```
194
194
 
195
195
  you're done when:
@@ -202,10 +202,10 @@ you're done when:
202
202
  ## branch — performance
203
203
 
204
204
  ```sh
205
- rnx perf shell start # arm capture (also clears prior frames)
205
+ peach perf shell start # arm capture (also clears prior frames)
206
206
  # reproduce the slow interaction
207
- rnx perf shell stop # full report, including worst frames
208
- rnx perf shell stop --json # machine-readable summary
207
+ peach perf shell stop # full report, including worst frames
208
+ peach perf shell stop --json # machine-readable summary
209
209
  ```
210
210
 
211
211
  `perf shell` output:
@@ -227,8 +227,8 @@ budget. **p95 >20 ms is visible jank for a scrolling surface.**
227
227
  profiling a whole flow:
228
228
 
229
229
  ```sh
230
- rnx maestro test .maestro/scroll-feed.yaml --profile # per-step + frame stats
231
- rnx perf cpu --duration 5 --output /tmp/trace.cpuprofile # sampled CPU
230
+ peach maestro test .maestro/scroll-feed.yaml --profile # per-step + frame stats
231
+ peach perf cpu --duration 5 --output /tmp/trace.cpuprofile # sampled CPU
232
232
  ```
233
233
 
234
234
  common patterns → first probe:
@@ -245,11 +245,11 @@ debug channels that help, but cost 1–3 ms/frame on their own — enable
245
245
  only what you're investigating:
246
246
 
247
247
  ```sh
248
- rnx debug enable layout,onlayout,render,animated
248
+ peach debug enable layout,onlayout,render,animated
249
249
  # reproduce
250
- rnx debug recent layout 20 # last 20 layout events
251
- rnx debug recent render 20 # last 20 draw passes
252
- rnx debug disable layout,onlayout,render,animated
250
+ peach debug recent layout 20 # last 20 layout events
251
+ peach debug recent render 20 # last 20 draw passes
252
+ peach debug disable layout,onlayout,render,animated
253
253
  ```
254
254
 
255
255
  you're done when: a p95 number for the interaction + named hot path +
@@ -269,9 +269,9 @@ watch out for:
269
269
  ## branch — accessibility
270
270
 
271
271
  ```sh
272
- rnx get a11y # roles, labels, hints, and target geometry
273
- rnx get layout --styling # boxes, styles, and native pixel contrast
274
- rnx describe --a11y # inline a11y info on every node
272
+ peach get a11y # roles, labels, hints, and target geometry
273
+ peach get layout --styling # boxes, styles, and native pixel contrast
274
+ peach describe --a11y # inline a11y info on every node
275
275
  ```
276
276
 
277
277
  native styled layout reads rendered pixels rather than inferring contrast from
@@ -287,9 +287,9 @@ contrast summary format:
287
287
  finding offenders fast:
288
288
 
289
289
  ```sh
290
- rnx find --no-label # interactive nodes missing label
291
- rnx find --no-role # interactive nodes missing role
292
- rnx find --pressable --max-dim 44 # undersized tap targets
290
+ peach find --no-label # interactive nodes missing label
291
+ peach find --no-role # interactive nodes missing role
292
+ peach find --pressable --max-dim 44 # undersized tap targets
293
293
  ```
294
294
 
295
295
  what gets checked:
@@ -298,7 +298,7 @@ what gets checked:
298
298
  - **missing roles** — `Pressable`/`Touchable` without `accessibilityRole`
299
299
  - **missing hints** — complex interactions without `accessibilityHint`
300
300
  - **touch target size** — tappable nodes with hitSlop-expanded rect <44×44
301
- - **contrast** — run `rnx get layout --styling`; it samples final text and
301
+ - **contrast** — run `peach get layout --styling`; it samples final text and
302
302
  text-suppressed background pixels, including gradients and composited opacity
303
303
  - **label / visible-text mismatch** — label that reads differently from
304
304
  the text VoiceOver would fall back to (often a translation bug)
@@ -315,11 +315,11 @@ triage order:
315
315
  fix → verify loop (the same shape as debugging):
316
316
 
317
317
  ```sh
318
- rnx get a11y > before-a11y.txt
319
- rnx get layout --styling --json > before-layout.json
318
+ peach get a11y > before-a11y.txt
319
+ peach get layout --styling --json > before-layout.json
320
320
  # apply the fix
321
- rnx get a11y > after-a11y.txt
322
- rnx get layout --styling --json > after-layout.json
321
+ peach get a11y > after-a11y.txt
322
+ peach get layout --styling --json > after-layout.json
323
323
  diff before-a11y.txt after-a11y.txt
324
324
  diff before-layout.json after-layout.json
325
325
  ```
@@ -371,7 +371,7 @@ type names sneak in).
371
371
  ## recovery — common failure modes
372
372
 
373
373
  - **`describe` returns nothing** — no sim pinned, or the app isn't
374
- loaded. load `/rnx-setup` and re-confirm.
374
+ loaded. load `/peach-setup` and re-confirm.
375
375
  - **`find` returns multiple matches** — narrow with `--testid`,
376
376
  `--visible`, or both.
377
377
  - **`perf shell` reports zero frames** — you didn't run `perf shell start`
@@ -390,45 +390,45 @@ type names sneak in).
390
390
  ### finding and interacting
391
391
 
392
392
  ```sh
393
- rnx describe # all visible elements with styles
394
- rnx describe button # filter by text/role/label/testID
395
- rnx describe --testid foo # only the subtree under a testID
396
- rnx describe --verbose # include every style property
397
-
398
- rnx find "Sign in" # by text content
399
- rnx find --testid loginButton
400
- rnx find --role button
401
- rnx find --pressable
402
- rnx find --visible # only on-screen nodes
403
-
404
- rnx do tap-id loginButton # tap by testID (preferred)
405
- rnx do tap-text "Submit" # tap by text
406
- rnx do tap 196 400 # tap at coordinates
407
- rnx do type "hello world" # type into focused input
408
- rnx do type-into emailInput "a@b" # focus then type
409
- rnx do key return # special key (return, backspace, …)
410
- rnx do scroll feed-list 0 500 # scroll a testID to absolute x/y offsets
411
- rnx do swipe feed-list left # directional swipe
412
- rnx do long-press messageRow 800 # ms hold
393
+ peach describe # all visible elements with styles
394
+ peach describe button # filter by text/role/label/testID
395
+ peach describe --testid foo # only the subtree under a testID
396
+ peach describe --verbose # include every style property
397
+
398
+ peach find "Sign in" # by text content
399
+ peach find --testid loginButton
400
+ peach find --role button
401
+ peach find --pressable
402
+ peach find --visible # only on-screen nodes
403
+
404
+ peach do tap-id loginButton # tap by testID (preferred)
405
+ peach do tap-text "Submit" # tap by text
406
+ peach do tap 196 400 # tap at coordinates
407
+ peach do type "hello world" # type into focused input
408
+ peach do type-into emailInput "a@b" # focus then type
409
+ peach do key return # special key (return, backspace, …)
410
+ peach do scroll feed-list 0 500 # scroll a testID to absolute x/y offsets
411
+ peach do swipe feed-list left # directional swipe
412
+ peach do long-press messageRow 800 # ms hold
413
413
  ```
414
414
 
415
415
  ### errors and requests
416
416
 
417
417
  ```sh
418
- rnx get errors 5 # last 5 console errors
419
- rnx get warnings 5
420
- rnx get requests 5 # recent failed requests
421
- rnx logs --since 30s # recent console output
422
- rnx network --since 30s # recent network traffic
418
+ peach get errors 5 # last 5 console errors
419
+ peach get warnings 5
420
+ peach get requests 5 # recent failed requests
421
+ peach logs --since 30s # recent console output
422
+ peach network --since 30s # recent network traffic
423
423
  ```
424
424
 
425
425
  ### snapshots and diff
426
426
 
427
427
  ```sh
428
- rnx debug snapshot before
428
+ peach debug snapshot before
429
429
  # interact
430
- rnx debug snapshot after
431
- rnx debug diff before after # added / removed / changed nodes
430
+ peach debug snapshot after
431
+ peach debug diff before after # added / removed / changed nodes
432
432
  ```
433
433
 
434
434
  ### debug channels
@@ -437,7 +437,7 @@ useful: `animated`, `layout`, `onlayout`, `render`, `sheets`, `portals`,
437
437
  `gesture`, `scroll`, `text`, `image`.
438
438
 
439
439
  ```sh
440
- rnx debug enable animated,layout,sheets,portals
441
- rnx debug recent layout 20 # last 20 events on the channel
442
- rnx debug disable animated,layout,sheets,portals
440
+ peach debug enable animated,layout,sheets,portals
441
+ peach debug recent layout 20 # last 20 events on the channel
442
+ peach debug disable animated,layout,sheets,portals
443
443
  ```