peachsim 0.1.2179 → 0.1.2180

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 (95) hide show
  1. package/cli/commands/package.ts +7 -2
  2. package/dist-lib/agent-daemon-client.cjs +1 -1
  3. package/dist-lib/agent-events.cjs +1 -1
  4. package/dist-lib/attached-projects.cjs +1 -1
  5. package/dist-lib/auth/shared-session.cjs +1 -1
  6. package/dist-lib/backend-origin.cjs +1 -1
  7. package/dist-lib/beta.cjs +1 -1
  8. package/dist-lib/beta.mjs +1 -1
  9. package/dist-lib/bridge-constants.cjs +1 -1
  10. package/dist-lib/bridge-contract-input.cjs +1 -1
  11. package/dist-lib/bridge-contract-input.mjs +1 -1
  12. package/dist-lib/bridge-contract.cjs +1 -1
  13. package/dist-lib/bridge-contract.mjs +1 -1
  14. package/dist-lib/bundle-channel.cjs +89 -20
  15. package/dist-lib/capture-contract.cjs +1 -1
  16. package/dist-lib/capture-contract.mjs +1 -1
  17. package/dist-lib/cloud-contract.cjs +1 -1
  18. package/dist-lib/cloud-contract.mjs +1 -1
  19. package/dist-lib/cloud-test-args.cjs +1 -1
  20. package/dist-lib/cloud-test-args.mjs +1 -1
  21. package/dist-lib/cloud.cjs +1 -1
  22. package/dist-lib/cloud.mjs +1 -1
  23. package/dist-lib/config.cjs +1 -1
  24. package/dist-lib/config.mjs +1 -1
  25. package/dist-lib/detox/index.cjs +2 -2
  26. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  27. package/dist-lib/expo-swift-bundle.cjs +76 -16
  28. package/dist-lib/expo-swift-metadata.cjs +1 -1
  29. package/dist-lib/expo-swift-metadata.mjs +1 -1
  30. package/dist-lib/home-paths.cjs +1 -1
  31. package/dist-lib/host/bridge-host.cjs +100 -28
  32. package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
  33. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  34. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  35. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  36. package/dist-lib/host/websocket-proxy.cjs +1 -1
  37. package/dist-lib/index.cjs +4 -4
  38. package/dist-lib/jump-to-source-babel.cjs +1 -1
  39. package/dist-lib/jump-to-source-native.cjs +1 -1
  40. package/dist-lib/kotlin-host.cjs +11 -3
  41. package/dist-lib/menu.cjs +1 -1
  42. package/dist-lib/menu.mjs +1 -1
  43. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  45. package/dist-lib/metro-production-bundle.cjs +1 -1
  46. package/dist-lib/metro-production-bundle.mjs +1 -1
  47. package/dist-lib/metro.cjs +4 -4
  48. package/dist-lib/native-app-identity-project.cjs +2 -2
  49. package/dist-lib/native-app-identity-project.mjs +2 -2
  50. package/dist-lib/native-app-identity.cjs +1 -1
  51. package/dist-lib/native-app-identity.mjs +1 -1
  52. package/dist-lib/native-firebase-metadata.cjs +1 -1
  53. package/dist-lib/native-firebase-metadata.mjs +1 -1
  54. package/dist-lib/pdfium-raster.cjs +1 -1
  55. package/dist-lib/pdfium-raster.mjs +1 -1
  56. package/dist-lib/plist.cjs +1 -1
  57. package/dist-lib/plist.mjs +1 -1
  58. package/dist-lib/profiles.cjs +1 -1
  59. package/dist-lib/public-brand.cjs +1 -1
  60. package/dist-lib/public-origins-lib-esm.json +24 -24
  61. package/dist-lib/public-origins-lib.json +53 -53
  62. package/dist-lib/react-native-host-modules.cjs +1 -1
  63. package/dist-lib/react-native-host-modules.mjs +1 -1
  64. package/dist-lib/reap-browser.cjs +1 -1
  65. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  66. package/dist-lib/sdk.cjs +1 -1
  67. package/dist-lib/sdk.mjs +1 -1
  68. package/dist-lib/skills.cjs +113 -114
  69. package/dist-lib/swift-compile.cjs +74 -14
  70. package/dist-lib/swift-compile.mjs +74 -14
  71. package/dist-lib/swift-package.cjs +1 -1
  72. package/dist-lib/swift-package.mjs +1 -1
  73. package/dist-lib/swift-submit.cjs +1 -1
  74. package/dist-lib/swift-submit.mjs +1 -1
  75. package/dist-lib/swift-toolchain.cjs +1 -1
  76. package/dist-lib/swift.cjs +1 -1
  77. package/dist-lib/vite-swift.cjs +75 -15
  78. package/dist-lib/vite.cjs +4 -4
  79. package/dist-lib/worklet-executable.cjs +1 -1
  80. package/dist-lib/worklet-executable.mjs +1 -1
  81. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +1 -0
  82. package/dist-types/packages/peach-engine/src/ios/frame-art.d.ts +41 -0
  83. package/dist-types/packages/peach-engine/src/ios/frame-paint.d.ts +43 -0
  84. package/dist-types/packages/peach-engine/src/ios/frame-svg.d.ts +4 -0
  85. package/kotlin/sdk.tar.gz +0 -0
  86. package/package.json +1 -1
  87. package/runtime-companion.json +1 -1
  88. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h +8 -25
  89. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +26 -0
  90. package/src/expo-widgets-bundle.ts +12 -8
  91. package/src/kotlin-host.ts +10 -2
  92. package/src/one-sdk-bundle.ts +1 -0
  93. package/src/screenshots/frame-compose.ts +14 -109
  94. package/src/swift-compile.ts +102 -12
  95. package/src/wasm-optimize.ts +2 -3
