peachsim 0.1.667 → 0.1.668

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 (71) hide show
  1. package/dist-lib/agent-daemon-client.cjs +1 -1
  2. package/dist-lib/agent-events.cjs +1 -1
  3. package/dist-lib/agent-identity.cjs +1 -1
  4. package/dist-lib/agent-sessions.cjs +1 -1
  5. package/dist-lib/attached-projects.cjs +1 -1
  6. package/dist-lib/auth/shared-session.cjs +1 -1
  7. package/dist-lib/backend-origin.cjs +1 -1
  8. package/dist-lib/beta.cjs +1 -1
  9. package/dist-lib/beta.mjs +1 -1
  10. package/dist-lib/bridge-constants.cjs +1 -1
  11. package/dist-lib/bridge-contract-input.cjs +1 -1
  12. package/dist-lib/bridge-contract-input.mjs +1 -1
  13. package/dist-lib/bridge-contract.cjs +1 -1
  14. package/dist-lib/bridge-contract.mjs +1 -1
  15. package/dist-lib/capture-contract.cjs +1 -1
  16. package/dist-lib/capture-contract.mjs +1 -1
  17. package/dist-lib/cli-constants.cjs +1 -1
  18. package/dist-lib/cloud-contract.cjs +1 -1
  19. package/dist-lib/cloud-contract.mjs +1 -1
  20. package/dist-lib/cloud-test-args.cjs +1 -1
  21. package/dist-lib/cloud-test-args.mjs +1 -1
  22. package/dist-lib/cloud.cjs +1 -1
  23. package/dist-lib/cloud.mjs +1 -1
  24. package/dist-lib/config.cjs +1 -1
  25. package/dist-lib/detox/index.cjs +1 -1
  26. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  27. package/dist-lib/home-paths.cjs +1 -1
  28. package/dist-lib/host/bridge-host.cjs +9 -3
  29. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  30. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  31. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  32. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  33. package/dist-lib/host/websocket-proxy.cjs +1 -1
  34. package/dist-lib/index.cjs +1 -1
  35. package/dist-lib/jump-to-source-babel.cjs +1 -1
  36. package/dist-lib/jump-to-source-native.cjs +1 -1
  37. package/dist-lib/kotlin-host.cjs +1 -1
  38. package/dist-lib/menu.cjs +1 -1
  39. package/dist-lib/menu.mjs +1 -1
  40. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  41. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  42. package/dist-lib/metro-production-bundle.cjs +1 -1
  43. package/dist-lib/metro-production-bundle.mjs +1 -1
  44. package/dist-lib/metro.cjs +1 -1
  45. package/dist-lib/native-app-identity.cjs +1 -1
  46. package/dist-lib/native-app-identity.mjs +1 -1
  47. package/dist-lib/plist.cjs +1 -1
  48. package/dist-lib/plist.mjs +1 -1
  49. package/dist-lib/profiles.cjs +1 -1
  50. package/dist-lib/public-brand.cjs +1 -1
  51. package/dist-lib/react-native-host-modules.cjs +1 -1
  52. package/dist-lib/react-native-host-modules.mjs +1 -1
  53. package/dist-lib/render-mode.cjs +1 -1
  54. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  55. package/dist-lib/sdk.cjs +1 -1
  56. package/dist-lib/sdk.mjs +1 -1
  57. package/dist-lib/skills.cjs +22 -19
  58. package/dist-lib/swift-compile.cjs +1 -1
  59. package/dist-lib/swift-compile.mjs +1 -1
  60. package/dist-lib/swift-package.cjs +1 -1
  61. package/dist-lib/swift-package.mjs +1 -1
  62. package/dist-lib/swift-submit.cjs +1 -1
  63. package/dist-lib/swift-submit.mjs +1 -1
  64. package/dist-lib/swift.cjs +1 -1
  65. package/dist-lib/vite-swift.cjs +1 -1
  66. package/dist-lib/vite.cjs +1 -1
  67. package/kotlin/fixtures/kotlin-app-variants/Controls.kt +62 -0
  68. package/kotlin/fixtures/kotlin-app-variants/Drag.kt +56 -0
  69. package/kotlin/fixtures/kotlin-app-variants/Draw.kt +74 -0
  70. package/package.json +1 -1
  71. package/src/expo-swift-host.ts +6 -2
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -6041,6 +6041,11 @@ var import_node_module = require("node:module");
6041
6041
  var import_node_os4 = __toESM(require("node:os"), 1);
