peachsim 0.1.2185 → 0.1.2186

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 (92) hide show
  1. package/cli/commands/cpu-profile.ts +6 -2
  2. package/cli/commands/shell-url.ts +3 -6
  3. package/dist-lib/agent-daemon-client.cjs +1 -1
  4. package/dist-lib/agent-events.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/bundle-channel.cjs +55 -10
  16. package/dist-lib/capture-contract.cjs +1 -1
  17. package/dist-lib/capture-contract.mjs +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/config.mjs +1 -1
  26. package/dist-lib/detox/index.cjs +2 -2
  27. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  28. package/dist-lib/expo-swift-bundle.cjs +41 -6
  29. package/dist-lib/expo-swift-metadata.cjs +2 -1
  30. package/dist-lib/expo-swift-metadata.mjs +2 -1
  31. package/dist-lib/home-paths.cjs +1 -1
  32. package/dist-lib/host/bridge-host.cjs +55 -10
  33. package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
  34. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  35. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  36. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  37. package/dist-lib/host/websocket-proxy.cjs +1 -1
  38. package/dist-lib/index.cjs +47 -6
  39. package/dist-lib/jump-to-source-babel.cjs +1 -1
  40. package/dist-lib/jump-to-source-native.cjs +1 -1
  41. package/dist-lib/kotlin-host.cjs +5 -3
  42. package/dist-lib/menu.cjs +1 -1
  43. package/dist-lib/menu.mjs +1 -1
  44. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  45. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  46. package/dist-lib/metro-production-bundle.cjs +1 -1
  47. package/dist-lib/metro-production-bundle.mjs +1 -1
  48. package/dist-lib/metro.cjs +47 -6
  49. package/dist-lib/native-app-identity-project.cjs +45 -4
  50. package/dist-lib/native-app-identity-project.mjs +45 -4
  51. package/dist-lib/native-app-identity.cjs +40 -2
  52. package/dist-lib/native-app-identity.mjs +40 -2
  53. package/dist-lib/native-firebase-metadata.cjs +1 -1
  54. package/dist-lib/native-firebase-metadata.mjs +1 -1
  55. package/dist-lib/pdfium-raster.cjs +1 -1
  56. package/dist-lib/pdfium-raster.mjs +1 -1
  57. package/dist-lib/plist.cjs +1 -1
  58. package/dist-lib/plist.mjs +1 -1
  59. package/dist-lib/profiles.cjs +1 -1
  60. package/dist-lib/public-brand.cjs +1 -1
  61. package/dist-lib/public-origins-lib-esm.json +24 -24
  62. package/dist-lib/public-origins-lib.json +53 -53
  63. package/dist-lib/react-native-host-modules.cjs +1 -1
  64. package/dist-lib/react-native-host-modules.mjs +1 -1
  65. package/dist-lib/reap-browser.cjs +1 -1
  66. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  67. package/dist-lib/sdk.cjs +1 -1
  68. package/dist-lib/sdk.mjs +1 -1
  69. package/dist-lib/skills.cjs +67 -13
  70. package/dist-lib/swift-compile.cjs +2 -2
  71. package/dist-lib/swift-compile.mjs +2 -2
  72. package/dist-lib/swift-package.cjs +1 -1
  73. package/dist-lib/swift-package.mjs +1 -1
  74. package/dist-lib/swift-submit.cjs +1 -1
  75. package/dist-lib/swift-submit.mjs +1 -1
  76. package/dist-lib/swift-toolchain.cjs +1 -1
  77. package/dist-lib/swift.cjs +1 -1
  78. package/dist-lib/vite-swift.cjs +3 -3
  79. package/dist-lib/vite.cjs +4 -4
  80. package/dist-lib/worklet-executable.cjs +1 -1
  81. package/dist-lib/worklet-executable.mjs +1 -1
  82. package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +1 -0
  83. package/kotlin/sdk.tar.gz +0 -0
  84. package/package.json +1 -1
  85. package/runtime-companion.json +1 -1
  86. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIImageAsset.h +1 -1
  87. package/src/expo-native-workspace.ts +7 -1
  88. package/src/kotlin-host.ts +4 -2
  89. package/src/native-app-identity-project.ts +10 -2
  90. package/src/native-app-identity.ts +15 -1
  91. package/src/nativeAppIconContract.ts +37 -0
  92. package/src/swift-installed-targets.ts +8 -0
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -12080,7 +12080,7 @@ var init_swift_standin_digest = __esm({
12080
12080
  STANDIN_DIGEST_ENTRYPOINTS = ["swift-standins.ts", "swift-objc-compile.ts"];
12081
12081
  SPECIFIER = /from\s*['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
12082
12082
  standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
12083
- STANDIN_SOURCE_DIGEST = true ? "0981767eef4ad46fe5cb602ee15f1de9ea06dac3a2edb4dab0f6d5279b018a3b" : standinSourceDigest();
12083
+ STANDIN_SOURCE_DIGEST = true ? "62c7fc880aa6efc985c4786587cb8441b81094e44c28f8d65e1d6dffda9c24f4" : standinSourceDigest();
12084
12084
  }
12085
12085
  });