@@ -504,6 +504,11 @@ export async function runPackage(args: string[]): Promise<void> {
504
504
  JSON.stringify(packaged),
505
505
  )
506
506
  }
507
+ // footers (the native asset catalog among them) name release files by
508
+ // absolute url; the release server is gone once the package launches
509
+ const releaseBase = new URL('.', channel.bundleUrl).href
510
+ for (const [, url] of source.matchAll(/"(https?:\/\/[^"\\\s]+)"/g))
511
+ if (url?.startsWith(releaseBase)) resources.add(url)
507
512
  for (const url of resources) {
508
513
  const asset = await fetch(url)
509
514
  if (!asset.ok) throw new Error(`native app resource: HTTP ${asset.status}`)
@@ -530,8 +535,8 @@ export async function runPackage(args: string[]): Promise<void> {
530
535
  fs.writeFileSync(icon, Buffer.from(await artwork.arrayBuffer()))
531
536
  }
532
537
  launchUrl = await routeBundle('/__peach/app.js', await prepareBundle(source))
533
- // a release bundle carries no asset catalog; the project's ios
534
- // catalog travels with it, its images routed below
538
+ // the project's ios catalog travels with the launch, its images
539
+ // routed below
535
540
  const catalog = configuredProject
536
541
  ? await discoverAppCatalog(configuredProject.appDir, origin)
537
542
  : null
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -26720,6 +26720,20 @@ function emitSwiftPackageManifest(args) {
26720
26720
  const prebuilt = args.prebuilt;
26721
26721
  const linkedObjects = Boolean(distribution || prebuilt);
26722
26722
  const cxxFlagsFor = (flags) => args.deferDarwinOverlay ? withoutWasmOverlayIsystem(flags) : flags;
26723
+ const packageModules = new Set(
26724
+ targets.filter(({ name: name3 }) => !args.sourceSwiftTargets?.has(name3)).map(({ name: name3 }) => swiftTargetModuleName(name3))
26725
+ );
26726
+ const mapsPackageModule = (flag) => {
26727
+ if (!flag.startsWith("-fmodule-map-file=")) return false;
26728
+ const file = flag.slice("-fmodule-map-file=".length).replaceAll(SWIFT_NATIVE_INPUT_ROOT, args.root);
26729
+ if (!file.includes("/Pods/Headers/")) return false;
26730
+ const map2 = args.files.get(file) ?? ((0, import_node_fs42.existsSync)(file) ? (0, import_node_fs42.readFileSync)(file) : void 0);
26731
+ const name3 = map2 === void 0 ? void 0 : moduleMapName(map2.toString());
26732
+ return name3 !== void 0 && packageModules.has(name3);
26733
+ };
26734
+ const withoutPackageModuleMaps = (flags) => flags.filter((flag) => !mapsPackageModule(flag));
26735
+ const targetCFlags = (flags) => cFlagArray(withoutPackageModuleMaps(flags));
26736
+ const targetCxxFlags = (flags) => cxxFlagArray(withoutPackageModuleMaps(flags));
26723
26737
  const reachedFrameworks = /* @__PURE__ */ new Set();
26724
26738
  const reach = (name3) => {
26725
26739
  if (reachedFrameworks.has(name3) || targets.some((target) => swiftTargetModuleName(target.name) === name3))
@@ -26799,7 +26813,9 @@ function emitSwiftPackageManifest(args) {
26799
26813
  const macroSettings = (values) => (values ?? []).map((value) => ` ${clangMacroSetting(value)},`).join("");
26800
26814
  const flagArray = (literal3) => `peachCompilerArguments(${JSON.stringify(literal3.replace(/,\s*]$/, "]"))})`;
26801
26815
  const swiftFlagArray = (literal3) => {
26802
- const flags = JSON.parse(literal3.replace(/,\s*]$/, "]"));
26816
+ const flags = JSON.parse(literal3.replace(/,\s*]$/, "]")).filter(
26817
+ (flag, index, all) => !mapsPackageModule(flag) && !(flag === "-Xcc" && mapsPackageModule(all[index + 1] ?? ""))
26818
+ );
26803
26819
  const content = flags.map((flag) => JSON.stringify(flag)).join("\n") + "\n";
26804
26820
  const digest4 = (0, import_node_crypto20.createHash)("sha256").update(content).digest("hex");
26805
26821
  const file = import_node_path41.default.join(args.root, ".peach-swift-arguments", `${digest4}.rsp`);
@@ -26959,18 +26975,18 @@ function emitSwiftPackageManifest(args) {
26959
26975
  "c"
26960
26976
  ).map((entry) => ` ${entry},`).join(
26961
26977
  ""
26962
- )} .unsafeFlags(${flagArray(cFlagArray([...nativeFlags, ...native.clang.flags]))})]`,
26978
+ )} .unsafeFlags(${flagArray(targetCFlags([...nativeFlags, ...native.clang.flags]))})]`,
26963
26979
  ...nativeCxx ? [
26964
26980
  `cxxSettings: [${cxxDefines}${clangSettingEntries(
26965
26981
  frameworkSearchFlags(target, "cxx"),
26966
26982
  "cxx"
26967
26983
  ).map((entry) => ` ${entry},`).join(
26968
26984
  ""
26969
- )} .unsafeFlags(${flagArray(cxxFlagArray([...cxxFlagsFor(nativeFlags), ...native.clang.cxxFlags]))})]`
26985
+ )} .unsafeFlags(${flagArray(targetCxxFlags([...cxxFlagsFor(nativeFlags), ...native.clang.cxxFlags]))})]`
26970
26986
  ] : []
26971
26987
  ].join(", ") : [
26972
- `cSettings: [${cDefines}${declaredClangSettings(target, "c")} .unsafeFlags(${flagArray(cFlagArray([...nativeFlags, ...native?.flags ?? []]))})]`,
26973
- `cxxSettings: [${cxxDefines}${declaredClangSettings(target, "cxx")} .unsafeFlags(${flagArray(cxxFlagArray([...cxxFlagsFor(nativeFlags), ...native?.cxxFlags ?? []]))})]`
26988
+ `cSettings: [${cDefines}${declaredClangSettings(target, "c")} .unsafeFlags(${flagArray(targetCFlags([...nativeFlags, ...native?.flags ?? []]))})]`,
26989
+ `cxxSettings: [${cxxDefines}${declaredClangSettings(target, "cxx")} .unsafeFlags(${flagArray(targetCxxFlags([...cxxFlagsFor(nativeFlags), ...native?.cxxFlags ?? []]))})]`
26974
26990
  ].join(", ");
26975
26991
  const exclusions = native?.clang ? [] : [
26976
26992
  ...native ? native.exclude ?? native.lateSources : [],
@@ -27039,9 +27055,9 @@ function emitSwiftPackageManifest(args) {
27039
27055
  ` path: ${JSON.stringify(group.path)},`,
27040
27056
  ` sources: ${JSON.stringify(group.sources)},`,
27041
27057
  ` publicHeadersPath: ${JSON.stringify(native.groups ? "include" : "PeachSwiftImplementation")},`,
27042
- ` cSettings: [${macroSettings(owner?.cDefines)}${declaredClangSettings(owner, "c")} .unsafeFlags(${flagArray(cFlagArray([...nativeFlags, "-I", native.includeDirectory, ...args.headerDirectory ? ["-I", args.headerDirectory] : [], ...group.flags]))})],`,
27058
+ ` cSettings: [${macroSettings(owner?.cDefines)}${declaredClangSettings(owner, "c")} .unsafeFlags(${flagArray(targetCFlags([...nativeFlags, "-I", native.includeDirectory, ...args.headerDirectory ? ["-I", args.headerDirectory] : [], ...group.flags]))})],`,
27043
27059
  ...group.sources.some((source) => /\.(?:cc|cpp|cxx|mm)$/.test(source)) ? [
27044
- ` cxxSettings: [${macroSettings(owner?.cxxDefines)}${declaredClangSettings(owner, "cxx")} .unsafeFlags(${flagArray(cxxFlagArray([...cxxFlagsFor(nativeFlags), "-I", native.includeDirectory, ...group.cxxFlags]))})]),`
27060
+ ` cxxSettings: [${macroSettings(owner?.cxxDefines)}${declaredClangSettings(owner, "cxx")} .unsafeFlags(${flagArray(targetCxxFlags([...cxxFlagsFor(nativeFlags), "-I", native.includeDirectory, ...group.cxxFlags]))})]),`
27045
27061
  ] : [" ),"]
27046
27062
  ]) : [];
27047
27063
  }),
@@ -27933,7 +27949,10 @@ ${swiftProjectFilesProblems(input.projectFiles).join("\n")}`
27933
27949
  const target = bySourcePath.find(
27934
27950
  (candidate) => candidate.path === "." || file.startsWith(`${candidate.path}/`)
27935
27951
  );
