sootsim 0.1.144 → 0.1.146
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/dist-cli/bin.js +3 -3
- package/dist-cli/chunks/{agent-2OYPRNUE.js → agent-PNNXV6F3.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-LPKFMZBN.js → agent-wrapper-JTYAONCG.js} +2 -2
- package/dist-cli/chunks/{app-fonts-3F2X43ER.js → app-fonts-YGTRUUJT.js} +2 -2
- package/dist-cli/chunks/{assert-MUUX2DJC.js → assert-HDFDQLHK.js} +2 -2
- package/dist-cli/chunks/auto-bootstrap-S7SSJMD3.js +2 -0
- package/dist-cli/chunks/beta-E3MSUPWU.js +2 -0
- package/dist-cli/chunks/{camera-TBW2MKRE.js → camera-4B7OAHRD.js} +2 -2
- package/dist-cli/chunks/{chunk-IAWQFSZ2.js → chunk-2FYSNCRJ.js} +2 -2
- package/dist-cli/chunks/{chunk-AKHWKREF.js → chunk-2PYDOYIS.js} +1 -1
- package/dist-cli/chunks/{chunk-KF7TXHAG.js → chunk-35QJJ4MM.js} +3 -3
- package/dist-cli/chunks/chunk-3RPHEE3K.js +2 -0
- package/dist-cli/chunks/{chunk-73DPWPZU.js → chunk-4KNMAGC4.js} +1 -1
- package/dist-cli/chunks/{chunk-A3E5QVUN.js → chunk-A7JX3OQC.js} +1 -1
- package/dist-cli/chunks/chunk-AOPFT3S4.js +119 -0
- package/dist-cli/chunks/{chunk-UZO6PMW3.js → chunk-ATJRNMNA.js} +2 -2
- package/dist-cli/chunks/{chunk-2OWIXUFA.js → chunk-BBIN2U26.js} +2 -2
- package/dist-cli/chunks/{chunk-ZRVCZZCT.js → chunk-BE2ZDRIJ.js} +2 -2
- package/dist-cli/chunks/{chunk-S6OUYII6.js → chunk-C44OZFHJ.js} +2 -2
- package/dist-cli/chunks/{chunk-QHCI5TZ6.js → chunk-DP5FSZHW.js} +2 -2
- package/dist-cli/chunks/chunk-DRCRPS2N.js +1 -0
- package/dist-cli/chunks/{chunk-KABTL7PQ.js → chunk-ERAE4LJT.js} +36 -56
- package/dist-cli/chunks/{chunk-LEWUJGFD.js → chunk-FK2YXBKR.js} +1 -1
- package/dist-cli/chunks/{chunk-TJXJCYCS.js → chunk-G7JMTSF6.js} +1 -1
- package/dist-cli/chunks/{chunk-BBPSMK2D.js → chunk-GD473DHN.js} +2 -2
- package/dist-cli/chunks/{chunk-T5SF5UGY.js → chunk-H2EIYIRP.js} +1 -1
- package/dist-cli/chunks/{chunk-VFXS73Q6.js → chunk-H6LFGGJW.js} +2 -2
- package/dist-cli/chunks/{chunk-FQBF5HG6.js → chunk-HWB7DPXH.js} +1 -1
- package/dist-cli/chunks/{chunk-W4KCLE5O.js → chunk-HZHZY7N5.js} +2 -2
- package/dist-cli/chunks/{chunk-MX66P64S.js → chunk-IADMCPLZ.js} +1 -1
- package/dist-cli/chunks/{chunk-FZXVYC4D.js → chunk-IAO27BWC.js} +2 -2
- package/dist-cli/chunks/{chunk-YV6RWCPO.js → chunk-JFQXWAWN.js} +2 -2
- package/dist-cli/chunks/{chunk-AV2DSEYZ.js → chunk-JZW2R5D7.js} +2 -2
- package/dist-cli/chunks/{chunk-7R3BK6IY.js → chunk-K6X7LUFG.js} +1 -1
- package/dist-cli/chunks/{chunk-TONLJPNX.js → chunk-MIIAYBFL.js} +1 -1
- package/dist-cli/chunks/{chunk-TKMTONCA.js → chunk-MSQUL5BU.js} +3 -3
- package/dist-cli/chunks/{chunk-QMTPTQHG.js → chunk-MVLNHZMU.js} +2 -2
- package/dist-cli/chunks/chunk-OU42HTKN.js +1 -0
- package/dist-cli/chunks/{chunk-PN4QXNKU.js → chunk-PCW4TKI2.js} +2 -2
- package/dist-cli/chunks/{chunk-ZODKBHVK.js → chunk-Q6BHESL2.js} +2 -2
- package/dist-cli/chunks/{chunk-6KI36NXX.js → chunk-R7CMXY5T.js} +2 -2
- package/dist-cli/chunks/{chunk-A72YS45Y.js → chunk-RTD4RNZV.js} +2 -2
- package/dist-cli/chunks/{chunk-HVB4FNBH.js → chunk-SZNVNYEP.js} +2 -2
- package/dist-cli/chunks/{chunk-TE2SHQPT.js → chunk-TLFNO2L4.js} +1 -1
- package/dist-cli/chunks/{chunk-UGRHYJUA.js → chunk-TZXKFPBJ.js} +2 -2
- package/dist-cli/chunks/{chunk-HC43FXK7.js → chunk-UD4SYXDQ.js} +2 -2
- package/dist-cli/chunks/chunk-VKKWYLIZ.js +2 -0
- package/dist-cli/chunks/{chunk-BCIZZLCX.js → chunk-VZSXOG4N.js} +1 -1
- package/dist-cli/chunks/{chunk-XJVBNNIB.js → chunk-WFXLVOUA.js} +2 -2
- package/dist-cli/chunks/chunk-XO4VQYFP.js +2 -0
- package/dist-cli/chunks/{chunk-AJKVXCHV.js → chunk-XRQDMB2J.js} +2 -2
- package/dist-cli/chunks/chunk-Y76W7GZV.js +1 -0
- package/dist-cli/chunks/{chunk-4CPUNUJC.js → chunk-YBSNSFBX.js} +1 -1
- package/dist-cli/chunks/cli-version-AJWPSNS4.js +2 -0
- package/dist-cli/chunks/{compat-P64DATYR.js → compat-F4WAO62Y.js} +3 -3
- package/dist-cli/chunks/{config-TDDQXUS5.js → config-WAIORJNJ.js} +2 -2
- package/dist-cli/chunks/{control-SNZMPDL7.js → control-M54456XG.js} +2 -2
- package/dist-cli/chunks/{cpu-profile-FR47V42J.js → cpu-profile-NNMDXCWI.js} +2 -2
- package/dist-cli/chunks/{daemon-LHJUCC7B.js → daemon-UXSN6QDY.js} +2 -2
- package/dist-cli/chunks/{debug-26NR6JCY.js → debug-JAQVYKQG.js} +3 -3
- package/dist-cli/chunks/{detox-F2KTINZX.js → detox-QOL7PD62.js} +2 -2
- package/dist-cli/chunks/{device-O5COOPDN.js → device-WPAQY2ZH.js} +2 -2
- package/dist-cli/chunks/{diagnose-PQMLUCBO.js → diagnose-FKN4ALSH.js} +2 -2
- package/dist-cli/chunks/drivers-FTOUKVJ5.js +2 -0
- package/dist-cli/chunks/{electron-ZBL3TH2F.js → electron-YQKH55P6.js} +3 -3
- package/dist-cli/chunks/flow-EJXOH72E.js +2 -0
- package/dist-cli/chunks/help-ID6MSA6T.js +2 -0
- package/dist-cli/chunks/{hints-DWE4FKYR.js → hints-GIJN25JB.js} +2 -2
- package/dist-cli/chunks/{home-paths-N2S32DRH.js → home-paths-KIR4SAL4.js} +2 -2
- package/dist-cli/chunks/{inspect-J3BLUHGJ.js → inspect-YRP3UFG4.js} +3 -3
- package/dist-cli/chunks/install-S4YF4O3O.js +2 -0
- package/dist-cli/chunks/{install-desktop-73H4DAAH.js → install-desktop-INHP4VUQ.js} +3 -3
- package/dist-cli/chunks/{keys-R42T6X3W.js → keys-CBKA6IB7.js} +2 -2
- package/dist-cli/chunks/{launch-QGDSUNDW.js → launch-JZ463USO.js} +3 -3
- package/dist-cli/chunks/{login-BYCX25K6.js → login-VHP4DNC2.js} +4 -4
- package/dist-cli/chunks/{logout-TZJXACIH.js → logout-NRG4U6Z7.js} +2 -2
- package/dist-cli/chunks/{maestro-VPK6R5NN.js → maestro-KPNXHCFR.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-VXBG2NEH.js +2 -0
- package/dist-cli/chunks/{preview-GJ7MVSHM.js → preview-O44G7W2U.js} +2 -2
- package/dist-cli/chunks/{profile-2RAV3UZS.js → profile-RMYP6I2J.js} +2 -2
- package/dist-cli/chunks/{react-QE7UHEFS.js → react-CFUB2U76.js} +2 -2
- package/dist-cli/chunks/{record-YYL4A7DO.js → record-YSLIYV2X.js} +2 -2
- package/dist-cli/chunks/runtime-YVV2FMMD.js +2 -0
- package/dist-cli/chunks/{runtime-delivery-2G4PGXGK.js → runtime-delivery-DDUSKKTU.js} +2 -2
- package/dist-cli/chunks/{screenshot-BIVF76SC.js → screenshot-MH7JQVO7.js} +2 -2
- package/dist-cli/chunks/{screenshot-mode-OKAH3ZLK.js → screenshot-mode-JRRQPP37.js} +2 -2
- package/dist-cli/chunks/screenshots-32GEAUAF.js +74 -0
- package/dist-cli/chunks/{server-6SFAUUGK.js → server-ROXPXSIK.js} +3 -3
- package/dist-cli/chunks/setup-repo-E2IJJBCE.js +2 -0
- package/dist-cli/chunks/{skills-7APKWTBO.js → skills-T74U4JC7.js} +2 -2
- package/dist-cli/chunks/slides-OM25OBW3.js +46 -0
- package/dist-cli/chunks/{start-2GETTWND.js → start-NLHWSRC7.js} +4 -4
- package/dist-cli/chunks/store-EISWHA6H.js +2 -0
- package/dist-cli/chunks/telemetry-7AXVZMQT.js +2 -0
- package/dist-cli/chunks/{test-V5HHXSKL.js → test-RYMENNXC.js} +3 -3
- package/dist-cli/chunks/{three-mode-UVIEP3CE.js → three-mode-MK242N4J.js} +2 -2
- package/dist-cli/chunks/{timeline-HVEKSWHF.js → timeline-ANKR37NA.js} +2 -2
- package/dist-cli/chunks/{upgrade-FRHXNAYO.js → upgrade-ZANSK5HX.js} +2 -2
- package/dist-cli/chunks/upload-DWWZQMVH.js +2 -0
- package/dist-cli/chunks/{version-CBDBUHCC.js → version-DYXEOGY7.js} +2 -2
- package/dist-cli/chunks/{web-DMUBG5QR.js → web-LUMZCTLY.js} +2 -2
- package/dist-cli/chunks/{what-happened-3J4DEIRJ.js → what-happened-SIQGZLHO.js} +2 -2
- package/dist-cli/chunks/{whoami-BSPU6JP4.js → whoami-YI5RAQBT.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.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 +1 -1
- 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/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 +244 -26
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/screenshots/orchestrate.ts +7 -0
- package/src/screenshots/org-deck.ts +91 -0
- package/dist-cli/chunks/auto-bootstrap-EYENX7BT.js +0 -2
- package/dist-cli/chunks/beta-2JIATCYM.js +0 -2
- package/dist-cli/chunks/chunk-2WPNYDSO.js +0 -2
- package/dist-cli/chunks/chunk-3FFDAVGT.js +0 -119
- package/dist-cli/chunks/chunk-3LW4V4ZM.js +0 -2
- package/dist-cli/chunks/chunk-3ZNPJADG.js +0 -1
- package/dist-cli/chunks/chunk-GJR32NCU.js +0 -1
- package/dist-cli/chunks/chunk-TVLQMXWV.js +0 -1
- package/dist-cli/chunks/chunk-Z52XC4UA.js +0 -2
- package/dist-cli/chunks/cli-version-YEX2XZ7G.js +0 -2
- package/dist-cli/chunks/drivers-W4SBNM4V.js +0 -2
- package/dist-cli/chunks/flow-QREXGRFN.js +0 -2
- package/dist-cli/chunks/help-RE6HG3KD.js +0 -2
- package/dist-cli/chunks/install-NLKZNPCO.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-UH3YM447.js +0 -2
- package/dist-cli/chunks/runtime-C4CLOL7U.js +0 -2
- package/dist-cli/chunks/screenshots-AVJANXAQ.js +0 -70
- package/dist-cli/chunks/setup-repo-CRCQPW3Y.js +0 -2
- package/dist-cli/chunks/store-YFAIUHAS.js +0 -2
- package/dist-cli/chunks/telemetry-LUP4L5RW.js +0 -2
- package/dist-cli/chunks/upload-NWHZULFU.js +0 -2
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.144 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{b as Y}from"./chunk-KABTL7PQ.js";import{b as j}from"./chunk-ZRVCZZCT.js";import"./chunk-GJR32NCU.js";import"./chunk-PN4QXNKU.js";import"./chunk-AV2DSEYZ.js";import"./chunk-W4KCLE5O.js";import{b as O}from"./chunk-VFXS73Q6.js";import"./chunk-FZXVYC4D.js";import"./chunk-AJKVXCHV.js";import"./chunk-QMTPTQHG.js";import"./chunk-QHCI5TZ6.js";import"./chunk-TONLJPNX.js";import"./chunk-2OWIXUFA.js";import"./chunk-TJXJCYCS.js";import"./chunk-S6OUYII6.js";import"./chunk-T5SF5UGY.js";import"./chunk-HC43FXK7.js";import"./chunk-3ZNPJADG.js";import"./chunk-A3E5QVUN.js";import"./chunk-4CPUNUJC.js";import"./chunk-ZODKBHVK.js";import"./chunk-6KI36NXX.js";import"./chunk-XJVBNNIB.js";import"./chunk-3LW4V4ZM.js";import"./chunk-LEWUJGFD.js";import"./chunk-Z52XC4UA.js";import{a as w,b as D,c as k,d as z,e as x,f as T}from"./chunk-A72YS45Y.js";import"./chunk-MX66P64S.js";import"./chunk-TE2SHQPT.js";import{mkdirSync as B,readFileSync as pe,writeFileSync as G}from"fs";import{tmpdir as je}from"os";import C from"path";import{mkdirSync as I,readFileSync as Q,writeFileSync as H}from"fs";import F from"path";function _(e){return e.replace(/\\/g,"/").replace(/\.png$/i,"").trim().split("/").filter(Boolean).join("--").replace(/[^A-Za-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"slide"}function v(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function ee(e){let t=e.trim();return/^#[0-9a-f]{3}$/i.test(t)?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function M(e,t){let o=ee(e),i=Math.max(0,Math.min(1,t)),n=o.match(/^#([0-9a-f]{6})$/i);if(n){let s=n[1],r=Number.parseInt(s.slice(0,2),16),a=Number.parseInt(s.slice(2,4),16),u=Number.parseInt(s.slice(4,6),16);return`rgba(${r}, ${a}, ${u}, ${i})`}return o.startsWith("rgb(")?o.replace(/^rgb\((.+)\)$/i,`rgba($1, ${i})`):o}function te(e){if(e.type==="solid")return e.color||"#000000";let t=e.direction??180,o=e.stops?.map(i=>`${i.color} ${i.offset}%`).join(", ")||"#000000 0%, #111111 100%";return`linear-gradient(${t}deg, ${o})`}function re(e){let t=e.glow;return t?`radial-gradient(circle at 50% 24%, ${M(t,.46)} 0%, ${M(t,.2)} 24%, rgba(0,0,0,0) 62%)`:"none"}function A(e){switch(e){case"tilted-left":return"perspective(2400px) rotateY(10deg) rotateZ(-2deg)";case"tilted-right":return"perspective(2400px) rotateY(-10deg) rotateZ(2deg)";case"cut-bottom":return"translateY(10%) scale(1.08)";case"cut-top":return"translateY(-16%) scale(1.08)";case"straight":default:return"none"}}function L(...e){let t=e.map(o=>o.trim()).filter(o=>o.length>0&&o!=="none");return t.length>0?t.join(" "):"none"}function E(e){let t=M(e.color,e.opacity),o=M(e.color,e.opacity*.52);return`drop-shadow(0 34px ${e.spread}px ${o}) drop-shadow(0 0 ${e.blur}px ${t})`}function R(e,t){return!t.glow||e.color&&e.color!==w.color?e:{...e,color:t.glow}}function oe(e,t){if(e==="editorial-left"){let n=Math.round(t.height*.056),s=Math.round(t.height*.022);return{copyStyle:["position:absolute",`top:${Math.round(t.height*.12)}px`,`left:${Math.round(t.width*.085)}px`,`width:${Math.round(t.width*.42)}px`,"text-align:left","z-index:3"].join(";"),titleStyle:`font-size:${n}px;line-height:0.92;`,subStyle:`font-size:${s}px;line-height:1.36;max-width:${Math.round(t.width*.36)}px;`,eyebrowStyle:"align-items:flex-start;",deviceStyle:(r,a,u)=>{let p=Math.round(t.width*.68*(a.scale??r.scale)),l=Math.round(t.height*(.03+r.offsetY+(a.offsetY??0))),c=a.pose||r.pose||"tilted-right",m=R(r.shadow,u);return["position:absolute",`top:${Math.round(t.height*.18)+l}px`,`left:${Math.round(t.width*.56)}px`,`width:${p}px`,"transform-origin:center center",`transform:${A(c)}`,`filter:${E(m)}`,"z-index:2"].join(";")}}}if(e==="minimal-bottom"){let n=Math.round(t.height*.041),s=Math.round(t.height*.019);return{copyStyle:["position:absolute",`left:${Math.round(t.width*.12)}px`,`right:${Math.round(t.width*.12)}px`,`bottom:${Math.round(t.height*.085)}px`,"text-align:center","z-index:3"].join(";"),titleStyle:`font-size:${n}px;line-height:0.96;`,subStyle:`font-size:${s}px;line-height:1.34;max-width:${Math.round(t.width*.56)}px;margin:0 auto;`,eyebrowStyle:"align-items:center;",deviceStyle:(r,a,u)=>{let p=Math.round(t.width*.84*(a.scale??r.scale)),l=Math.round(t.height*(r.offsetY+(a.offsetY??0))),c=a.pose||r.pose,m=R(r.shadow,u);return["position:absolute",`top:${Math.round(t.height*.075)+l}px`,"left:50%",`width:${p}px`,"transform-origin:center center",`transform:${L("translateX(-50%)",A(c))}`,`filter:${E(m)}`,"z-index:2"].join(";")}}}let o=Math.round(t.height*.04),i=Math.round(t.height*.019);return{copyStyle:["position:absolute",`top:${Math.round(t.height*.084)}px`,"left:50%",`width:${Math.round(t.width*.88)}px`,"transform:translateX(-50%)","text-align:center","z-index:3"].join(";"),titleStyle:`font-size:${o}px;line-height:0.92;`,subStyle:`font-size:${i}px;line-height:1.34;max-width:${Math.round(t.width*.6)}px;margin:0 auto;`,eyebrowStyle:"align-items:center;",deviceStyle:(n,s,r)=>{let a=t.name==="ipad-13"?.54:.64,u=Math.round(t.width*a*(s.scale??n.scale)),p=Math.round(t.height*(n.offsetY+(s.offsetY??0))),l=s.pose||n.pose,c=R(n.shadow,r);return["position:absolute",`top:${Math.round(t.height*(t.name==="ipad-13"?.25:.28))+p}px`,"left:50%",`width:${u}px`,"transform-origin:center top",`transform:${L("translateX(-50%)",A(l))}`,`filter:${E(c)}`,"z-index:2"].join(";")}}}function ne({canvas:e,compose:t,slide:o,imageDataUrl:i}){let n=o.background??t.background,s=oe(t.text.preset,e),r=t.text.preset!=="none"&&!!(o.eyebrow||o.headline||o.subheadline),a=s.deviceStyle(t.frame,o,n),u=o.headline?`<div style="font-weight:780;white-space:pre-line;text-wrap:balance;${s.titleStyle}">${v(o.headline)}</div>`:"",p=o.subheadline?`<div style="margin-top:${Math.round(e.height*.018)}px;color:${t.text.subColor};white-space:pre-line;text-wrap:balance;${s.subStyle}">${v(o.subheadline)}</div>`:"",l=o.eyebrow?`<div style="display:flex;${s.eyebrowStyle}margin-bottom:${Math.round(e.height*.016)}px;"><div style="font-size:${Math.round(e.height*.014)}px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;color:${t.text.eyebrowColor};">${v(o.eyebrow)}</div></div>`:"";return`<!doctype html>
|
|
3
|
-
<html>
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<style>
|
|
7
|
-
html, body {
|
|
8
|
-
margin: 0;
|
|
9
|
-
width: ${e.width}px;
|
|
10
|
-
height: ${e.height}px;
|
|
11
|
-
overflow: hidden;
|
|
12
|
-
background: transparent;
|
|
13
|
-
}
|
|
14
|
-
body {
|
|
15
|
-
font-family: "SF Pro Display", "Helvetica Neue", system-ui, sans-serif;
|
|
16
|
-
}
|
|
17
|
-
#canvas {
|
|
18
|
-
position: relative;
|
|
19
|
-
width: ${e.width}px;
|
|
20
|
-
height: ${e.height}px;
|
|
21
|
-
overflow: hidden;
|
|
22
|
-
background: ${te(n)};
|
|
23
|
-
color: ${t.text.color};
|
|
24
|
-
isolation: isolate;
|
|
25
|
-
}
|
|
26
|
-
#glow {
|
|
27
|
-
position: absolute;
|
|
28
|
-
inset: 0;
|
|
29
|
-
background: ${re(n)};
|
|
30
|
-
pointer-events: none;
|
|
31
|
-
}
|
|
32
|
-
#copy {
|
|
33
|
-
${s.copyStyle};
|
|
34
|
-
}
|
|
35
|
-
#device {
|
|
36
|
-
${a};
|
|
37
|
-
}
|
|
38
|
-
#device img {
|
|
39
|
-
display: block;
|
|
40
|
-
width: 100%;
|
|
41
|
-
height: auto;
|
|
42
|
-
}
|
|
43
|
-
</style>
|
|
44
|
-
</head>
|
|
45
|
-
<body>
|
|
46
|
-
<div id="canvas">
|
|
47
|
-
<div id="glow"></div>
|
|
48
|
-
${r?`<div id="copy">${l}${u}${p}</div>`:""}
|
|
49
|
-
<div id="device"><img src="${i}" alt="" /></div>
|
|
50
|
-
</div>
|
|
51
|
-
</body>
|
|
52
|
-
</html>`}async function U(e,t,o){let i=[],n=o??await(async()=>{let{chromium:r}=await import("playwright");return r.launch({headless:!0})})();try{let r=await n.newContext({viewport:{width:1280,height:720}});try{for(let a of t){let p=`data:image/png;base64,${Q(a.imagePath).toString("base64")}`;for(let l of e.canvases){let c=await r.newPage();try{await c.setViewportSize({width:l.width,height:l.height}),await c.setContent(ne({canvas:l,compose:e,slide:a.slide,imageDataUrl:p}),{waitUntil:"load"}),await c.waitForTimeout(20);let m=F.join(e.outDir,l.name,e.locale);I(m,{recursive:!0});let f=F.join(m,`${a.slide.assetKey}.png`),P=await c.screenshot({type:"png",clip:{x:0,y:0,width:l.width,height:l.height}});H(f,P),i.push({slideId:a.slide.id,canvas:l.name,locale:e.locale,outputPath:f,sourcePath:a.imagePath})}finally{await c.close()}}}}finally{await r.close()}}finally{!o&&typeof n.close=="function"&&await n.close()}I(e.outDir,{recursive:!0});let s=F.join(e.outDir,"manifest.json");return H(s,JSON.stringify({generatedAt:new Date().toISOString(),locale:e.locale,outputs:i},null,2)),{manifestPath:s,outputs:i.map(r=>r.outputPath),entries:i}}import{readFileSync as se}from"fs";import y from"path";function d(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function $(e,t){if(!d(e))throw new Error(`${t} must be an object`);return e}function h(e,t=""){return typeof e=="string"?e:t}function g(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function K(e,t){return typeof e=="boolean"?e:t}function S(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function q(e,t){return typeof e!="string"||e.trim().length===0?t:Object.prototype.hasOwnProperty.call(T,e)?e:null}function W(e,t){if(typeof e=="string"){let n=x(e);if(!n)throw new Error(`unknown background preset: ${e}`);return n}if(!d(e))return z(t);let o=e.type==="solid"||e.type==="gradient"?e.type:t.type;if(o==="solid")return{type:o,color:h(e.color,t.color??"#000000"),glow:g(e.glow)??t.glow};let i=Array.isArray(e.stops)?e.stops.map(n=>{if(!d(n))return null;let s=S(n.offset,Number.NaN),r=g(n.color);return!Number.isFinite(s)||!r?null:{offset:s,color:r}}).filter(n=>!!n):t.stops?.map(n=>({...n}))??[];return{type:o,direction:S(e.direction,t.direction??180),glow:g(e.glow)??t.glow,stops:i.length>0?i:t.stops?.map(n=>({...n}))??[]}}function ie(e){let o=(Array.isArray(e)?e:["iphone-6-9"]).map(i=>{if(typeof i!="string")throw new Error("compose.canvases entries must be strings");let n=k(i);if(!n)throw new Error(`unknown canvas preset: ${i}`);return n});if(o.length===0)throw new Error("compose.canvases must include at least one preset");return o}function ae(e){switch(e){case"editorial-left":case"minimal-bottom":case"none":case"bold-top":return e;default:return"bold-top"}}function ce(e){switch(e){case"plan":case"flow":case"auto":return e;default:return"auto"}}function X(e){switch(e){case"straight":case"tilted-left":case"tilted-right":case"cut-bottom":case"cut-top":return e;default:return}}function b(e,t){return y.isAbsolute(t)?t:y.resolve(e,t)}function le(e,t){if(!Array.isArray(e)||e.length===0)throw new Error("compose.slides must be a non-empty array");return e.map((o,i)=>{let n=$(o,`compose.slides[${i}]`),s=g(n.screenshot);if(!s)throw new Error(`compose.slides[${i}].screenshot is required`);let r=g(n.id),a=_(r||s);return{id:r||a,assetKey:a,screenshot:s,headline:h(n.headline),subheadline:h(n.subheadline),eyebrow:h(n.eyebrow),pose:X(n.pose),scale:typeof n.scale=="number"&&Number.isFinite(n.scale)?n.scale:void 0,offsetY:typeof n.offsetY=="number"&&Number.isFinite(n.offsetY)?n.offsetY:void 0,background:n.theme||n.background?W(n.theme??n.background,t):void 0}})}function V(e){let t=y.resolve(e),o=y.dirname(t),i=O.parse(se(t,"utf8")),n=$(i,"screenshots plan"),s=$(n.capture??{},"capture"),r=$(n.compose??{},"compose"),a=typeof n.app=="number"?String(n.app):g(n.app),u=q(n.device,null),p=b(o,h(s.out,y.join(".sootsim","screenshots","capture"))),l=g(s.from),c=g(s.flow);if(!l&&!c)throw new Error("capture.flow or capture.from is required");let m=s.mode==="raw"||s.mode==="framed"||s.mode==="raw+framed"?s.mode:"raw+framed",f=ce(s.pathMode),P=W(r.background??"cyan",x("cyan")),J={show:K(r.frame&&d(r.frame)?r.frame.show:void 0,!0),style:q(r.frame&&d(r.frame)?r.frame.style:null,null)||u||D,pose:X(r.frame&&d(r.frame)?r.frame.pose:void 0)||"straight",scale:S(r.frame&&d(r.frame)?r.frame.scale:void 0,1),offsetY:S(r.frame&&d(r.frame)?r.frame.offsetY:void 0,0),shadow:{color:h(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.color:void 0,w.color),blur:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.blur:void 0,w.blur),spread:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.spread:void 0,w.spread),opacity:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.opacity:void 0,w.opacity)}};return{planPath:t,planDir:o,appTarget:a,deviceModel:u,capture:{flowPath:c?b(o,c):null,fromDir:l?b(o,l):null,outDir:p,rawDir:l?b(o,l):y.join(p,"raw"),framedDir:y.join(p,"framed"),mode:m,pathMode:f,simId:g(s.sim),openInNewSim:K(s.new,!1)},compose:{outDir:b(o,h(r.out,y.join(".sootsim","screenshots","exports"))),locale:h(r.locale,"en"),canvases:ie(r.canvases),frame:J,background:P,text:{preset:ae(r.text&&d(r.text)?r.text.preset:void 0),color:h(r.text&&d(r.text)?r.text.color:void 0,"#ffffff"),subColor:h(r.text&&d(r.text)?r.text.subColor:void 0,"rgba(232,240,247,0.86)"),eyebrowColor:h(r.text&&d(r.text)?r.text.eyebrowColor:void 0,"rgba(229,242,255,0.72)")},slides:le(r.slides,P)}}}function ue(e){return e.capture.pathMode==="plan"||e.capture.pathMode==="flow"?e.capture.pathMode:e.capture.fromDir?"flow":"plan"}function de(e,t){if(!e.capture.flowPath)throw new Error("capture flow path is required to build flow args");let o=[e.capture.flowPath],i=ue(e);o.push("--screenshots",e.capture.rawDir),i==="flow"&&o.push("--screenshot-paths","flow");let n=t.appTarget??e.appTarget,s=t.deviceModel??e.deviceModel,r=t.simId??e.capture.simId;return n&&o.push("--url",n),s&&o.push("--device",s),r&&o.push("--sim",r),e.capture.openInNewSim&&o.push("--new"),o}function N(e,t){return C.isAbsolute(t)?t:C.join(e.capture.rawDir,t)}function me(e){return C.join(e.capture.outDir,"manifest.json")}async function he(e,t){if(!e.capture.flowPath)return;B(e.capture.rawDir,{recursive:!0});let o=de(e,t),i=await Y(o);if(i!==0)throw new Error(`flow capture failed with exit code ${i}`)}async function fe(e,t){let o=new Map;B(e.capture.framedDir,{recursive:!0});let i=t??await(async()=>{let{chromium:n}=await import("playwright");return n.launch({headless:!0})})();try{let n=await j(i);try{for(let s of e.compose.slides){let r=N(e,s.screenshot),a=pe(r),u=await n.compose(a,e.compose.frame.style),p=C.join(e.capture.framedDir,`${s.assetKey}.png`);G(p,u),o.set(s.id,p)}}finally{await n.close()}}finally{!t&&typeof i.close=="function"&&await i.close()}return o}function ge(e,t,o){let i=[],n=[];B(e.capture.outDir,{recursive:!0});let s=me(e),r=e.compose.slides.map(a=>{let u=N(e,a.screenshot),p=t.get(a.id)??null;return i.push(u),p&&n.push(p),{id:a.id,screenshot:a.screenshot,rawPath:u,framedPath:p}});return G(s,JSON.stringify({generatedAt:new Date().toISOString(),deviceModel:o,mode:e.capture.mode,rawDir:e.capture.rawDir,framedDir:e.capture.framedDir,slides:r},null,2)),{manifestPath:s,rawDir:e.capture.rawDir,framedDir:e.capture.framedDir,rawFiles:i,framedFiles:n}}function we(e,t){return e.compose.slides.map(o=>({slide:o,imagePath:e.compose.frame.show===!0?t.get(o.id)??N(e,o.screenshot):N(e,o.screenshot)}))}async function Z(e,t={}){let o=V(e),i=t.deviceModel??o.deviceModel;t.composeOnly||await he(o,t);let n=o.capture.mode!=="raw"||!t.captureOnly&&o.compose.frame.show===!0,r=n||!t.captureOnly?await(async()=>{let{chromium:a}=await import("playwright");return a.launch({headless:!0})})():null;try{let a=n?await fe(o,r??void 0):new Map,u=ge(o,a,i);if(t.captureOnly)return{plan:o,capture:u,compose:null};let p=we(o,a),l=await U(o.compose,p,r??void 0);return{plan:o,capture:u,compose:l}}finally{r&&typeof r.close=="function"&&await r.close()}}async function qe(e,t={}){if(e.includes("--help")||e.includes("-h"))return console.log(`
|
|
53
|
-
sootsim screenshots \u2014 capture and compose app-store screenshot sets
|
|
54
|
-
|
|
55
|
-
usage:
|
|
56
|
-
sootsim screenshots --plan <plan.yaml> [options]
|
|
57
|
-
|
|
58
|
-
options:
|
|
59
|
-
--plan <path> screenshot plan yaml
|
|
60
|
-
--sim <id> reuse a live sim for capture
|
|
61
|
-
--app <target> override plan app target (port, url, or shell url)
|
|
62
|
-
--device <model> override plan capture device for this run
|
|
63
|
-
--capture-only stop after raw/framed intermediates
|
|
64
|
-
--compose-only skip flow capture, reuse existing raw screenshots
|
|
65
|
-
|
|
66
|
-
examples:
|
|
67
|
-
sootsim screenshots --plan app-store.yaml
|
|
68
|
-
sootsim screenshots --plan app-store.yaml --sim a9
|
|
69
|
-
sootsim screenshots --plan app-store.yaml --device iphone-14
|
|
70
|
-
`),0;let o=c=>e.find((m,f)=>e[f-1]===c),i=new Set(["--plan","--sim","--app","--device"]),n=e.filter((c,m)=>{if(c.startsWith("-"))return!1;let f=e[m-1];return!f||!i.has(f)}),s=o("--plan")||n[0];if(!s)return console.error(" error: screenshots plan path is required (`--plan <path>`)."),1;let r=o("--sim")?.trim()||null,a=o("--app")?.trim()||null,u=o("--device")?.trim()||null,p=e.includes("--capture-only"),l=e.includes("--compose-only");try{let c=await Z(s,{simId:r,appTarget:a,deviceModel:u,captureOnly:p,composeOnly:l});return console.log(` capture manifest: ${c.capture.manifestPath}`),c.compose?(console.log(` compose manifest: ${c.compose.manifestPath}`),console.log(` exports: ${c.compose.outputs.length}`)):console.log(" compose skipped"),0}catch(c){return console.error(` screenshots failed: ${c.message}`),1}}export{qe as runScreenshots};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.144 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-UZO6PMW3.js";import"./chunk-AKHWKREF.js";import"./chunk-TKMTONCA.js";import"./chunk-2OWIXUFA.js";import"./chunk-4CPUNUJC.js";import"./chunk-ZODKBHVK.js";import"./chunk-6KI36NXX.js";import"./chunk-LEWUJGFD.js";import"./chunk-MX66P64S.js";import"./chunk-TE2SHQPT.js";export{a as runSetupRepo};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.144 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-AV2DSEYZ.js";import"./chunk-W4KCLE5O.js";import"./chunk-TONLJPNX.js";import"./chunk-2OWIXUFA.js";import"./chunk-3ZNPJADG.js";import"./chunk-A3E5QVUN.js";import"./chunk-4CPUNUJC.js";import"./chunk-ZODKBHVK.js";import"./chunk-6KI36NXX.js";import"./chunk-LEWUJGFD.js";import"./chunk-MX66P64S.js";import"./chunk-TE2SHQPT.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
|