sootsim 0.1.271 → 0.1.273
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.
- package/README.md +2 -2
- package/detox/expectations.ts +84 -50
- package/dist-cli/bin.js +4 -4
- package/dist-cli/chunks/{agent-L744OWW2.js → agent-RY2XEBI4.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-F7YU7YQY.js → agent-wrapper-2JWRMQK3.js} +2 -2
- package/dist-cli/chunks/{app-fonts-AOVWJ64N.js → app-fonts-2QW4VIY2.js} +2 -2
- package/dist-cli/chunks/{assert-VM6WQOSH.js → assert-XJ3DVAL5.js} +2 -2
- package/dist-cli/chunks/{auth-I73YF2VH.js → auth-YOM3MY6Y.js} +2 -2
- package/dist-cli/chunks/beta-CKJTZEC2.js +2 -0
- package/dist-cli/chunks/{camera-5LP32MN5.js → camera-EEKTPZG4.js} +2 -2
- package/dist-cli/chunks/{chunk-DVUSIJGM.js → chunk-343JI4I2.js} +2 -2
- package/dist-cli/chunks/{chunk-V6JB3XB7.js → chunk-35WKL2MB.js} +2 -2
- package/dist-cli/chunks/{chunk-MP55R5YC.js → chunk-4GRRQEA3.js} +1 -1
- package/dist-cli/chunks/{chunk-SJRK4IQV.js → chunk-4VYPLSZX.js} +2 -2
- package/dist-cli/chunks/{chunk-YGEZZQ34.js → chunk-4VYSTDTE.js} +1 -1
- package/dist-cli/chunks/{chunk-7MWXZLC3.js → chunk-565TFOLU.js} +1 -1
- package/dist-cli/chunks/{chunk-QSUJV6FY.js → chunk-5FDV53XA.js} +1 -1
- package/dist-cli/chunks/{chunk-GATLQUZD.js → chunk-6CA6EBO3.js} +2 -2
- package/dist-cli/chunks/{chunk-NXJIRSYB.js → chunk-6DS5XJT5.js} +1 -1
- package/dist-cli/chunks/{chunk-TQK4ONSC.js → chunk-6UMAKITO.js} +3 -3
- package/dist-cli/chunks/{chunk-KNBKEQMZ.js → chunk-6YABIMDT.js} +1 -1
- package/dist-cli/chunks/{chunk-KDQDKEGD.js → chunk-7AOT4F42.js} +1 -1
- package/dist-cli/chunks/{chunk-BSKGIVGK.js → chunk-A4K5LKRP.js} +1 -1
- package/dist-cli/chunks/{chunk-I5GCWNIJ.js → chunk-A4NS2FVB.js} +1 -1
- package/dist-cli/chunks/{chunk-QPJHNF2H.js → chunk-AIVJBJ2Y.js} +2 -2
- package/dist-cli/chunks/{chunk-53YHX2QG.js → chunk-BAK2L2LI.js} +73 -69
- package/dist-cli/chunks/{chunk-6GT6YSKU.js → chunk-BVAGQ2NS.js} +1 -1
- package/dist-cli/chunks/{chunk-4SRHESEZ.js → chunk-CH5RNBQB.js} +2 -2
- package/dist-cli/chunks/{chunk-4ISBAFYP.js → chunk-CZHRHTEK.js} +2 -2
- package/dist-cli/chunks/{chunk-MY2BVCQF.js → chunk-D6M3O4UJ.js} +3 -3
- package/dist-cli/chunks/{chunk-WOLESEXG.js → chunk-D7WXHC3X.js} +2 -2
- package/dist-cli/chunks/{chunk-ZBGUJKMS.js → chunk-DHFXFBDV.js} +3 -3
- package/dist-cli/chunks/{chunk-Z6WIJUFD.js → chunk-EB3XV5F5.js} +2 -2
- package/dist-cli/chunks/{chunk-MVXVG2BX.js → chunk-EJH3FI7U.js} +2 -2
- package/dist-cli/chunks/{chunk-FLCWG5TT.js → chunk-FJGTGF3D.js} +1 -1
- package/dist-cli/chunks/{chunk-62CTB2NZ.js → chunk-FMA4WU4T.js} +1 -1
- package/dist-cli/chunks/{chunk-TIAKOUSI.js → chunk-IA3Z374S.js} +1 -1
- package/dist-cli/chunks/chunk-JIJN4BIT.js +2 -0
- package/dist-cli/chunks/{chunk-ACZDS4HL.js → chunk-JTSVDPX3.js} +1 -1
- package/dist-cli/chunks/chunk-M5MORYLO.js +2 -0
- package/dist-cli/chunks/{chunk-3PDYKW67.js → chunk-NJZMT75Z.js} +1 -1
- package/dist-cli/chunks/chunk-NQHXZIBC.js +2 -0
- package/dist-cli/chunks/{chunk-UTYJQ65T.js → chunk-Q74B7TLC.js} +2 -2
- package/dist-cli/chunks/{chunk-5PLAZK5V.js → chunk-SL7ITEPL.js} +2 -2
- package/dist-cli/chunks/{chunk-WIYFHKRE.js → chunk-STL3UBKD.js} +2 -2
- package/dist-cli/chunks/{chunk-WU3TJDWA.js → chunk-UQECJ6X7.js} +2 -2
- package/dist-cli/chunks/{chunk-OFKDXQMY.js → chunk-UZUBRINN.js} +2 -2
- package/dist-cli/chunks/{chunk-VI3WG25A.js → chunk-WESIOUQT.js} +2 -2
- package/dist-cli/chunks/{chunk-DQCYF257.js → chunk-WIDIBY2N.js} +2 -2
- package/dist-cli/chunks/{chunk-RBRFATPJ.js → chunk-XJ6VQYDX.js} +2 -2
- package/dist-cli/chunks/{chunk-KQTMW2VR.js → chunk-YLZGG6MD.js} +2 -2
- package/dist-cli/chunks/{chunk-2MAZYB4E.js → chunk-Z4TMT3OT.js} +1 -1
- package/dist-cli/chunks/{chunk-DDVJQ7KL.js → chunk-ZASTCWKL.js} +1 -1
- package/dist-cli/chunks/chunk-ZD7MRJC2.js +1 -0
- package/dist-cli/chunks/cli-version-A7HCRGTV.js +2 -0
- package/dist-cli/chunks/{compat-GTD44O52.js → compat-UYIVMZJ5.js} +3 -3
- package/dist-cli/chunks/{config-75QCBOYK.js → config-TXBLWS33.js} +2 -2
- package/dist-cli/chunks/{control-MOMQFZYG.js → control-FDADHJ25.js} +2 -2
- package/dist-cli/chunks/daemon-ID66VXWD.js +2 -0
- package/dist-cli/chunks/{debug-MOQUSHCC.js → debug-Y6YMYAZ5.js} +3 -3
- package/dist-cli/chunks/{desktop-5TQB3QBP.js → desktop-IF67YMZY.js} +3 -3
- package/dist-cli/chunks/{detox-EJIFEK7G.js → detox-TKXHHDEM.js} +2 -2
- package/dist-cli/chunks/{device-7XUADG3E.js → device-HS4L467M.js} +2 -2
- package/dist-cli/chunks/{diagnose-5DEHAEPK.js → diagnose-XJFXLNQS.js} +2 -2
- package/dist-cli/chunks/drivers-VCEL56H4.js +2 -0
- package/dist-cli/chunks/{film-AZXWITDW.js → film-DV6DNP2C.js} +3 -3
- package/dist-cli/chunks/flow-VBF6CP7Y.js +2 -0
- package/dist-cli/chunks/help-65JTTMOW.js +2 -0
- package/dist-cli/chunks/{hidden-runtime-alias-5FXUVO7I.js → hidden-runtime-alias-BTHAL2T7.js} +2 -2
- package/dist-cli/chunks/{home-paths-O6TNVGMZ.js → home-paths-CTUPSX2J.js} +2 -2
- package/dist-cli/chunks/inspect-VMN3IUAD.js +2 -0
- package/dist-cli/chunks/install-desktop-5HHUTF2L.js +2 -0
- package/dist-cli/chunks/{login-JZQBHZ6C.js → login-X6CCGXFJ.js} +4 -4
- package/dist-cli/chunks/{logout-W3ROHISE.js → logout-IBQHQ42Y.js} +2 -2
- package/dist-cli/chunks/{maestro-REMOLABE.js → maestro-M5376PL3.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-IU2RUQLO.js → maestro-generate-QEQPNBHL.js} +3 -3
- package/dist-cli/chunks/{mode-2GQRQPIW.js → mode-NJWCUUT3.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-3R5RBJQI.js +2 -0
- package/dist-cli/chunks/{perf-CU7CUMKX.js → perf-WWKFD3MJ.js} +2 -2
- package/dist-cli/chunks/{record-XX3RELNP.js → record-MCAMAKYJ.js} +3 -3
- package/dist-cli/chunks/runtime-V6OPNNEX.js +2 -0
- package/dist-cli/chunks/{screenshot-command-UCB5GMXA.js → screenshot-command-UTZLRBPH.js} +3 -3
- package/dist-cli/chunks/{screenshots-capture-3ALWS273.js → screenshots-capture-QNX6LRHI.js} +2 -2
- package/dist-cli/chunks/{serve-GDMRYWRG.js → serve-4ELR7DTA.js} +2 -2
- package/dist-cli/chunks/{setup-HPSMVFGT.js → setup-5NHEPHDE.js} +3 -3
- package/dist-cli/chunks/{skills-B3FYCUCU.js → skills-OKH37AOP.js} +2 -2
- package/dist-cli/chunks/{storage-42GBCFPY.js → storage-QCIXAHOW.js} +2 -2
- package/dist-cli/chunks/store-X6LAVE5L.js +2 -0
- package/dist-cli/chunks/telemetry-UQVHOAJA.js +2 -0
- package/dist-cli/chunks/{timeline-VOVG5QCE.js → timeline-C5RZTQE6.js} +2 -2
- package/dist-cli/chunks/{upgrade-AJJ3DDIH.js → upgrade-SRZVUBH4.js} +2 -2
- package/dist-cli/chunks/upload-MA6PXOW3.js +2 -0
- package/dist-cli/chunks/{version-I46ZOIB5.js → version-LELQYDFL.js} +2 -2
- package/dist-cli/chunks/{web-TA7Z2M3K.js → web-UIV7BMMJ.js} +2 -2
- package/dist-cli/chunks/{what-happened-L7WYY5P3.js → what-happened-UXTKTYRS.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +61 -44
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +1 -1
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/skills/sootsim-debug/SKILL.md +8 -0
- package/skills/sootsim-perf/SKILL.md +23 -4
- package/dist-cli/chunks/beta-FKJVCD4P.js +0 -2
- package/dist-cli/chunks/chunk-ILNCM267.js +0 -2
- package/dist-cli/chunks/chunk-JTQM46FY.js +0 -1
- package/dist-cli/chunks/chunk-OFYXCIJ4.js +0 -1
- package/dist-cli/chunks/chunk-RVATR53A.js +0 -2
- package/dist-cli/chunks/cli-version-YLTMQC3T.js +0 -2
- package/dist-cli/chunks/daemon-MCX26DKV.js +0 -2
- package/dist-cli/chunks/drivers-6QDWYOP5.js +0 -2
- package/dist-cli/chunks/flow-SBH3AZJ3.js +0 -2
- package/dist-cli/chunks/help-SLGCB5J2.js +0 -2
- package/dist-cli/chunks/inspect-NMJDGO37.js +0 -2
- package/dist-cli/chunks/install-desktop-PO67KHJF.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-FNHY44IB.js +0 -2
- package/dist-cli/chunks/runtime-7TVHW27R.js +0 -2
- package/dist-cli/chunks/store-OTCZNVYJ.js +0 -2
- package/dist-cli/chunks/telemetry-LSW2JFI3.js +0 -2
- package/dist-cli/chunks/upload-D6KRF57A.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.273 | (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-FJGTGF3D.js";import{g as A,i as _}from"./chunk-Q74B7TLC.js";import"./chunk-4GRRQEA3.js";import{c as k}from"./chunk-6DS5XJT5.js";import"./chunk-5FDV53XA.js";import"./chunk-7AOT4F42.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,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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;
|
|
@@ -711,36 +711,25 @@ async function scrollMatcherElement(page, findNode, matcher, pixels, direction)
|
|
|
711
711
|
if (!node) {
|
|
712
712
|
throw new Error(`scroll container not found: ${JSON.stringify(matcher)}`);
|
|
713
713
|
}
|
|
714
|
+
const before = scrollOffsetOf(node);
|
|
714
715
|
await dragScrollNode(page, node, pixels, direction);
|
|
716
|
+
const after = scrollOffsetOf(await findNode(matcher));
|
|
717
|
+
return Math.abs(after.x - before.x) + Math.abs(after.y - before.y);
|
|
715
718
|
}
|
|
716
|
-
function
|
|
717
|
-
|
|
718
|
-
return false;
|
|
719
|
-
}
|
|
720
|
-
const frame = node.visibleFrame ?? {
|
|
721
|
-
x: node.absolutePosition?.x ?? node.layout?.x ?? 0,
|
|
722
|
-
y: node.absolutePosition?.y ?? node.layout?.y ?? 0,
|
|
723
|
-
width: node.layout.width,
|
|
724
|
-
height: node.layout.height
|
|
725
|
-
};
|
|
726
|
-
const right = frame.x + frame.width;
|
|
727
|
-
const bottom = frame.y + frame.height;
|
|
728
|
-
const visibleWidth = Math.max(0, Math.min(right, viewport.width) - Math.max(frame.x, 0));
|
|
729
|
-
const visibleHeight = Math.max(
|
|
730
|
-
0,
|
|
731
|
-
Math.min(bottom, viewport.height) - Math.max(frame.y, 0)
|
|
732
|
-
);
|
|
733
|
-
const visibleArea = visibleWidth * visibleHeight;
|
|
734
|
-
const totalArea = node.layout.width * node.layout.height;
|
|
735
|
-
return totalArea > 0 && visibleArea / totalArea >= DEFAULT_VISIBILITY_THRESHOLD;
|
|
719
|
+
function scrollOffsetOf(node) {
|
|
720
|
+
return { x: node?.scrollOffsetX ?? 0, y: node?.scrollOffsetY ?? 0 };
|
|
736
721
|
}
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
722
|
+
function visibleFraction(node) {
|
|
723
|
+
const totalArea = (node?.layout?.width ?? 0) * (node?.layout?.height ?? 0);
|
|
724
|
+
const frame = node?.visibleFrame;
|
|
725
|
+
if (totalArea <= 0 || !frame) return 0;
|
|
726
|
+
const visibleArea = Math.max(0, frame.width) * Math.max(0, frame.height);
|
|
727
|
+
return visibleArea / totalArea;
|
|
728
|
+
}
|
|
729
|
+
function isNodeVisible(node) {
|
|
730
|
+
return visibleFraction(node) >= DEFAULT_VISIBILITY_THRESHOLD;
|
|
742
731
|
}
|
|
743
|
-
function describeNodeVisibility(node
|
|
732
|
+
function describeNodeVisibility(node) {
|
|
744
733
|
if (!node) return "not found";
|
|
745
734
|
const absX = node.absolutePosition?.x ?? node.layout?.x ?? 0;
|
|
746
735
|
const absY = node.absolutePosition?.y ?? node.layout?.y ?? 0;
|
|
@@ -754,7 +743,8 @@ function describeNodeVisibility(node, viewport) {
|
|
|
754
743
|
bottom: absY + (node.layout?.height ?? 0)
|
|
755
744
|
},
|
|
756
745
|
visibleFrame: node.visibleFrame ?? null,
|
|
757
|
-
|
|
746
|
+
visibleFraction: visibleFraction(node),
|
|
747
|
+
threshold: DEFAULT_VISIBILITY_THRESHOLD,
|
|
758
748
|
style: node.style ?? null
|
|
759
749
|
});
|
|
760
750
|
}
|
|
@@ -801,9 +791,7 @@ var SootSimExpectation = class _SootSimExpectation {
|
|
|
801
791
|
}
|
|
802
792
|
async toBeVisible() {
|
|
803
793
|
const node = await this.findNode(this.matcher);
|
|
804
|
-
const
|
|
805
|
-
const viewport = node ? await readSootsimInteractiveViewport(page) : void 0;
|
|
806
|
-
const visible = viewport ? isNodeVisibleInViewport(node, viewport) : false;
|
|
794
|
+
const visible = isNodeVisible(node);
|
|
807
795
|
if (this.negated) {
|
|
808
796
|
if (visible) {
|
|
809
797
|
throw new Error(
|
|
@@ -813,14 +801,14 @@ var SootSimExpectation = class _SootSimExpectation {
|
|
|
813
801
|
} else {
|
|
814
802
|
if (!visible) {
|
|
815
803
|
throw new Error(
|
|
816
|
-
`expected element to be visible but it is ${describeNodeVisibility(node
|
|
804
|
+
`expected element to be visible but it is ${describeNodeVisibility(node)}: ${JSON.stringify(this.matcher)}`
|
|
817
805
|
);
|
|
818
806
|
}
|
|
819
807
|
}
|
|
820
808
|
}
|
|
821
809
|
async toBeNotVisible() {
|
|
822
810
|
const node = await this.findNode(this.matcher);
|
|
823
|
-
const visible =
|
|
811
|
+
const visible = isNodeVisible(node);
|
|
824
812
|
if (visible) {
|
|
825
813
|
throw new Error(
|
|
826
814
|
`expected element NOT to be visible: ${JSON.stringify(this.matcher)}`
|
|
@@ -915,7 +903,26 @@ var SootSimExpectation = class _SootSimExpectation {
|
|
|
915
903
|
}
|
|
916
904
|
}
|
|
917
905
|
async toBeFocused() {
|
|
918
|
-
await this.
|
|
906
|
+
const node = await this.findNode(this.matcher);
|
|
907
|
+
if (!node) {
|
|
908
|
+
throw new Error(
|
|
909
|
+
`element not found for toBeFocused: ${JSON.stringify(this.matcher)}`
|
|
910
|
+
);
|
|
911
|
+
}
|
|
912
|
+
const nodeId = typeof node.nodeId === "number" ? node.nodeId : typeof node.id === "number" ? node.id : null;
|
|
913
|
+
const focused = nodeId !== null && await this.getPage().evaluate((id) => {
|
|
914
|
+
const active = document.activeElement;
|
|
915
|
+
return active?.getAttribute("data-sootsim-id") === String(id);
|
|
916
|
+
}, nodeId);
|
|
917
|
+
if (this.negated) {
|
|
918
|
+
if (focused) {
|
|
919
|
+
throw new Error(
|
|
920
|
+
`expected element NOT to be focused: ${JSON.stringify(this.matcher)}`
|
|
921
|
+
);
|
|
922
|
+
}
|
|
923
|
+
} else if (!focused) {
|
|
924
|
+
throw new Error(`expected element to be focused: ${JSON.stringify(this.matcher)}`);
|
|
925
|
+
}
|
|
919
926
|
}
|
|
920
927
|
async toHaveValue(value) {
|
|
921
928
|
const node = await this.findNode(this.matcher);
|
|
@@ -977,12 +984,10 @@ var SootSimWaitForChain = class {
|
|
|
977
984
|
toBeVisible() {
|
|
978
985
|
this.assertionFn = async () => {
|
|
979
986
|
const node = await this.findNode(this.matcher);
|
|
980
|
-
const
|
|
981
|
-
const viewport = node ? await readSootsimInteractiveViewport(page) : void 0;
|
|
982
|
-
const visible = viewport ? isNodeVisibleInViewport(node, viewport) : false;
|
|
987
|
+
const visible = isNodeVisible(node);
|
|
983
988
|
if (this._negated ? visible : !visible) {
|
|
984
989
|
throw new Error(
|
|
985
|
-
`waitFor toBeVisible failed (${describeNodeVisibility(node
|
|
990
|
+
`waitFor toBeVisible failed (${describeNodeVisibility(node)}): ${JSON.stringify(this.matcher)}`
|
|
986
991
|
);
|
|
987
992
|
}
|
|
988
993
|
};
|
|
@@ -991,7 +996,7 @@ var SootSimWaitForChain = class {
|
|
|
991
996
|
toBeNotVisible() {
|
|
992
997
|
this.assertionFn = async () => {
|
|
993
998
|
const node = await this.findNode(this.matcher);
|
|
994
|
-
const visible =
|
|
999
|
+
const visible = isNodeVisible(node);
|
|
995
1000
|
if (visible) {
|
|
996
1001
|
throw new Error(`waitFor toBeNotVisible failed: ${JSON.stringify(this.matcher)}`);
|
|
997
1002
|
}
|
|
@@ -1080,22 +1085,34 @@ var SootSimWaitForScrollAction = class {
|
|
|
1080
1085
|
this.getPage = getPage2;
|
|
1081
1086
|
this.matcher = matcher;
|
|
1082
1087
|
}
|
|
1088
|
+
// detox scrolls the container until the expectation passes or the container
|
|
1089
|
+
// can no longer move. bounding this by wall clock instead made the result
|
|
1090
|
+
// depend on how fast the host dispatches pointer events: the same fixture and
|
|
1091
|
+
// the same assertion pass on an idle machine and fail on a loaded one,
|
|
1092
|
+
// because each 200px drag is a real pointer stream and fewer of them fit in
|
|
1093
|
+
// the budget. end on scroll exhaustion, which is a property of the content.
|
|
1083
1094
|
async scroll(pixels, direction, _startPositionX, _startPositionY) {
|
|
1084
1095
|
const page = this.getPage();
|
|
1085
|
-
const start = Date.now();
|
|
1086
|
-
const timeoutMs = 5e3;
|
|
1087
1096
|
let lastError = null;
|
|
1088
|
-
|
|
1097
|
+
let stalledSteps = 0;
|
|
1098
|
+
while (stalledSteps < 2) {
|
|
1089
1099
|
try {
|
|
1090
1100
|
await this.assertionFn();
|
|
1091
1101
|
return;
|
|
1092
1102
|
} catch (error) {
|
|
1093
1103
|
lastError = error;
|
|
1094
1104
|
}
|
|
1095
|
-
await scrollMatcherElement(
|
|
1105
|
+
const travelled = await scrollMatcherElement(
|
|
1106
|
+
page,
|
|
1107
|
+
this.findNode,
|
|
1108
|
+
this.matcher,
|
|
1109
|
+
pixels,
|
|
1110
|
+
direction
|
|
1111
|
+
);
|
|
1112
|
+
stalledSteps = travelled < 0.5 ? stalledSteps + 1 : 0;
|
|
1096
1113
|
}
|
|
1097
1114
|
throw lastError || new Error(
|
|
1098
|
-
`waitFor whileElement(...).scroll()
|
|
1115
|
+
`waitFor whileElement(...).scroll() reached the end of ${JSON.stringify(this.matcher)}`
|
|
1099
1116
|
);
|
|
1100
1117
|
}
|
|
1101
1118
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (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
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.273 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/package.json
CHANGED
|
@@ -143,6 +143,14 @@ sootsim debug diff before after # structural diff: what changed?
|
|
|
143
143
|
sootsim what-happened # timeline events during the repro
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
+
for nested scroll ownership or momentum transfer, compare the shell's resolved
|
|
147
|
+
gesture chain with the published scroll registry:
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
sootsim debug state scroll-input
|
|
151
|
+
sootsim debug state scroll-mirror
|
|
152
|
+
```
|
|
153
|
+
|
|
146
154
|
reading `describe` output:
|
|
147
155
|
|
|
148
156
|
```
|
|
@@ -42,10 +42,12 @@ indict, remeasure — and every wasted week came from skipping a step.
|
|
|
42
42
|
existed. the frame-demand gate was blind to commit storms. the vsync
|
|
43
43
|
pump flapped 100 msgs/s at rest. never assume a tier works because it's
|
|
44
44
|
wired; read its counter during the exact workload.
|
|
45
|
-
3. **check free memory before blaming code.** an OOM
|
|
46
|
-
perf and infra failure. `vm_stat
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
3. **check free memory and sampled CPU before blaming code.** an OOM or busy
|
|
46
|
+
machine mimics every perf and infra failure. read `vm_stat`, then take at
|
|
47
|
+
least two `top -l 2` samples and use the busiest sample for admission.
|
|
48
|
+
attribute browser processes with `ps -eo pid,ppid,args` before treating
|
|
49
|
+
one as abandoned or stopping an exact pid. load average is not an
|
|
50
|
+
admission signal on macOS.
|
|
49
51
|
4. **never trade animation fidelity for CPU.** the home clock sweeps
|
|
50
52
|
sub-second like real iOS; discrete ticks have been proposed and rejected
|
|
51
53
|
repeatedly. attack per-frame cost (layers, caching, damage), never
|
|
@@ -134,6 +136,23 @@ attributes a missing frame to its hop:
|
|
|
134
136
|
compare baseline vs contended captures of the same scripted window; also
|
|
135
137
|
compare **painted-frame counts**, the crudest and most robust signal.
|
|
136
138
|
|
|
139
|
+
the compositor cadence lines separate worker delivery from work submitted by
|
|
140
|
+
the worker:
|
|
141
|
+
|
|
142
|
+
- `engine-empty rAF` includes only sustained intervals where adjacent frames
|
|
143
|
+
have no engine demand, input message, shared-slot demand epoch change,
|
|
144
|
+
paint, prewarm pass, or CanvasKit flush.
|
|
145
|
+
- `rAF with CanvasKit flush` and `rAF after CanvasKit flush` isolate the frame
|
|
146
|
+
that called `Surface.flush()` and the next delivered frame.
|
|
147
|
+
- `CanvasKit submission` measures intervals between final `Surface.flush()`
|
|
148
|
+
completions on frames that submitted at least one surface. The JSON
|
|
149
|
+
`frameSeries` preserves each phase flag and exact count for correlation.
|
|
150
|
+
|
|
151
|
+
these are engine-owned boundaries. Playwright exposes raw CDP sessions only
|
|
152
|
+
for Chromium, and WebKit's public Inspector timeline exposes a WebCore
|
|
153
|
+
`Composite` record without a RemoteLayerTree transaction id or commit event.
|
|
154
|
+
Do not label CanvasKit flush or compositor rAF as a RemoteLayerTree commit.
|
|
155
|
+
|
|
137
156
|
## the contention harness ("smooth alone, laggy on a zoom call")
|
|
138
157
|
|
|
139
158
|
low-load numbers do not predict feel under real-world CPU pressure. run the
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{c as b,k as f,l as k,m as w}from"./chunk-RVATR53A.js";var y="sootsim:settings",g=["errorReporting","colorScheme","reduceMotion","a11yMode","a11yDepth","screenshotCanvas","screenshotBackground","screenshotText","screenshotPose","screenshotDynamicSize","alwaysShowLiveWebViews","agentProvider","onboardingComplete","betaConsentVersion","detailedTelemetry"];function m(){if(typeof window>"u")return null;let e=window.sootsimElectron;return e&&typeof e=="object"?e:null}function u(e){let n={};for(let t of g){if(!(t in e))continue;let i=e[t],o=f[t];o.validate&&!o.validate(i)||o.options&&!o.options.includes(i)||(n[t]=i)}return n}function V(e){let n={};for(let t of g)n[t]=e[t];return n}function D(){if(typeof localStorage>"u")return{};try{let e=localStorage.getItem(y);return e?u(JSON.parse(e)):{}}catch{return{}}}function j(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(y,JSON.stringify(e))}catch{}}function x(){let n=m()?.sharedConfig?.settings;return!n||typeof n!="object"?{}:u(n)}function M(e){let n=m();if(n?.writeSharedConfig)try{n.writeSharedConfig({settings:e})}catch{}}function C(){if(typeof window>"u")return null;let e=window.__sootsimSharedConfig;return e&&typeof e=="object"?e:null}function T(){let e=C()?.settings;return!e||typeof e!="object"?{}:u(e)}function I(e){if(!C())return;let n={settings:e};try{if(globalThis.__sootsimBridgeRequest?.writeSharedConfig?.(n))return}catch{}if(!(typeof fetch>"u"))try{fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n),keepalive:!0}).catch(()=>{})}catch{}}function K(){let e=D(),n=T(),t=x();return{...e,...n,...t}}function P(e,n={}){let t=V(e);for(let i of g)n[i]!==void 0&&(t[i]=n[i]);j(t),M(t),I(t)}function _(e){if(typeof window>"u")return()=>{};let n=r=>{if(!(r.key!==y||r.newValue==null))try{e(u(JSON.parse(r.newValue)))}catch{}};window.addEventListener("storage",n);let t=m(),i;t?.onSharedConfigChanged&&(i=t.onSharedConfigChanged(r=>{let d=r?.settings;!d||typeof d!="object"||e(u(d))}));let c=globalThis.__sootsimBridgeRequest?.subscribeSharedConfig?.(r=>{let d=r?.settings;!d||typeof d!="object"||e(u(d))});return()=>{window.removeEventListener("storage",n),i?.(),c?.()}}var B=k(),L=w(),S=K(),l=new Set,h={};for(let e of g)B[e]!==void 0&&(l.add(e),S[e]!==void 0&&(h[e]=S[e]),delete S[e]);var s={...L,...S},p=[],a=null;function v(){for(let e of p)e()}function R(){v(),P(s,h)}function E(e,n){let t=f[e];return t.validate&&!t.validate(n)||t.options&&!t.options.includes(n)||s[e]===n?!1:(s={...s,[e]:n},e==="deviceModel"&&(a=null),!0)}_(e=>{let n={...s},t=!1;for(let[i,o]of Object.entries(e)){let c=i;if(l.has(c)){h[c]=o;continue}n[c]!==o&&(n[c]=o,t=!0)}t&&(s=n,a=null,v())});var N={get(e){return s[e]},set(e,n){E(e,n)&&R()},setRuntime(e,n){l.has(e)||(l.add(e),g.includes(e)&&(h[e]=s[e])),E(e,n)&&v()},isRuntimeControlled(e){return l.has(e)},getAll(){return s},apply(e){let n=!1,t={...s};for(let[i,o]of Object.entries(e)){if(o===void 0)continue;let c=i,r=f[c];r&&(r.validate&&!r.validate(o)||r.options&&!r.options.includes(o)||t[c]!==o&&(t[c]=o,n=!0))}n&&(s=t,a=null,R())},reset(){s=w(),a=null,R()},subscribe(e){return p.push(e),()=>{p=p.filter(n=>n!==e)}},getDeviceSpec(){return a||(a=b(s.deviceModel)),a},getA11yMode(){return s.a11yMode},setA11yMode(e){this.set("a11yMode",e)},getInspectMode(){return s.inspectMode},setInspectMode(e){this.set("inspectMode",e)}};export{N as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
function r(e,t,i,s){return{width:3,ringToggle:{side:"left",top:e[0],height:e[1]},volumeUp:{side:"left",top:t[0],height:t[1]},volumeDown:{side:"left",top:i[0],height:i[1]},lock:{side:"right",top:s[0],height:s[1]}}}var B={width:2.5,lock:{side:"right",top:188.7,height:68.1},ringToggle:{side:"left",top:113.2,height:36},volumeUp:{side:"left",top:188.2,height:68.1},volumeDown:{side:"left",top:269,height:68.1}},f={width:3,lock:{side:"right",top:671/2.625,height:163/2.625},ringToggle:{side:"left",top:-1e3,height:0},volumeUp:{side:"right",top:971/2.625,height:165/2.625},volumeDown:{side:"right",top:1136/2.625,height:166/2.625}},w={width:3,lock:{side:"right",top:248,height:72},ringToggle:{side:"left",top:-1e3,height:0},volumeUp:{side:"right",top:144,height:62},volumeDown:{side:"right",top:216,height:62}},a=24,c="17",d=37,x=1080/2.625,P=2400/2.625,l=132/2.625;function o(e){return{top:e,right:e,bottom:e,left:e}}function R(e){let t=(e.frameInsets.top+e.frameInsets.right+e.frameInsets.bottom+e.frameInsets.left)/4,i=Math.max(Math.abs(e.frameInsets.top-t),Math.abs(e.frameInsets.right-t),Math.abs(e.frameInsets.bottom-t),Math.abs(e.frameInsets.left-t));return{frameRadius:e.cornerRadius+t,frameRadiusApproximationError:i,screenRadius:e.cornerRadius}}function C(e){return{...R(e),frameHeight:e.frameInsets.top+e.height+e.frameInsets.bottom,frameWidth:e.frameInsets.left+e.width+e.frameInsets.right,screenBottomInset:e.frameInsets.bottom,screenLeft:e.frameInsets.left,screenRightInset:e.frameInsets.right,screenTop:e.frameInsets.top}}function n(e){return{...e,platform:"ios",navigationBarHeight:0,navigationBarMode:e.homeIndicatorHeight>0?"gesture":"none",displayCutout:{top:e.dynamicIsland?e.statusBarHeight:0,bottom:0,left:0,right:0},cameraCutout:null,osVersion:e.iosVersion,androidApiLevel:null,systemName:"iOS",manufacturer:"Apple",brand:"Apple",modelName:e.name}}var b={"canvas-workspace":n({name:"Canvas Workspace",width:1440,height:900,scale:1,statusBarHeight:0,homeIndicatorHeight:0,cornerRadius:0,continuousCornerRadius:0,frameInsets:o(16),dynamicIsland:null,safeAreaInsets:{top:0,bottom:0,left:0,right:0},iosVersion:"26.4",physicalPPI:110,hardwareButtons:r([185.8,41.7],[258.2,67.6],[344,67.6],[281.5,106.9]),experimental:!0}),"iphone-se":n({name:"iPhone SE",width:375,height:667,scale:2,statusBarHeight:20,homeIndicatorHeight:0,cornerRadius:0,continuousCornerRadius:0,frameInsets:o(28.7),dynamicIsland:null,safeAreaInsets:{top:20,bottom:0,left:0,right:0},iosVersion:"15.8",physicalPPI:326,hardwareButtons:B}),"iphone-14":n({name:"iPhone 14",width:390,height:844,scale:3,statusBarHeight:47,homeIndicatorHeight:34,cornerRadius:46.2,continuousCornerRadius:67.462,frameInsets:o(19.5),dynamicIsland:null,safeAreaInsets:{top:47,bottom:34,left:0,right:0},iosVersion:"17.6",physicalPPI:460,hardwareButtons:r([141.7,29.7],[205.9,69.6],[289.5,69.6],[228.9,114.5])}),"iphone-15":n({name:"iPhone 15",width:393,height:852,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:73.402,frameInsets:o(18.2),dynamicIsland:{width:126,height:37.3,top:14.1},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"17.6",physicalPPI:460,hardwareButtons:r([171.7,32],[235.8,65.3],[320.5,65.3],[280.6,105.2])}),"iphone-15-plus":n({name:"iPhone 15 Plus",width:430,height:932,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:74.654,frameInsets:o(17.3),dynamicIsland:{width:126,height:37.3,top:11.4},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"17.6",physicalPPI:460,hardwareButtons:r([172.1,33],[236.1,66.6],[321.2,66.6],[281,106.8])}),"iphone-15-pro":n({name:"iPhone 15 Pro",width:393,height:852,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:73.402,frameInsets:o(15.3),dynamicIsland:{width:126,height:38,top:13.4},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"18.2",physicalPPI:460,hardwareButtons:r([159.1,31.5],[220.1,61.9],[299,61.9],[260.8,98.9])}),"iphone-15-pro-max":n({name:"iPhone 15 Pro Max",width:430,height:932,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:74.654,frameInsets:o(15.3),dynamicIsland:{width:126,height:38,top:13.3},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"18.2",physicalPPI:460,hardwareButtons:r([173.3,32.2],[253.4,61.7],[343.3,61.7],[268.5,98.5])}),"iphone-16":n({name:"iPhone 16",width:393,height:852,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:73.402,frameInsets:o(15.3),dynamicIsland:{width:126,height:37.3,top:11},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([159.1,31.5],[220.1,61.9],[299,61.9],[260.8,98.9])}),"iphone-16-plus":n({name:"iPhone 16 Plus",width:430,height:932,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:53.9,continuousCornerRadius:74.654,frameInsets:o(15.3),dynamicIsland:{width:126,height:37.3,top:11.4},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([173.3,32.2],[253.4,61.7],[343.3,61.7],[268.5,98.5])}),"iphone-16-pro":n({name:"iPhone 16 Pro",width:402,height:874,scale:3,statusBarHeight:62,homeIndicatorHeight:34,cornerRadius:61,continuousCornerRadius:84.661,frameInsets:o(15.3),dynamicIsland:{width:126,height:38,top:13.5},safeAreaInsets:{top:62,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([159.1,31.5],[220.1,61.9],[299,61.9],[260.8,98.9])}),"iphone-16-pro-max":n({name:"iPhone 16 Pro Max",width:440,height:956,scale:3,statusBarHeight:62,homeIndicatorHeight:34,cornerRadius:61.3,continuousCornerRadius:85.163,frameInsets:o(15.4),dynamicIsland:{width:126,height:38,top:14},safeAreaInsets:{top:62,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([178.8,32.2],[266.8,61.8],[352.7,61.8],[292.2,98.3])}),"iphone-17":n({name:"iPhone 17",width:402,height:874,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:61,continuousCornerRadius:84.661,frameInsets:o(15.3),dynamicIsland:{width:126,height:37.3,top:14},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([159.1,31.5],[220.1,61.9],[299,61.9],[260.8,98.9])}),"iphone-17-air":n({name:"iPhone Air",width:420,height:912,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:64.6,continuousCornerRadius:88.313,frameInsets:o(15.4),dynamicIsland:{width:126,height:38,top:20},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([178.8,32.2],[266.8,61.8],[352.7,61.8],[292.2,98.3])}),"iphone-17-pro":n({name:"iPhone 17 Pro",width:402,height:874,scale:3,statusBarHeight:59,homeIndicatorHeight:34,cornerRadius:61,continuousCornerRadius:84.661,frameInsets:o(15.3),dynamicIsland:{width:126,height:38,top:14},safeAreaInsets:{top:59,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([159.1,31.5],[220.1,61.9],[299,61.9],[260.8,98.9])}),"iphone-17-pro-max":n({name:"iPhone 17 Pro Max",width:440,height:956,scale:3,statusBarHeight:62,homeIndicatorHeight:34,cornerRadius:61.3,continuousCornerRadius:85.163,frameInsets:o(15.4),dynamicIsland:{width:126,height:38,top:14},safeAreaInsets:{top:62,bottom:34,left:0,right:0},iosVersion:"26.4",physicalPPI:460,hardwareButtons:r([178.8,32.2],[266.8,61.8],[352.7,61.8],[292.2,98.3])}),"pixel-8":{platform:"android",name:"Pixel 8",width:x,height:P,scale:2.625,statusBarHeight:l,homeIndicatorHeight:0,navigationBarHeight:a,navigationBarMode:"gesture",displayCutout:{top:l,bottom:0,left:0,right:0},cornerRadius:39,continuousCornerRadius:39,frameInsets:{top:55/2.625,right:50/2.625,bottom:58/2.625,left:49/2.625},dynamicIsland:null,cameraCutout:{diameter:72.5/2.625},safeAreaInsets:{top:l,bottom:a,left:0,right:0},osVersion:c,iosVersion:"",androidApiLevel:d,systemName:"Android",manufacturer:"Google",brand:"google",modelName:"Pixel 8",physicalPPI:428,hardwareButtons:f},"pixel-8-three-button":{platform:"android",name:"Pixel 8 (3-button)",width:x,height:P,scale:2.625,statusBarHeight:l,homeIndicatorHeight:0,navigationBarHeight:48,navigationBarMode:"three-button",displayCutout:{top:l,bottom:0,left:0,right:0},cornerRadius:39,continuousCornerRadius:39,frameInsets:{top:55/2.625,right:50/2.625,bottom:58/2.625,left:49/2.625},dynamicIsland:null,cameraCutout:{diameter:72.5/2.625},safeAreaInsets:{top:l,bottom:48,left:0,right:0},osVersion:c,iosVersion:"",androidApiLevel:d,systemName:"Android",manufacturer:"Google",brand:"google",modelName:"Pixel 8",physicalPPI:428,hardwareButtons:f},"pixel-9-pro-xl":{platform:"android",name:"Pixel 9 Pro XL",width:448,height:997,scale:3,statusBarHeight:40,homeIndicatorHeight:0,navigationBarHeight:a,navigationBarMode:"gesture",displayCutout:{top:40,bottom:0,left:0,right:0},cornerRadius:41,continuousCornerRadius:41,frameInsets:o(12),dynamicIsland:null,cameraCutout:{diameter:24},safeAreaInsets:{top:40,bottom:a,left:0,right:0},osVersion:c,iosVersion:"",androidApiLevel:d,systemName:"Android",manufacturer:"Google",brand:"google",modelName:"Pixel 9 Pro XL",physicalPPI:486,hardwareButtons:f},"galaxy-s24":{platform:"android",name:"Galaxy S24",width:360,height:780,scale:3,statusBarHeight:36,homeIndicatorHeight:0,navigationBarHeight:a,navigationBarMode:"gesture",displayCutout:{top:36,bottom:0,left:0,right:0},cornerRadius:36,continuousCornerRadius:36,frameInsets:o(8),dynamicIsland:null,cameraCutout:{diameter:18},safeAreaInsets:{top:36,bottom:a,left:0,right:0},osVersion:c,iosVersion:"",androidApiLevel:d,systemName:"Android",manufacturer:"Samsung",brand:"samsung",modelName:"SM-S921B",physicalPPI:416,hardwareButtons:w},"galaxy-s24-ultra":{platform:"android",name:"Galaxy S24 Ultra",width:384,height:832,scale:3.75,statusBarHeight:36,homeIndicatorHeight:0,navigationBarHeight:a,navigationBarMode:"gesture",displayCutout:{top:36,bottom:0,left:0,right:0},cornerRadius:24,continuousCornerRadius:24,frameInsets:o(9),dynamicIsland:null,cameraCutout:{diameter:18},safeAreaInsets:{top:36,bottom:a,left:0,right:0},osVersion:c,iosVersion:"",androidApiLevel:d,systemName:"Android",manufacturer:"Samsung",brand:"samsung",modelName:"SM-S928B",physicalPPI:505,hardwareButtons:w}},I="iphone-17-pro";function D(e){return b[e]}function y(){return Object.keys(b)}function N(){return y().filter(e=>!b[e].experimental)}var m={"iphone-6-9":{name:"iphone-6-9",label:'iPhone 6.7"',width:1284,height:2778,store:"apple"},"iphone-6-1":{name:"iphone-6-1",label:'iPhone 6.5"',width:1242,height:2688,store:"apple"},"android-phone":{name:"android-phone",label:"Google Play phone",width:1080,height:1920,store:"google"},"android-tablet-7":{name:"android-tablet-7",label:'Google Play 7" tablet',width:1200,height:1920,store:"google"},"android-tablet-10":{name:"android-tablet-10",label:'Google Play 10" tablet',width:1600,height:2560,store:"google"}},p={dark:{type:"gradient",direction:180,glow:"#4caeff",stops:[{offset:0,color:"#111827"},{offset:40,color:"#101725"},{offset:100,color:"#06080d"}]},cyan:{type:"gradient",direction:180,glow:"#25c3ec",stops:[{offset:0,color:"#1b465c"},{offset:32,color:"#122336"},{offset:100,color:"#05070b"}]},gold:{type:"gradient",direction:180,glow:"#ffc25a",stops:[{offset:0,color:"#3b2f1a"},{offset:34,color:"#18140d"},{offset:100,color:"#050505"}]},red:{type:"gradient",direction:180,glow:"#ff6178",stops:[{offset:0,color:"#3e1018"},{offset:35,color:"#17080c"},{offset:100,color:"#050405"}]}},M={color:"#25c3ec",blur:120,spread:52,opacity:.34},_="iphone-17-pro";var A=[{name:"white",value:"#ffffff"},{name:"gray-light",value:"#d1d5db"},{name:"gray",value:"#6b7280"},{name:"gray-dark",value:"#3b4350"},{name:"slate",value:"#2a3644"},{name:"black",value:"#000000"},{name:"cyan",value:"#25c3ec"},{name:"blue",value:"#3f7cff"},{name:"teal",value:"#1fc7b4"},{name:"green",value:"#42c95d"},{name:"lime",value:"#92d21b"},{name:"gold",value:"#f5c518"},{name:"orange",value:"#ff912e"},{name:"coral",value:"#ff6f5b"},{name:"red",value:"#ff4f6f"},{name:"berry",value:"#d054ff"},{name:"magenta",value:"#ff4eb8"}],v=Object.fromEntries(A.map(e=>[e.name,e.value]));function O(e){return v[e]??v.gray}function V(e){return Object.prototype.hasOwnProperty.call(m,e)?m[e]:null}function T(e){return{type:e.type,color:e.color,direction:e.direction,glow:e.glow,stops:e.stops?.map(t=>({...t}))}}function F(e){return Object.prototype.hasOwnProperty.call(p,e)?T(p[e]):null}var S={deviceModel:{type:"enum",default:I,description:"device model to simulate",cliFlag:"device",cliFlagShort:"d",options:y(),group:"device"},orientation:{type:"enum",default:"portrait",description:"screen orientation",cliFlag:"orientation",options:["portrait","landscape"],group:"device"},colorScheme:{type:"enum",default:"auto",description:"color scheme (auto follows system preference)",cliFlag:"theme",cliFlagShort:"t",options:["light","dark","auto"],group:"appearance"},reduceMotion:{type:"boolean",default:!1,description:"reduce motion",group:"appearance"},boldText:{type:"boolean",default:!1,description:"bold text",group:"appearance"},fontSize:{type:"number",default:1,description:"font size multiplier (1.0 = default)",group:"appearance",validate:e=>e>=.5&&e<=2},networkCondition:{type:"enum",default:"wifi",description:"simulated network condition",cliFlag:"network",options:["wifi","lte","fast-3g","slow-3g","offline"],group:"network"},language:{type:"string",default:"en",description:"language code (ISO 639-1)",cliFlag:"language",group:"locale"},region:{type:"string",default:"US",description:"region code (ISO 3166-1)",cliFlag:"region",group:"locale"},renderDensity:{type:"number",default:0,description:"render density override in device pixels per point for high-resolution capture (0 = device native)",group:"simulator",validate:e=>e===0||e>=1&&e<=9},showTouches:{type:"boolean",default:!1,description:"show touch indicators",group:"simulator"},showFrame:{type:"boolean",default:!0,description:"show device frame",cliFlag:"frame",group:"simulator"},showTopBar:{type:"boolean",default:!0,description:"show simulator top bar",group:"simulator"},screenshotMode:{type:"boolean",default:!1,description:"show screenshot composition mode in the browser shell",group:"simulator"},screenshotCanvasEditing:{type:"boolean",default:!1,description:"experimental figma-style slide editing: draggable copy block, drop-in image layers (owner review pending)",group:"simulator"},threeMode:{type:"boolean",default:!1,description:"show the experimental 3d device stage in the browser shell",group:"simulator"},threeRecordingEditor:{type:"boolean",default:!1,description:"dock the 3d recording editor in the 3d stage (toggled from its rail)",group:"simulator"},screenshotCanvas:{type:"enum",default:"iphone-6-9",description:"target app-store canvas preset for screenshot mode",options:Object.keys(m),group:"simulator"},screenshotBackground:{type:"enum",default:"dark",description:"background preset rendered inside the screenshot canvas",options:Object.keys(p),group:"simulator"},screenshotText:{type:"enum",default:"bold-top",description:"text layout preset for the screenshot canvas",options:["bold-top","editorial-left","minimal-bottom","none"],group:"simulator"},screenshotPose:{type:"enum",default:"straight",description:"device pose preset inside the screenshot canvas",options:["straight","tilted-left","tilted-right","cut-bottom","cut-top"],group:"simulator"},screenshotDynamicSize:{type:"boolean",default:!1,description:"let the screenshot canvas rect fit available space (off = pin to exact preset pixels)",group:"simulator"},showStatusBar:{type:"boolean",default:!0,description:"show status bar",group:"simulator"},showHomeIndicator:{type:"boolean",default:!0,description:"show home indicator",group:"simulator"},alwaysShowLiveWebViews:{type:"boolean",default:!1,description:"always render WebViews as live browser views",group:"simulator"},a11yMode:{type:"enum",default:"delayed",description:"accessibility tree sync mode (off, delayed=100ms, active=30ms)",options:["off","delayed","active"],group:"simulator"},a11yDepth:{type:"enum",default:"deep",description:"accessibility tree structure depth (shallow or deep)",options:["shallow","deep"],group:"simulator"},inspectMode:{type:"boolean",default:!1,description:"inspect mode",group:"simulator"},errorReporting:{type:"boolean",default:!1,description:"send anonymous crash reports",group:"privacy"},agentProvider:{type:"enum",default:"codex",description:"ai agent used by the sootsim agent prompt bar",options:["codex","claude"],group:"agent"},onboardingComplete:{type:"boolean",default:!1,description:"first-run onboarding completed",group:"beta"},betaConsentVersion:{type:"number",default:0,description:"last accepted beta telemetry policy version",group:"beta"},detailedTelemetry:{type:"boolean",default:!0,description:"send detailed usage telemetry (sessions, perf samples)",group:"beta"}};function k(){if(typeof window>"u")return{};let e={};try{let t=new URLSearchParams(window.location.search),i=t.get("device");i&&S.deviceModel.options?.includes(i)&&(e.deviceModel=i),t.get("ssMode")==="1"&&(e.screenshotMode=!0),t.get("filmStage")==="1"&&(e.threeMode=!0);let s=Number(t.get("renderDensity"));Number.isFinite(s)&&s>=1&&s<=9&&(e.renderDensity=s),t.get("ssEdit")==="1"&&(e.screenshotCanvasEditing=!0);let g=t.get("colorScheme")??t.get("theme");g&&S.colorScheme.options?.includes(g)&&(e.colorScheme=g);let u=t.get("reduceMotion");u==="1"||u==="true"?e.reduceMotion=!0:(u==="0"||u==="false")&&(e.reduceMotion=!1);let h=t.get("alwaysShowLiveWebViews");h==="1"||h==="true"?e.alwaysShowLiveWebViews=!0:(h==="0"||h==="false")&&(e.alwaysShowLiveWebViews=!1)}catch{}return e}function j(){let e={};for(let[t,i]of Object.entries(S))e[t]=i.default;return Object.assign(e,k()),e}export{C as a,b,D as c,N as d,M as e,_ as f,O as g,V as h,T as i,F as j,S as k,k as l,j as m};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d,e}from"./chunk-VI3WG25A.js";import"./chunk-Z6WIJUFD.js";import"./chunk-RBRFATPJ.js";import"./chunk-4ISBAFYP.js";import"./chunk-SJRK4IQV.js";import"./chunk-GATLQUZD.js";import"./chunk-DQCYF257.js";import"./chunk-MP55R5YC.js";import"./chunk-NXJIRSYB.js";import"./chunk-TIAKOUSI.js";import"./chunk-QSUJV6FY.js";import"./chunk-7MWXZLC3.js";import"./chunk-I5GCWNIJ.js";import"./chunk-RVATR53A.js";import"./chunk-KDQDKEGD.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,d as teardownDaemonService,e as teardownSootsimHome};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import"./chunk-JTQM46FY.js";import{f as a,g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i}from"./chunk-DVUSIJGM.js";import"./chunk-DDVJQ7KL.js";import"./chunk-2MAZYB4E.js";import"./chunk-NXJIRSYB.js";import"./chunk-QSUJV6FY.js";import"./chunk-KDQDKEGD.js";export{e as ALL_DRIVERS,i as buildDriverListRows,a as chromiumDriver,b as electronDriver,f as getAllDrivers,g as getDriver,c as playwrightDriver,h as resolveDriver,d as systemDriver};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{c,d,e,f,g,h}from"./chunk-ZBGUJKMS.js";import"./chunk-V6JB3XB7.js";import"./chunk-6GT6YSKU.js";import{c as a,d as b}from"./chunk-53YHX2QG.js";import"./chunk-WIYFHKRE.js";import"./chunk-MVXVG2BX.js";import"./chunk-5PLAZK5V.js";import"./chunk-KQTMW2VR.js";import"./chunk-WOLESEXG.js";import"./chunk-OFYXCIJ4.js";import"./chunk-DVUSIJGM.js";import"./chunk-DDVJQ7KL.js";import"./chunk-YGEZZQ34.js";import"./chunk-3PDYKW67.js";import"./chunk-2MAZYB4E.js";import"./chunk-KNBKEQMZ.js";import"./chunk-4SRHESEZ.js";import"./chunk-FLCWG5TT.js";import"./chunk-UTYJQ65T.js";import"./chunk-BSKGIVGK.js";import"./chunk-Z6WIJUFD.js";import"./chunk-RBRFATPJ.js";import"./chunk-GATLQUZD.js";import"./chunk-DQCYF257.js";import"./chunk-MP55R5YC.js";import"./chunk-NXJIRSYB.js";import"./chunk-TIAKOUSI.js";import"./chunk-QSUJV6FY.js";import"./chunk-ILNCM267.js";import"./chunk-RVATR53A.js";import"./chunk-KDQDKEGD.js";export{e as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,g as hoistLeadingSimFlag,a as parseFlowFile,f as runFlowPlayback,h as runMaestroAuthoring,b as validateFlowFile};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-4ISBAFYP.js";import"./chunk-SJRK4IQV.js";import"./chunk-GATLQUZD.js";import"./chunk-DQCYF257.js";import"./chunk-MP55R5YC.js";import"./chunk-NXJIRSYB.js";import"./chunk-TIAKOUSI.js";import"./chunk-QSUJV6FY.js";import"./chunk-7MWXZLC3.js";import"./chunk-I5GCWNIJ.js";import"./chunk-RVATR53A.js";import"./chunk-KDQDKEGD.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.271 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{j as a,k as b}from"./chunk-53YHX2QG.js";import"./chunk-WIYFHKRE.js";import"./chunk-KQTMW2VR.js";import"./chunk-WOLESEXG.js";import"./chunk-OFYXCIJ4.js";import"./chunk-DVUSIJGM.js";import"./chunk-DDVJQ7KL.js";import"./chunk-YGEZZQ34.js";import"./chunk-3PDYKW67.js";import"./chunk-2MAZYB4E.js";import"./chunk-KNBKEQMZ.js";import"./chunk-4SRHESEZ.js";import"./chunk-FLCWG5TT.js";import"./chunk-UTYJQ65T.js";import"./chunk-BSKGIVGK.js";import"./chunk-GATLQUZD.js";import"./chunk-DQCYF257.js";import"./chunk-MP55R5YC.js";import"./chunk-NXJIRSYB.js";import"./chunk-TIAKOUSI.js";import"./chunk-QSUJV6FY.js";import"./chunk-ILNCM267.js";import"./chunk-RVATR53A.js";import"./chunk-KDQDKEGD.js";export{a as printShellPerfReport,b as runInspect};
|