shotops-mcp 0.9.2 → 0.9.3
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/dist/local.js +8978 -2775
- package/package.json +1 -1
- package/widget-dist/bundle.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shotops-mcp",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "The bundle-emitting MCP server over the @engine/@sync spine. Exposes ShotOps tools to ChatGPT, Claude Code, Cursor, and CI over Streamable HTTP with OAuth or personal API tokens. Hosted and MCP tool paths never accept, store, or forward a store-signing credential; the explicit local release CLI validates the user's existing key directly with Apple and records only its path. Renders via headless Playwright Chromium, the engine's native non-browser habitat (same path as mockup-mcp). Also ships as a free LOCAL stdio server (`npx shotops-mcp`) — same render, on your own machine, no account needed.",
|
package/widget-dist/bundle.js
CHANGED
|
@@ -218,4 +218,4 @@ button, a { font: inherit; }
|
|
|
218
218
|
@media (prefers-reduced-motion: reduce) {
|
|
219
219
|
.sf-get { transition: none; }
|
|
220
220
|
}
|
|
221
|
-
`,Y="You upload this yourself. ShotOps never holds your Apple credentials, never creates an App Store version, and never submits anything for review.";function q(e,n){return R("Download .zip",e.href,n,"sf-get")}function G(e,n){e.replaceChildren();let o=T(n);if(o&&!S(n)){let f=r("section","sf-shell"),b=r("header","sf-head"),O=r("div");O.append(r("p","sf-eyebrow","ShotOps / durable production"),r("h2","sf-title",o.title),r("p","sf-sub",o.detail));let A=r("span","sf-badge");A.append(r("span","sf-dot"),document.createTextNode(o.badge)),b.append(O,A),f.append(b);let y=r("footer","sf-meta");g(y,"Progress",o.total>0?`${o.completed}/${o.total}`:"Waiting"),typeof n.progress?.attempt=="number"&&g(y,"Attempt",String(n.progress.attempt)),typeof n.contract?.cost?.reserved=="number"&&g(y,"Reserved",String(n.contract.cost.reserved)),typeof n.contract?.cost?.released=="number"&&g(y,"Released",String(n.contract.cost.released)),f.append(y,r("p","sf-note",`Operation ${n.operationId}. Reconnect with production_operation.`)),e.append(f),window.openai?.notifyIntrinsicHeight?.();return}let t=Array.isArray(n.locales)&&n.locales.length>0?n.locales:n.locale?[n.locale]:[],i=typeof n.panelCount=="number"?n.panelCount:0,s=typeof n.totalPanelCount=="number"?n.totalPanelCount:i*Math.max(1,t.length),p=r("section","sf-shell"),c=r("header","sf-head"),v=r("div");v.append(r("p","sf-eyebrow","ShotOps
|
|
221
|
+
`,Y="You upload this yourself. ShotOps never holds your Apple credentials, never creates an App Store version, and never submits anything for review.";function q(e,n){return R("Download .zip",e.href,n,"sf-get")}function G(e,n){e.replaceChildren();let o=T(n);if(o&&!S(n)){let f=r("section","sf-shell"),b=r("header","sf-head"),O=r("div");O.append(r("p","sf-eyebrow","ShotOps / durable production"),r("h2","sf-title",o.title),r("p","sf-sub",o.detail));let A=r("span","sf-badge");A.append(r("span","sf-dot"),document.createTextNode(o.badge)),b.append(O,A),f.append(b);let y=r("footer","sf-meta");g(y,"Progress",o.total>0?`${o.completed}/${o.total}`:"Waiting"),typeof n.progress?.attempt=="number"&&g(y,"Attempt",String(n.progress.attempt)),typeof n.contract?.cost?.reserved=="number"&&g(y,"Reserved",String(n.contract.cost.reserved)),typeof n.contract?.cost?.released=="number"&&g(y,"Released",String(n.contract.cost.released)),f.append(y,r("p","sf-note",`Operation ${n.operationId}. Reconnect with production_operation.`)),e.append(f),window.openai?.notifyIntrinsicHeight?.();return}let t=Array.isArray(n.locales)&&n.locales.length>0?n.locales:n.locale?[n.locale]:[],i=typeof n.panelCount=="number"?n.panelCount:0,s=typeof n.totalPanelCount=="number"?n.totalPanelCount:i*Math.max(1,t.length),p=r("section","sf-shell"),c=r("header","sf-head"),v=r("div");v.append(r("p","sf-eyebrow","ShotOps"),r("h2","sf-title","Your screenshot bundle is ready"),r("p","sf-sub",t.length>1?`${s} screenshots across ${t.length} locales, laid out the way fastlane deliver expects.`:"Laid out the way fastlane deliver expects \u2014 download it and upload with your own key."));let k=r("span","sf-badge");k.append(r("span","sf-dot"),document.createTextNode(n.output==="urls"?"Download link":"Inline zip")),c.append(v,k),p.append(c);let x=r("div","sf-body"),u=S(n),m=r("div","sf-zip");m.append(r("div","sf-zip-icon","ZIP"));let h=r("div","sf-zip-text");h.append(r("div","sf-zip-name",n.filename??"fastlane-bundle.zip"));let w=u?.size?` \xB7 ${u.size}`:"";h.append(r("div","sf-zip-sub",s>0?`${s} screenshot${s===1?"":"s"}${w}`:`Bundle${w}`)),m.append(h),u&&m.append(q(u,n.filename??"fastlane-bundle.zip")),x.append(m);let l=r("div","sf-inside");if(l.append(r("p","sf-inside-k","What's inside")),l.append(r("pre","sf-tree",N(t))),x.append(l),n.shareLink?.url){let f=r("div","sf-share"),b=r("div","sf-share-text");b.append(document.createTextNode("Share link")),b.append(r("div","sf-share-sub",$(n.shareLink.expiresAt))),f.append(b,M("Open \u2197",n.shareLink.url,"sf-open")),x.append(f)}p.append(x);let a=r("footer","sf-meta");if(n.bundleId&&g(a,"Bundle ID",n.bundleId),t.length>0&&g(a,t.length===1?"Locale":"Locales",t.join(", ")),Array.isArray(n.outputs)&&n.outputs.length>0&&g(a,"Devices",n.outputs.join(", ")),i>0&&t.length>1&&g(a,"Per locale",String(i)),n.openUrl){let f=r("div","sf-actions");f.append(M("Open in ShotOps \u2197",n.openUrl,"sf-open")),a.append(f)}a.childElementCount>0&&p.append(a);let E=[n.note,n.projectNote].filter(Boolean).join(" ");E&&p.append(r("p","sf-note",E)),p.append(r("p","sf-custody",Y)),e.append(p),window.openai?.notifyIntrinsicHeight?.()}I({css:H,rootId:"shotops-bundle",loading:"Preparing your screenshot bundle\u2026",empty:"No ShotOps bundle result is available.",terminal:"The bundle finished, but ChatGPT did not deliver its result. Refresh ShotOps and try again.",accept:e=>!!(T(e)||S(e)),render:G});})();
|