27936
- if (target) swiftTargets.add(target.name);
27952
+ const excluded = target?.exclude?.some(
27953
+ (name3) => file === import_node_path41.default.posix.join(target.path, name3)
27954
+ );
27955
+ if (target && !excluded) swiftTargets.add(target.name);
27937
27956
  }
27938
27957
  const importedModules = /* @__PURE__ */ new Set();
27939
27958
  const swiftImportedModules = /* @__PURE__ */ new Set();
@@ -28979,6 +28998,9 @@ module ${moduleName2}.Swift {
28979
28998
  frameworkLink,
28980
28999
  [
28981
29000
  ...prebuilt.objects.map(quote),
29001
+ "-Wl,--start-lib",
29002
+ ...prebuilt.lazyObjects.map(quote),
29003
+ "-Wl,--end-lib",
28982
29004
  ...darwinRecordsRegion(prebuilt.providers.map(quote))
28983
29005
  ].join("\n") + "\n"
28984
29006
  );
@@ -29377,7 +29399,13 @@ function linkedFrameworkTargets(moduleRoot, input) {
29377
29399
  );
29378
29400
  const targets = compileTargets(input);
29379
29401
  const planning = targets.length > 0 ? targets : [{ name: "App", path: "." }];
29380
- const siblings = swiftTargetDependencies(input.files, planning, libraries.keys());
29402
+ const siblings = swiftTargetDependencies(
29403
+ input.files,
29404
+ planning.map(
29405
+ (target) => input.libraries?.[target.name] ? { ...target, exclude: [] } : target
29406
+ ),
29407
+ libraries.keys()
29408
+ );
29381
29409
  const reached = /* @__PURE__ */ new Set();
