sootsim 0.1.272 → 0.1.274
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 +28 -2
- package/dist-cli/bin.js +4 -4
- package/dist-cli/chunks/{agent-P6GZSLRM.js → agent-SP2IDNK3.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-2V6QR7JT.js → agent-wrapper-HENTSNUE.js} +2 -2
- package/dist-cli/chunks/{app-fonts-KNRMKJXD.js → app-fonts-WBECQ2EZ.js} +2 -2
- package/dist-cli/chunks/{assert-VWMXT55P.js → assert-WYWHND2A.js} +2 -2
- package/dist-cli/chunks/{auth-GIM3YHL4.js → auth-E35CVJU7.js} +2 -2
- package/dist-cli/chunks/beta-VEDB5GJL.js +2 -0
- package/dist-cli/chunks/{camera-LV3B3ERY.js → camera-F2VZVVXR.js} +2 -2
- package/dist-cli/chunks/{chunk-4RTPPDCM.js → chunk-3Y24AVG3.js} +2 -2
- package/dist-cli/chunks/chunk-6NURRM7A.js +2 -0
- package/dist-cli/chunks/{chunk-4BQDKWUP.js → chunk-7GSQVLU3.js} +2 -2
- package/dist-cli/chunks/{chunk-YUU2LHZS.js → chunk-7TXMXDJ2.js} +1 -1
- package/dist-cli/chunks/{chunk-77AHG7XC.js → chunk-7YNWXKYB.js} +2 -2
- package/dist-cli/chunks/{chunk-QPADKGOP.js → chunk-C2333EA4.js} +2 -2
- package/dist-cli/chunks/chunk-CJ6GJTYB.js +2 -0
- package/dist-cli/chunks/{chunk-WO7QKCZR.js → chunk-CKRGQNNG.js} +2 -2
- package/dist-cli/chunks/{chunk-647M3ME6.js → chunk-DMQV5GMM.js} +2 -2
- package/dist-cli/chunks/{chunk-YASTVFWI.js → chunk-DNX4UAKZ.js} +1 -1
- package/dist-cli/chunks/{chunk-LSMPXU4D.js → chunk-FIDZ4L7T.js} +73 -69
- package/dist-cli/chunks/{chunk-YQ54F276.js → chunk-FIF4VGJQ.js} +2 -2
- package/dist-cli/chunks/{chunk-ZJYKKMU7.js → chunk-FPRVB576.js} +1 -1
- package/dist-cli/chunks/{chunk-3P3LAIKZ.js → chunk-GRWG6LIS.js} +2 -2
- package/dist-cli/chunks/{chunk-5IBEBKBU.js → chunk-H2TR6GOZ.js} +1 -1
- package/dist-cli/chunks/{chunk-NMPW3IKE.js → chunk-HV6Q52AU.js} +2 -2
- package/dist-cli/chunks/{chunk-WZT2JQZ7.js → chunk-HXB72OSS.js} +3 -3
- package/dist-cli/chunks/{chunk-QCZHL3KI.js → chunk-IUAQ4QCN.js} +2 -2
- package/dist-cli/chunks/{chunk-3GZ4ZGUW.js → chunk-JEHRDCRK.js} +1 -1
- package/dist-cli/chunks/{chunk-EOIPXAUF.js → chunk-JXEHP3A7.js} +1 -1
- package/dist-cli/chunks/{chunk-YMPQ6USJ.js → chunk-L2GEJDHZ.js} +2 -2
- package/dist-cli/chunks/{chunk-6UXGVE7B.js → chunk-L6QRHE42.js} +3 -3
- package/dist-cli/chunks/{chunk-AMOUIEAP.js → chunk-LEM5AZSM.js} +1 -1
- package/dist-cli/chunks/{chunk-W5DZNFI3.js → chunk-LOQKCRYG.js} +1 -1
- package/dist-cli/chunks/{chunk-TRKOQX32.js → chunk-MBKNWJ7A.js} +2 -2
- package/dist-cli/chunks/{chunk-Q2RS3DKR.js → chunk-MRPAMQ5L.js} +2 -2
- package/dist-cli/chunks/{chunk-K4USS5KY.js → chunk-MVUUNF4D.js} +1 -1
- package/dist-cli/chunks/{chunk-6LJQM2PV.js → chunk-NJCPGGEI.js} +2 -2
- package/dist-cli/chunks/{chunk-3D3WUHI2.js → chunk-OFFUC2RN.js} +2 -2
- package/dist-cli/chunks/{chunk-52IU2APA.js → chunk-OSWJRU2A.js} +1 -1
- package/dist-cli/chunks/{chunk-VE2JT5D4.js → chunk-PMP3DTAI.js} +1 -1
- package/dist-cli/chunks/{chunk-SWF6GSP2.js → chunk-QKGEDIT7.js} +1 -1
- package/dist-cli/chunks/{chunk-QUZDHDE3.js → chunk-QPSTRUBX.js} +2 -2
- package/dist-cli/chunks/{chunk-HS527F2B.js → chunk-QZDFPHFP.js} +1 -1
- package/dist-cli/chunks/{chunk-BIWYNMXB.js → chunk-R3RWCHTI.js} +1 -1
- package/dist-cli/chunks/{chunk-2MSJ4TOR.js → chunk-THEG5IYF.js} +1 -1
- package/dist-cli/chunks/chunk-TUQ2MLNE.js +2 -0
- package/dist-cli/chunks/{chunk-E6FZKMNQ.js → chunk-UMC7L3M5.js} +1 -1
- package/dist-cli/chunks/{chunk-7FREST5Z.js → chunk-UMKOBO3D.js} +2 -2
- package/dist-cli/chunks/{chunk-U7UBIV75.js → chunk-VHJIZG4X.js} +1 -1
- package/dist-cli/chunks/{chunk-NVY52AQE.js → chunk-WY54NKD3.js} +2 -2
- package/dist-cli/chunks/{chunk-WUKCADRK.js → chunk-WZMS7IWF.js} +2 -2
- package/dist-cli/chunks/chunk-XUJD4ISB.js +1 -0
- package/dist-cli/chunks/{chunk-UE2XRBIP.js → chunk-Z3UMX3ES.js} +3 -3
- package/dist-cli/chunks/cli-version-VVHXBGLH.js +2 -0
- package/dist-cli/chunks/{compat-5WRD3HPR.js → compat-6BWZSXO2.js} +3 -3
- package/dist-cli/chunks/{config-2WYBXEGB.js → config-ALQ3XICK.js} +2 -2
- package/dist-cli/chunks/{control-LQT2NTEJ.js → control-LKKK6POM.js} +2 -2
- package/dist-cli/chunks/daemon-SFPSHCZR.js +2 -0
- package/dist-cli/chunks/{debug-AYCCUWM2.js → debug-UW2CYUZV.js} +3 -3
- package/dist-cli/chunks/{desktop-ZZQMD6Q7.js → desktop-OVDRE6S6.js} +3 -3
- package/dist-cli/chunks/{detox-7LRIEKC6.js → detox-ECZVK6PR.js} +2 -2
- package/dist-cli/chunks/{device-GDCBAZPE.js → device-NGOMSILD.js} +2 -2
- package/dist-cli/chunks/{diagnose-6VSIE264.js → diagnose-GHK6MRNR.js} +2 -2
- package/dist-cli/chunks/drivers-KFWTZIPO.js +2 -0
- package/dist-cli/chunks/{film-7M3ZY5OZ.js → film-VS2A3IX4.js} +3 -3
- package/dist-cli/chunks/flow-4PKUMGBJ.js +2 -0
- package/dist-cli/chunks/help-5WC5TRXH.js +2 -0
- package/dist-cli/chunks/{hidden-runtime-alias-ADZDP6BO.js → hidden-runtime-alias-UQ5ZKE3I.js} +2 -2
- package/dist-cli/chunks/{home-paths-H3OAW2FB.js → home-paths-Z35ISOAG.js} +2 -2
- package/dist-cli/chunks/inspect-V36VCI64.js +2 -0
- package/dist-cli/chunks/install-desktop-IMGSNS4F.js +2 -0
- package/dist-cli/chunks/{login-EJ2AKM3R.js → login-G2EXBMDC.js} +4 -4
- package/dist-cli/chunks/{logout-QI5YXZJQ.js → logout-S44PJUTK.js} +2 -2
- package/dist-cli/chunks/{maestro-DPMZM74Q.js → maestro-RG4FSUYB.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-CPUUFDJ3.js → maestro-generate-6GVTSEPX.js} +3 -3
- package/dist-cli/chunks/{mode-FSTSZ3MW.js → mode-7DATSPWV.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-IWDV37HI.js +2 -0
- package/dist-cli/chunks/{perf-VD26YPVC.js → perf-BB3LPJZ3.js} +2 -2
- package/dist-cli/chunks/{record-M76CRKNG.js → record-7GVPZEJ2.js} +3 -3
- package/dist-cli/chunks/runtime-MDHCEARQ.js +2 -0
- package/dist-cli/chunks/{screenshot-command-CQNZOJCP.js → screenshot-command-QLKJO7M5.js} +3 -3
- package/dist-cli/chunks/{screenshots-capture-MUU37VUC.js → screenshots-capture-2ETYLZHU.js} +2 -2
- package/dist-cli/chunks/{serve-RTBFO3EP.js → serve-A2C5JGRI.js} +2 -2
- package/dist-cli/chunks/{setup-DZQ4OLOY.js → setup-UKGMCHYN.js} +3 -3
- package/dist-cli/chunks/{skills-RESDEF2Z.js → skills-Y47YKPFD.js} +2 -2
- package/dist-cli/chunks/{storage-SCHHLLFY.js → storage-QMCQTD5O.js} +2 -2
- package/dist-cli/chunks/store-IYLZAEQR.js +2 -0
- package/dist-cli/chunks/telemetry-GA3I3ZUS.js +2 -0
- package/dist-cli/chunks/{timeline-K4N53W24.js → timeline-4MGE7I7C.js} +2 -2
- package/dist-cli/chunks/{upgrade-LKS7JREU.js → upgrade-GAJLZNIL.js} +2 -2
- package/dist-cli/chunks/upload-BP7QWZ5F.js +2 -0
- package/dist-cli/chunks/{version-RKRNYRKP.js → version-L7M7G6VK.js} +2 -2
- package/dist-cli/chunks/{web-M2C2TSTH.js → web-47UBIUQN.js} +2 -2
- package/dist-cli/chunks/{what-happened-2ULBMYTD.js → what-happened-77MDGLU6.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 +21 -2
- 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 +52 -4
- package/dist-cli/chunks/beta-C322CH35.js +0 -2
- package/dist-cli/chunks/chunk-JOSBLCUP.js +0 -2
- package/dist-cli/chunks/chunk-PHCPWYXA.js +0 -1
- package/dist-cli/chunks/chunk-UZH4THUY.js +0 -1
- package/dist-cli/chunks/chunk-V77BGSWB.js +0 -2
- package/dist-cli/chunks/cli-version-EJ6Y575J.js +0 -2
- package/dist-cli/chunks/daemon-Y7L22R6N.js +0 -2
- package/dist-cli/chunks/drivers-Q6FTTPFM.js +0 -2
- package/dist-cli/chunks/flow-NFGZ4HEU.js +0 -2
- package/dist-cli/chunks/help-UXGBACTX.js +0 -2
- package/dist-cli/chunks/inspect-T7L3UWXF.js +0 -2
- package/dist-cli/chunks/install-desktop-PRSRY6WV.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-5MYUTZN2.js +0 -2
- package/dist-cli/chunks/runtime-G35ZTARE.js +0 -2
- package/dist-cli/chunks/store-RPDRE7TV.js +0 -2
- package/dist-cli/chunks/telemetry-TAT36E3X.js +0 -2
- package/dist-cli/chunks/upload-4CZLH275.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.274 | (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-FPRVB576.js";import{g as A,i as _}from"./chunk-CKRGQNNG.js";import"./chunk-UMC7L3M5.js";import{c as k}from"./chunk-7TXMXDJ2.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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;
|
|
@@ -903,7 +903,26 @@ var SootSimExpectation = class _SootSimExpectation {
|
|
|
903
903
|
}
|
|
904
904
|
}
|
|
905
905
|
async toBeFocused() {
|
|
906
|
-
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
|
+
}
|
|
907
926
|
}
|
|
908
927
|
async toHaveValue(value) {
|
|
909
928
|
const node = await this.findNode(this.matcher);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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.274 | (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
|
|
@@ -53,6 +55,35 @@ indict, remeasure — and every wasted week came from skipping a step.
|
|
|
53
55
|
|
|
54
56
|
## measuring
|
|
55
57
|
|
|
58
|
+
### presentation proof must stay outside the simulator
|
|
59
|
+
|
|
60
|
+
Performance acceptance must not use `sootsim record`, `liveComposite`,
|
|
61
|
+
`captureBitmaps`, Chrome screencast, or another in-page frame-copy path. Those
|
|
62
|
+
paths add work to the simulator or browser and can change the cadence being
|
|
63
|
+
measured. Record the visible window with the operating system's native screen
|
|
64
|
+
capture instead.
|
|
65
|
+
|
|
66
|
+
On macOS, use the window-object recorder in `~/screen` so the simulator does
|
|
67
|
+
not copy or encode its own frames:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
bun ~/screen/src/cli.ts list-windows --owner "Google Chrome for Testing" --json
|
|
71
|
+
bun ~/screen/src/cli.ts run --window-id <id> --duration <seconds> \
|
|
72
|
+
--out <artifact.mov> -- <operating-system input command>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The visual run contains only normal user input. Do not query the performance,
|
|
76
|
+
debug, or test bridge while it records. Treat that video as visual evidence of
|
|
77
|
+
frame progression. Collect worker paint, flush, delivery, and tier counters in
|
|
78
|
+
a separate run with screen capture off. The two runs answer different questions
|
|
79
|
+
without making the simulator measure its own recording overhead.
|
|
80
|
+
|
|
81
|
+
When an external transform control is smooth but the simulator is not, inspect
|
|
82
|
+
every animation on the presented element. A separate Web Animation object does
|
|
83
|
+
not isolate paint work: animating `box-shadow`, `filter`, or another paint-only
|
|
84
|
+
property on the transform owner can move the whole trajectory to the browser's
|
|
85
|
+
main thread. Paint stable decoration once or give it a distinct layer.
|
|
86
|
+
|
|
56
87
|
```sh
|
|
57
88
|
sootsim perf shell start # arm shell frame capture (clears prior)
|
|
58
89
|
# reproduce — e.g. 8 fling swipes:
|
|
@@ -134,6 +165,23 @@ attributes a missing frame to its hop:
|
|
|
134
165
|
compare baseline vs contended captures of the same scripted window; also
|
|
135
166
|
compare **painted-frame counts**, the crudest and most robust signal.
|
|
136
167
|
|
|
168
|
+
the compositor cadence lines separate worker delivery from work submitted by
|
|
169
|
+
the worker:
|
|
170
|
+
|
|
171
|
+
- `engine-empty rAF` includes only sustained intervals where adjacent frames
|
|
172
|
+
have no engine demand, input message, shared-slot demand epoch change,
|
|
173
|
+
paint, prewarm pass, or CanvasKit flush.
|
|
174
|
+
- `rAF with CanvasKit flush` and `rAF after CanvasKit flush` isolate the frame
|
|
175
|
+
that called `Surface.flush()` and the next delivered frame.
|
|
176
|
+
- `CanvasKit submission` measures intervals between final `Surface.flush()`
|
|
177
|
+
completions on frames that submitted at least one surface. The JSON
|
|
178
|
+
`frameSeries` preserves each phase flag and exact count for correlation.
|
|
179
|
+
|
|
180
|
+
these are engine-owned boundaries. Playwright exposes raw CDP sessions only
|
|
181
|
+
for Chromium, and WebKit's public Inspector timeline exposes a WebCore
|
|
182
|
+
`Composite` record without a RemoteLayerTree transaction id or commit event.
|
|
183
|
+
Do not label CanvasKit flush or compositor rAF as a RemoteLayerTree commit.
|
|
184
|
+
|
|
137
185
|
## the contention harness ("smooth alone, laggy on a zoom call")
|
|
138
186
|
|
|
139
187
|
low-load numbers do not predict feel under real-world CPU pressure. run the
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (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 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{c as b,k as f,l as k,m as w}from"./chunk-JOSBLCUP.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,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d,e}from"./chunk-Q2RS3DKR.js";import"./chunk-3P3LAIKZ.js";import"./chunk-NVY52AQE.js";import"./chunk-4BQDKWUP.js";import"./chunk-TRKOQX32.js";import"./chunk-NMPW3IKE.js";import"./chunk-4RTPPDCM.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-U7UBIV75.js";import"./chunk-SWF6GSP2.js";import"./chunk-W5DZNFI3.js";import"./chunk-EOIPXAUF.js";import"./chunk-JOSBLCUP.js";import"./chunk-VE2JT5D4.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.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import"./chunk-PHCPWYXA.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-647M3ME6.js";import"./chunk-K4USS5KY.js";import"./chunk-AMOUIEAP.js";import"./chunk-YUU2LHZS.js";import"./chunk-SWF6GSP2.js";import"./chunk-VE2JT5D4.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.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{c,d,e,f,g,h}from"./chunk-UE2XRBIP.js";import"./chunk-QCZHL3KI.js";import"./chunk-YASTVFWI.js";import{c as a,d as b}from"./chunk-LSMPXU4D.js";import"./chunk-YMPQ6USJ.js";import"./chunk-QPADKGOP.js";import"./chunk-QUZDHDE3.js";import"./chunk-7FREST5Z.js";import"./chunk-WUKCADRK.js";import"./chunk-UZH4THUY.js";import"./chunk-647M3ME6.js";import"./chunk-K4USS5KY.js";import"./chunk-2MSJ4TOR.js";import"./chunk-52IU2APA.js";import"./chunk-AMOUIEAP.js";import"./chunk-BIWYNMXB.js";import"./chunk-6LJQM2PV.js";import"./chunk-ZJYKKMU7.js";import"./chunk-WO7QKCZR.js";import"./chunk-3GZ4ZGUW.js";import"./chunk-3P3LAIKZ.js";import"./chunk-NVY52AQE.js";import"./chunk-NMPW3IKE.js";import"./chunk-4RTPPDCM.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-U7UBIV75.js";import"./chunk-SWF6GSP2.js";import"./chunk-V77BGSWB.js";import"./chunk-JOSBLCUP.js";import"./chunk-VE2JT5D4.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.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-4BQDKWUP.js";import"./chunk-TRKOQX32.js";import"./chunk-NMPW3IKE.js";import"./chunk-4RTPPDCM.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-U7UBIV75.js";import"./chunk-SWF6GSP2.js";import"./chunk-W5DZNFI3.js";import"./chunk-EOIPXAUF.js";import"./chunk-JOSBLCUP.js";import"./chunk-VE2JT5D4.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{j as a,k as b}from"./chunk-LSMPXU4D.js";import"./chunk-YMPQ6USJ.js";import"./chunk-7FREST5Z.js";import"./chunk-WUKCADRK.js";import"./chunk-UZH4THUY.js";import"./chunk-647M3ME6.js";import"./chunk-K4USS5KY.js";import"./chunk-2MSJ4TOR.js";import"./chunk-52IU2APA.js";import"./chunk-AMOUIEAP.js";import"./chunk-BIWYNMXB.js";import"./chunk-6LJQM2PV.js";import"./chunk-ZJYKKMU7.js";import"./chunk-WO7QKCZR.js";import"./chunk-3GZ4ZGUW.js";import"./chunk-NMPW3IKE.js";import"./chunk-4RTPPDCM.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-U7UBIV75.js";import"./chunk-SWF6GSP2.js";import"./chunk-V77BGSWB.js";import"./chunk-JOSBLCUP.js";import"./chunk-VE2JT5D4.js";export{a as printShellPerfReport,b as runInspect};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-6UXGVE7B.js";import"./chunk-YQ54F276.js";import"./chunk-WO7QKCZR.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-SWF6GSP2.js";import"./chunk-VE2JT5D4.js";export{a as runRuntime};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.272 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{e as a,f as b,g as c}from"./chunk-QPADKGOP.js";import"./chunk-QUZDHDE3.js";import"./chunk-2MSJ4TOR.js";import"./chunk-52IU2APA.js";import"./chunk-AMOUIEAP.js";import"./chunk-WO7QKCZR.js";import"./chunk-3P3LAIKZ.js";import"./chunk-NVY52AQE.js";import"./chunk-E6FZKMNQ.js";import"./chunk-YUU2LHZS.js";import"./chunk-SWF6GSP2.js";import"./chunk-VE2JT5D4.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
|