sootsim 0.1.178 → 0.1.180

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 (149) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-FPRPN42P.js → agent-TWCD6VWU.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-KABXHSDP.js → agent-wrapper-Z47AOSU4.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-GEL63MTY.js → app-fonts-NJDS2WKC.js} +2 -2
  5. package/dist-cli/chunks/{assert-T55K3RFP.js → assert-E4M3BGYV.js} +2 -2
  6. package/dist-cli/chunks/beta-6DYJAYMR.js +2 -0
  7. package/dist-cli/chunks/{camera-RPYSAI2K.js → camera-AGZ365WS.js} +2 -2
  8. package/dist-cli/chunks/chunk-3R532UY6.js +2 -0
  9. package/dist-cli/chunks/{chunk-LJ2DIDX3.js → chunk-5S5TI2OL.js} +3 -3
  10. package/dist-cli/chunks/{chunk-V3N55LMK.js → chunk-5UNOKZOH.js} +1 -1
  11. package/dist-cli/chunks/{chunk-YXBC4N6Z.js → chunk-5Z3IK75L.js} +2 -2
  12. package/dist-cli/chunks/chunk-655RAZI6.js +1 -0
  13. package/dist-cli/chunks/{chunk-EUIPNUT4.js → chunk-6FPNI2NJ.js} +2 -2
  14. package/dist-cli/chunks/{chunk-CVBCNRKC.js → chunk-6LLHL4Z4.js} +2 -2
  15. package/dist-cli/chunks/{chunk-RVVFK6CF.js → chunk-6W55QHRB.js} +1 -1
  16. package/dist-cli/chunks/chunk-6YPP7ICO.js +5 -0
  17. package/dist-cli/chunks/{chunk-B77YOZBY.js → chunk-7EYSKUGC.js} +2 -2
  18. package/dist-cli/chunks/{chunk-PQLLJLSM.js → chunk-7FVSMP3H.js} +1 -1
  19. package/dist-cli/chunks/{chunk-64VAJYXX.js → chunk-7HOX5AAM.js} +2 -2
  20. package/dist-cli/chunks/{chunk-JFQFJLTV.js → chunk-A3DQXEQJ.js} +2 -2
  21. package/dist-cli/chunks/{chunk-O5SQ2RZE.js → chunk-AKVADO4S.js} +1 -1
  22. package/dist-cli/chunks/chunk-BTV37XIX.js +1 -0
  23. package/dist-cli/chunks/{chunk-K66BWMVS.js → chunk-C3H3HNZU.js} +1 -1
  24. package/dist-cli/chunks/{chunk-EY3XEEE4.js → chunk-DFOQT3FH.js} +1 -1
  25. package/dist-cli/chunks/{chunk-XGU672KO.js → chunk-DPYI7WHO.js} +1 -1
  26. package/dist-cli/chunks/{chunk-YD3CNK36.js → chunk-DPZ5NOVM.js} +1 -1
  27. package/dist-cli/chunks/{chunk-YLQE2RO4.js → chunk-EC6TIZVO.js} +3 -3
  28. package/dist-cli/chunks/{chunk-Q4PUVMFU.js → chunk-EJP4NI3Q.js} +1 -1
  29. package/dist-cli/chunks/{chunk-UYKA44Y4.js → chunk-FGRK5LV4.js} +2 -2
  30. package/dist-cli/chunks/{chunk-7BHPGH6Q.js → chunk-FQ6FCKBQ.js} +1 -1
  31. package/dist-cli/chunks/{chunk-2SM7WWDI.js → chunk-GKC4WAAU.js} +1 -1
  32. package/dist-cli/chunks/{chunk-PG42I7UQ.js → chunk-J7ECVBNV.js} +2 -2
  33. package/dist-cli/chunks/chunk-KOVONBG5.js +2 -0
  34. package/dist-cli/chunks/{chunk-PTBJZ3IO.js → chunk-LTLDMMVO.js} +2 -2
  35. package/dist-cli/chunks/{chunk-42SYOZVV.js → chunk-NNEKSG7J.js} +2 -2
  36. package/dist-cli/chunks/{chunk-2IYQJHNS.js → chunk-O3P4GCIC.js} +2 -2
  37. package/dist-cli/chunks/{chunk-WY3B2Y5J.js → chunk-PJ46BMD3.js} +2 -2
  38. package/dist-cli/chunks/{chunk-7KFBB76L.js → chunk-QXRIMG3C.js} +2 -2
  39. package/dist-cli/chunks/{chunk-CJV7PX2Y.js → chunk-RVH34DLB.js} +2 -2
  40. package/dist-cli/chunks/{chunk-M7MO47BR.js → chunk-SC3LMYOI.js} +1 -1
  41. package/dist-cli/chunks/{chunk-ITOXSEMN.js → chunk-SSTY3FZ7.js} +1 -1
  42. package/dist-cli/chunks/{chunk-PHLMZYE4.js → chunk-T56KIOK2.js} +2 -2
  43. package/dist-cli/chunks/{chunk-3DSTCWVF.js → chunk-TPTEYOPH.js} +2 -2
  44. package/dist-cli/chunks/{chunk-OK22FXGF.js → chunk-W2JS7ZCS.js} +2 -2
  45. package/dist-cli/chunks/{chunk-H26BCZLV.js → chunk-WJMSITGC.js} +1 -1
  46. package/dist-cli/chunks/{chunk-B2Z36B4N.js → chunk-WNBED3UT.js} +2 -2
  47. package/dist-cli/chunks/{chunk-B5KTNMPL.js → chunk-X2S7O732.js} +2 -2
  48. package/dist-cli/chunks/{chunk-ZKGEGXVG.js → chunk-Y7PV4536.js} +2 -2
  49. package/dist-cli/chunks/{chunk-ZVZMM2RT.js → chunk-YTE645KB.js} +1 -1
  50. package/dist-cli/chunks/{chunk-YKV52CQX.js → chunk-ZBS233ZK.js} +2 -2
  51. package/dist-cli/chunks/{chunk-IFJU3COY.js → chunk-ZFKPEBUY.js} +1 -1
  52. package/dist-cli/chunks/{chunk-EHKLQO7I.js → chunk-ZU3YA54Y.js} +1 -1
  53. package/dist-cli/chunks/cli-version-3PTODKAG.js +2 -0
  54. package/dist-cli/chunks/{compat-VDOLM4JY.js → compat-I4K6EHFH.js} +3 -3
  55. package/dist-cli/chunks/{control-N6IWKWQ7.js → control-FSW56XA7.js} +2 -2
  56. package/dist-cli/chunks/{cpu-profile-CR4EKOPN.js → cpu-profile-TS44ELSM.js} +2 -2
  57. package/dist-cli/chunks/daemon-XD4ETUFL.js +2 -0
  58. package/dist-cli/chunks/{debug-4FCBFVDX.js → debug-WJBAZTDZ.js} +3 -3
  59. package/dist-cli/chunks/{detox-TP77ADA2.js → detox-NTJCZT7Y.js} +2 -2
  60. package/dist-cli/chunks/{device-YRU6RDD2.js → device-VZMWYTH6.js} +2 -2
  61. package/dist-cli/chunks/{diagnose-ZU4XLIKW.js → diagnose-VJFAE25R.js} +2 -2
  62. package/dist-cli/chunks/drivers-AXQDZXVN.js +2 -0
  63. package/dist-cli/chunks/{electron-UWTORKRO.js → electron-BUS5EZZB.js} +3 -3
  64. package/dist-cli/chunks/flow-O3SCW6BQ.js +2 -0
  65. package/dist-cli/chunks/help-X32RDYQI.js +2 -0
  66. package/dist-cli/chunks/{hints-X5YLALUQ.js → hints-WVYOKMAB.js} +2 -2
  67. package/dist-cli/chunks/{home-paths-LMEDDTAQ.js → home-paths-5G3GDTLX.js} +2 -2
  68. package/dist-cli/chunks/{inspect-IFCVFMIW.js → inspect-YZPQT6PV.js} +3 -3
  69. package/dist-cli/chunks/{install-desktop-VVQIBZRU.js → install-desktop-KPIFQ5BJ.js} +3 -3
  70. package/dist-cli/chunks/{keys-GDX235ZQ.js → keys-XMLWEKT7.js} +2 -2
  71. package/dist-cli/chunks/{login-MUIJHNM7.js → login-4KYXIZE3.js} +4 -4
  72. package/dist-cli/chunks/{logout-GV3H23TK.js → logout-GWXYQJKY.js} +2 -2
  73. package/dist-cli/chunks/{maestro-IFTHFVUR.js → maestro-73XTB4TQ.js} +2 -2
  74. package/dist-cli/chunks/optional-demo-registry-VJQAN5S5.js +2 -0
  75. package/dist-cli/chunks/{preview-COYJHGIY.js → preview-UO77YODM.js} +2 -2
  76. package/dist-cli/chunks/{profile-726ZBBXY.js → profile-ZGTZRSKI.js} +2 -2
  77. package/dist-cli/chunks/{react-LLN5L6NM.js → react-77P2ZPKP.js} +2 -2
  78. package/dist-cli/chunks/{record-TMJG2SMU.js → record-TYTQTISM.js} +2 -2
  79. package/dist-cli/chunks/runtime-YG4DSIZR.js +2 -0
  80. package/dist-cli/chunks/{screenshot-UFKR5MDO.js → screenshot-YQAQIKID.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-3ZGQR45L.js → screenshot-mode-2YK7P2A5.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-JXS7HP2B.js → screenshots-RFAXUO6J.js} +2 -2
  83. package/dist-cli/chunks/{screenshots-capture-ZBUHYPJJ.js → screenshots-capture-5V4VLZ46.js} +2 -2
  84. package/dist-cli/chunks/{serve-ZG3KCDUO.js → serve-YKQNVYB3.js} +2 -2
  85. package/dist-cli/chunks/{setup-2XT4LRR5.js → setup-4VBJPQEG.js} +2 -2
  86. package/dist-cli/chunks/{skills-3I7UWGIB.js → skills-35JKCOHO.js} +2 -2
  87. package/dist-cli/chunks/{slides-SCGGLDQQ.js → slides-TE5ZRF32.js} +2 -2
  88. package/dist-cli/chunks/store-HKZGF2VP.js +2 -0
  89. package/dist-cli/chunks/telemetry-MZO7LCBJ.js +2 -0
  90. package/dist-cli/chunks/{test-ZRWZBUMK.js → test-ZQCKRCMQ.js} +3 -3
  91. package/dist-cli/chunks/{three-mode-LJHDX4PK.js → three-mode-MXI6TY4F.js} +2 -2
  92. package/dist-cli/chunks/{timeline-5OFJISEU.js → timeline-J4XMTY73.js} +2 -2
  93. package/dist-cli/chunks/{upgrade-M7HFPN57.js → upgrade-4YYUPYWA.js} +2 -2
  94. package/dist-cli/chunks/upload-BULXFLG3.js +2 -0
  95. package/dist-cli/chunks/{version-DHZQAZ66.js → version-SNWXESVB.js} +2 -2
  96. package/dist-cli/chunks/{web-43QEU5SE.js → web-V5EIIUBC.js} +2 -2
  97. package/dist-cli/chunks/{what-happened-RNVAVGKL.js → what-happened-DTF62KF5.js} +2 -2
  98. package/dist-cli/chunks/{whoami-F5EYWJCY.js → whoami-LXD6FRWT.js} +2 -2
  99. package/dist-lib/agent-daemon-client.cjs +1 -1
  100. package/dist-lib/agent-events.cjs +1 -1
  101. package/dist-lib/agent-sessions.cjs +1 -1
  102. package/dist-lib/attached-projects.cjs +1 -1
  103. package/dist-lib/auth/shared-session.cjs +1 -1
  104. package/dist-lib/backend-origin.cjs +1 -1
  105. package/dist-lib/beta.cjs +1 -1
  106. package/dist-lib/beta.mjs +1 -1
  107. package/dist-lib/bridge-constants.cjs +1 -1
  108. package/dist-lib/cli-constants.cjs +1 -1
  109. package/dist-lib/config.cjs +1 -1
  110. package/dist-lib/detox/index.cjs +1 -1
  111. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  112. package/dist-lib/home-paths.cjs +1 -1
  113. package/dist-lib/host/bridge-host.cjs +81 -25
  114. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  115. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  116. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  117. package/dist-lib/host/websocket-proxy.cjs +1 -1
  118. package/dist-lib/index.cjs +1 -37
  119. package/dist-lib/jump-to-source-babel.cjs +1 -1
  120. package/dist-lib/menu.cjs +10 -3
  121. package/dist-lib/menu.mjs +10 -3
  122. package/dist-lib/metro.cjs +1 -1
  123. package/dist-lib/profiles.cjs +1 -1
  124. package/dist-lib/render-mode.cjs +1 -1
  125. package/dist-lib/scripts/dev-server-scanner.cjs +83 -25
  126. package/dist-lib/sdk.cjs +1 -1
  127. package/dist-lib/sdk.mjs +1 -1
  128. package/dist-lib/skills.cjs +82 -26
  129. package/dist-lib/vite.cjs +1 -37
  130. package/package.json +1 -1
  131. package/scripts/dev-server-scanner.ts +120 -24
  132. package/src/menu.ts +10 -2
  133. package/src/vite-plugin-one.ts +0 -47
  134. package/dist-cli/chunks/beta-74JMB2XJ.js +0 -2
  135. package/dist-cli/chunks/chunk-DVBRRNWE.js +0 -2
  136. package/dist-cli/chunks/chunk-NE55HRAU.js +0 -5
  137. package/dist-cli/chunks/chunk-PNFYOQ4N.js +0 -1
  138. package/dist-cli/chunks/chunk-TBWJVJXW.js +0 -2
  139. package/dist-cli/chunks/chunk-YFLYSJL6.js +0 -1
  140. package/dist-cli/chunks/cli-version-PVBTBN2X.js +0 -2
  141. package/dist-cli/chunks/daemon-HORAEEZR.js +0 -2
  142. package/dist-cli/chunks/drivers-BSP2USRT.js +0 -2
  143. package/dist-cli/chunks/flow-ZXUEU6WL.js +0 -2
  144. package/dist-cli/chunks/help-6OSM7CI4.js +0 -2
  145. package/dist-cli/chunks/optional-demo-registry-26DVI7SE.js +0 -2
  146. package/dist-cli/chunks/runtime-3NQVPRES.js +0 -2
  147. package/dist-cli/chunks/store-7LKGHVAR.js +0 -2
  148. package/dist-cli/chunks/telemetry-SQRPQEGO.js +0 -2
  149. package/dist-cli/chunks/upload-OOTFDONE.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-2SM7WWDI.js";import{c as A,e as _}from"./chunk-B2Z36B4N.js";import"./chunk-ITOXSEMN.js";import{b as k}from"./chunk-V3N55LMK.js";import"./chunk-7BHPGH6Q.js";import"./chunk-M7MO47BR.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.180 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-GKC4WAAU.js";import{c as A,e as _}from"./chunk-WNBED3UT.js";import"./chunk-SSTY3FZ7.js";import{b as k}from"./chunk-5UNOKZOH.js";import"./chunk-FQ6FCKBQ.js";import"./chunk-SC3LMYOI.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