12086
12086
 
@@ -12362,7 +12362,7 @@ var init_nitro_superset = __esm({
12362
12362
  init_nitroContract();
12363
12363
  init_swift_standin_digest();
12364
12364
  NITRO_SUPERSET_ENTRY_NAME = "superset";
12365
- NITRO_COMPILER_DIGEST = true ? "f02c3ec3fd9a77d144224ecf36dbf177c3878f12158689dcd8dcd6347e72ca55" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
12365
+ NITRO_COMPILER_DIGEST = true ? "657f6d25b5a8cead1b82960b638441e0fe6bc4380c409fbb9809a56d6f0102d6" : nitroCompilerSourceDigest(__sootsim_import_meta_dirname, STANDIN_SOURCE_DIGEST2);
12366
12366
  nitroSupersetLock = parseLock(nitro_superset_lock_default);
12367
12367
  nitroSupersetKey = (inputs) => nativeEntryKey({ ...inputs, compiler: NITRO_COMPILER_DIGEST });
12368
12368
  published2 = /* @__PURE__ */ new Map();
@@ -12383,7 +12383,7 @@ var init_nitro_superset = __esm({
12383
12383
  var runtime_companion_default;
12384
12384
  var init_runtime_companion = __esm({
12385
12385
  "runtime-companion.json"() {
12386
- runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
12386
+ runtime_companion_default = { abi: 1, sha256: "c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91", file: "node/cli-c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91.cjs" };
12387
12387
  }
12388
12388
  });
12389
12389
 
@@ -13386,10 +13386,11 @@ function entrySource(ids) {
13386
13386
  "",
13387
13387
  "@OptIn(kotlin.js.ExperimentalJsExport::class)",
13388
13388
  "@JsExport",
13389
- "fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
13389
+ "fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String, settings: String) {",
13390
13390
  " Build.setDevice(model, release, apiLevel)",
13391
13391
  " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
13392
13392
  " java.util.TimeZone.setDevice(timeZone)",
13393
+ " dev.peach.android.ProcessSettings.configure(settings)",
13393
13394
  "}",
13394
13395
  "",
13395
13396
  "@OptIn(kotlin.js.ExperimentalJsExport::class, kotlinx.coroutines.DelicateCoroutinesApi::class)",
@@ -13757,10 +13758,11 @@ async function expoKotlinArtifact(root, moduleRoot, origin, modules) {
13757
13758
  " ))",
13758
13759
  "}",
13759
13760
  "",
13760
- "@JsExport fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
13761
+ "@JsExport fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String, settings: String) {",
13761
13762
  " android.os.Build.setDevice(model, release, apiLevel)",
13762
13763
  " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
13763
13764
  " java.util.TimeZone.setDevice(timeZone)",
13765
+ " dev.peach.android.ProcessSettings.configure(settings)",
13764
13766
  " PeachExpoRuntime.configureProcessLocale(locale)",
13765
13767
  "}",
13766
13768
  "",
@@ -21432,6 +21434,34 @@ init_is_record();
21432
21434
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
21433
21435
  init_assetCatalogContract();
21434
21436
  init_is_record();
21437
+ function resolveNativeBundleIcons(icons, catalogNames, resolveReference) {
21438
+ if (!isRecord(icons) && catalogNames.length === 0) return void 0;
21439
+ const resolve7 = (value) => {
21440
+ if (typeof value === "string") return resolveReference(value);
21441
+ if (Array.isArray(value)) return value.map(resolve7);
21442
+ if (isRecord(value))
21443
+ return Object.fromEntries(
21444
+ Object.entries(value).map(([key2, entry]) => [
21445
+ resolveReference(key2),
21446
+ resolve7(entry)
21447
+ ])
21448
+ );
21449
+ return value;
21450
+ };
21451
+ const dictionary2 = isRecord(icons) ? Object.fromEntries(
21452
+ Object.entries(icons).map(([key2, value]) => [key2, resolve7(value)])
21453
+ ) : {};
21454
+ if (catalogNames.length === 0) return dictionary2;
21455
+ return {
21456
+ ...dictionary2,
21457
+ CFBundleAlternateIcons: {
21458
+ ...Object.fromEntries(
21459
+ catalogNames.map((name3) => [name3, { CFBundleIconName: name3 }])
21460
+ ),
21461
+ ...isRecord(dictionary2.CFBundleAlternateIcons) ? dictionary2.CFBundleAlternateIcons : {}
21462
+ }
21463
+ };
21464
+ }
21435
21465
  function isNativeAppIconArtwork(value) {
21436
21466
  return isRecord(value) && (value.primary === void 0 || isSwiftImageVariants(value.primary)) && isRecord(value.alternates) && Object.values(value.alternates).every(isSwiftImageVariants);
21437
21467
  }
@@ -21748,6 +21778,7 @@ function isNativeAppIdentity(value) {
21748
21778
  if (value.androidPhotoLibraryAddOnly !== void 0 && value.androidPhotoLibraryAddOnly !== true)
21749
21779
  return false;
21750
21780
  if (value.googleSignIn !== void 0 && !isRecord(value.googleSignIn)) return false;
21781
+ if (value.bundleIcons !== void 0 && !isRecord(value.bundleIcons)) return false;
21751
21782
  const descriptions = value.permissionUsageDescriptions;
21752
21783
  if (value.reanimatedStaticFeatureFlags !== void 0 && (!isRecord(value.reanimatedStaticFeatureFlags) || !Object.values(value.reanimatedStaticFeatureFlags).every(
21753
21784
  (flag) => typeof flag === "boolean"
@@ -36565,7 +36596,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
36565
36596
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
36566
36597
  var MULTI_MANIFEST_VERSION = 68;
36567
36598
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
36568
- var compilerSourceDigest = true ? "e48d05f659c020e9d4ddc0f6a17da7924aae807faacd6bef7cbed911c43d08cc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
36599
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
36569
36600
  function swiftArtifactHash(input, release, moduleRoot) {
36570
36601
  const hash = (0, import_node_crypto23.createHash)("sha256");
36571
36602
  hash.update(`swift-compile
@@ -45265,7 +45296,8 @@ async function prepareWorkspace(app, stage, key2, podsEnvironment) {
45265
45296
  const command = [...prefix, ...args];
45266
45297
  await run11(command[0], command.slice(1), cwd, env);
45267
45298
  };
45268
- if (manager.startsWith("bun@") && (!projectReady || !import_node_fs62.default.existsSync(bunExecutable)))
45299
+ const installedBun = manager.startsWith("bun@") ? (0, import_node_child_process33.spawnSync)(bunExecutable, ["--version"], { encoding: "utf8" }) : null;
45300
+ if (manager.startsWith("bun@") && (installedBun?.status !== 0 || installedBun.stdout.trim() !== manager.slice(4)))
45269
45301
  await execute(
45270
45302
  [
45271
45303
  "npm",
@@ -45949,9 +45981,13 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
45949
45981
  }
45950
45982
  }
45951
45983
  const alternateSetting = settings?.("ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES") ?? "";
45984
+ const catalogAlternateNames = [];
45952
45985
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
45953
45986
  const val = match[1] ?? match[2];
45954
- if (val) alternateIconNames.add(val);
45987
+ if (val) {
45988
+ alternateIconNames.add(val);
45989
+ catalogAlternateNames.push(val);
45990
+ }
45955
45991
  }
45956
45992
  const permissionUsageDescriptions = {};
45957
45993
  for (const [key2, value] of Object.entries(dictionary2)) {
@@ -46014,6 +46050,7 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
46014
46050
  ipadSupportedInterfaceOrientations,
46015
46051
  ...defaultScreenOrientationMask ? { defaultScreenOrientationMask } : {},
46016
46052
  alternateIconNames: [...alternateIconNames],
46053
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => value),
46017
46054
  appIconArtwork: resolveNativeAppIconArtwork(
46018
46055
  app.resources,
46019
46056
  (file) => import_node_fs65.default.readFileSync(file, "utf8"),
@@ -46056,7 +46093,7 @@ init_package_tree_digest();
46056
46093
  init_swift_native_pin();
46057
46094
  var EXPO_NATIVE_ENTRY_NAME = "ios";
46058
46095
  function expoNativeCompilerDigestValue() {
46059
- return true ? "5096ba1e78a0087b6e56f15c4b37fcbd9bcabb2acde17a257d8add357efd462c" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
46096
+ return true ? "e50ab1d8ec731167f92f711da0833fa534d1aec4b5ce950a6ba947279df8c1e7" : expoNativeCompilerDigest(__sootsim_import_meta_dirname);
46060
46097
  }
46061
46098
  var IDENTITY_SOURCE_SKIPS = 1 | 4 | 8 | 16 | 32 | 64 | 128 | 4096;
46062
46099
  function readSources(value) {
@@ -64061,6 +64098,14 @@ function applyInstalledSwiftTargets(collection, snapshot, generatedTargets, root
64061
64098
  return !collection.targets.some((target2) => target2.name === module2);
64062
64099
  });
64063
64100
  dropSuppliedHeaders(generated, native);
64101
+ if (native.flattensPublicHeaders && native.publicHeaders.length > 0)
64102
+ generated.swiftFlags = [
64103
+ ...generated.swiftFlags ?? [],
64104
+ "-Xcc",
64105
+ "-I",
64106
+ "-Xcc",
64107
+ `$(PEACH_INPUT_ROOT)/.build/peach-cxx-headers/${native.name}`
64108
+ ];
64064
64109
  const flags = originalModuleFlags(native.flags);
64065
64110
  generated.clangSettings = [
64066
64111
  { tool: "c", flags: [...flags, ...ndebug, ...search] },
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -1498,7 +1498,7 @@ function readIosSdkTree(root) {
1498
1498
 
1499
1499
  // src/swift-standin-digest.ts
1500
1500
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1501
- var STANDIN_SOURCE_DIGEST = true ? "0981767eef4ad46fe5cb602ee15f1de9ea06dac3a2edb4dab0f6d5279b018a3b" : standinSourceDigest();
1501
+ var STANDIN_SOURCE_DIGEST = true ? "62c7fc880aa6efc985c4786587cb8441b81094e44c28f8d65e1d6dffda9c24f4" : standinSourceDigest();
1502
1502
 
1503
1503
  // src/expo-native-workspace.ts
1504
1504
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -4977,7 +4977,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
4977
4977
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
4978
4978
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
4979
4979
  ).join("");
4980
- var compilerSourceDigest = true ? "e48d05f659c020e9d4ddc0f6a17da7924aae807faacd6bef7cbed911c43d08cc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
4980
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
4981
4981
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
4982
4982
  "CFAllocator",
4983
4983
  "CFArray",
@@ -9470,7 +9470,7 @@ var import_node_module = require("node:module");
9470
9470
  var import_node_path11 = require("node:path");
9471
9471
 
9472
9472
  // runtime-companion.json
9473
- var runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
9473
+ var runtime_companion_default = { abi: 1, sha256: "c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91", file: "node/cli-c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91.cjs" };
9474
9474
 
9475
9475
  // src/cli-runtime.ts
9476
9476
  var CLI_COMPANION_ABI = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -6961,7 +6961,7 @@ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
6961
6961
  init_version();
6962
6962
 
6963
6963
  // runtime-companion.json
6964
- var runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
6964
+ var runtime_companion_default = { abi: 1, sha256: "c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91", file: "node/cli-c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91.cjs" };
6965
6965
 
6966
6966
  // src/answeredNativePackages.ts
6967
6967
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -12120,7 +12120,7 @@ function readIosSdkTree(root) {
12120
12120
 
12121
12121
  // src/swift-standin-digest.ts
12122
12122
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
12123
- var STANDIN_SOURCE_DIGEST = true ? "0981767eef4ad46fe5cb602ee15f1de9ea06dac3a2edb4dab0f6d5279b018a3b" : standinSourceDigest();
12123
+ var STANDIN_SOURCE_DIGEST = true ? "62c7fc880aa6efc985c4786587cb8441b81094e44c28f8d65e1d6dffda9c24f4" : standinSourceDigest();
12124
12124
 
12125
12125
  // src/expo-native-workspace.ts
12126
12126
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -12392,6 +12392,34 @@ init_is_record();
12392
12392
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
12393
12393
  init_assetCatalogContract();
12394
12394
  init_is_record();
12395
+ function resolveNativeBundleIcons(icons, catalogNames, resolveReference) {
12396
+ if (!isRecord(icons) && catalogNames.length === 0) return void 0;
12397
+ const resolve5 = (value) => {
12398
+ if (typeof value === "string") return resolveReference(value);
12399
+ if (Array.isArray(value)) return value.map(resolve5);
12400
+ if (isRecord(value))
12401
+ return Object.fromEntries(
12402
+ Object.entries(value).map(([key, entry]) => [
12403
+ resolveReference(key),
12404
+ resolve5(entry)
12405
+ ])
12406
+ );
12407
+ return value;
12408
+ };
12409
+ const dictionary = isRecord(icons) ? Object.fromEntries(
12410
+ Object.entries(icons).map(([key, value]) => [key, resolve5(value)])
12411
+ ) : {};
12412
+ if (catalogNames.length === 0) return dictionary;
12413
+ return {
12414
+ ...dictionary,
12415
+ CFBundleAlternateIcons: {
12416
+ ...Object.fromEntries(
12417
+ catalogNames.map((name2) => [name2, { CFBundleIconName: name2 }])
12418
+ ),
12419
+ ...isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
12420
+ }
12421
+ };
12422
+ }
12395
12423
  function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
12396
12424
  const members = new Set(resources);
12397
12425
  const dictionary = isRecord(icons) ? icons : {};
@@ -12989,8 +13017,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
12989
13017
  );
12990
13018
  if (alternateSetting === null)
12991
13019
  throw new Error("native alternate icon setting is unresolved");
13020
+ const catalogAlternateNames = [];
12992
13021
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
12993
- alternateIconNames.add(match[1] ?? match[2]);
13022
+ const name2 = match[1] ?? match[2];
13023
+ alternateIconNames.add(name2);
13024
+ catalogAlternateNames.push(name2);
12994
13025
  }
12995
13026
  const intentIds = dictionary.OneAppIntentIdentifiers;
12996
13027
  const appIntentIdentifiers = Array.isArray(intentIds) && intentIds.every((value) => typeof value === "string") ? intentIds.map((value) => resolveBuildSetting(value, settings)) : [];
@@ -13138,6 +13169,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
13138
13169
  ipadSupportedInterfaceOrientations,
13139
13170
  ...defaultScreenOrientationMask === void 0 ? {} : { defaultScreenOrientationMask },
13140
13171
  alternateIconNames: [...alternateIconNames],
13172
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => {
13173
+ const resolved = resolveBuildSetting(value, settings);
13174
+ if (resolved === null) throw new Error("native bundle icon reference is unresolved");
13175
+ return resolved;
13176
+ }),
13141
13177
  ...resourceUri ? {
13142
13178
  appIconArtwork: resolveNativeAppIconArtwork(
13143
13179
  [...resources],
@@ -14249,7 +14285,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
14249
14285
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
14250
14286
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
14251
14287
  ).join("");
14252
- var compilerSourceDigest = true ? "e48d05f659c020e9d4ddc0f6a17da7924aae807faacd6bef7cbed911c43d08cc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
14288
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
14253
14289
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
14254
14290
  "CFAllocator",
14255
14291
  "CFArray",
@@ -17423,9 +17459,13 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
17423
17459
  }
17424
17460
  }
17425
17461
  const alternateSetting = settings?.("ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES") ?? "";
17462
+ const catalogAlternateNames = [];
17426
17463
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
17427
17464
  const val = match[1] ?? match[2];
17428
- if (val) alternateIconNames.add(val);
17465
+ if (val) {
17466
+ alternateIconNames.add(val);
17467
+ catalogAlternateNames.push(val);
17468
+ }
17429
17469
  }
17430
17470
  const permissionUsageDescriptions = {};
17431
17471
  for (const [key, value] of Object.entries(dictionary)) {
@@ -17488,6 +17528,7 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
17488
17528
  ipadSupportedInterfaceOrientations,
17489
17529
  ...defaultScreenOrientationMask ? { defaultScreenOrientationMask } : {},
17490
17530
  alternateIconNames: [...alternateIconNames],
17531
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => value),
17491
17532
  appIconArtwork: resolveNativeAppIconArtwork(
17492
17533
  app.resources,
17493
17534
  (file) => import_node_fs19.default.readFileSync(file, "utf8"),
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -644,10 +644,11 @@ function entrySource(ids) {
644
644
  "",
645
645
  "@OptIn(kotlin.js.ExperimentalJsExport::class)",
646
646
  "@JsExport",
647
- "fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
647
+ "fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String, settings: String) {",
648
648
  " Build.setDevice(model, release, apiLevel)",
649
649
  " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
650
650
  " java.util.TimeZone.setDevice(timeZone)",
651
+ " dev.peach.android.ProcessSettings.configure(settings)",
651
652
  "}",
652
653
  "",
653
654
  "@OptIn(kotlin.js.ExperimentalJsExport::class, kotlinx.coroutines.DelicateCoroutinesApi::class)",
@@ -1063,10 +1064,11 @@ async function expoKotlinArtifact(root, moduleRoot, origin, modules) {
1063
1064
  " ))",
1064
1065
  "}",
1065
1066
  "",
1066
- "@JsExport fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String) {",
1067
+ "@JsExport fun peachSetAndroidDeviceInfo(model: String, release: String, apiLevel: Int, locale: String, timeZone: String, settings: String) {",
1067
1068
  " android.os.Build.setDevice(model, release, apiLevel)",
1068
1069
  " java.util.Locale.setDefault(java.util.Locale.forLanguageTag(locale))",
1069
1070
  " java.util.TimeZone.setDevice(timeZone)",
1071
+ " dev.peach.android.ProcessSettings.configure(settings)",
1070
1072
  " PeachExpoRuntime.configureProcessLocale(locale)",
1071
1073
  "}",
1072
1074
  "",
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __esm = (fn, res) => function __init() {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -7355,7 +7355,7 @@ function readIosSdkTree(root) {
7355
7355
 
7356
7356
  // src/swift-standin-digest.ts
7357
7357
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
7358
- var STANDIN_SOURCE_DIGEST = true ? "0981767eef4ad46fe5cb602ee15f1de9ea06dac3a2edb4dab0f6d5279b018a3b" : standinSourceDigest();
7358
+ var STANDIN_SOURCE_DIGEST = true ? "62c7fc880aa6efc985c4786587cb8441b81094e44c28f8d65e1d6dffda9c24f4" : standinSourceDigest();
7359
7359
 
7360
7360
  // src/expo-native-workspace.ts
7361
7361
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -7569,6 +7569,34 @@ init_is_record();
7569
7569
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
7570
7570
  init_assetCatalogContract();
7571
7571
  init_is_record();
7572
+ function resolveNativeBundleIcons(icons, catalogNames, resolveReference) {
7573
+ if (!isRecord(icons) && catalogNames.length === 0) return void 0;
7574
+ const resolve4 = (value) => {
7575
+ if (typeof value === "string") return resolveReference(value);
7576
+ if (Array.isArray(value)) return value.map(resolve4);
7577
+ if (isRecord(value))
7578
+ return Object.fromEntries(
7579
+ Object.entries(value).map(([key, entry]) => [
7580
+ resolveReference(key),
7581
+ resolve4(entry)
7582
+ ])
7583
+ );
7584
+ return value;
7585
+ };
7586
+ const dictionary = isRecord(icons) ? Object.fromEntries(
7587
+ Object.entries(icons).map(([key, value]) => [key, resolve4(value)])
7588
+ ) : {};
7589
+ if (catalogNames.length === 0) return dictionary;
7590
+ return {
7591
+ ...dictionary,
7592
+ CFBundleAlternateIcons: {
7593
+ ...Object.fromEntries(
7594
+ catalogNames.map((name2) => [name2, { CFBundleIconName: name2 }])
7595
+ ),
7596
+ ...isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
7597
+ }
7598
+ };
7599
+ }
7572
7600
  function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
7573
7601
  const members = new Set(resources);
7574
7602
  const dictionary = isRecord(icons) ? icons : {};
@@ -8166,8 +8194,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
8166
8194
  );
8167
8195
  if (alternateSetting === null)
8168
8196
  throw new Error("native alternate icon setting is unresolved");
8197
+ const catalogAlternateNames = [];
8169
8198
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
8170
- alternateIconNames.add(match[1] ?? match[2]);
8199
+ const name2 = match[1] ?? match[2];
8200
+ alternateIconNames.add(name2);
8201
+ catalogAlternateNames.push(name2);
8171
8202
  }
8172
8203
  const intentIds = dictionary.OneAppIntentIdentifiers;
8173
8204
  const appIntentIdentifiers = Array.isArray(intentIds) && intentIds.every((value) => typeof value === "string") ? intentIds.map((value) => resolveBuildSetting(value, settings)) : [];
@@ -8315,6 +8346,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
8315
8346
  ipadSupportedInterfaceOrientations,
8316
8347
  ...defaultScreenOrientationMask === void 0 ? {} : { defaultScreenOrientationMask },
8317
8348
  alternateIconNames: [...alternateIconNames],
8349
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => {
8350
+ const resolved = resolveBuildSetting(value, settings);
8351
+ if (resolved === null) throw new Error("native bundle icon reference is unresolved");
8352
+ return resolved;
8353
+ }),
8318
8354
  ...resourceUri ? {
8319
8355
  appIconArtwork: resolveNativeAppIconArtwork(
8320
8356
  [...resources],
@@ -9426,7 +9462,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
9426
9462
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
9427
9463
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
9428
9464
  ).join("");
9429
- var compilerSourceDigest = true ? "e48d05f659c020e9d4ddc0f6a17da7924aae807faacd6bef7cbed911c43d08cc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
9465
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
9430
9466
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
9431
9467
  "CFAllocator",
9432
9468
  "CFArray",
@@ -12600,9 +12636,13 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
12600
12636
  }
12601
12637
  }
12602
12638
  const alternateSetting = settings?.("ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES") ?? "";
12639
+ const catalogAlternateNames = [];
12603
12640
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
12604
12641
  const val = match[1] ?? match[2];
12605
- if (val) alternateIconNames.add(val);
12642
+ if (val) {
12643
+ alternateIconNames.add(val);
12644
+ catalogAlternateNames.push(val);
12645
+ }
12606
12646
  }
12607
12647
  const permissionUsageDescriptions = {};
12608
12648
  for (const [key, value] of Object.entries(dictionary)) {
@@ -12665,6 +12705,7 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
12665
12705
  ipadSupportedInterfaceOrientations,
12666
12706
  ...defaultScreenOrientationMask ? { defaultScreenOrientationMask } : {},
12667
12707
  alternateIconNames: [...alternateIconNames],
12708
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => value),
12668
12709
  appIconArtwork: resolveNativeAppIconArtwork(
12669
12710
  app.resources,
12670
12711
  (file) => import_node_fs17.default.readFileSync(file, "utf8"),
@@ -17019,7 +17060,7 @@ var import_node_module3 = require("node:module");
17019
17060
  var import_node_path22 = require("node:path");
17020
17061
 
17021
17062
  // runtime-companion.json
17022
- var runtime_companion_default = { abi: 1, sha256: "d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f", file: "node/cli-d1826a4d4d05c87a157d5b160177de9cd6f1fd10a3d142804a92a0d57ff3060f.cjs" };
17063
+ var runtime_companion_default = { abi: 1, sha256: "c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91", file: "node/cli-c63f83dd24fd36986b72da8da6b6a51edce0a2d061e3bc05d3439d22b1a86c91.cjs" };
17023
17064
 
17024
17065
  // src/cli-runtime.ts
17025
17066
  var CLI_COMPANION_ABI = 1;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2185 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2186 | (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;
@@ -1389,6 +1389,34 @@ init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1389
1389
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
1390
1390
 
1391
1391
  // src/nativeAppIconContract.ts
1392
+ function resolveNativeBundleIcons(icons, catalogNames, resolveReference) {
1393
+ if (!isRecord(icons) && catalogNames.length === 0) return void 0;
1394
+ const resolve = (value) => {
1395
+ if (typeof value === "string") return resolveReference(value);
1396
+ if (Array.isArray(value)) return value.map(resolve);
1397
+ if (isRecord(value))
1398
+ return Object.fromEntries(
1399
+ Object.entries(value).map(([key, entry]) => [
1400
+ resolveReference(key),
1401
+ resolve(entry)
1402
+ ])
1403
+ );
1404
+ return value;
1405
+ };
1406
+ const dictionary = isRecord(icons) ? Object.fromEntries(
1407
+ Object.entries(icons).map(([key, value]) => [key, resolve(value)])
1408
+ ) : {};
1409
+ if (catalogNames.length === 0) return dictionary;
1410
+ return {
1411
+ ...dictionary,
1412
+ CFBundleAlternateIcons: {
1413
+ ...Object.fromEntries(
1414
+ catalogNames.map((name) => [name, { CFBundleIconName: name }])
1415
+ ),
1416
+ ...isRecord(dictionary.CFBundleAlternateIcons) ? dictionary.CFBundleAlternateIcons : {}
1417
+ }
1418
+ };
1419
+ }
1392
1420
  function resolveNativeAppIconArtwork(resources, readText, resourceUri, icons, primaryName, alternateNames, resolveReference) {
1393
1421
  const members = new Set(resources);
1394
1422
  const dictionary = isRecord(icons) ? icons : {};
@@ -1965,8 +1993,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
1965
1993
  );
1966
1994
  if (alternateSetting === null)
1967
1995
  throw new Error("native alternate icon setting is unresolved");
1996
+ const catalogAlternateNames = [];
1968
1997
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
1969
- alternateIconNames.add(match[1] ?? match[2]);
1998
+ const name = match[1] ?? match[2];
1999
+ alternateIconNames.add(name);
2000
+ catalogAlternateNames.push(name);
1970
2001
  }
1971
2002
  const intentIds = dictionary.OneAppIntentIdentifiers;
1972
2003
  const appIntentIdentifiers = Array.isArray(intentIds) && intentIds.every((value) => typeof value === "string") ? intentIds.map((value) => resolveBuildSetting(value, settings)) : [];
@@ -2114,6 +2145,11 @@ function nativeAppIdentityFromIos(files, parseInfoPlist, iosTarget, resourceUri)
2114
2145
  ipadSupportedInterfaceOrientations,
2115
2146
  ...defaultScreenOrientationMask === void 0 ? {} : { defaultScreenOrientationMask },
2116
2147
  alternateIconNames: [...alternateIconNames],
2148
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => {
2149
+ const resolved = resolveBuildSetting(value, settings);
2150
+ if (resolved === null) throw new Error("native bundle icon reference is unresolved");
2151
+ return resolved;
2152
+ }),
2117
2153
  ...resourceUri ? {
2118
2154
  appIconArtwork: resolveNativeAppIconArtwork(
2119
2155
  [...resources],
@@ -3282,7 +3318,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
3282
3318
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
3283
3319
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
3284
3320
  ).join("");
3285
- var compilerSourceDigest = true ? "e48d05f659c020e9d4ddc0f6a17da7924aae807faacd6bef7cbed911c43d08cc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3321
+ var compilerSourceDigest = true ? "0d2e8d6fb4545fb31a692a87bd3215ef3a9a64a8c3e1b2fc1f2a3e79511325ec" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
3286
3322
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
3287
3323
  "CFAllocator",
3288
3324
  "CFArray",
@@ -5878,9 +5914,13 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
5878
5914
  }
5879
5915
  }
5880
5916
  const alternateSetting = settings?.("ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES") ?? "";
5917
+ const catalogAlternateNames = [];
5881
5918
  for (const match of alternateSetting.replace(/\\"/g, '"').matchAll(/"([^"]*)"|([^\s(),]+)/g)) {
5882
5919
  const val = match[1] ?? match[2];
5883
- if (val) alternateIconNames.add(val);
5920
+ if (val) {
5921
+ alternateIconNames.add(val);
5922
+ catalogAlternateNames.push(val);
5923
+ }
5884
5924
  }
5885
5925
  const permissionUsageDescriptions = {};
5886
5926
  for (const [key, value] of Object.entries(dictionary)) {
@@ -5943,6 +5983,7 @@ function readNativeAppIdentityFromXcodeTarget(app, parseInfoPlist = parsePlistSo
5943
5983
  ipadSupportedInterfaceOrientations,
5944
5984
  ...defaultScreenOrientationMask ? { defaultScreenOrientationMask } : {},
5945
5985
  alternateIconNames: [...alternateIconNames],
5986
+ bundleIcons: resolveNativeBundleIcons(icons, catalogAlternateNames, (value) => value),
5946
5987
  appIconArtwork: resolveNativeAppIconArtwork(
5947
5988
  app.resources,
5948
5989
  (file) => import_node_fs7.default.readFileSync(file, "utf8"),