6042
6042
  var import_node_path10 = __toESM(require("node:path"), 1);
6043
6043
  var import_node_util3 = require("node:util");
6044
+
6045
+ // cli/internal-child.ts
6046
+ var RNX_FORKED_SCRIPT_ENV = "PEACH_RUNS_FORKED_SCRIPTS";
6047
+
6048
+ // src/expo-swift-host.ts
6044
6049
  init_backend_origin();
6045
6050
 
6046
6051
  // src/swift-host.ts
@@ -7657,6 +7662,7 @@ function serveSwiftPackageAsset(pathname, res) {
7657
7662
  // src/expo-swift-host.ts
7658
7663
  var import_meta2 = {};
7659
7664
  var run3 = (0, import_node_util3.promisify)(import_node_child_process4.execFile);
7665
+ var scriptEnv = { ...process.env, [RNX_FORKED_SCRIPT_ENV]: "1" };
7660
7666
  var EXPO_SWIFT_ROUTE = "/__peach/expo-swift";
7661
7667
  var EXPO_SWIFT_ENTRY = "Sources/PeachExpoApp/PeachExpoEntry.swift";
7662
7668
  async function collectExpoSwiftSources(appRoot) {
@@ -7681,7 +7687,7 @@ async function collectExpoSwiftSources(appRoot) {
7681
7687
  appRoot,
7682
7688
  "--json"
7683
7689
  ],
7684
- { timeout: 3e4, maxBuffer: 8 * 1024 * 1024 }
7690
+ { timeout: 3e4, maxBuffer: 8 * 1024 * 1024, env: scriptEnv }
7685
7691
  );
7686
7692
  const search = JSON.parse(stdout);
7687
7693
  if (!search || typeof search !== "object" || Array.isArray(search))
@@ -7697,7 +7703,7 @@ async function collectExpoSwiftSources(appRoot) {
7697
7703
  appRoot,
7698
7704
  "--json"
7699
7705
  ],
7700
- { timeout: 3e4, maxBuffer: 8 * 1024 * 1024 }
7706
+ { timeout: 3e4, maxBuffer: 8 * 1024 * 1024, env: scriptEnv }
7701
7707
  );
7702
7708
  const resolved = JSON.parse(resolvedText);
7703
7709
  const resolutions = resolved && typeof resolved === "object" ? Reflect.get(resolved, "modules") : null;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "Peach";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/native-app-identity.ts
4
4
  var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/plist.ts
4
4
  import plistModule from "@expo/plist";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -21144,6 +21144,22 @@ var init_cli_version = __esm({
21144
21144
  }
21145
21145
  });
21146
21146
 
21147
+ // cli/internal-child.ts
21148
+ var RNX_INTERNAL_COMMAND, RNX_FORKED_SCRIPT_ENV, RNX_INTERNAL_CHILDREN;
21149
+ var init_internal_child = __esm({
21150
+ "cli/internal-child.ts"() {
21151
+ "use strict";
21152
+ RNX_INTERNAL_COMMAND = "__internal";
21153
+ RNX_FORKED_SCRIPT_ENV = "PEACH_RUNS_FORKED_SCRIPTS";
21154
+ RNX_INTERNAL_CHILDREN = {
21155
+ playwrightProbe: "playwright-probe",
21156
+ playwrightInstall: "playwright-install",
21157
+ playwrightHost: "playwright-host",
21158
+ syncHttp: "sync-http"
21159
+ };
21160
+ }
21161
+ });
21162
+
21147
21163
  // ../sootsim-swift/src/bundleAssets.ts
21148
21164
  function extOf(file) {
21149
21165
  const dot = file.lastIndexOf(".");
@@ -23048,7 +23064,7 @@ async function collectExpoSwiftSources(appRoot) {
23048
23064
  appRoot,
23049
23065
  "--json"
23050
23066
  ],
23051
- { timeout: 3e4, maxBuffer: 8 * 1024 * 1024 }
23067
+ { timeout: 3e4, maxBuffer: 8 * 1024 * 1024, env: scriptEnv }
23052
23068
  );
23053
23069
  const search = JSON.parse(stdout);
23054
23070
  if (!search || typeof search !== "object" || Array.isArray(search))