3
3
  sootsim what-happened \u2014 show recent events from the semantic timeline
4
4
 
5
5
  usage:
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as i}from"./chunk-WY3B2Y5J.js";import{d as n}from"./chunk-42SYOZVV.js";import"./chunk-7BHPGH6Q.js";import"./chunk-M7MO47BR.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
1
+ /*! sootsim v0.1.180 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as i}from"./chunk-PJ46BMD3.js";import{d as n}from"./chunk-NNEKSG7J.js";import"./chunk-FQ6FCKBQ.js";import"./chunk-SC3LMYOI.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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;
@@ -333,6 +333,49 @@ function applyManifest(result, manifestRes, buildIconProxyUrl) {
333
333
  }
334
334
  return result;
335
335
  }
336
+ var ENRICH_TIMEOUT_MS = 2e4;
337
+ var enrichmentCache = /* @__PURE__ */ new Map();
338
+ var enrichmentInFlight = /* @__PURE__ */ new Set();
339
+ function enrichWithManifest(result, buildIconProxyUrl) {
340
+ if (result.projectName) return result;
341
+ const cached3 = enrichmentCache.get(result.port);
342
+ if (cached3) {
343
+ if (cached3.projectName) result.projectName = cached3.projectName;
344
+ if (cached3.iconUrl && !result.iconUrl) {
345
+ result.iconUrl = cached3.iconUrl;
346
+ result.iconPath = cached3.iconPath;
347
+ }
348
+ if (cached3.bundleId && !result.bundleId) result.bundleId = cached3.bundleId;
349
+ return result;
350
+ }
351
+ if (!enrichmentInFlight.has(result.port)) {
352
+ enrichmentInFlight.add(result.port);
353
+ const port = result.port;
354
+ void fetchManifestEnrichment(port, buildIconProxyUrl).finally(
355
+ () => enrichmentInFlight.delete(port)
356
+ );
357
+ }
358
+ return result;
359
+ }
360
+ async function fetchManifestEnrichment(port, buildIconProxyUrl) {
361
+ const manifestRes = await httpGet(port, "/", "GET", ENRICH_TIMEOUT_MS, {
362
+ "expo-platform": "ios"
363
+ });
364
+ if (!manifestRes || manifestRes.statusCode !== 200) return;
365
+ const parsed = applyManifest(
366
+ { port, framework: "one", bundleUrl: "", lastSeen: 0 },
367
+ manifestRes,
368
+ buildIconProxyUrl
369
+ );
370
+ if (!parsed.projectName && !parsed.iconUrl) return;
371
+ enrichmentCache.set(port, {
372
+ projectName: parsed.projectName,
373
+ iconUrl: parsed.iconUrl,
374
+ iconPath: parsed.iconPath,
375
+ bundleId: parsed.bundleId
376
+ });
377
+ portCache.delete(port);
378
+ }
336
379
  var knownNonPatched = /* @__PURE__ */ new Set();