29382
29410
  const reach = (name3) => {
29383
29411
  if (name3 === "SwiftUI") return;
@@ -29679,9 +29707,31 @@ async function buildFrameworkProducts(scratch2, args) {
29679
29707
  }
29680
29708
  const providers = (0, import_node_fs42.readdirSync)(providerDir).filter((file) => file.endsWith(".o")).sort().map((file) => import_node_path41.default.join(providerDir, file));
29681
29709
  for (const provider of providers) linked.owners.set(provider, "DarwinRecords");
29710
+ const archive = import_node_path41.default.join(scratch2, "lib");
29711
+ (0, import_node_fs42.rmSync)(archive, { recursive: true, force: true });
29712
+ (0, import_node_fs42.mkdirSync)(archive);
29713
+ const archived = /* @__PURE__ */ new Map();
29714
+ for (const object6 of objects) {
29715
+ const target = linked.owners.get(object6);
29716
+ const dir = import_node_path41.default.join(release, `${target}.build`);
29717
+ if (!target || target === "Darwin" || !object6.startsWith(dir + import_node_path41.default.sep)) continue;
29718
+ const name3 = `${target}-${import_node_path41.default.relative(dir, object6).replaceAll(import_node_path41.default.sep, "-").replace(/\.swift\.o$/, ".o")}`;
29719
+ (0, import_node_fs42.symlinkSync)(object6, import_node_path41.default.join(archive, name3));
29720
+ archived.set(object6, `lib/${name3}`);
29721
+ }
29722
+ const roots = swiftObjcRootObjects(`${scratch2}
29723
+ ${args.frameworkKey}`, scratch2, [
29724
+ ...archived.values()
29725
+ ]);
29726
+ const linkedObjects = objects.map((object6) => {
29727
+ const name3 = archived.get(object6);
29728
+ return name3 ? { path: import_node_path41.default.join(scratch2, name3), lazy: !roots.has(name3) } : { path: object6, lazy: false };
29729
+ });
29682
29730
  return {
29731
+ root: scratch2,
29683
29732
  modules: import_node_path41.default.join(release, "Modules"),
29684
- objects,
29733
+ objects: linkedObjects.filter((object6) => !object6.lazy).map((object6) => object6.path),
29734
+ lazyObjects: linkedObjects.filter((object6) => object6.lazy).map((object6) => object6.path),
29685
29735
  owners: linked.owners,
29686
29736
  providers,
29687
29737
  link,
@@ -29831,6 +29881,10 @@ ${args.frameworkKey}
29831
29881
  for (const object6 of args.prebuilt.objects)
29832
29882
  hash.update(`object
29833
29883
  ${object6}
29884
+ ${statOf(object6)}`);
29885
+ for (const object6 of args.prebuilt.lazyObjects)
29886
+ hash.update(`lazy-object
29887
+ ${object6}
29834
29888
  ${statOf(object6)}`);
29835
29889
  for (const object6 of args.prebuilt.providers)
29836
29890
  hash.update(`provider
@@ -30247,7 +30301,7 @@ function compileSwiftProjectOnce(input, options) {
30247
30301
  pruneSwiftWasmLink(
30248
30302
  root,
30249
30303
  options.toolchainBin,
30250
- frameworkRoot,
30304
+ prebuilt?.root ?? frameworkRoot,
30251
30305
  input.staticClangTargets,
30252
30306
  options.project,
30253
30307
  void 0,
@@ -30271,9 +30325,15 @@ function compileSwiftProjectOnce(input, options) {
30271
30325
  optimized
30272
30326
  });
30273
30327
  else if (input.optimize) await optimizeWasm(output2, optimized);
30328
+ const executable = input.optimize ? optimized : output2;
30329
+ await runCompiler(
30330
+ import_node_path41.default.join(options.toolchainBin, "llvm-objcopy"),
30331
+ ["--remove-section=.swift1_autolink_entries", executable],
30332
+ buildOptions
30333
+ );
30274
30334
  const artifact = {
30275
30335
  hash,
30276
- bytes: (0, import_node_fs42.readFileSync)(input.optimize ? optimized : output2),
30336
+ bytes: (0, import_node_fs42.readFileSync)(executable),
30277
30337
  icu: await icu
30278
30338
  };
30279
30339
  if (!options.project) saveCompiledArtifact(root, artifact);
@@ -30454,7 +30514,7 @@ var init_swift_compile = __esm({
30454
30514
  REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
30455
30515
  MULTI_MANIFEST_VERSION = 68;
30456
30516
  SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
30457
- compilerSourceDigest = true ? "49b49a3b4f72b519cda4a1310d169f7d233d4f0249b0bcff228d2c316fafd9e1" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
30517
+ compilerSourceDigest = true ? "f4c68ce2ea46dd5a9205990046616e5dcc4a3b3b527378ee285d9e25865e5851" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
30458
30518
  nativeCxxCompilerFlags = ["-fno-cxx-modules"];
30459
30519
  cFlagArray = (flags) => JSON.stringify(withoutGlogModuleMap(flags));
30460
30520
  cxxFlagArray = (flags) => JSON.stringify([...nativeCxxCompilerFlags, ...withoutGlogModuleMap(flags)]);
@@ -42652,7 +42712,7 @@ var init_swift_standin_digest = __esm({
42652
42712
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
42653
42713
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
42654
42714
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
42655
- STANDIN_SOURCE_DIGEST = true ? "a3c0ce4a9bde10ffdfdde4f65019a9ffc1f75b1779312f1d5ed2a686a3f6e0c7" : standinSourceDigest();
42715
+ STANDIN_SOURCE_DIGEST = true ? "f2fd734797f09885af5cbd2e5fd5b69c0958bd1f06e2a2e9454cbae6de386412" : standinSourceDigest();
42656
42716
  }
42657
42717
  });
42658
42718
 
@@ -54631,7 +54691,7 @@ var init_nitro_superset = __esm({
54631
54691
  init_nitroContract();
54632
54692
  init_swift_standin_digest();
54633
54693
  NITRO_SUPERSET_ENTRY_NAME = "superset";
54634
- NITRO_COMPILER_DIGEST = true ? "0c558d82081eee0b4f4782c87d6575c3ffe493604ad9c4efe3b68378321ccbc2" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
54694
+ NITRO_COMPILER_DIGEST = true ? "0e86b32fa0ecb06f3041e4bd639e6295740334a01365ecac4ba0c3112925aa9b" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
54635
54695
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
54636
54696
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
54637
54697
  published = /* @__PURE__ */ new Map();
@@ -55271,6 +55331,7 @@ let package = Package(name: "OneSDKGuest", targets: [
55271
55331
  );
55272
55332
  const project2 = projectFor(packagePath);
55273
55333
  project2.oneModule = false;
55334
+ project2.optimize = true;
55274
55335
  const artifact = await artifactFor(project2, "Sources/App/App.swift", moduleRoot);
55275
55336
  const metadata = {
55276
55337
  url: `${origin}/__peach/swift/${artifact.hash}.wasm`,
@@ -55833,7 +55894,7 @@ var init_expo_native_compiler_digest = __esm({
55833
55894
 
55834
55895
  // src/expo-native-prebuilt.ts
55835
55896
  function expoNativeCompilerDigestValue() {
55836
- return true ? "ac42571af765c2d0124171549a0a6350da01f038cf184c0f638923a4932a5e8b" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
55897
+ return true ? "6e72a2a7110799c942eb67d757031bc037f2300be88e5ce35d02796324beadb3" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
55837
55898
  }
55838
55899
  function readSources(value) {
55839
55900
  const sources = isRecord(value) ? value.sources : null;
@@ -60189,7 +60250,11 @@ function entrySource(ids) {
60189
60250
  "",
60190
60251
  "@OptIn(kotlin.js.ExperimentalJsExport::class)",
60191
60252
  "@JsExport",
60192
- "fun peachSetAndroidBuildInfo(model: String, release: String, apiLevel: Int) = Build.setDevice(model, release, apiLevel)",
60253
+ "fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
60254
+ " Build.setDevice(model, release, apiLevel)",
60255
+ " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
60256
+ " java.util.TimeZone.setDevice(timeZone)",
60257
+ "}",
60193
60258
  "",
60194
60259
  "@OptIn(kotlin.js.ExperimentalJsExport::class, kotlinx.coroutines.DelicateCoroutinesApi::class)",
60195
60260
  "@JsExport",
@@ -60556,8 +60621,12 @@ async function expoKotlinArtifact(root, moduleRoot, origin, modules) {
60556
60621
  " ))",
60557
60622
  "}",
60558
60623
  "",
60559
- "@JsExport fun peachSetAndroidBuildInfo(model: String, release: String, apiLevel: Int) =",
60624
+ "@JsExport fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
60560
60625
  " android.os.Build.setDevice(model, release, apiLevel)",
60626
+ " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
60627
+ " java.util.TimeZone.setDevice(timeZone)",
60628
+ " PeachExpoRuntime.configureProcessLocale(locale)",
60629
+ "}",
60561
60630
  "",
60562
60631
  "@JsExport fun peachExpoListen(notify: () -> Unit) {",
60563
60632
  " registered",
@@ -62387,7 +62456,7 @@ var import_node_path5 = require("node:path");
62387
62456
  init_src();
62388
62457
 
62389
62458
  // runtime-companion.json
62390
- var runtime_companion_default = { abi: 1, sha256: "c5311b24d34f15e1e93e1e7fc426600404705562e03ce05c7c359e341afc75cd", file: "node/cli-c5311b24d34f15e1e93e1e7fc426600404705562e03ce05c7c359e341afc75cd.cjs" };
62459
+ var runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
62391
62460
 
62392
62461
  // src/cli-runtime.ts
62393
62462
  init_answeredNativePackages();
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 40761776;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (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
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // ../contrast-runtime-delivery/src/version.ts
4
4
  function isValidRuntimeVersion(value) {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -2512,7 +2512,7 @@ function isValidRuntimeVersion(value) {
2512
2512
  }
2513
2513
 
2514
2514
  // runtime-companion.json
2515
- var runtime_companion_default = { abi: 1, sha256: "c5311b24d34f15e1e93e1e7fc426600404705562e03ce05c7c359e341afc75cd", file: "node/cli-c5311b24d34f15e1e93e1e7fc426600404705562e03ce05c7c359e341afc75cd.cjs" };
2515
+ var runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
2516
2516
 
2517
2517
  // src/answeredNativePackages.ts
2518
2518
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2179 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2180 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;