@@ -23064,7 +23080,7 @@ async function collectExpoSwiftSources(appRoot) {
23064
23080
  appRoot,
23065
23081
  "--json"
23066
23082
  ],
23067
- { timeout: 3e4, maxBuffer: 8 * 1024 * 1024 }
23083
+ { timeout: 3e4, maxBuffer: 8 * 1024 * 1024, env: scriptEnv }
23068
23084
  );
23069
23085
  const resolved = JSON.parse(resolvedText);
23070
23086
  const resolutions = resolved && typeof resolved === "object" ? Reflect.get(resolved, "modules") : null;
@@ -23225,7 +23241,7 @@ async function handleExpoSwiftRequest(req, res) {
23225
23241
  }
23226
23242
  return true;
23227
23243
  }
23228
- var import_node_child_process5, import_node_crypto5, import_node_fs10, import_node_module, import_node_os4, import_node_path10, import_node_util3, import_meta2, run3, EXPO_SWIFT_ROUTE, EXPO_SWIFT_ENTRY, compiling;
23244
+ var import_node_child_process5, import_node_crypto5, import_node_fs10, import_node_module, import_node_os4, import_node_path10, import_node_util3, import_meta2, run3, scriptEnv, EXPO_SWIFT_ROUTE, EXPO_SWIFT_ENTRY, compiling;
23229
23245
  var init_expo_swift_host = __esm({
23230
23246
  "src/expo-swift-host.ts"() {
23231
23247
  "use strict";
@@ -23236,11 +23252,13 @@ var init_expo_swift_host = __esm({
23236
23252
  import_node_os4 = __toESM(require("node:os"), 1);
23237
23253
  import_node_path10 = __toESM(require("node:path"), 1);
23238
23254
  import_node_util3 = require("node:util");
23255
+ init_internal_child();
23239
23256
  init_backend_origin();
23240
23257
  init_swift_host();
23241
23258
  init_swift_submit();
23242
23259
  import_meta2 = {};
23243
23260
  run3 = (0, import_node_util3.promisify)(import_node_child_process5.execFile);
23261
+ scriptEnv = { ...process.env, [RNX_FORKED_SCRIPT_ENV]: "1" };
23244
23262
  EXPO_SWIFT_ROUTE = "/__peach/expo-swift";
23245
23263
  EXPO_SWIFT_ENTRY = "Sources/PeachExpoApp/PeachExpoEntry.swift";
23246
23264
  compiling = /* @__PURE__ */ new Map();
@@ -36235,21 +36253,6 @@ var init_playwright_host_log = __esm({
36235
36253
  }
36236
36254
  });
36237
36255
 
36238
- // cli/internal-child.ts
36239
- var RNX_INTERNAL_COMMAND, RNX_INTERNAL_CHILDREN;
36240
- var init_internal_child = __esm({
36241
- "cli/internal-child.ts"() {
36242
- "use strict";
36243
- RNX_INTERNAL_COMMAND = "__internal";
36244
- RNX_INTERNAL_CHILDREN = {
36245
- playwrightProbe: "playwright-probe",
36246
- playwrightInstall: "playwright-install",
36247
- playwrightHost: "playwright-host",
36248
- syncHttp: "sync-http"
36249
- };
36250
- }
36251
- });
36252
-
36253
36256
  // cli/drivers/playwright-core-pin.ts
36254
36257
  var PINNED_PLAYWRIGHT_CORE;
36255
36258
  var init_playwright_core_pin = __esm({
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-compile.ts
4
4
  import { execFile as execFile2 } from "node:child_process";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-package.ts
4
4
  function isSwiftManifestFile(file) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-submit.ts
4
4
  var SWIFT_COMPILE_PATH = "/api/swift-compile";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.667 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.668 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -0,0 +1,62 @@
1
+ package dev.contrast.kotlinapp
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.layout.Arrangement
5
+ import androidx.compose.foundation.layout.Column
6
+ import androidx.compose.foundation.layout.Row
7
+ import androidx.compose.foundation.layout.fillMaxSize
8
+ import androidx.compose.foundation.layout.padding
9
+ import androidx.compose.foundation.layout.safeDrawingPadding
10
+ import androidx.compose.material3.AssistChip
11
+ import androidx.compose.material3.Badge
12
+ import androidx.compose.material3.BadgedBox
13
+ import androidx.compose.material3.DatePicker
14
+ import androidx.compose.material3.ExperimentalMaterial3Api
15
+ import androidx.compose.material3.ExtendedFloatingActionButton
16
+ import androidx.compose.material3.SegmentedButton
17
+ import androidx.compose.material3.SegmentedButtonDefaults
18
+ import androidx.compose.material3.SingleChoiceSegmentedButtonRow
19
+ import androidx.compose.material3.SuggestionChip
20
+ import androidx.compose.material3.Text
21
+ import androidx.compose.material3.rememberDatePickerState
22
+ import androidx.compose.runtime.Composable
23
+ import androidx.compose.runtime.getValue
24
+ import androidx.compose.runtime.mutableStateOf
25
+ import androidx.compose.runtime.remember
26
+ import androidx.compose.runtime.setValue
27
+ import androidx.compose.ui.Modifier
28
+ import androidx.compose.ui.graphics.Color
29
+ import androidx.compose.ui.unit.dp
30
+
31
+ // segmented buttons a tap selects, chips, a badge, an extended FAB and a date
32
+ // picker showing a fixed past month, so no today marker depends on the clock
33
+ @OptIn(ExperimentalMaterial3Api::class)
34
+ @Composable
35
+ fun Controls() {
36
+ val options = listOf("Day", "Week", "Month")
37
+ var picked by remember { mutableStateOf(0) }
38
+ // march 2020, utc
39
+ val dates = rememberDatePickerState(initialSelectedDateMillis = 1584230400000L, initialDisplayedMonthMillis = 1583020800000L)
40
+ Column(
41
+ Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
42
+ verticalArrangement = Arrangement.spacedBy(12.dp),
43
+ ) {
44
+ Text("Range: ${options[picked]}")
45
+ SingleChoiceSegmentedButtonRow {
46
+ options.forEachIndexed { index, label ->
47
+ SegmentedButton(
48
+ selected = picked == index,
49
+ onClick = { picked = index },
50
+ shape = SegmentedButtonDefaults.itemShape(index, options.size),
51
+ ) { Text(label) }
52
+ }
53
+ }
54
+ Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
55
+ AssistChip(onClick = {}, label = { Text("Assist") })
56
+ SuggestionChip(onClick = {}, label = { Text("Suggest") })
57
+ BadgedBox(badge = { Badge { Text("8") } }, Modifier.padding(top = 12.dp, start = 8.dp)) { Text("Inbox") }
58
+ }
59
+ ExtendedFloatingActionButton(onClick = {}) { Text("Compose") }
60
+ DatePicker(dates, showModeToggle = false)
61
+ }
62
+ }
@@ -0,0 +1,56 @@
1
+ package dev.contrast.kotlinapp
2
+
3
+ import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.gestures.detectDragGestures
5
+ import androidx.compose.foundation.layout.Arrangement
6
+ import androidx.compose.foundation.layout.Box
7
+ import androidx.compose.foundation.layout.Column
8
+ import androidx.compose.foundation.layout.fillMaxSize
9
+ import androidx.compose.foundation.layout.fillMaxWidth
10
+ import androidx.compose.foundation.layout.height
11
+ import androidx.compose.foundation.layout.offset
12
+ import androidx.compose.foundation.layout.padding
13
+ import androidx.compose.foundation.layout.safeDrawingPadding
14
+ import androidx.compose.foundation.layout.size
15
+ import androidx.compose.foundation.shape.CircleShape
16
+ import androidx.compose.material3.Slider
17
+ import androidx.compose.material3.Text
18
+ import androidx.compose.runtime.Composable
19
+ import androidx.compose.runtime.getValue
20
+ import androidx.compose.runtime.mutableFloatStateOf
21
+ import androidx.compose.runtime.mutableStateOf
22
+ import androidx.compose.runtime.remember
23
+ import androidx.compose.runtime.setValue
24
+ import androidx.compose.ui.Modifier
25
+ import androidx.compose.ui.geometry.Offset
26
+ import androidx.compose.ui.graphics.Color
27
+ import androidx.compose.ui.input.pointer.pointerInput
28
+ import androidx.compose.ui.platform.LocalDensity
29
+ import androidx.compose.ui.platform.testTag
30
+ import androidx.compose.ui.unit.IntOffset
31
+ import androidx.compose.ui.unit.dp
32
+ import kotlin.math.roundToInt
33
+
34
+ // a puck detectDragGestures moves, reporting the drag it received after the
35
+ // touch slop in dp, and a slider a drag sets
36
+ @Composable
37
+ fun Drag() {
38
+ var puck by remember { mutableStateOf(Offset.Zero) }
39
+ var drags by remember { mutableStateOf(0) }
40
+ var slider by remember { mutableFloatStateOf(0f) }
41
+ val density = LocalDensity.current.density
42
+ Column(
43
+ Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
44
+ verticalArrangement = Arrangement.spacedBy(12.dp),
45
+ ) {
46
+ Text("Drag: ${(puck.x / density).roundToInt()},${(puck.y / density).roundToInt()} ends $drags slider ${(slider * 100).roundToInt()}")
47
+ Box(
48
+ Modifier.fillMaxWidth().height(300.dp).background(Color(0xFFCFD8DC)).testTag("pad").pointerInput(Unit) {
49
+ detectDragGestures(onDragEnd = { drags += 1 }) { change, amount -> change.consume(); puck += amount }
50
+ },
51
+ ) {
52
+ Box(Modifier.offset { IntOffset(puck.x.roundToInt(), puck.y.roundToInt()) }.size(48.dp).background(Color(0xFF3F51B5), CircleShape))
53
+ }
54
+ Slider(slider, { slider = it }, Modifier.testTag("slider"))
55
+ }
56
+ }
@@ -0,0 +1,74 @@
1
+ package dev.contrast.kotlinapp
2
+
3
+ import androidx.compose.foundation.Canvas
4
+ import androidx.compose.foundation.background
5
+ import androidx.compose.foundation.gestures.detectTapGestures
6
+ import androidx.compose.foundation.layout.Arrangement
7
+ import androidx.compose.foundation.layout.Box
8
+ import androidx.compose.foundation.layout.Column
9
+ import androidx.compose.foundation.layout.Row
10
+ import androidx.compose.foundation.layout.fillMaxSize
11
+ import androidx.compose.foundation.layout.fillMaxWidth
12
+ import androidx.compose.foundation.layout.height
13
+ import androidx.compose.foundation.layout.padding
14
+ import androidx.compose.foundation.layout.safeDrawingPadding
15
+ import androidx.compose.foundation.layout.size
16
+ import androidx.compose.foundation.shape.RoundedCornerShape
17
+ import androidx.compose.material3.Text
18
+ import androidx.compose.runtime.Composable
19
+ import androidx.compose.runtime.getValue
20
+ import androidx.compose.runtime.mutableStateOf
21
+ import androidx.compose.runtime.remember
22
+ import androidx.compose.runtime.setValue
23
+ import androidx.compose.ui.Modifier
24
+ import androidx.compose.ui.draw.clip
25
+ import androidx.compose.ui.draw.rotate
26
+ import androidx.compose.ui.geometry.CornerRadius
27
+ import androidx.compose.ui.geometry.Offset
28
+ import androidx.compose.ui.geometry.Size
29
+ import androidx.compose.ui.graphics.Brush
30
+ import androidx.compose.ui.graphics.Color
31
+ import androidx.compose.ui.graphics.Path
32
+ import androidx.compose.ui.graphics.StrokeCap
33
+ import androidx.compose.ui.graphics.drawscope.Stroke
34
+ import androidx.compose.ui.graphics.graphicsLayer
35
+ import androidx.compose.ui.input.pointer.pointerInput
36
+ import androidx.compose.ui.unit.dp
37
+ import kotlin.math.roundToInt
38
+
39
+ // a canvas of paths, arcs, gradients and strokes, transformed layers, and a
40
+ // pointer input pad that reports where a tap lands in its own dp
41
+ @Composable
42
+ fun Draw() {
43
+ var tap by remember { mutableStateOf("none") }
44
+ Column(
45
+ Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
46
+ verticalArrangement = Arrangement.spacedBy(12.dp),
47
+ ) {
48
+ Text("Tap: $tap")
49
+ Canvas(Modifier.fillMaxWidth().height(200.dp)) {
50
+ drawRect(Brush.linearGradient(listOf(Color(0xFF3F51B5), Color(0xFFE91E63)), Offset.Zero, Offset(size.width, size.height)))
51
+ drawCircle(Brush.radialGradient(listOf(Color.White, Color(0x00FFFFFF)), Offset(size.width * 0.25f, size.height * 0.5f), 120f), 120f, Offset(size.width * 0.25f, size.height * 0.5f))
52
+ drawArc(Color(0xFFFFC107), -90f, 250f, false, Offset(size.width * 0.55f, 40f), Size(240f, 240f), style = Stroke(24f, cap = StrokeCap.Round))
53
+ val path = Path().apply {
54
+ moveTo(size.width * 0.8f, 40f)
55
+ cubicTo(size.width, 80f, size.width * 0.7f, size.height - 80f, size.width * 0.95f, size.height - 30f)
56
+ lineTo(size.width * 0.75f, size.height - 30f)
57
+ close()
58
+ }
59
+ drawPath(path, Color(0xCC009688))
60
+ drawRoundRect(Color.White, Offset(30f, size.height - 90f), Size(200f, 60f), CornerRadius(30f), style = Stroke(6f))
61
+ drawLine(Color.Black, Offset(0f, size.height), Offset(size.width, 0f), 3f)
62
+ }
63
+ Row(horizontalArrangement = Arrangement.spacedBy(24.dp)) {
64
+ Box(Modifier.padding(12.dp).size(72.dp).rotate(30f).background(Color(0xFF673AB7)))
65
+ Box(Modifier.size(96.dp).graphicsLayer { alpha = 0.5f; scaleX = 0.8f; scaleY = 1.2f }.background(Color(0xFFFF5722)))
66
+ Box(Modifier.size(96.dp).graphicsLayer { rotationX = 40f; cameraDistance = 8 * density }.clip(RoundedCornerShape(16.dp)).background(Color(0xFF4CAF50)))
67
+ }
68
+ Box(
69
+ Modifier.fillMaxWidth().height(160.dp).background(Color(0xFFCFD8DC)).pointerInput(Unit) {
70
+ detectTapGestures { tap = "${(it.x / density).roundToInt()},${(it.y / density).roundToInt()}" }
71
+ },
72
+ ) { Text("Pad", Modifier.padding(8.dp)) }
73
+ }
74
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.667",
3
+ "version": "0.1.668",
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",
@@ -7,12 +7,16 @@ import { createRequire } from 'node:module'
7
7
  import os from 'node:os'
8
8
  import path from 'node:path'
9
9
  import { promisify } from 'node:util'
10
+ import { RNX_FORKED_SCRIPT_ENV } from '../cli/internal-child'
10
11
  import { isLoopbackHost } from './backend-origin'
11
12
  import { artifactFor, icuUrl, projectFor, serveSwiftPackageAsset } from './swift-host'
12
13
  import { MAX_SWIFT_COMPILE_FILES, MAX_SWIFT_COMPILE_SOURCE_BYTES } from './swift-submit'
13
14
  import type { IncomingMessage, ServerResponse } from 'node:http'
14
15
 
15
16
  const run = promisify(execFile)
17
+ // the compiled CLI's execPath is peach itself, which runs a forked `.js` as a
18
+ // script only with this set; node and bun ignore it.
19
+ const scriptEnv = { ...process.env, [RNX_FORKED_SCRIPT_ENV]: '1' }
16
20
  export const EXPO_SWIFT_ROUTE = '/__peach/expo-swift'
17
21
  export const EXPO_SWIFT_ENTRY = 'Sources/PeachExpoApp/PeachExpoEntry.swift'
18
22
 
@@ -44,7 +48,7 @@ export async function collectExpoSwiftSources(
44
48
  appRoot,
45
49
  '--json',
46
50
  ],
47
- { timeout: 30_000, maxBuffer: 8 * 1024 * 1024 },
51
+ { timeout: 30_000, maxBuffer: 8 * 1024 * 1024, env: scriptEnv },
48
52
  )
49
53
  const search: unknown = JSON.parse(stdout)
50
54
  if (!search || typeof search !== 'object' || Array.isArray(search))
@@ -60,7 +64,7 @@ export async function collectExpoSwiftSources(
60
64
  appRoot,
61
65
  '--json',
62
66
  ],
63
- { timeout: 30_000, maxBuffer: 8 * 1024 * 1024 },
67
+ { timeout: 30_000, maxBuffer: 8 * 1024 * 1024, env: scriptEnv },
64
68
  )
65
69
  const resolved: unknown = JSON.parse(resolvedText)
66
70
  const resolutions =