337
380
  var knownNonExpo = /* @__PURE__ */ new Set();
338
381
  var knownOne = /* @__PURE__ */ new Set();
@@ -373,24 +416,30 @@ async function probePort(port, buildIconProxyUrl) {
373
416
  }
374
417
  if (statusRes && statusRes.body.includes("packager-status:running")) {
375
418
  knownNonPatched.add(port);
376
- return applyManifest(
377
- makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
378
- manifestRes,
419
+ return enrichWithManifest(
420
+ applyManifest(
421
+ makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
422
+ manifestRes,
423
+ buildIconProxyUrl
424
+ ),
379
425
  buildIconProxyUrl
380
426
  );
381
427
  }
382
428
  if (sootsimRes && sootsimRes.statusCode === 200 && sootsimRes.body.includes("sootsim-patched")) {
383
429
  knownNonPatched.delete(port);
384
- return applyManifest(
385
- {
386
- port,
387
- framework: "one",
388
- bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
389
- hmrUrl: `ws://localhost:${port}/hot`,
390
- lastSeen: Date.now(),
391
- patched: true
392
- },
393
- manifestRes,
430
+ return enrichWithManifest(
431
+ applyManifest(
432
+ {
433
+ port,
434
+ framework: "one",
435
+ bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
436
+ hmrUrl: `ws://localhost:${port}/hot`,
437
+ lastSeen: Date.now(),
438
+ patched: true
439
+ },
440
+ manifestRes,
441
+ buildIconProxyUrl
442
+ ),
394
443
  buildIconProxyUrl
395
444
  );
396
445
  }
@@ -402,18 +451,21 @@ async function probePort(port, buildIconProxyUrl) {
402
451
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
403
452
  knownNonPatched.add(port);
404
453
  knownOne.add(port);
405
- return applyManifest(
406
- {
407
- port,
408
- framework: "one",
409
- bundleUrl: withRuntimeConfig(
454
+ return enrichWithManifest(
455
+ applyManifest(
456
+ {
410
457
  port,
411
- `http://localhost:${port}${onePath}&minify=false`
412
- ),
413
- hmrUrl: `ws://localhost:${port}/hot`,
414
- lastSeen: Date.now()
415
- },
416
- manifestRes,
458
+ framework: "one",
459
+ bundleUrl: withRuntimeConfig(
460
+ port,
461
+ `http://localhost:${port}${onePath}&minify=false`
462
+ ),
463
+ hmrUrl: `ws://localhost:${port}/hot`,
464
+ lastSeen: Date.now()
465
+ },
466
+ manifestRes,
467
+ buildIconProxyUrl
468
+ ),
417
469
  buildIconProxyUrl
418
470
  );
419
471
  }
@@ -461,6 +513,9 @@ async function scanDevServers(opts = {}) {
461
513
  for (const p of [...knownOne]) {
462
514
  if (!currentPorts.has(p)) knownOne.delete(p);
463
515
  }
516
+ for (const p of [...enrichmentCache.keys()]) {
517
+ if (!currentPorts.has(p)) enrichmentCache.delete(p);
518
+ }
464
519
  const results = [];
465
520
  const toProbe = [];
466
521
  for (const { port, pid } of processes) {
@@ -473,6 +528,7 @@ async function scanDevServers(opts = {}) {
473
528
  knownNonPatched.delete(port);
474
529
  knownNonExpo.delete(port);
475
530
  knownOne.delete(port);
531
+ enrichmentCache.delete(port);
476
532
  }
477
533
  toProbe.push({ port, pid });
478
534
  }
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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;
@@ -179,7 +179,6 @@ function serveRuntimeFile(res, fullPath) {
179
179
  }
180
180
 
181
181
  // src/vite-plugin-one.ts
182
- var sootsimRoot = import_path2.default.resolve(import_path2.default.dirname(new URL(__sootsim_import_meta_url).pathname), "..");
183
182
  function sootsimPlugin(options = {}) {
184
183
  if (options.enabled === false) return [];
185
184
  const prefix2 = options.prefix || "/__soot";
@@ -273,45 +272,10 @@ function sootsimPlugin(options = {}) {
273
272
  const port = server.config.server.port || 8081;
274
273
  const sootsimUrl = `http://localhost:${port}${prefix2}/`;
275
274
  console.log(`[sootsim] serving at ${sootsimUrl}`);
276
- if (options.open !== false) {
277
- openElectronApp(sootsimUrl);
278
- }
279
275
  }
280
276
  }
281
277
  ];
282
278
  }
283
- async function openElectronApp(sootsimUrl) {
284
- if (process.platform !== "darwin") return;
285
- const { execSync, exec } = await import("child_process");
286
- const schemeUrl = `sootsim://dev?url=${encodeURIComponent(sootsimUrl)}`;
287
- try {
288
- exec(`open "${schemeUrl}"`);
289
- return;
290
- } catch {
291
- }
292
- const candidates = [
293
- "/Applications/sootsim.app",
294
- import_path2.default.join(process.env.HOME || "", "Applications/sootsim.app"),
295
- import_path2.default.join(sootsimRoot, "release/mac-arm64/sootsim.app")
296
- ];
297
- let appPath = candidates.find((p) => import_fs2.default.existsSync(p));
298
- if (!appPath) {
299
- try {
300
- const found = execSync(
301
- 'mdfind "kMDItemCFBundleIdentifier == dev.sootsim.simulator"',
302
- { encoding: "utf8", timeout: 3e3 }
303
- ).trim();
304
- if (found) appPath = found.split("\n")[0];
305
- } catch {
306
- }
307
- }
308
- if (appPath) {
309
- try {
310
- exec(`open -a "${appPath}" "${sootsimUrl}"`);
311
- } catch {
312
- }
313
- }
314
- }
315
279
 
316
280
  // src/metro-plugin.ts
317
281
  var import_fs3 = __toESM(require("fs"), 1);
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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;
@@ -42,7 +42,7 @@ function buildSootSimMenuDefs(state, deviceChoices) {
42
42
  fileMenu(state, deviceChoices),
43
43
  editMenu(),
44
44
  deviceMenu(state, deviceChoices),
45
- debugMenu(),
45
+ debugMenu(state),
46
46
  windowMenu(state),
47
47
  helpMenu()
48
48
  ];
@@ -175,7 +175,7 @@ function deviceMenu(state, deviceChoices) {
175
175
  ]
176
176
  };
177
177
  }
178
- function debugMenu() {
178
+ function debugMenu(state) {
179
179
  return {
180
180
  label: "Debug",
181
181
  items: [
@@ -202,6 +202,13 @@ function debugMenu() {
202
202
  showInShortcutDocs: true
203
203
  },
204
204
  { type: "separator" },
205
+ {
206
+ label: "Always Show Live WebViews",
207
+ type: "checkbox",
208
+ checked: state.alwaysShowLiveWebViews,
209
+ action: "toggle-live-webviews"
210
+ },
211
+ { type: "separator" },
205
212
  {
206
213
  label: "Clear Cache and Reload",
207
214
  accelerator: "CmdOrCtrl+Shift+R",
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/menu.ts
4
4
  var SOOTSIM_ENGINE_EVENT_NAME = "sootsim:engine-event";
@@ -9,7 +9,7 @@ function buildSootSimMenuDefs(state, deviceChoices) {
9
9
  fileMenu(state, deviceChoices),
10
10
  editMenu(),
11
11
  deviceMenu(state, deviceChoices),
12
- debugMenu(),
12
+ debugMenu(state),
13
13
  windowMenu(state),
14
14
  helpMenu()
15
15
  ];
@@ -142,7 +142,7 @@ function deviceMenu(state, deviceChoices) {
142
142
  ]
143
143
  };
144
144
  }
145
- function debugMenu() {
145
+ function debugMenu(state) {
146
146
  return {
147
147
  label: "Debug",
148
148
  items: [
@@ -169,6 +169,13 @@ function debugMenu() {
169
169
  showInShortcutDocs: true
170
170
  },
171
171
  { type: "separator" },
172
+ {
173
+ label: "Always Show Live WebViews",
174
+ type: "checkbox",
175
+ checked: state.alwaysShowLiveWebViews,
176
+ action: "toggle-live-webviews"
177
+ },
178
+ { type: "separator" },
172
179
  {
173
180
  label: "Clear Cache and Reload",
174
181
  accelerator: "CmdOrCtrl+Shift+R",
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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;
@@ -325,6 +325,49 @@ function applyManifest(result, manifestRes, buildIconProxyUrl) {
325
325
  function __applyManifestForTests(result, manifestBody) {
326
326
  return applyManifest(result, { statusCode: 200, body: manifestBody });
327
327
  }
328
+ var ENRICH_TIMEOUT_MS = 2e4;
329
+ var enrichmentCache = /* @__PURE__ */ new Map();
330
+ var enrichmentInFlight = /* @__PURE__ */ new Set();
331
+ function enrichWithManifest(result, buildIconProxyUrl) {
332
+ if (result.projectName) return result;
333
+ const cached2 = enrichmentCache.get(result.port);
334
+ if (cached2) {
335
+ if (cached2.projectName) result.projectName = cached2.projectName;
336
+ if (cached2.iconUrl && !result.iconUrl) {
337
+ result.iconUrl = cached2.iconUrl;
338
+ result.iconPath = cached2.iconPath;
339
+ }
340
+ if (cached2.bundleId && !result.bundleId) result.bundleId = cached2.bundleId;
341
+ return result;
342
+ }
343
+ if (!enrichmentInFlight.has(result.port)) {
344
+ enrichmentInFlight.add(result.port);
345
+ const port = result.port;
346
+ void fetchManifestEnrichment(port, buildIconProxyUrl).finally(
347
+ () => enrichmentInFlight.delete(port)
348
+ );
349
+ }
350
+ return result;
351
+ }
352
+ async function fetchManifestEnrichment(port, buildIconProxyUrl) {
353
+ const manifestRes = await httpGet(port, "/", "GET", ENRICH_TIMEOUT_MS, {
354
+ "expo-platform": "ios"
355
+ });
356
+ if (!manifestRes || manifestRes.statusCode !== 200) return;
357
+ const parsed = applyManifest(
358
+ { port, framework: "one", bundleUrl: "", lastSeen: 0 },
359
+ manifestRes,
360
+ buildIconProxyUrl
361
+ );
362
+ if (!parsed.projectName && !parsed.iconUrl) return;
363
+ enrichmentCache.set(port, {
364
+ projectName: parsed.projectName,
365
+ iconUrl: parsed.iconUrl,
366
+ iconPath: parsed.iconPath,
367
+ bundleId: parsed.bundleId
368
+ });
369
+ portCache.delete(port);
370
+ }
328
371
  var knownNonPatched = /* @__PURE__ */ new Set();
329
372
  var knownNonExpo = /* @__PURE__ */ new Set();
330
373
  var knownOne = /* @__PURE__ */ new Set();
@@ -365,24 +408,30 @@ async function probePort(port, buildIconProxyUrl) {
365
408
  }
366
409
  if (statusRes && statusRes.body.includes("packager-status:running")) {
367
410
  knownNonPatched.add(port);
368
- return applyManifest(
369
- makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
370
- manifestRes,
411
+ return enrichWithManifest(
412
+ applyManifest(
413
+ makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
414
+ manifestRes,
415
+ buildIconProxyUrl
416
+ ),
371
417
  buildIconProxyUrl
372
418
  );
373
419
  }
374
420
  if (sootsimRes && sootsimRes.statusCode === 200 && sootsimRes.body.includes("sootsim-patched")) {
375
421
  knownNonPatched.delete(port);
376
- return applyManifest(
377
- {
378
- port,
379
- framework: "one",
380
- bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
381
- hmrUrl: `ws://localhost:${port}/hot`,
382
- lastSeen: Date.now(),
383
- patched: true
384
- },
385
- manifestRes,
422
+ return enrichWithManifest(
423
+ applyManifest(
424
+ {
425
+ port,
426
+ framework: "one",
427
+ bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
428
+ hmrUrl: `ws://localhost:${port}/hot`,
429
+ lastSeen: Date.now(),
430
+ patched: true
431
+ },
432
+ manifestRes,
433
+ buildIconProxyUrl
434
+ ),
386
435
  buildIconProxyUrl
387
436
  );
388
437
  }
@@ -394,18 +443,21 @@ async function probePort(port, buildIconProxyUrl) {
394
443
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
395
444
  knownNonPatched.add(port);
396
445
  knownOne.add(port);
397
- return applyManifest(
398
- {
399
- port,
400
- framework: "one",
401
- bundleUrl: withRuntimeConfig(
446
+ return enrichWithManifest(
447
+ applyManifest(
448
+ {
402
449
  port,
403
- `http://localhost:${port}${onePath}&minify=false`
404
- ),
405
- hmrUrl: `ws://localhost:${port}/hot`,
406
- lastSeen: Date.now()
407
- },
408
- manifestRes,
450
+ framework: "one",
451
+ bundleUrl: withRuntimeConfig(
452
+ port,
453
+ `http://localhost:${port}${onePath}&minify=false`
454
+ ),
455
+ hmrUrl: `ws://localhost:${port}/hot`,
456
+ lastSeen: Date.now()
457
+ },
458
+ manifestRes,
459
+ buildIconProxyUrl
460
+ ),
409
461
  buildIconProxyUrl
410
462
  );
411
463
  }
@@ -444,6 +496,8 @@ function __resetScannerCache() {
444
496
  knownNonPatched.clear();
445
497
  knownNonExpo.clear();
446
498
  knownOne.clear();
499
+ enrichmentCache.clear();
500
+ enrichmentInFlight.clear();
447
501
  }
448
502
  async function scanDevServers(opts = {}) {
449
503
  const processes = await discoverListeningProcesses(opts.excludePorts);
@@ -460,6 +514,9 @@ async function scanDevServers(opts = {}) {
460
514
  for (const p of [...knownOne]) {
461
515
  if (!currentPorts.has(p)) knownOne.delete(p);
462
516
  }
517
+ for (const p of [...enrichmentCache.keys()]) {
518
+ if (!currentPorts.has(p)) enrichmentCache.delete(p);
519
+ }
463
520
  const results = [];
464
521
  const toProbe = [];
465
522
  for (const { port, pid } of processes) {
@@ -472,6 +529,7 @@ async function scanDevServers(opts = {}) {
472
529
  knownNonPatched.delete(port);
473
530
  knownNonExpo.delete(port);
474
531
  knownOne.delete(port);
532
+ enrichmentCache.delete(port);
475
533
  }
476
534
  toProbe.push({ port, pid });
477
535
  }
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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
- /*! sootsim v0.1.178 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {