@weppy/roblox-mcp 2.12.2 → 2.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dashboard/dist/assets/AssetsPage-FUa9ddzs.js +46 -0
  3. package/dashboard/dist/assets/{ChangelogDetailPage-wOW2p_bi.js → ChangelogDetailPage-DJm43K1h.js} +1 -1
  4. package/dashboard/dist/assets/{ChangelogPage-Bqesm1RS.js → ChangelogPage-M0lIALvl.js} +1 -1
  5. package/dashboard/dist/assets/{ConfirmModal-Ca_Jx1Np.js → ConfirmModal-DLCMn2dM.js} +1 -1
  6. package/dashboard/dist/assets/{ConnectionPage-B3UgV_LY.js → ConnectionPage-e-YP0BDu.js} +1 -1
  7. package/dashboard/dist/assets/{ControlsPage-DafNZ79n.js → ControlsPage-DlaSStpW.js} +1 -1
  8. package/dashboard/dist/assets/{CurrentPlaceScope-B3Jcq1x_.js → CurrentPlaceScope-DZ2orV5_.js} +1 -1
  9. package/dashboard/dist/assets/{GameChangeDetail-yngTJA2H.js → GameChangeDetail-78Ke4Pr3.js} +1 -1
  10. package/dashboard/dist/assets/{InfoLabel-B7ZSx6u2.js → InfoLabel-C3n2_cRi.js} +1 -1
  11. package/dashboard/dist/assets/{OverviewPage-XoLRIqct.js → OverviewPage-a_Newk4P.js} +1 -1
  12. package/dashboard/dist/assets/{PageHeader-0cqG2PEX.js → PageHeader-A_rnhaxW.js} +1 -1
  13. package/dashboard/dist/assets/{PlaytestPage-CLr4FbdX.js → PlaytestPage-CN7oefOU.js} +1 -1
  14. package/dashboard/dist/assets/{SettingsPage-D50mSMpC.js → SettingsPage-C0RRWcLC.js} +1 -1
  15. package/dashboard/dist/assets/{StatusBadge-CenFXcbO.js → StatusBadge-DYqnLMML.js} +1 -1
  16. package/dashboard/dist/assets/{SyncPage-3VfsXSAB.js → SyncPage-CsQe96fg.js} +1 -1
  17. package/dashboard/dist/assets/{Tabs-C6KgB85r.js → Tabs--X3ZBrw-.js} +1 -1
  18. package/dashboard/dist/assets/{ToolsPage-Wya7O-1C.js → ToolsPage-a0ReLV98.js} +1 -1
  19. package/dashboard/dist/assets/{TooltipText-YDig3E2P.js → TooltipText-Duhv_UBS.js} +1 -1
  20. package/dashboard/dist/assets/{UiPrimitive-_I4FkOJy.js → UiPrimitive-Bi3cIHAa.js} +1 -1
  21. package/dashboard/dist/assets/{UiStudioPage-DntH7wMe.js → UiStudioPage-Bnbxjpb2.js} +1 -1
  22. package/dashboard/dist/assets/{WhatsNewPage-hjoGNMqF.js → WhatsNewPage-CD2k2oln.js} +1 -1
  23. package/dashboard/dist/assets/{copy-LteGG3Jy.js → copy-hmyydPjO.js} +1 -1
  24. package/dashboard/dist/assets/{index-CtLyZZKX.js → index-je833Nom.js} +3 -3
  25. package/dashboard/dist/assets/{sample-requests-_5Ss5L0Z.js → sample-requests-B-6uBLqA.js} +1 -1
  26. package/dashboard/dist/assets/{useLiveUptime-sXHLge7C.js → useLiveUptime-DcWAg-Dy.js} +1 -1
  27. package/dashboard/dist/assets/{useSettings-7vvqoIou.js → useSettings-JrNGM1Q7.js} +1 -1
  28. package/dashboard/dist/index.html +1 -1
  29. package/dist/index.js +100 -100
  30. package/package.json +1 -1
  31. package/roblox-plugin/WeppyRobloxMCP.rbxm +0 -0
  32. package/dashboard/dist/assets/AssetsPage-DnMPjYnI.js +0 -46
@@ -1 +1 @@
1
- import{u as y,j as e,L as j,G as b,r as g,H as N}from"./index-CtLyZZKX.js";import{P as f}from"./PageHeader-0cqG2PEX.js";import"./UiPrimitive-_I4FkOJy.js";const k="_card_1b5wm_2",C="_cardUnread_1b5wm_15",R="_cardRead_1b5wm_20",v="_cardUnreadWarning_1b5wm_25",L="_topRow_1b5wm_32",T="_categoryChip_1b5wm_39",B="_versionChip_1b5wm_52",U="_importantBadge_1b5wm_64",S="_date_1b5wm_77",A="_title_1b5wm_85",E="_body_1b5wm_94",W="_linkList_1b5wm_102",$="_link_1b5wm_102",M="_internalLink_1b5wm_124",I="_newBadge_1b5wm_146",a={card:k,cardUnread:C,cardRead:R,cardUnreadWarning:v,topRow:L,categoryChip:T,versionChip:B,importantBadge:U,date:S,title:A,body:E,linkList:W,link:$,internalLink:M,newBadge:I},P={release:"whatsNew.category.release",notice:"whatsNew.category.notice",deprecation:"whatsNew.category.deprecation",tip:"whatsNew.category.tip"};function x({announcement:t,isNew:c}){const{locale:o,t:r}=y(),d=c?a.cardUnread:a.cardRead,l=t.severity==="warning",h=l&&c?a.cardUnreadWarning:"",m=t.title[o]??t.title.en,w=t.body[o]??t.body.en,_=t.links??(t.link?[t.link]:[]),p=s=>typeof s=="string"?s:s[o]??s.en;return e.jsxs("div",{className:`${a.card} ${d} ${h}`,children:[e.jsxs("div",{className:a.topRow,children:[e.jsx("span",{className:a.categoryChip,children:r(P[t.category])}),l&&e.jsx("span",{className:a.importantBadge,children:r("whatsNew.importantBadge","IMPORTANT")}),t.version&&e.jsx("span",{className:a.versionChip,children:t.version}),c&&e.jsx("span",{className:a.newBadge,children:r("whatsNew.newBadge","NEW")}),e.jsx("span",{className:a.date,children:t.date})]}),e.jsx("h3",{className:a.title,children:m}),e.jsx("p",{className:a.body,children:w}),_.length>0&&e.jsx("div",{className:a.linkList,children:_.map(s=>{const i=p(s.url),u=p(s.label);return i.startsWith("/")?e.jsx(j,{className:`${a.link} ${a.internalLink}`,to:i,children:u},i):e.jsxs("a",{className:a.link,href:i,target:"_blank",rel:"noopener noreferrer",children:["↗"," ",u]},i)})})]})}const z="_page_1talg_2",H="_section_1talg_10",O="_sectionTitle_1talg_16",G="_unreadCount_1talg_28",Y="_empty_1talg_43",K="_divider_1talg_51",n={page:z,section:H,sectionTitle:O,unreadCount:G,empty:Y,divider:K};function J(){const{t}=y(),{readSet:c,markRead:o}=b(),r=g.useMemo(()=>{const s=[];for(const i of N)c.has(i.id)||s.push(i.id);return s},[]),d=g.useRef(r);d.current=r,g.useEffect(()=>()=>{d.current.length>0&&o(d.current)},[]);const l=g.useMemo(()=>new Set(r),[r]),h=N.filter(s=>l.has(s.id)),m=N.filter(s=>!l.has(s.id)),w=h.length>0,_=m.length>0,p=e.jsx(f,{title:t("whatsNew.pageTitle","What's New"),description:t("whatsNew.pageSubtitle","Stay up to date with MCP changes"),helpTopicId:"whatsNew"});return N.length===0?e.jsxs("div",{className:n.page,children:[p,e.jsx("p",{className:n.empty,children:t("whatsNew.empty","No announcements yet")})]}):e.jsxs("div",{className:n.page,children:[p,w&&e.jsxs("section",{className:n.section,children:[e.jsxs("h2",{className:n.sectionTitle,children:[t("whatsNew.unreadSection","Unread"),e.jsx("span",{className:n.unreadCount,children:h.length})]}),h.map(s=>e.jsx(x,{announcement:s,isNew:!0},`unread-${s.id}`))]}),w&&_&&e.jsx("hr",{className:n.divider}),_&&e.jsxs("section",{className:n.section,children:[e.jsx("h2",{className:n.sectionTitle,children:t("whatsNew.allSection","All Announcements")}),m.map(s=>e.jsx(x,{announcement:s,isNew:!1},`all-${s.id}`))]})]})}export{J as Component};
1
+ import{u as y,j as e,L as j,G as b,r as g,H as N}from"./index-je833Nom.js";import{P as f}from"./PageHeader-A_rnhaxW.js";import"./UiPrimitive-Bi3cIHAa.js";const k="_card_1b5wm_2",C="_cardUnread_1b5wm_15",R="_cardRead_1b5wm_20",v="_cardUnreadWarning_1b5wm_25",L="_topRow_1b5wm_32",T="_categoryChip_1b5wm_39",B="_versionChip_1b5wm_52",U="_importantBadge_1b5wm_64",S="_date_1b5wm_77",A="_title_1b5wm_85",E="_body_1b5wm_94",W="_linkList_1b5wm_102",$="_link_1b5wm_102",M="_internalLink_1b5wm_124",I="_newBadge_1b5wm_146",a={card:k,cardUnread:C,cardRead:R,cardUnreadWarning:v,topRow:L,categoryChip:T,versionChip:B,importantBadge:U,date:S,title:A,body:E,linkList:W,link:$,internalLink:M,newBadge:I},P={release:"whatsNew.category.release",notice:"whatsNew.category.notice",deprecation:"whatsNew.category.deprecation",tip:"whatsNew.category.tip"};function x({announcement:t,isNew:c}){const{locale:o,t:r}=y(),d=c?a.cardUnread:a.cardRead,l=t.severity==="warning",h=l&&c?a.cardUnreadWarning:"",m=t.title[o]??t.title.en,w=t.body[o]??t.body.en,_=t.links??(t.link?[t.link]:[]),p=s=>typeof s=="string"?s:s[o]??s.en;return e.jsxs("div",{className:`${a.card} ${d} ${h}`,children:[e.jsxs("div",{className:a.topRow,children:[e.jsx("span",{className:a.categoryChip,children:r(P[t.category])}),l&&e.jsx("span",{className:a.importantBadge,children:r("whatsNew.importantBadge","IMPORTANT")}),t.version&&e.jsx("span",{className:a.versionChip,children:t.version}),c&&e.jsx("span",{className:a.newBadge,children:r("whatsNew.newBadge","NEW")}),e.jsx("span",{className:a.date,children:t.date})]}),e.jsx("h3",{className:a.title,children:m}),e.jsx("p",{className:a.body,children:w}),_.length>0&&e.jsx("div",{className:a.linkList,children:_.map(s=>{const i=p(s.url),u=p(s.label);return i.startsWith("/")?e.jsx(j,{className:`${a.link} ${a.internalLink}`,to:i,children:u},i):e.jsxs("a",{className:a.link,href:i,target:"_blank",rel:"noopener noreferrer",children:["↗"," ",u]},i)})})]})}const z="_page_1talg_2",H="_section_1talg_10",O="_sectionTitle_1talg_16",G="_unreadCount_1talg_28",Y="_empty_1talg_43",K="_divider_1talg_51",n={page:z,section:H,sectionTitle:O,unreadCount:G,empty:Y,divider:K};function J(){const{t}=y(),{readSet:c,markRead:o}=b(),r=g.useMemo(()=>{const s=[];for(const i of N)c.has(i.id)||s.push(i.id);return s},[]),d=g.useRef(r);d.current=r,g.useEffect(()=>()=>{d.current.length>0&&o(d.current)},[]);const l=g.useMemo(()=>new Set(r),[r]),h=N.filter(s=>l.has(s.id)),m=N.filter(s=>!l.has(s.id)),w=h.length>0,_=m.length>0,p=e.jsx(f,{title:t("whatsNew.pageTitle","What's New"),description:t("whatsNew.pageSubtitle","Stay up to date with MCP changes"),helpTopicId:"whatsNew"});return N.length===0?e.jsxs("div",{className:n.page,children:[p,e.jsx("p",{className:n.empty,children:t("whatsNew.empty","No announcements yet")})]}):e.jsxs("div",{className:n.page,children:[p,w&&e.jsxs("section",{className:n.section,children:[e.jsxs("h2",{className:n.sectionTitle,children:[t("whatsNew.unreadSection","Unread"),e.jsx("span",{className:n.unreadCount,children:h.length})]}),h.map(s=>e.jsx(x,{announcement:s,isNew:!0},`unread-${s.id}`))]}),w&&_&&e.jsx("hr",{className:n.divider}),_&&e.jsxs("section",{className:n.section,children:[e.jsx("h2",{className:n.sectionTitle,children:t("whatsNew.allSection","All Announcements")}),m.map(s=>e.jsx(x,{announcement:s,isNew:!1},`all-${s.id}`))]})]})}export{J as Component};
@@ -1,4 +1,4 @@
1
- import{i as c}from"./index-CtLyZZKX.js";/**
1
+ import{i as c}from"./index-je833Nom.js";/**
2
2
  * @license lucide-react v1.8.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-XoLRIqct.js","assets/InfoLabel-B7ZSx6u2.js","assets/PageHeader-0cqG2PEX.js","assets/UiPrimitive-_I4FkOJy.js","assets/UiPrimitive-BMSNRGwI.css","assets/PageHeader-CV_rjuG8.css","assets/StatusBadge-CenFXcbO.js","assets/StatusBadge-C2zYt5iE.css","assets/TooltipText-YDig3E2P.js","assets/GameChangeDetail-yngTJA2H.js","assets/GameChangeDetail-C1XtdYwk.css","assets/useLiveUptime-sXHLge7C.js","assets/OverviewPage-Dsfl-NRT.css","assets/ConnectionPage-B3UgV_LY.js","assets/ConfirmModal-Ca_Jx1Np.js","assets/ConfirmModal.module-DJksQHBd.js","assets/ConfirmModal-uqFW3py_.css","assets/copy-LteGG3Jy.js","assets/ConnectionPage-Ca5WLCm3.css","assets/SyncPage-3VfsXSAB.js","assets/CurrentPlaceScope-B3Jcq1x_.js","assets/CurrentPlaceScope-D-0g0WrM.css","assets/SyncPage-BnVXEQel.css","assets/AssetsPage-DnMPjYnI.js","assets/AssetsPage-Czc93xoU.css","assets/ChangelogPage-Bqesm1RS.js","assets/Tabs-C6KgB85r.js","assets/Tabs-CIszXeoU.css","assets/ChangelogPage-DsP0fTsc.css","assets/PlaytestPage-CLr4FbdX.js","assets/PlaytestPage-CVEtQ4dU.css","assets/UiStudioPage-DntH7wMe.js","assets/sample-requests-_5Ss5L0Z.js","assets/sample-requests-DmUwqmFE.css","assets/UiStudioPage-LH2dcLkr.css","assets/ToolsPage-Wya7O-1C.js","assets/ToolsPage-CAaH9fIQ.css","assets/ControlsPage-DafNZ79n.js","assets/useSettings-7vvqoIou.js","assets/useSettings-BNH9ENDy.css","assets/WhatsNewPage-hjoGNMqF.js","assets/WhatsNewPage-wF04BABp.css","assets/ChangelogDetailPage-wOW2p_bi.js","assets/ChangelogDetailPage-vGgnpq1q.css","assets/SettingsPage-D50mSMpC.js","assets/SettingsPage-BR71s-WH.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-a_Newk4P.js","assets/InfoLabel-C3n2_cRi.js","assets/PageHeader-A_rnhaxW.js","assets/UiPrimitive-Bi3cIHAa.js","assets/UiPrimitive-BMSNRGwI.css","assets/PageHeader-CV_rjuG8.css","assets/StatusBadge-DYqnLMML.js","assets/StatusBadge-C2zYt5iE.css","assets/TooltipText-Duhv_UBS.js","assets/GameChangeDetail-78Ke4Pr3.js","assets/GameChangeDetail-C1XtdYwk.css","assets/useLiveUptime-DcWAg-Dy.js","assets/OverviewPage-Dsfl-NRT.css","assets/ConnectionPage-e-YP0BDu.js","assets/ConfirmModal-DLCMn2dM.js","assets/ConfirmModal.module-DJksQHBd.js","assets/ConfirmModal-uqFW3py_.css","assets/copy-hmyydPjO.js","assets/ConnectionPage-Ca5WLCm3.css","assets/SyncPage-CsQe96fg.js","assets/CurrentPlaceScope-DZ2orV5_.js","assets/CurrentPlaceScope-D-0g0WrM.css","assets/SyncPage-BnVXEQel.css","assets/AssetsPage-FUa9ddzs.js","assets/AssetsPage-Czc93xoU.css","assets/ChangelogPage-M0lIALvl.js","assets/Tabs--X3ZBrw-.js","assets/Tabs-CIszXeoU.css","assets/ChangelogPage-DsP0fTsc.css","assets/PlaytestPage-CN7oefOU.js","assets/PlaytestPage-CVEtQ4dU.css","assets/UiStudioPage-Bnbxjpb2.js","assets/sample-requests-B-6uBLqA.js","assets/sample-requests-DmUwqmFE.css","assets/UiStudioPage-LH2dcLkr.css","assets/ToolsPage-a0ReLV98.js","assets/ToolsPage-CAaH9fIQ.css","assets/ControlsPage-DlaSStpW.js","assets/useSettings-JrNGM1Q7.js","assets/useSettings-BNH9ENDy.css","assets/WhatsNewPage-CD2k2oln.js","assets/WhatsNewPage-wF04BABp.css","assets/ChangelogDetailPage-DJm43K1h.js","assets/ChangelogDetailPage-vGgnpq1q.css","assets/SettingsPage-C0RRWcLC.js","assets/SettingsPage-BR71s-WH.css"])))=>i.map(i=>d[i]);
2
2
  var Th=Object.defineProperty;var Lh=(i,n,r)=>n in i?Th(i,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[n]=r;var Io=(i,n,r)=>Lh(i,typeof n!="symbol"?n+"":n,r);function mp(i,n){for(var r=0;r<n.length;r++){const d=n[r];if(typeof d!="string"&&!Array.isArray(d)){for(const u in d)if(u!=="default"&&!(u in i)){const p=Object.getOwnPropertyDescriptor(d,u);p&&Object.defineProperty(i,u,p.get?p:{enumerable:!0,get:()=>d[u]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))d(u);new MutationObserver(u=>{for(const p of u)if(p.type==="childList")for(const g of p.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&d(g)}).observe(document,{childList:!0,subtree:!0});function r(u){const p={};return u.integrity&&(p.integrity=u.integrity),u.referrerPolicy&&(p.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?p.credentials="include":u.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function d(u){if(u.ep)return;u.ep=!0;const p=r(u);fetch(u.href,p)}})();function yp(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var bl={exports:{}},es={},Pl={exports:{}},Re={};/**
3
3
  * @license React
4
4
  * react.production.min.js
@@ -311,7 +311,7 @@ Ceci est un exemple d’aperçu. Passez à Pro pour exécuter des tests de jeu e
311
311
  *
312
312
  * This source code is licensed under the ISC license.
313
313
  * See the LICENSE file in the root directory of this source tree.
314
- */const pS=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],gS=Ke("x",pS),Fp=[{labelKey:"sidebar.overview",route:"/",icon:Vf,minLevel:"disconnected",lazy:()=>Kt(()=>import("./OverviewPage-XoLRIqct.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))},{labelKey:"sidebar.connection",route:"/connection",icon:iS,minLevel:"disconnected",lazy:()=>Kt(()=>import("./ConnectionPage-B3UgV_LY.js"),__vite__mapDeps([13,1,2,3,4,5,6,7,8,14,15,16,11,17,18]))},{labelKey:"sidebar.sync",route:"/sync",icon:Bp,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./SyncPage-3VfsXSAB.js"),__vite__mapDeps([19,2,3,4,5,1,8,14,15,16,20,21,6,7,22]))},{labelKey:"sidebar.assets",route:"/assets",icon:oS,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./AssetsPage-DnMPjYnI.js"),__vite__mapDeps([23,14,15,16,2,3,4,5,8,17,24]))},{labelKey:"sidebar.changelog",route:"/changelog",icon:qf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ChangelogPage-Bqesm1RS.js"),__vite__mapDeps([25,2,3,4,5,14,15,16,20,21,8,26,27,28]))},{labelKey:"sidebar.playtest",route:"/playtest",icon:Nf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./PlaytestPage-CLr4FbdX.js"),__vite__mapDeps([29,2,3,4,5,1,20,21,8,14,15,16,30]))},{labelKey:"sidebar.ui_studio",route:"/ui-studio",icon:Wf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./UiStudioPage-DntH7wMe.js"),__vite__mapDeps([31,1,8,3,4,32,33,26,27,2,5,20,21,34]))},{labelKey:"sidebar.tools",route:"/tools",icon:cS,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ToolsPage-Wya7O-1C.js"),__vite__mapDeps([35,2,3,4,5,8,14,15,16,20,21,26,27,36]))}],ql=[{labelKey:"sidebar.controls",route:"/controls",icon:Wp,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ControlsPage-DafNZ79n.js"),__vite__mapDeps([37,2,3,4,5,1,15,16,8,38,39,17]))},{labelKey:"sidebar.whatsNew",route:"/whats-new",icon:wf,minLevel:"disconnected",lazy:()=>Kt(()=>import("./WhatsNewPage-hjoGNMqF.js"),__vite__mapDeps([40,2,3,4,5,41]))}],Tl="https://github.com/hope1026/weppy-roblox-mcp",hS="https://weppyai.com";function Bl(i){return i?/Mac OS X|Macintosh/i.test(i)?"macOS":/Windows NT/i.test(i)?"Windows":/Linux/i.test(i)?"Linux":"":""}function Kp(i){var v,C,P,D,L;const n=Bl(typeof navigator<"u"?navigator.userAgent:""),r=i.status,d=(r==null?void 0:r.version)??"",u=((C=(v=r==null?void 0:r.pluginClients)==null?void 0:v[0])==null?void 0:C.pluginVersion)??"",p=((D=(P=r==null?void 0:r.pluginClients)==null?void 0:P[0])==null?void 0:D.studioVersion)??"",g=d||u||p?[d?`MCP ${d}`:"",u?`Plugin ${u}`:"",p?`Studio ${p}`:""].filter(Boolean).join(" / "):"",y=((L=r==null?void 0:r.aiClientNames)==null?void 0:L[0])??"",h=(r==null?void 0:r.nodeVersion)??"";return{os:n,nodeVersion:h,aiClient:y,pluginVersionLabel:g}}function mS(i){const{os:n,nodeVersion:r,aiClient:d,pluginVersionLabel:u}=Kp(i),p=new URLSearchParams;return p.set("template","bug_report.yml"),n&&p.set("os",n),r&&p.set("node",r),d&&p.set("ai-client",d),u&&p.set("plugin-version",u),p.toString()}function yS(i){const{os:n,nodeVersion:r,aiClient:d,pluginVersionLabel:u}=Kp(i),p=new URLSearchParams;return p.set("template","install_help.yml"),n&&p.set("os",n),r&&p.set("node",r),d&&p.set("ai-client",d),u&&p.set("plugin-version",u),p.toString()}const fS=[{id:"bug",labelKey:"sidebar.help.bug",tooltipKey:"sidebar.help.bug.tooltip",icon:Af,buildUrl:i=>`${Tl}/issues/new?${mS(i)}`},{id:"feature",labelKey:"sidebar.help.feature",tooltipKey:"sidebar.help.feature.tooltip",icon:Gf,buildUrl:()=>`${Tl}/issues/new?template=feature_request.yml`},{id:"discussions",labelKey:"sidebar.help.discussions",tooltipKey:"sidebar.help.discussions.tooltip",icon:Zf,buildUrl:i=>`${Tl}/issues/new?${yS(i)}`},{id:"troubleshooting",labelKey:"sidebar.help.troubleshooting",tooltipKey:"sidebar.help.troubleshooting.tooltip",icon:xf,buildUrl:i=>`${hS}/${i.locale}/docs/troubleshooting/`}];function SS(){const[i,n]=R.useState("basic"),[r,d]=R.useState(0),[u,p]=R.useState(0),[g,y]=R.useState(0),[h,v]=R.useState(!0);R.useEffect(()=>{let P=!1;async function D(){try{return await Np("auto")}catch{return null}}async function L(){var N,le;try{const[W,oe]=await Promise.all([D(),jt.get("/api/dashboard/tool-stats").catch(()=>null)]);if(P)return;if(W!=null&&W.tier&&n(W.tier),oe!=null&&oe.tierSummary){const V=((N=oe.tierSummary.basic)==null?void 0:N.totalCalls)??0,pe=((le=oe.tierSummary.pro)==null?void 0:le.totalCalls)??0;y(V),p(pe),d(V+pe)}}catch{}finally{P||v(!1)}}L();const B=new Ql;B.connect();const H=B.on("license",()=>{D().then(N=>{!P&&(N!=null&&N.tier)&&n(N.tier)})});return()=>{P=!0,H(),B.disconnect()}},[]);const C=r>0?u/r*100:0;return{tier:i,proUsagePercent:C,totalCalls:r,proCalls:u,basicCalls:g,loading:h}}const vS="https://weppyai.com/plans/";function Ra(i){const n=new URLSearchParams({utm_source:"weppy_dashboard",utm_medium:"app",utm_campaign:"pro_upgrade",utm_content:i});return`${vS}?${n.toString()}`}const bS={sidebarUpgrade:Ra("sidebar_upgrade"),settingsLicense:Ra("settings_license"),sync:Ra("sync_tier_panel"),changelog:Ra("changelog_limit_notice"),playtest:Ra("playtest_sample_banner"),uiStudioAnalysis:Ra("ui_studio_analysis_banner"),uiStudioHistory:Ra("ui_studio_history_banner")},PS=5e3,CS=5;function wS(i){return i.replace(/^\//,"").split("/")[0]||"overview"}function kS(i,n){const r=new URLSearchParams(n);if(i==="ui-studio")return r.get("tab")==="history"?"ui_studio_history":"ui_studio_analysis";if(i==="tools")return"tools_history";if(i==="changelog")return"changelog_all"}function ds(i,n){const r=wS(i);if(n===void 0)return r;const d=kS(r,n);return d?{page:r,tab:d}:{page:r}}let ci=[],np=null;function Vp(){if(ci.length===0)return;const i=ci.splice(0),n=`${zn}/api/dashboard/analytics`,r=JSON.stringify({events:i});fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r}).catch(()=>{})}function xS(){np||(np=setInterval(Vp,PS))}function rp(i){ci.push(i),xS(),ci.length>=CS&&Vp()}typeof window<"u"&&window.addEventListener("beforeunload",()=>{if(ci.length===0)return;const i=`${zn}/api/dashboard/analytics`,n=JSON.stringify({events:ci.splice(0)});navigator.sendBeacon(i,new Blob([n],{type:"application/json"}))});function us(){const i=R.useCallback((r,d)=>{rp({name:r,params:d})},[]),n=R.useCallback(r=>{rp({name:"dashboard_page_view",params:{...typeof r=="string"?{page:r}:r}})},[]);return{trackEvent:i,trackPageView:n}}const RS="_widget_1q1ab_1",AS="_header_1q1ab_12",IS="_sparkle_1q1ab_18",DS="_title_1q1ab_23",jS="_actions_1q1ab_31",ES="_cta_1q1ab_37",TS="_licenseCta_1q1ab_38",LS="_collapsedGroup_1q1ab_70",US="_collapsed_1q1ab_70",HS="_collapsedSecondary_1q1ab_91",oo={widget:RS,header:AS,sparkle:IS,title:DS,actions:jS,cta:ES,licenseCta:TS,collapsedGroup:LS,collapsed:US,collapsedSecondary:HS};function MS({collapsed:i=!1}){const{tier:n}=SS(),{t:r}=Lo(),{trackEvent:d}=us(),{pathname:u,search:p}=Vt();if(n==="pro")return null;const g=bS.sidebarUpgrade,y="/settings?section=license",h=ds(u,p),v=()=>{d("dashboard_click_event",{click_target:"upgrade_cta",placement:"sidebar_upgrade",...h})},C=()=>{d("dashboard_click_event",{click_target:"license_shortcut",placement:"sidebar_license",...h})};return i?x.jsxs("div",{className:oo.collapsedGroup,children:[x.jsx("a",{href:g,target:"_blank",rel:"noopener noreferrer",className:oo.collapsed,title:r("upgrade.title","View Pro"),"aria-label":r("upgrade.title","View Pro"),onClick:v,children:x.jsx(sp,{size:18,strokeWidth:1.75})}),x.jsx(ja,{to:y,className:`${oo.collapsed} ${oo.collapsedSecondary}`,title:r("upgrade.licenseShortcut","Enter License"),"aria-label":r("upgrade.licenseShortcut","Enter License"),onClick:C,children:x.jsx(ip,{size:18,strokeWidth:1.75})})]}):x.jsxs("div",{className:oo.widget,children:[x.jsxs("div",{className:oo.header,children:[x.jsx(sp,{size:16,strokeWidth:1.75,className:oo.sparkle}),x.jsx("span",{className:oo.title,children:r("upgrade.tagline","Check Pro features")})]}),x.jsxs("div",{className:oo.actions,children:[x.jsxs("a",{href:g,target:"_blank",rel:"noopener noreferrer",className:oo.cta,onClick:v,children:[r("upgrade.cta","View Pro")," →"]}),x.jsxs(ja,{to:y,className:oo.licenseCta,onClick:C,children:[x.jsx(ip,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"}),x.jsx("span",{children:r("upgrade.licenseShortcut","Enter License")})]})]})]})}const zS="_backdrop_1r5ey_1",_S="_dialog_1r5ey_11",NS="_header_1r5ey_21",OS="_titleBlock_1r5ey_30",qS="_title_1r5ey_30",BS="_subtitle_1r5ey_42",WS="_closeButton_1r5ey_49",FS="_body_1r5ey_67",KS="_statusBox_1r5ey_73",VS="_errorBox_1r5ey_74",YS="_spin_1r5ey_92",GS="_bundleBlock_1r5ey_102",XS="_label_1r5ey_107",$S="_bundleName_1r5ey_115",QS="_guidanceBox_1r5ey_127",ZS="_includedList_1r5ey_143",JS="_includedItem_1r5ey_152",ev="_actions_1r5ey_163",tv="_button_1r5ey_169",ov="_primaryLink_1r5ey_170",av="_hint_1r5ey_206",We={backdrop:zS,dialog:_S,header:NS,titleBlock:OS,title:qS,subtitle:BS,closeButton:WS,body:FS,statusBox:KS,errorBox:VS,spin:YS,bundleBlock:GS,label:XS,bundleName:$S,guidanceBox:QS,includedList:ZS,includedItem:JS,actions:ev,button:tv,primaryLink:ov,hint:av};function Ll(){return typeof navigator<"u"?navigator.userAgent:""}function iv(i){window.open(i,"_blank","noopener,noreferrer")}function sv({open:i,fallbackHref:n,onClose:r}){const{locale:d,t:u}=Lo(),p=R.useId(),[g,y]=R.useState(!1),[h,v]=R.useState(null),[C,P]=R.useState(null),[D,L]=R.useState("idle");if(R.useEffect(()=>{if(!i)return;let V=!1;const pe=Ll();return y(!0),v(null),P(null),L("idle"),jt.post("/api/dashboard/support/bug-report",{os:Bl(pe),userAgent:pe,locale:d}).then(De=>{V||(v(De),y(!1))}).catch(()=>{V||(P(u("bugReportDialog.error","Could not create the diagnostics bundle. You can still open GitHub without diagnostics.")),y(!1))}),()=>{V=!0}},[i,d]),R.useEffect(()=>{if(!i||g)return;function V(pe){pe.key==="Escape"&&r()}return window.addEventListener("keydown",V),()=>window.removeEventListener("keydown",V)},[i,g,r]),!i)return null;async function B(){if(h)try{L("opening"),await jt.post("/api/dashboard/support/bug-report/reveal",{bundleName:h.bundleName}),L("opened")}catch{L("failed")}}const H=h!==null,N=(h==null?void 0:h.issueUrl)??n,le=(h==null?void 0:h.includedFiles)??[],W=D==="opening"?u("bugReportDialog.reveal.opening","Opening..."):D==="opened"?u("bugReportDialog.reveal.opened","Opened location"):u("bugReportDialog.reveal","Reveal in Finder"),oe=x.jsx("div",{className:We.backdrop,onClick:g?void 0:r,children:x.jsxs("section",{className:We.dialog,role:"dialog","aria-modal":"true","aria-labelledby":p,onClick:V=>V.stopPropagation(),children:[x.jsxs("div",{className:We.header,children:[x.jsxs("div",{className:We.titleBlock,children:[x.jsx("h2",{id:p,className:We.title,children:u("bugReportDialog.title","diagnostics.zip can help us investigate")}),x.jsx("p",{className:We.subtitle,children:u("bugReportDialog.subtitle","WEPPY created a diagnostics zip on your computer. It includes Studio, plugin, Sync, and tool logs that can help us understand what happened.")})]}),x.jsx("button",{type:"button",className:We.closeButton,"aria-label":u("bugReportDialog.close","Close"),onClick:r,disabled:g,children:x.jsx(gS,{size:16,strokeWidth:1.75,"aria-hidden":"true"})})]}),x.jsxs("div",{className:We.body,children:[g&&x.jsxs("div",{className:We.statusBox,role:"status",children:[x.jsx($f,{className:We.spin,size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:u("bugReportDialog.loading","Preparing diagnostics.zip...")})]}),C&&x.jsxs("div",{className:We.errorBox,role:"alert",children:[x.jsx(Uf,{size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:C})]}),H&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:We.guidanceBox,children:[x.jsx("p",{children:u("bugReportDialog.optional","You can submit the bug report without this file, but attaching it usually helps us find the cause faster.")}),x.jsx("p",{children:u("bugReportDialog.attachHow","To attach it, download or reveal the zip, then add it to the Diagnostics ZIP (optional) upload field on GitHub before you submit.")})]}),x.jsxs("div",{className:We.bundleBlock,children:[x.jsx("span",{className:We.label,children:u("bugReportDialog.bundle","Bundle")}),x.jsx("code",{className:We.bundleName,children:h.bundleName})]}),x.jsxs("div",{className:We.bundleBlock,children:[x.jsx("span",{className:We.label,children:u("bugReportDialog.included","Included")}),x.jsx("ul",{className:We.includedList,children:le.length>0?le.map(V=>x.jsx("li",{className:We.includedItem,children:V.label},`${V.label}:${V.archivePath??V.path}`)):x.jsx("li",{className:We.includedItem,children:u("bugReportDialog.included.none","No log files found")})})]}),D==="failed"&&x.jsxs("div",{className:We.errorBox,role:"alert",children:[x.jsx(ap,{size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:u("bugReportDialog.reveal.failed","Could not open the file location.")})]})]}),x.jsxs("div",{className:We.actions,children:[H&&x.jsxs(x.Fragment,{children:[x.jsxs("a",{className:We.primaryLink,href:h.downloadUrl,download:h.bundleName,children:[x.jsx(Ef,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),u("bugReportDialog.download","1. Download diagnostics.zip")]}),x.jsxs("button",{type:"button",className:We.button,onClick:()=>void B(),disabled:D==="opening",children:[x.jsx(ap,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),W]})]}),C&&!H&&x.jsxs("button",{type:"button",className:We.button,onClick:()=>{P(null),y(!0),jt.post("/api/dashboard/support/bug-report",{os:Bl(Ll()),userAgent:Ll(),locale:d}).then(V=>{v(V),y(!1)}).catch(()=>{P(u("bugReportDialog.error","Could not create the diagnostics bundle. You can still open GitHub without diagnostics.")),y(!1)})},children:[x.jsx(Bp,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),u("bugReportDialog.retry","Try again")]}),x.jsxs("button",{type:"button",className:We.button,onClick:()=>iv(N),disabled:g,children:[x.jsx(qp,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),H?u("bugReportDialog.openGithub","2. Open GitHub issue"):u("bugReportDialog.openGithubFallback","Open GitHub without diagnostics")]})]}),x.jsx("p",{className:We.hint,children:u("bugReportDialog.hint","The zip can contain local logs and project context. Review it before attaching if you want to share it.")})]})]})});return typeof document>"u"?oe:Ln.createPortal(oe,document.body)}const nv="_sidebar_19hyu_2",rv="_brand_19hyu_17",lv="_brandIcon_19hyu_28",dv="_brandText_19hyu_33",uv="_brandTextPro_19hyu_44",cv="_nav_19hyu_50",pv="_spacer_19hyu_57",gv="_navLink_19hyu_63",hv="_active_19hyu_84",mv="_disabled_19hyu_91",yv="_icon_19hyu_102",fv="_label_19hyu_113",Sv="_secondaryDivider_19hyu_120",vv="_secondaryNav_19hyu_127",bv="_secondaryNavEntry_19hyu_134",Pv="_secondaryItemDivider_19hyu_140",Cv="_helpDivider_19hyu_147",wv="_helpGroupTitle_19hyu_154",kv="_helpNav_19hyu_165",xv="_externalIcon_19hyu_172",Je={sidebar:nv,brand:rv,brandIcon:lv,brandText:dv,brandTextPro:uv,nav:cv,spacer:pv,navLink:gv,active:hv,disabled:mv,icon:yv,label:fv,secondaryDivider:Sv,secondaryNav:vv,secondaryNavEntry:bv,secondaryItemDivider:Pv,helpDivider:Cv,helpGroupTitle:wv,helpNav:kv,externalIcon:xv},Rv={bug:"sidebar_help_bug",feature:"sidebar_help_feature",discussions:"sidebar_help_community",troubleshooting:"sidebar_help_troubleshooting"};function Av(){const[i,n]=R.useState(!1);return R.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const r=window.matchMedia("(max-width: 768px)"),d=()=>n(r.matches);return d(),r.addEventListener("change",d),()=>r.removeEventListener("change",d)},[]),i}const lp={disconnected:0,serverOnly:1,studioConnected:2};function Iv(i,n){return lp[i]>=lp[n]}function Dv(i,n){return i==="serverOnly"?n("sidebar.gate.l1","MCP server connection required"):i==="studioConnected"?n("sidebar.gate.l2","Roblox Studio plugin connection required"):""}function dp({item:i}){const{level:n}=_n(),{t:r}=Lo(),d=Iv(n,i.minLevel),u=i.icon,p=x.jsxs(Iy,{to:i.route,end:i.route==="/",className:({isActive:g})=>[Je.navLink,g?Je.active:"",d?"":Je.disabled].filter(Boolean).join(" "),onClick:g=>{d||g.preventDefault()},children:[x.jsx("span",{className:Je.icon,children:x.jsx(u,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{className:Je.label,children:r(i.labelKey)})]});return d?p:x.jsx(Ft,{text:Dv(i.minLevel,r),children:p})}function jv({item:i,ctx:n}){const{t:r}=Lo(),{trackEvent:d}=us(),{pathname:u,search:p}=Vt(),g=i.icon,y=i.buildUrl(n),h=r(i.tooltipKey,""),v=ds(u,p),[C,P]=R.useState(!1),D=x.jsxs("a",{href:y,target:"_blank",rel:"noopener noreferrer",className:Je.navLink,"data-testid":`sidebar-help-${i.id}`,onClick:B=>{d("dashboard_click_event",{click_target:Rv[i.id],placement:"sidebar_help",...v}),i.id==="bug"&&(B.preventDefault(),P(!0))},children:[x.jsx("span",{className:Je.icon,children:x.jsx(g,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{className:Je.label,children:r(i.labelKey)}),x.jsx("span",{className:Je.externalIcon,"aria-hidden":"true",children:x.jsx(qp,{size:12,strokeWidth:1.75})})]}),L=h?x.jsx(Ft,{text:h,children:D}):D;return x.jsxs(x.Fragment,{children:[L,i.id==="bug"&&x.jsx(sv,{open:C,fallbackHref:y,onClose:()=>P(!1)})]})}function Ev(){const[i,n]=R.useState("basic"),r=Av(),{status:d}=_n(),{locale:u,t:p}=Lo(),g={locale:u,status:d};return R.useEffect(()=>{let y=!1;async function h(){try{const P=await Np("auto");!y&&(P!=null&&P.tier)&&n(P.tier)}catch{y||n("basic")}}h();const v=new Ql;v.connect();const C=v.on("license",()=>{h()});return()=>{y=!0,C(),v.disconnect()}},[]),x.jsxs("aside",{className:Je.sidebar,children:[x.jsxs("div",{className:Je.brand,children:[x.jsx("span",{className:Je.brandIcon,children:x.jsx(Df,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{"data-testid":"sidebar-brand-text",className:[Je.brandText,i==="pro"?Je.brandTextPro:""].filter(Boolean).join(" "),children:"WEPPY"})]}),x.jsx("nav",{className:Je.nav,children:Fp.map(y=>x.jsx(dp,{item:y},y.route))}),x.jsx("div",{className:Je.secondaryDivider}),x.jsx("nav",{className:Je.secondaryNav,children:ql.map((y,h)=>x.jsxs("div",{className:Je.secondaryNavEntry,children:[x.jsx(dp,{item:y}),h<ql.length-1?x.jsx("div",{className:Je.secondaryItemDivider,"data-testid":"sidebar-controls-whats-new-divider","aria-hidden":"true"}):null]},y.route))}),x.jsx("div",{className:Je.helpDivider,"aria-hidden":"true"}),x.jsx("div",{className:Je.helpGroupTitle,"aria-label":p("sidebar.help.group"),children:p("sidebar.help.group")}),x.jsx("nav",{className:Je.helpNav,"aria-label":p("sidebar.help.group"),children:fS.map(y=>x.jsx(jv,{item:y,ctx:g},y.id))}),x.jsx("div",{className:Je.spacer}),x.jsx(MS,{collapsed:r})]})}async function Tv(){return jt.get("/api/dashboard/place-summary")}async function Lv(){return jt.get("/api/dashboard/sync-root")}async function zb(){return jt.post("/api/dashboard/sync-root/pick")}async function _b(i){return jt.patch("/api/dashboard/sync-root",{projectRoot:i})}const Uv=[{id:"2026-07-30-luau-syntax-validation",date:"2026-07-30",title:{en:"Catch Luau syntax errors before Playtest",ko:"Playtest 전에 Luau 문법 오류를 확인하세요",es:"Detecta errores de sintaxis Luau antes de Playtest","pt-br":"Encontre erros de sintaxe Luau antes do Playtest",ja:"Playtestの前にLuauの構文エラーを確認できます",id:"Temukan error sintaks Luau sebelum Playtest",de:"Luau-Syntaxfehler vor dem Playtest erkennen","fr-fr":"Détectez les erreurs de syntaxe Luau avant le Playtest"},body:{en:`Luau syntax validation is available for script work. It is Off by default. Turn it on under Controls > Luau Syntax Validation to check the source that was actually saved after supported script writes, without starting Playtest.
314
+ */const pS=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],gS=Ke("x",pS),Fp=[{labelKey:"sidebar.overview",route:"/",icon:Vf,minLevel:"disconnected",lazy:()=>Kt(()=>import("./OverviewPage-a_Newk4P.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))},{labelKey:"sidebar.connection",route:"/connection",icon:iS,minLevel:"disconnected",lazy:()=>Kt(()=>import("./ConnectionPage-e-YP0BDu.js"),__vite__mapDeps([13,1,2,3,4,5,6,7,8,14,15,16,11,17,18]))},{labelKey:"sidebar.sync",route:"/sync",icon:Bp,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./SyncPage-CsQe96fg.js"),__vite__mapDeps([19,2,3,4,5,1,8,14,15,16,20,21,6,7,22]))},{labelKey:"sidebar.assets",route:"/assets",icon:oS,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./AssetsPage-FUa9ddzs.js"),__vite__mapDeps([23,14,15,16,2,3,4,5,8,17,24]))},{labelKey:"sidebar.changelog",route:"/changelog",icon:qf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ChangelogPage-M0lIALvl.js"),__vite__mapDeps([25,2,3,4,5,14,15,16,20,21,8,26,27,28]))},{labelKey:"sidebar.playtest",route:"/playtest",icon:Nf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./PlaytestPage-CN7oefOU.js"),__vite__mapDeps([29,2,3,4,5,1,20,21,8,14,15,16,30]))},{labelKey:"sidebar.ui_studio",route:"/ui-studio",icon:Wf,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./UiStudioPage-Bnbxjpb2.js"),__vite__mapDeps([31,1,8,3,4,32,33,26,27,2,5,20,21,34]))},{labelKey:"sidebar.tools",route:"/tools",icon:cS,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ToolsPage-a0ReLV98.js"),__vite__mapDeps([35,2,3,4,5,8,14,15,16,20,21,26,27,36]))}],ql=[{labelKey:"sidebar.controls",route:"/controls",icon:Wp,minLevel:"serverOnly",lazy:()=>Kt(()=>import("./ControlsPage-DlaSStpW.js"),__vite__mapDeps([37,2,3,4,5,1,15,16,8,38,39,17]))},{labelKey:"sidebar.whatsNew",route:"/whats-new",icon:wf,minLevel:"disconnected",lazy:()=>Kt(()=>import("./WhatsNewPage-CD2k2oln.js"),__vite__mapDeps([40,2,3,4,5,41]))}],Tl="https://github.com/hope1026/weppy-roblox-mcp",hS="https://weppyai.com";function Bl(i){return i?/Mac OS X|Macintosh/i.test(i)?"macOS":/Windows NT/i.test(i)?"Windows":/Linux/i.test(i)?"Linux":"":""}function Kp(i){var v,C,P,D,L;const n=Bl(typeof navigator<"u"?navigator.userAgent:""),r=i.status,d=(r==null?void 0:r.version)??"",u=((C=(v=r==null?void 0:r.pluginClients)==null?void 0:v[0])==null?void 0:C.pluginVersion)??"",p=((D=(P=r==null?void 0:r.pluginClients)==null?void 0:P[0])==null?void 0:D.studioVersion)??"",g=d||u||p?[d?`MCP ${d}`:"",u?`Plugin ${u}`:"",p?`Studio ${p}`:""].filter(Boolean).join(" / "):"",y=((L=r==null?void 0:r.aiClientNames)==null?void 0:L[0])??"",h=(r==null?void 0:r.nodeVersion)??"";return{os:n,nodeVersion:h,aiClient:y,pluginVersionLabel:g}}function mS(i){const{os:n,nodeVersion:r,aiClient:d,pluginVersionLabel:u}=Kp(i),p=new URLSearchParams;return p.set("template","bug_report.yml"),n&&p.set("os",n),r&&p.set("node",r),d&&p.set("ai-client",d),u&&p.set("plugin-version",u),p.toString()}function yS(i){const{os:n,nodeVersion:r,aiClient:d,pluginVersionLabel:u}=Kp(i),p=new URLSearchParams;return p.set("template","install_help.yml"),n&&p.set("os",n),r&&p.set("node",r),d&&p.set("ai-client",d),u&&p.set("plugin-version",u),p.toString()}const fS=[{id:"bug",labelKey:"sidebar.help.bug",tooltipKey:"sidebar.help.bug.tooltip",icon:Af,buildUrl:i=>`${Tl}/issues/new?${mS(i)}`},{id:"feature",labelKey:"sidebar.help.feature",tooltipKey:"sidebar.help.feature.tooltip",icon:Gf,buildUrl:()=>`${Tl}/issues/new?template=feature_request.yml`},{id:"discussions",labelKey:"sidebar.help.discussions",tooltipKey:"sidebar.help.discussions.tooltip",icon:Zf,buildUrl:i=>`${Tl}/issues/new?${yS(i)}`},{id:"troubleshooting",labelKey:"sidebar.help.troubleshooting",tooltipKey:"sidebar.help.troubleshooting.tooltip",icon:xf,buildUrl:i=>`${hS}/${i.locale}/docs/troubleshooting/`}];function SS(){const[i,n]=R.useState("basic"),[r,d]=R.useState(0),[u,p]=R.useState(0),[g,y]=R.useState(0),[h,v]=R.useState(!0);R.useEffect(()=>{let P=!1;async function D(){try{return await Np("auto")}catch{return null}}async function L(){var N,le;try{const[W,oe]=await Promise.all([D(),jt.get("/api/dashboard/tool-stats").catch(()=>null)]);if(P)return;if(W!=null&&W.tier&&n(W.tier),oe!=null&&oe.tierSummary){const V=((N=oe.tierSummary.basic)==null?void 0:N.totalCalls)??0,pe=((le=oe.tierSummary.pro)==null?void 0:le.totalCalls)??0;y(V),p(pe),d(V+pe)}}catch{}finally{P||v(!1)}}L();const B=new Ql;B.connect();const H=B.on("license",()=>{D().then(N=>{!P&&(N!=null&&N.tier)&&n(N.tier)})});return()=>{P=!0,H(),B.disconnect()}},[]);const C=r>0?u/r*100:0;return{tier:i,proUsagePercent:C,totalCalls:r,proCalls:u,basicCalls:g,loading:h}}const vS="https://weppyai.com/plans/";function Ra(i){const n=new URLSearchParams({utm_source:"weppy_dashboard",utm_medium:"app",utm_campaign:"pro_upgrade",utm_content:i});return`${vS}?${n.toString()}`}const bS={sidebarUpgrade:Ra("sidebar_upgrade"),settingsLicense:Ra("settings_license"),sync:Ra("sync_tier_panel"),changelog:Ra("changelog_limit_notice"),playtest:Ra("playtest_sample_banner"),uiStudioAnalysis:Ra("ui_studio_analysis_banner"),uiStudioHistory:Ra("ui_studio_history_banner")},PS=5e3,CS=5;function wS(i){return i.replace(/^\//,"").split("/")[0]||"overview"}function kS(i,n){const r=new URLSearchParams(n);if(i==="ui-studio")return r.get("tab")==="history"?"ui_studio_history":"ui_studio_analysis";if(i==="tools")return"tools_history";if(i==="changelog")return"changelog_all"}function ds(i,n){const r=wS(i);if(n===void 0)return r;const d=kS(r,n);return d?{page:r,tab:d}:{page:r}}let ci=[],np=null;function Vp(){if(ci.length===0)return;const i=ci.splice(0),n=`${zn}/api/dashboard/analytics`,r=JSON.stringify({events:i});fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r}).catch(()=>{})}function xS(){np||(np=setInterval(Vp,PS))}function rp(i){ci.push(i),xS(),ci.length>=CS&&Vp()}typeof window<"u"&&window.addEventListener("beforeunload",()=>{if(ci.length===0)return;const i=`${zn}/api/dashboard/analytics`,n=JSON.stringify({events:ci.splice(0)});navigator.sendBeacon(i,new Blob([n],{type:"application/json"}))});function us(){const i=R.useCallback((r,d)=>{rp({name:r,params:d})},[]),n=R.useCallback(r=>{rp({name:"dashboard_page_view",params:{...typeof r=="string"?{page:r}:r}})},[]);return{trackEvent:i,trackPageView:n}}const RS="_widget_1q1ab_1",AS="_header_1q1ab_12",IS="_sparkle_1q1ab_18",DS="_title_1q1ab_23",jS="_actions_1q1ab_31",ES="_cta_1q1ab_37",TS="_licenseCta_1q1ab_38",LS="_collapsedGroup_1q1ab_70",US="_collapsed_1q1ab_70",HS="_collapsedSecondary_1q1ab_91",oo={widget:RS,header:AS,sparkle:IS,title:DS,actions:jS,cta:ES,licenseCta:TS,collapsedGroup:LS,collapsed:US,collapsedSecondary:HS};function MS({collapsed:i=!1}){const{tier:n}=SS(),{t:r}=Lo(),{trackEvent:d}=us(),{pathname:u,search:p}=Vt();if(n==="pro")return null;const g=bS.sidebarUpgrade,y="/settings?section=license",h=ds(u,p),v=()=>{d("dashboard_click_event",{click_target:"upgrade_cta",placement:"sidebar_upgrade",...h})},C=()=>{d("dashboard_click_event",{click_target:"license_shortcut",placement:"sidebar_license",...h})};return i?x.jsxs("div",{className:oo.collapsedGroup,children:[x.jsx("a",{href:g,target:"_blank",rel:"noopener noreferrer",className:oo.collapsed,title:r("upgrade.title","View Pro"),"aria-label":r("upgrade.title","View Pro"),onClick:v,children:x.jsx(sp,{size:18,strokeWidth:1.75})}),x.jsx(ja,{to:y,className:`${oo.collapsed} ${oo.collapsedSecondary}`,title:r("upgrade.licenseShortcut","Enter License"),"aria-label":r("upgrade.licenseShortcut","Enter License"),onClick:C,children:x.jsx(ip,{size:18,strokeWidth:1.75})})]}):x.jsxs("div",{className:oo.widget,children:[x.jsxs("div",{className:oo.header,children:[x.jsx(sp,{size:16,strokeWidth:1.75,className:oo.sparkle}),x.jsx("span",{className:oo.title,children:r("upgrade.tagline","Check Pro features")})]}),x.jsxs("div",{className:oo.actions,children:[x.jsxs("a",{href:g,target:"_blank",rel:"noopener noreferrer",className:oo.cta,onClick:v,children:[r("upgrade.cta","View Pro")," →"]}),x.jsxs(ja,{to:y,className:oo.licenseCta,onClick:C,children:[x.jsx(ip,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"}),x.jsx("span",{children:r("upgrade.licenseShortcut","Enter License")})]})]})]})}const zS="_backdrop_1r5ey_1",_S="_dialog_1r5ey_11",NS="_header_1r5ey_21",OS="_titleBlock_1r5ey_30",qS="_title_1r5ey_30",BS="_subtitle_1r5ey_42",WS="_closeButton_1r5ey_49",FS="_body_1r5ey_67",KS="_statusBox_1r5ey_73",VS="_errorBox_1r5ey_74",YS="_spin_1r5ey_92",GS="_bundleBlock_1r5ey_102",XS="_label_1r5ey_107",$S="_bundleName_1r5ey_115",QS="_guidanceBox_1r5ey_127",ZS="_includedList_1r5ey_143",JS="_includedItem_1r5ey_152",ev="_actions_1r5ey_163",tv="_button_1r5ey_169",ov="_primaryLink_1r5ey_170",av="_hint_1r5ey_206",We={backdrop:zS,dialog:_S,header:NS,titleBlock:OS,title:qS,subtitle:BS,closeButton:WS,body:FS,statusBox:KS,errorBox:VS,spin:YS,bundleBlock:GS,label:XS,bundleName:$S,guidanceBox:QS,includedList:ZS,includedItem:JS,actions:ev,button:tv,primaryLink:ov,hint:av};function Ll(){return typeof navigator<"u"?navigator.userAgent:""}function iv(i){window.open(i,"_blank","noopener,noreferrer")}function sv({open:i,fallbackHref:n,onClose:r}){const{locale:d,t:u}=Lo(),p=R.useId(),[g,y]=R.useState(!1),[h,v]=R.useState(null),[C,P]=R.useState(null),[D,L]=R.useState("idle");if(R.useEffect(()=>{if(!i)return;let V=!1;const pe=Ll();return y(!0),v(null),P(null),L("idle"),jt.post("/api/dashboard/support/bug-report",{os:Bl(pe),userAgent:pe,locale:d}).then(De=>{V||(v(De),y(!1))}).catch(()=>{V||(P(u("bugReportDialog.error","Could not create the diagnostics bundle. You can still open GitHub without diagnostics.")),y(!1))}),()=>{V=!0}},[i,d]),R.useEffect(()=>{if(!i||g)return;function V(pe){pe.key==="Escape"&&r()}return window.addEventListener("keydown",V),()=>window.removeEventListener("keydown",V)},[i,g,r]),!i)return null;async function B(){if(h)try{L("opening"),await jt.post("/api/dashboard/support/bug-report/reveal",{bundleName:h.bundleName}),L("opened")}catch{L("failed")}}const H=h!==null,N=(h==null?void 0:h.issueUrl)??n,le=(h==null?void 0:h.includedFiles)??[],W=D==="opening"?u("bugReportDialog.reveal.opening","Opening..."):D==="opened"?u("bugReportDialog.reveal.opened","Opened location"):u("bugReportDialog.reveal","Reveal in Finder"),oe=x.jsx("div",{className:We.backdrop,onClick:g?void 0:r,children:x.jsxs("section",{className:We.dialog,role:"dialog","aria-modal":"true","aria-labelledby":p,onClick:V=>V.stopPropagation(),children:[x.jsxs("div",{className:We.header,children:[x.jsxs("div",{className:We.titleBlock,children:[x.jsx("h2",{id:p,className:We.title,children:u("bugReportDialog.title","diagnostics.zip can help us investigate")}),x.jsx("p",{className:We.subtitle,children:u("bugReportDialog.subtitle","WEPPY created a diagnostics zip on your computer. It includes Studio, plugin, Sync, and tool logs that can help us understand what happened.")})]}),x.jsx("button",{type:"button",className:We.closeButton,"aria-label":u("bugReportDialog.close","Close"),onClick:r,disabled:g,children:x.jsx(gS,{size:16,strokeWidth:1.75,"aria-hidden":"true"})})]}),x.jsxs("div",{className:We.body,children:[g&&x.jsxs("div",{className:We.statusBox,role:"status",children:[x.jsx($f,{className:We.spin,size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:u("bugReportDialog.loading","Preparing diagnostics.zip...")})]}),C&&x.jsxs("div",{className:We.errorBox,role:"alert",children:[x.jsx(Uf,{size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:C})]}),H&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:We.guidanceBox,children:[x.jsx("p",{children:u("bugReportDialog.optional","You can submit the bug report without this file, but attaching it usually helps us find the cause faster.")}),x.jsx("p",{children:u("bugReportDialog.attachHow","To attach it, download or reveal the zip, then add it to the Diagnostics ZIP (optional) upload field on GitHub before you submit.")})]}),x.jsxs("div",{className:We.bundleBlock,children:[x.jsx("span",{className:We.label,children:u("bugReportDialog.bundle","Bundle")}),x.jsx("code",{className:We.bundleName,children:h.bundleName})]}),x.jsxs("div",{className:We.bundleBlock,children:[x.jsx("span",{className:We.label,children:u("bugReportDialog.included","Included")}),x.jsx("ul",{className:We.includedList,children:le.length>0?le.map(V=>x.jsx("li",{className:We.includedItem,children:V.label},`${V.label}:${V.archivePath??V.path}`)):x.jsx("li",{className:We.includedItem,children:u("bugReportDialog.included.none","No log files found")})})]}),D==="failed"&&x.jsxs("div",{className:We.errorBox,role:"alert",children:[x.jsx(ap,{size:18,strokeWidth:1.75,"aria-hidden":"true"}),x.jsx("span",{children:u("bugReportDialog.reveal.failed","Could not open the file location.")})]})]}),x.jsxs("div",{className:We.actions,children:[H&&x.jsxs(x.Fragment,{children:[x.jsxs("a",{className:We.primaryLink,href:h.downloadUrl,download:h.bundleName,children:[x.jsx(Ef,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),u("bugReportDialog.download","1. Download diagnostics.zip")]}),x.jsxs("button",{type:"button",className:We.button,onClick:()=>void B(),disabled:D==="opening",children:[x.jsx(ap,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),W]})]}),C&&!H&&x.jsxs("button",{type:"button",className:We.button,onClick:()=>{P(null),y(!0),jt.post("/api/dashboard/support/bug-report",{os:Bl(Ll()),userAgent:Ll(),locale:d}).then(V=>{v(V),y(!1)}).catch(()=>{P(u("bugReportDialog.error","Could not create the diagnostics bundle. You can still open GitHub without diagnostics.")),y(!1)})},children:[x.jsx(Bp,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),u("bugReportDialog.retry","Try again")]}),x.jsxs("button",{type:"button",className:We.button,onClick:()=>iv(N),disabled:g,children:[x.jsx(qp,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),H?u("bugReportDialog.openGithub","2. Open GitHub issue"):u("bugReportDialog.openGithubFallback","Open GitHub without diagnostics")]})]}),x.jsx("p",{className:We.hint,children:u("bugReportDialog.hint","The zip can contain local logs and project context. Review it before attaching if you want to share it.")})]})]})});return typeof document>"u"?oe:Ln.createPortal(oe,document.body)}const nv="_sidebar_19hyu_2",rv="_brand_19hyu_17",lv="_brandIcon_19hyu_28",dv="_brandText_19hyu_33",uv="_brandTextPro_19hyu_44",cv="_nav_19hyu_50",pv="_spacer_19hyu_57",gv="_navLink_19hyu_63",hv="_active_19hyu_84",mv="_disabled_19hyu_91",yv="_icon_19hyu_102",fv="_label_19hyu_113",Sv="_secondaryDivider_19hyu_120",vv="_secondaryNav_19hyu_127",bv="_secondaryNavEntry_19hyu_134",Pv="_secondaryItemDivider_19hyu_140",Cv="_helpDivider_19hyu_147",wv="_helpGroupTitle_19hyu_154",kv="_helpNav_19hyu_165",xv="_externalIcon_19hyu_172",Je={sidebar:nv,brand:rv,brandIcon:lv,brandText:dv,brandTextPro:uv,nav:cv,spacer:pv,navLink:gv,active:hv,disabled:mv,icon:yv,label:fv,secondaryDivider:Sv,secondaryNav:vv,secondaryNavEntry:bv,secondaryItemDivider:Pv,helpDivider:Cv,helpGroupTitle:wv,helpNav:kv,externalIcon:xv},Rv={bug:"sidebar_help_bug",feature:"sidebar_help_feature",discussions:"sidebar_help_community",troubleshooting:"sidebar_help_troubleshooting"};function Av(){const[i,n]=R.useState(!1);return R.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const r=window.matchMedia("(max-width: 768px)"),d=()=>n(r.matches);return d(),r.addEventListener("change",d),()=>r.removeEventListener("change",d)},[]),i}const lp={disconnected:0,serverOnly:1,studioConnected:2};function Iv(i,n){return lp[i]>=lp[n]}function Dv(i,n){return i==="serverOnly"?n("sidebar.gate.l1","MCP server connection required"):i==="studioConnected"?n("sidebar.gate.l2","Roblox Studio plugin connection required"):""}function dp({item:i}){const{level:n}=_n(),{t:r}=Lo(),d=Iv(n,i.minLevel),u=i.icon,p=x.jsxs(Iy,{to:i.route,end:i.route==="/",className:({isActive:g})=>[Je.navLink,g?Je.active:"",d?"":Je.disabled].filter(Boolean).join(" "),onClick:g=>{d||g.preventDefault()},children:[x.jsx("span",{className:Je.icon,children:x.jsx(u,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{className:Je.label,children:r(i.labelKey)})]});return d?p:x.jsx(Ft,{text:Dv(i.minLevel,r),children:p})}function jv({item:i,ctx:n}){const{t:r}=Lo(),{trackEvent:d}=us(),{pathname:u,search:p}=Vt(),g=i.icon,y=i.buildUrl(n),h=r(i.tooltipKey,""),v=ds(u,p),[C,P]=R.useState(!1),D=x.jsxs("a",{href:y,target:"_blank",rel:"noopener noreferrer",className:Je.navLink,"data-testid":`sidebar-help-${i.id}`,onClick:B=>{d("dashboard_click_event",{click_target:Rv[i.id],placement:"sidebar_help",...v}),i.id==="bug"&&(B.preventDefault(),P(!0))},children:[x.jsx("span",{className:Je.icon,children:x.jsx(g,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{className:Je.label,children:r(i.labelKey)}),x.jsx("span",{className:Je.externalIcon,"aria-hidden":"true",children:x.jsx(qp,{size:12,strokeWidth:1.75})})]}),L=h?x.jsx(Ft,{text:h,children:D}):D;return x.jsxs(x.Fragment,{children:[L,i.id==="bug"&&x.jsx(sv,{open:C,fallbackHref:y,onClose:()=>P(!1)})]})}function Ev(){const[i,n]=R.useState("basic"),r=Av(),{status:d}=_n(),{locale:u,t:p}=Lo(),g={locale:u,status:d};return R.useEffect(()=>{let y=!1;async function h(){try{const P=await Np("auto");!y&&(P!=null&&P.tier)&&n(P.tier)}catch{y||n("basic")}}h();const v=new Ql;v.connect();const C=v.on("license",()=>{h()});return()=>{y=!0,C(),v.disconnect()}},[]),x.jsxs("aside",{className:Je.sidebar,children:[x.jsxs("div",{className:Je.brand,children:[x.jsx("span",{className:Je.brandIcon,children:x.jsx(Df,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})}),x.jsx("span",{"data-testid":"sidebar-brand-text",className:[Je.brandText,i==="pro"?Je.brandTextPro:""].filter(Boolean).join(" "),children:"WEPPY"})]}),x.jsx("nav",{className:Je.nav,children:Fp.map(y=>x.jsx(dp,{item:y},y.route))}),x.jsx("div",{className:Je.secondaryDivider}),x.jsx("nav",{className:Je.secondaryNav,children:ql.map((y,h)=>x.jsxs("div",{className:Je.secondaryNavEntry,children:[x.jsx(dp,{item:y}),h<ql.length-1?x.jsx("div",{className:Je.secondaryItemDivider,"data-testid":"sidebar-controls-whats-new-divider","aria-hidden":"true"}):null]},y.route))}),x.jsx("div",{className:Je.helpDivider,"aria-hidden":"true"}),x.jsx("div",{className:Je.helpGroupTitle,"aria-label":p("sidebar.help.group"),children:p("sidebar.help.group")}),x.jsx("nav",{className:Je.helpNav,"aria-label":p("sidebar.help.group"),children:fS.map(y=>x.jsx(jv,{item:y,ctx:g},y.id))}),x.jsx("div",{className:Je.spacer}),x.jsx(MS,{collapsed:r})]})}async function Tv(){return jt.get("/api/dashboard/place-summary")}async function Lv(){return jt.get("/api/dashboard/sync-root")}async function zb(){return jt.post("/api/dashboard/sync-root/pick")}async function _b(i){return jt.patch("/api/dashboard/sync-root",{projectRoot:i})}const Uv=[{id:"2026-07-30-luau-syntax-validation",date:"2026-07-30",title:{en:"Catch Luau syntax errors before Playtest",ko:"Playtest 전에 Luau 문법 오류를 확인하세요",es:"Detecta errores de sintaxis Luau antes de Playtest","pt-br":"Encontre erros de sintaxe Luau antes do Playtest",ja:"Playtestの前にLuauの構文エラーを確認できます",id:"Temukan error sintaks Luau sebelum Playtest",de:"Luau-Syntaxfehler vor dem Playtest erkennen","fr-fr":"Détectez les erreurs de syntaxe Luau avant le Playtest"},body:{en:`Luau syntax validation is available for script work. It is Off by default. Turn it on under Controls > Luau Syntax Validation to check the source that was actually saved after supported script writes, without starting Playtest.
315
315
 
316
316
  When a check is valid, automatic validation does not expand the normal write response. If syntax errors are found or validation is unavailable, WEPPY returns details. The script change remains applied in either case so the AI can fix it in the same script. You can also ask the AI to validate raw source or an existing Script directly on Basic and Pro.`,ko:`스크립트 작업에 Luau 문법 검사가 추가되었습니다. 기본값은 꺼짐입니다. Controls > Luau Syntax Validation에서 켜면 지원되는 스크립트 쓰기 후 실제로 저장된 source를 Playtest 없이 검사합니다.
317
317
 
@@ -695,4 +695,4 @@ Vous pouvez aussi exporter des objets sélectionnés dans Roblox Studio en fichi
695
695
 
696
696
  Les uploads Roblox nécessitent une API key Roblox Open Cloud et un Creator ID. L'API key est chiffrée sur votre ordinateur. WEPPY ne l'enregistre pas dans un service externe et ne l'envoie pas à un serveur WEPPY séparé ; le serveur MCP local l'utilise uniquement pour les demandes d'upload Roblox Open Cloud.
697
697
 
698
- Assets est encore expérimental. D'autres catégories seront ajoutées progressivement.`},severity:"info",category:"release"}],Jl="weppy-dashboard.whatsNew.readIds";function Yp(){try{const i=localStorage.getItem(Jl);if(!i)return new Set;const n=JSON.parse(i);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function Hv(i){try{localStorage.setItem(Jl,JSON.stringify([...i]))}catch{}}let di=Yp(),Gp=di;const Wl=new Set;function Xp(){Gp=new Set(di);for(const i of Wl)i()}const Ul={subscribe(i){return Wl.add(i),()=>{Wl.delete(i)}},getSnapshot(){return Gp},markRead(i){let n=!1;for(const r of i)di.has(r)||(di.add(r),n=!0);n&&(Hv(di),Xp())}};typeof window<"u"&&window.addEventListener("storage",i=>{i.key===Jl&&(di=Yp(),Xp())});function Mv(){const i=R.useSyncExternalStore(Ul.subscribe,Ul.getSnapshot),n=Uv.filter(r=>!i.has(r.id)).length;return{readSet:i,unreadCount:n,markRead:Ul.markRead}}const zv="_header_1do17_2",_v="_row1_1do17_17",Nv="_contextGroups_1do17_25",Ov="_projectGroup_1do17_33",qv="_studioGroup_1do17_34",Bv="_groupTitleRow_1do17_52",Wv="_groupLabel_1do17_59",Fv="_groupIcon_1do17_73",Kv="_projectName_1do17_78",Vv="_placeChips_1do17_90",Yv="_metaActions_1do17_99",Gv="_placeChip_1do17_90",Xv="_placeChipStatic_1do17_122",$v="_placeChipMuted_1do17_123",Qv="_placeChipActive_1do17_127",Zv="_placeChipInactive_1do17_134",Jv="_placeChipId_1do17_145",eb="_placeChipClient_1do17_160",tb="_placeChipState_1do17_166",ob="_placeChipBadge_1do17_172",ab="_placeDot_1do17_180",ib="_placeChipName_1do17_188",sb="_row2_1do17_196",nb="_pathRow_1do17_208",rb="_auxiliaryPath_1do17_209",lb="_pathLabel_1do17_221",db="_projectPath_1do17_232",ub="_changeButton_1do17_242",cb="_iconButton_1do17_276",be={header:zv,row1:_v,contextGroups:Nv,projectGroup:Ov,studioGroup:qv,groupTitleRow:Bv,groupLabel:Wv,groupIcon:Fv,projectName:Kv,placeChips:Vv,metaActions:Yv,placeChip:Gv,placeChipStatic:Xv,placeChipMuted:$v,placeChipActive:Qv,placeChipInactive:Zv,placeChipId:Jv,placeChipClient:eb,placeChipState:tb,placeChipBadge:ob,placeDot:ab,placeChipName:ib,row2:sb,pathRow:nb,auxiliaryPath:rb,pathLabel:lb,projectPath:db,changeButton:ub,iconButton:cb},pb="_bellWrapper_tae21_2",gb="_unreadDot_tae21_8",up={bellWrapper:pb,unreadDot:gb};function hb(){const{t:i}=Lo(),{unreadCount:n}=Mv(),{trackEvent:r}=us(),{pathname:d,search:u}=Vt(),p=ds(d,u),g=n>0?`${i("header.whatsNew","What's New")} (${n})`:i("header.whatsNew","What's New");return x.jsx(Ft,{text:i("header.whatsNew.tooltip","What's New"),children:x.jsxs("span",{className:up.bellWrapper,children:[x.jsx(ja,{to:"/whats-new","aria-label":g,className:be.iconButton,onClick:()=>r("dashboard_click_event",{click_target:"top_header_notification_bell",placement:"top_header",...p}),children:"🔔"}),n>0&&x.jsx("span",{className:up.unreadDot,"data-testid":"unread-dot","aria-hidden":"true"})]})})}function $p(i,n,r){const d=n==="pinned"?r:null;return[...i].sort((u,p)=>mb(u,p,d))}function Nb(i,n,r){return $p(i,n,r)[0]}function mb(i,n,r){if(r){const h=i.clientId===r,v=n.clientId===r;if(h!==v)return h?-1:1}const d=i.lastRoutedAt,u=n.lastRoutedAt,p=d!==void 0;if(p!==(u!==void 0))return p?-1:1;if(d!==void 0&&u!==void 0&&d!==u)return u-d;const y=(i.connectedAt??0)-(n.connectedAt??0);return y!==0?y:i.clientId.localeCompare(n.clientId)}function cp(i){if(!i)return"";const n=i.split(/[\\/]/).filter(Boolean);return n[n.length-1]??""}function yb(i){var d,u;const n=((d=i==null?void 0:i.mcpInstances)==null?void 0:d.filter(p=>!p.isServer&&p.aiClientName))??[];if(n.length===0){const p=((u=i==null?void 0:i.mcpInstances)==null?void 0:u.find(g=>!!g.aiClientName))??null;return(p==null?void 0:p.projectRoot)??(p==null?void 0:p.cwd)??null}n.sort((p,g)=>(g.lastCommandAt??g.connectedAt)-(p.lastCommandAt??p.connectedAt));const r=n[0];return r.projectRoot??r.cwd??null}function pp(i,n){return i??n}function fb(i){const n=i.replace(/^\//,"").split("/")[0];return n===""||n==="overview"}function Sb(i){return i.replace(/^\//,"").split("/")[0]==="whats-new"}function vb(i){return i.replace(/^\//,"").split("/")[0]||"overview"}function gp(i,n){return Object.entries(n).reduce((r,[d,u])=>r.split(`{${d}}`).join(u||"-"),i)}function bb(i,n){const r=i.studioState??"unknown",d={edit:n("connection.targets.studioState.edit","Edit"),running:n("connection.targets.studioState.running","Running"),paused:n("connection.targets.studioState.paused","Paused"),unknown:n("connection.targets.studioState.unknown","Unknown")},u=i.playtestMode&&i.playtestMode!=="unknown"?`/${i.playtestMode}`:"";return`${d[r]}${u}`}function Pb(){var U,ye;const{pathname:i,search:n}=Vt(),{level:r,status:d}=_n(),{t:u}=Lo(),{trackEvent:p}=us(),[g,y]=R.useState(null),[h,v]=R.useState(null),[C,P]=R.useState(null),[D,L]=R.useState(!1),B=u("header.placeNotConnected","Place not connected"),H=(d==null?void 0:d.studioRoutingMode)??"recentPriority",N=(d==null?void 0:d.pinnedTargetClientId)??null,le=$p((d==null?void 0:d.pluginClients)??[],H,N),W=le[0],oe=fb(i),V=Sb(i),pe=ds(i,n);R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){y(null);return}try{const ue=await jt.get("/connection-info");K||y(ue)}catch{K||y(null)}}return ae(),()=>{K=!0}},[r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]),R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){v(null),L(!1);return}v(null),L(!1);try{const ue=await Lv();K||(v(ue),L(!1))}catch{K||(v(null),L(!0))}}return ae(),()=>{K=!0}},[oe,r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]),R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){P(null);return}try{const ue=await Tv();K||P(ue)}catch{K||P(null)}}return ae(),()=>{K=!0}},[r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]);const De=yb(g)??"",j=r==="disconnected"?"blocked":h?"ready":D?"error":"loading",$=j==="ready"?(h==null?void 0:h.projectRoot)??"":j==="loading"?u("header.currentProject.loading","Loading project root..."):u("header.currentProject.unavailable","Project root unavailable"),Se=j==="ready"?(h==null?void 0:h.projectRoot)??"":oe?"":De,ce=oe||j==="ready"?j==="ready"?cp(Se)||u("header.unknownProject","Unknown project"):j==="loading"?u("header.currentProject.loading","Loading project root..."):u("header.currentProject.unavailable","Project root unavailable"):cp(Se)||u("header.unknownProject","Unknown project"),Te=pp((ye=(U=d==null?void 0:d.pluginClients)==null?void 0:U[0])==null?void 0:ye.placeName,B),we=C!=null&&C.pluginConnected?C.activePlaceId:(C==null?void 0:C.lastActivePlaceId)??null,ke=[...(C==null?void 0:C.places)??[]].sort((K,ae)=>{const ue=K.placeId===we,Pe=ae.placeId===we;return ue!==Pe?ue?-1:1:K.isConnected!==ae.isConnected?K.isConnected?-1:1:K.placeName.localeCompare(ae.placeName)}),ze=le.length>0?ke.filter(K=>!le.some(ae=>ae.placeId!==void 0&&ae.placeId===K.placeId)):ke,et=oe?j==="loading"?u("header.currentProject.loading.tooltip","Project root information is still loading"):j==="error"?u("header.currentProject.unavailable.tooltip","Current project root information is unavailable"):u("header.currentProject.tooltip","Currently selected project folder"):u("header.currentProject.tooltip","Currently selected project folder"),ot=u("header.manageProjectRoot.tooltip","Open Project Root controls"),_e=u("header.activeStudio.tooltip","Connected Studio targets that MCP can route requests to. Studio Routing changes the priority for requests without a named Studio target."),O=ke.find(K=>K.placeId===we)??null,de=vb(i),G=h!=null&&h.projectSyncRoot&&O?`${h.projectSyncRoot}/${O.placeDirName}`:null,w=de==="playtest"?O!=null&&O.testsPath?{label:u("header.testFiles.label","Test Files"),value:O.testsPath,tooltip:u("header.testFiles.tooltip","Current playtest files directory for the selected place")}:null:["sync","changelog","ui-studio"].includes(de)&&G?{label:u("header.placeData.label","Place Data"),value:G,tooltip:u("header.placeData.tooltip","Current place data directory")}:null;return x.jsx(x.Fragment,{children:x.jsxs("header",{className:be.header,children:[x.jsxs("div",{className:be.row1,children:[x.jsxs("div",{className:be.contextGroups,children:[x.jsxs("section",{className:be.projectGroup,"aria-label":u("header.projectGroup.label","Project"),children:[x.jsxs("div",{className:be.groupTitleRow,children:[x.jsxs("span",{className:be.groupLabel,children:[x.jsx(zf,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false",className:be.groupIcon}),u("header.projectGroup.label","Project")]}),x.jsx(Ft,{text:et,children:x.jsx("h1",{className:be.projectName,children:ce})}),x.jsx(Ft,{text:ot,children:x.jsx(ja,{to:"/controls?section=project-root",className:be.changeButton,onClick:()=>p("dashboard_click_event",{click_target:"project_root_manage",placement:"top_header",...pe}),children:u("header.manageProjectRoot","Manage Project Root")})})]}),x.jsxs("div",{className:be.pathRow,children:[x.jsx("span",{className:be.pathLabel,children:u("header.projectRoot.label","Project Root")}),x.jsx("span",{className:be.projectPath,title:$,children:$})]})]}),x.jsxs("section",{className:be.studioGroup,"aria-label":u("header.activeStudio.label","Active Studio"),children:[x.jsx(Ft,{text:_e,children:x.jsxs("span",{className:be.groupLabel,children:[x.jsx(eS,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false",className:be.groupIcon}),u("header.activeStudio.label","Active Studio")]})}),x.jsxs("div",{className:be.placeChips,children:[le.map(K=>{const ae=K.targetAlias,ue=pp(K.placeName,B),Pe=K.connectionState??"connected",xe=le.filter(yo=>yo.placeId!==void 0&&yo.placeId===K.placeId).length>1,Le=H==="pinned"&&N===K.clientId?u("connection.routing.pinnedBadge","Pinned"):H==="recentPriority"&&(W==null?void 0:W.clientId)===K.clientId?u("connection.routing.priorityBadge","Priority"):"-",gt=gp(u("header.studioTarget.tooltip","Studio ID: {studioId} · Connection ID: {connectionId} · Place: {placeName} · Place ID: {placeId} · State: {state} · Runtime: {runtimeState} · Routing: {routing}"),{studioId:ae,connectionId:K.clientId,placeName:ue,placeId:K.placeId!==void 0?String(K.placeId):"-",state:Pe,runtimeState:bb(K,u),routing:Le});return x.jsx(Ft,{text:gt,children:x.jsxs("span",{className:`${be.placeChip} ${be.placeChipStatic} ${be.placeChipActive}`,children:[x.jsx("span",{className:be.placeDot,"aria-hidden":"true"}),x.jsx("span",{className:be.placeChipName,children:ue}),K.placeId!==void 0?x.jsx("span",{className:be.placeChipId,children:K.placeId}):null,x.jsx("span",{className:be.placeChipState,children:Pe}),xe?x.jsx("span",{className:be.placeChipClient,children:ae}):null,Le!=="-"?x.jsx("span",{className:be.placeChipBadge,children:Le}):null]})},K.clientId)}),le.length===0&&ze.length===0?x.jsx(Ft,{text:u("header.activeStudio.emptyTooltip","No Studio plugin is connected. Open Roblox Studio and connect the WEPPY Plugin."),children:x.jsx("span",{className:`${be.placeChip} ${be.placeChipMuted}`,children:x.jsx("span",{className:be.placeChipName,children:Te})})}):ze.map(K=>{const ae=K.placeId===we,ue=!!(C!=null&&C.pluginConnected)&&K.isConnected,Pe=ue?u("header.places.active","Active"):u("header.places.inactive","Inactive"),xe=gp(u("header.storedPlace.tooltip","Stored project place: {placeName} · Place ID: {placeId} · State: {state}"),{placeName:K.placeName,placeId:String(K.placeId),state:Pe}),Le=[be.placeChip,be.placeChipStatic,ae&&ue?be.placeChipActive:be.placeChipInactive].filter(Boolean).join(" ");return x.jsx(Ft,{text:xe,children:x.jsxs("span",{className:Le,children:[ae&&ue?x.jsx("span",{className:be.placeDot,"aria-hidden":"true"}):null,x.jsx("span",{className:be.placeChipName,children:K.placeName}),x.jsx("span",{className:be.placeChipId,children:K.placeId})]})},`${K.placeId}:${K.placeDirName}`)})]})]})]}),x.jsxs("div",{className:be.metaActions,children:[!V&&x.jsx(hb,{}),x.jsx(Ft,{text:u("sidebar.controls","Controls"),children:x.jsx(ja,{to:"/controls","aria-label":u("sidebar.controls","Controls"),className:be.iconButton,onClick:()=>p("dashboard_click_event",{click_target:"top_header_controls",placement:"top_header",...pe}),children:x.jsx(Wp,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})})}),x.jsx(Ft,{text:u("sidebar.settings","Settings"),children:x.jsx(ja,{to:"/settings","aria-label":u("sidebar.settings","Settings"),className:be.iconButton,onClick:()=>p("dashboard_click_event",{click_target:"top_header_settings",placement:"top_header",...pe}),children:x.jsx(rS,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})})})]})]}),x.jsx("div",{className:be.row2,"data-testid":"top-header-auxiliary-slot","data-state":w?"visible":"empty","aria-hidden":w?void 0:!0,children:w?x.jsx(Ft,{text:w.tooltip,children:x.jsxs("div",{className:be.auxiliaryPath,children:[x.jsx("span",{className:be.pathLabel,children:w.label}),x.jsx("span",{className:be.projectPath,title:w.value,children:w.value})]})}):null})]})})}const Cb="_layout_ya8ln_2",wb="_mainShell_ya8ln_8",kb="_content_ya8ln_17",xb="_loading_ya8ln_25",In={layout:Cb,mainShell:wb,content:kb,loading:xb};function Rb(){const{pathname:i,search:n}=Vt(),{trackPageView:r}=us();return R.useEffect(()=>{r(ds(i,n))},[i,n,r]),null}function Ab(){const{t:i}=Lo();return x.jsx("div",{className:In.loading,children:i("common.loading","Loading...")})}function Ib(){return x.jsx(Zy,{children:x.jsx(lf,{children:x.jsxs(qy,{children:[x.jsx(uf,{}),x.jsx(Rb,{}),x.jsxs("div",{className:In.layout,children:[x.jsx(Ev,{}),x.jsxs("div",{className:In.mainShell,children:[x.jsx(Pb,{}),x.jsx("main",{className:In.content,children:x.jsx(R.Suspense,{fallback:x.jsx(Ab,{}),children:x.jsx(ny,{})})})]})]})]})})})}function hp(i){return i.route==="/"?{index:!0,lazy:i.lazy}:{path:i.route.slice(1),lazy:i.lazy}}const Db=my([{path:"/",element:x.jsx(Ib,{}),children:[...Fp.map(hp),...ql.map(hp),{path:"changelog/:id",lazy:()=>Kt(()=>import("./ChangelogDetailPage-wOW2p_bi.js"),__vite__mapDeps([42,1,9,10,8,3,4,43]))},{path:"settings",lazy:()=>Kt(()=>import("./SettingsPage-D50mSMpC.js"),__vite__mapDeps([44,2,3,4,5,1,8,38,39,14,15,16,32,33,45]))}]}]);qh.createRoot(document.getElementById("root")).render(x.jsx(wy,{router:Db}));export{Ea as A,Ub as B,Hb as C,Ql as D,qp as E,Mb as F,Mv as G,Uv as H,Wf as I,Ln as J,ja as L,eS as M,Tb as N,oS as P,Bp as R,$y as S,bS as T,gS as X,jt as a,Eb as b,$l as c,Vt as d,us as e,_n as f,Tv as g,SS as h,Ke as i,x as j,Ft as k,df as l,My as m,ds as n,zn as o,Ef as p,rS as q,R as r,$p as s,Lb as t,Lo as u,Lv as v,_b as w,zb as x,Nb as y,Np as z};
698
+ Assets est encore expérimental. D'autres catégories seront ajoutées progressivement.`},severity:"info",category:"release"}],Jl="weppy-dashboard.whatsNew.readIds";function Yp(){try{const i=localStorage.getItem(Jl);if(!i)return new Set;const n=JSON.parse(i);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function Hv(i){try{localStorage.setItem(Jl,JSON.stringify([...i]))}catch{}}let di=Yp(),Gp=di;const Wl=new Set;function Xp(){Gp=new Set(di);for(const i of Wl)i()}const Ul={subscribe(i){return Wl.add(i),()=>{Wl.delete(i)}},getSnapshot(){return Gp},markRead(i){let n=!1;for(const r of i)di.has(r)||(di.add(r),n=!0);n&&(Hv(di),Xp())}};typeof window<"u"&&window.addEventListener("storage",i=>{i.key===Jl&&(di=Yp(),Xp())});function Mv(){const i=R.useSyncExternalStore(Ul.subscribe,Ul.getSnapshot),n=Uv.filter(r=>!i.has(r.id)).length;return{readSet:i,unreadCount:n,markRead:Ul.markRead}}const zv="_header_1do17_2",_v="_row1_1do17_17",Nv="_contextGroups_1do17_25",Ov="_projectGroup_1do17_33",qv="_studioGroup_1do17_34",Bv="_groupTitleRow_1do17_52",Wv="_groupLabel_1do17_59",Fv="_groupIcon_1do17_73",Kv="_projectName_1do17_78",Vv="_placeChips_1do17_90",Yv="_metaActions_1do17_99",Gv="_placeChip_1do17_90",Xv="_placeChipStatic_1do17_122",$v="_placeChipMuted_1do17_123",Qv="_placeChipActive_1do17_127",Zv="_placeChipInactive_1do17_134",Jv="_placeChipId_1do17_145",eb="_placeChipClient_1do17_160",tb="_placeChipState_1do17_166",ob="_placeChipBadge_1do17_172",ab="_placeDot_1do17_180",ib="_placeChipName_1do17_188",sb="_row2_1do17_196",nb="_pathRow_1do17_208",rb="_auxiliaryPath_1do17_209",lb="_pathLabel_1do17_221",db="_projectPath_1do17_232",ub="_changeButton_1do17_242",cb="_iconButton_1do17_276",be={header:zv,row1:_v,contextGroups:Nv,projectGroup:Ov,studioGroup:qv,groupTitleRow:Bv,groupLabel:Wv,groupIcon:Fv,projectName:Kv,placeChips:Vv,metaActions:Yv,placeChip:Gv,placeChipStatic:Xv,placeChipMuted:$v,placeChipActive:Qv,placeChipInactive:Zv,placeChipId:Jv,placeChipClient:eb,placeChipState:tb,placeChipBadge:ob,placeDot:ab,placeChipName:ib,row2:sb,pathRow:nb,auxiliaryPath:rb,pathLabel:lb,projectPath:db,changeButton:ub,iconButton:cb},pb="_bellWrapper_tae21_2",gb="_unreadDot_tae21_8",up={bellWrapper:pb,unreadDot:gb};function hb(){const{t:i}=Lo(),{unreadCount:n}=Mv(),{trackEvent:r}=us(),{pathname:d,search:u}=Vt(),p=ds(d,u),g=n>0?`${i("header.whatsNew","What's New")} (${n})`:i("header.whatsNew","What's New");return x.jsx(Ft,{text:i("header.whatsNew.tooltip","What's New"),children:x.jsxs("span",{className:up.bellWrapper,children:[x.jsx(ja,{to:"/whats-new","aria-label":g,className:be.iconButton,onClick:()=>r("dashboard_click_event",{click_target:"top_header_notification_bell",placement:"top_header",...p}),children:"🔔"}),n>0&&x.jsx("span",{className:up.unreadDot,"data-testid":"unread-dot","aria-hidden":"true"})]})})}function $p(i,n,r){const d=n==="pinned"?r:null;return[...i].sort((u,p)=>mb(u,p,d))}function Nb(i,n,r){return $p(i,n,r)[0]}function mb(i,n,r){if(r){const h=i.clientId===r,v=n.clientId===r;if(h!==v)return h?-1:1}const d=i.lastRoutedAt,u=n.lastRoutedAt,p=d!==void 0;if(p!==(u!==void 0))return p?-1:1;if(d!==void 0&&u!==void 0&&d!==u)return u-d;const y=(i.connectedAt??0)-(n.connectedAt??0);return y!==0?y:i.clientId.localeCompare(n.clientId)}function cp(i){if(!i)return"";const n=i.split(/[\\/]/).filter(Boolean);return n[n.length-1]??""}function yb(i){var d,u;const n=((d=i==null?void 0:i.mcpInstances)==null?void 0:d.filter(p=>!p.isServer&&p.aiClientName))??[];if(n.length===0){const p=((u=i==null?void 0:i.mcpInstances)==null?void 0:u.find(g=>!!g.aiClientName))??null;return(p==null?void 0:p.projectRoot)??(p==null?void 0:p.cwd)??null}n.sort((p,g)=>(g.lastCommandAt??g.connectedAt)-(p.lastCommandAt??p.connectedAt));const r=n[0];return r.projectRoot??r.cwd??null}function pp(i,n){return i??n}function fb(i){const n=i.replace(/^\//,"").split("/")[0];return n===""||n==="overview"}function Sb(i){return i.replace(/^\//,"").split("/")[0]==="whats-new"}function vb(i){return i.replace(/^\//,"").split("/")[0]||"overview"}function gp(i,n){return Object.entries(n).reduce((r,[d,u])=>r.split(`{${d}}`).join(u||"-"),i)}function bb(i,n){const r=i.studioState??"unknown",d={edit:n("connection.targets.studioState.edit","Edit"),running:n("connection.targets.studioState.running","Running"),paused:n("connection.targets.studioState.paused","Paused"),unknown:n("connection.targets.studioState.unknown","Unknown")},u=i.playtestMode&&i.playtestMode!=="unknown"?`/${i.playtestMode}`:"";return`${d[r]}${u}`}function Pb(){var U,ye;const{pathname:i,search:n}=Vt(),{level:r,status:d}=_n(),{t:u}=Lo(),{trackEvent:p}=us(),[g,y]=R.useState(null),[h,v]=R.useState(null),[C,P]=R.useState(null),[D,L]=R.useState(!1),B=u("header.placeNotConnected","Place not connected"),H=(d==null?void 0:d.studioRoutingMode)??"recentPriority",N=(d==null?void 0:d.pinnedTargetClientId)??null,le=$p((d==null?void 0:d.pluginClients)??[],H,N),W=le[0],oe=fb(i),V=Sb(i),pe=ds(i,n);R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){y(null);return}try{const ue=await jt.get("/connection-info");K||y(ue)}catch{K||y(null)}}return ae(),()=>{K=!0}},[r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]),R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){v(null),L(!1);return}v(null),L(!1);try{const ue=await Lv();K||(v(ue),L(!1))}catch{K||(v(null),L(!0))}}return ae(),()=>{K=!0}},[oe,r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]),R.useEffect(()=>{let K=!1;async function ae(){if(r==="disconnected"){P(null);return}try{const ue=await Tv();K||P(ue)}catch{K||P(null)}}return ae(),()=>{K=!0}},[r,d==null?void 0:d.sessionId,d==null?void 0:d.connectedClients]);const De=yb(g)??"",j=r==="disconnected"?"blocked":h?"ready":D?"error":"loading",$=j==="ready"?(h==null?void 0:h.projectRoot)??"":j==="loading"?u("header.currentProject.loading","Loading project root..."):u("header.currentProject.unavailable","Project root unavailable"),Se=j==="ready"?(h==null?void 0:h.projectRoot)??"":oe?"":De,ce=oe||j==="ready"?j==="ready"?cp(Se)||u("header.unknownProject","Unknown project"):j==="loading"?u("header.currentProject.loading","Loading project root..."):u("header.currentProject.unavailable","Project root unavailable"):cp(Se)||u("header.unknownProject","Unknown project"),Te=pp((ye=(U=d==null?void 0:d.pluginClients)==null?void 0:U[0])==null?void 0:ye.placeName,B),we=C!=null&&C.pluginConnected?C.activePlaceId:(C==null?void 0:C.lastActivePlaceId)??null,ke=[...(C==null?void 0:C.places)??[]].sort((K,ae)=>{const ue=K.placeId===we,Pe=ae.placeId===we;return ue!==Pe?ue?-1:1:K.isConnected!==ae.isConnected?K.isConnected?-1:1:K.placeName.localeCompare(ae.placeName)}),ze=le.length>0?ke.filter(K=>!le.some(ae=>ae.placeId!==void 0&&ae.placeId===K.placeId)):ke,et=oe?j==="loading"?u("header.currentProject.loading.tooltip","Project root information is still loading"):j==="error"?u("header.currentProject.unavailable.tooltip","Current project root information is unavailable"):u("header.currentProject.tooltip","Currently selected project folder"):u("header.currentProject.tooltip","Currently selected project folder"),ot=u("header.manageProjectRoot.tooltip","Open Project Root controls"),_e=u("header.activeStudio.tooltip","Connected Studio targets that MCP can route requests to. Studio Routing changes the priority for requests without a named Studio target."),O=ke.find(K=>K.placeId===we)??null,de=vb(i),G=h!=null&&h.projectSyncRoot&&O?`${h.projectSyncRoot}/${O.placeDirName}`:null,w=de==="playtest"?O!=null&&O.testsPath?{label:u("header.testFiles.label","Test Files"),value:O.testsPath,tooltip:u("header.testFiles.tooltip","Current playtest files directory for the selected place")}:null:["sync","changelog","ui-studio"].includes(de)&&G?{label:u("header.placeData.label","Place Data"),value:G,tooltip:u("header.placeData.tooltip","Current place data directory")}:null;return x.jsx(x.Fragment,{children:x.jsxs("header",{className:be.header,children:[x.jsxs("div",{className:be.row1,children:[x.jsxs("div",{className:be.contextGroups,children:[x.jsxs("section",{className:be.projectGroup,"aria-label":u("header.projectGroup.label","Project"),children:[x.jsxs("div",{className:be.groupTitleRow,children:[x.jsxs("span",{className:be.groupLabel,children:[x.jsx(zf,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false",className:be.groupIcon}),u("header.projectGroup.label","Project")]}),x.jsx(Ft,{text:et,children:x.jsx("h1",{className:be.projectName,children:ce})}),x.jsx(Ft,{text:ot,children:x.jsx(ja,{to:"/controls?section=project-root",className:be.changeButton,onClick:()=>p("dashboard_click_event",{click_target:"project_root_manage",placement:"top_header",...pe}),children:u("header.manageProjectRoot","Manage Project Root")})})]}),x.jsxs("div",{className:be.pathRow,children:[x.jsx("span",{className:be.pathLabel,children:u("header.projectRoot.label","Project Root")}),x.jsx("span",{className:be.projectPath,title:$,children:$})]})]}),x.jsxs("section",{className:be.studioGroup,"aria-label":u("header.activeStudio.label","Active Studio"),children:[x.jsx(Ft,{text:_e,children:x.jsxs("span",{className:be.groupLabel,children:[x.jsx(eS,{size:14,strokeWidth:1.75,"aria-hidden":"true",focusable:"false",className:be.groupIcon}),u("header.activeStudio.label","Active Studio")]})}),x.jsxs("div",{className:be.placeChips,children:[le.map(K=>{const ae=K.targetAlias,ue=pp(K.placeName,B),Pe=K.connectionState??"connected",xe=le.filter(yo=>yo.placeId!==void 0&&yo.placeId===K.placeId).length>1,Le=H==="pinned"&&N===K.clientId?u("connection.routing.pinnedBadge","Pinned"):H==="recentPriority"&&(W==null?void 0:W.clientId)===K.clientId?u("connection.routing.priorityBadge","Priority"):"-",gt=gp(u("header.studioTarget.tooltip","Studio ID: {studioId} · Connection ID: {connectionId} · Place: {placeName} · Place ID: {placeId} · State: {state} · Runtime: {runtimeState} · Routing: {routing}"),{studioId:ae,connectionId:K.clientId,placeName:ue,placeId:K.placeId!==void 0?String(K.placeId):"-",state:Pe,runtimeState:bb(K,u),routing:Le});return x.jsx(Ft,{text:gt,children:x.jsxs("span",{className:`${be.placeChip} ${be.placeChipStatic} ${be.placeChipActive}`,children:[x.jsx("span",{className:be.placeDot,"aria-hidden":"true"}),x.jsx("span",{className:be.placeChipName,children:ue}),K.placeId!==void 0?x.jsx("span",{className:be.placeChipId,children:K.placeId}):null,x.jsx("span",{className:be.placeChipState,children:Pe}),xe?x.jsx("span",{className:be.placeChipClient,children:ae}):null,Le!=="-"?x.jsx("span",{className:be.placeChipBadge,children:Le}):null]})},K.clientId)}),le.length===0&&ze.length===0?x.jsx(Ft,{text:u("header.activeStudio.emptyTooltip","No Studio plugin is connected. Open Roblox Studio and connect the WEPPY Plugin."),children:x.jsx("span",{className:`${be.placeChip} ${be.placeChipMuted}`,children:x.jsx("span",{className:be.placeChipName,children:Te})})}):ze.map(K=>{const ae=K.placeId===we,ue=!!(C!=null&&C.pluginConnected)&&K.isConnected,Pe=ue?u("header.places.active","Active"):u("header.places.inactive","Inactive"),xe=gp(u("header.storedPlace.tooltip","Stored project place: {placeName} · Place ID: {placeId} · State: {state}"),{placeName:K.placeName,placeId:String(K.placeId),state:Pe}),Le=[be.placeChip,be.placeChipStatic,ae&&ue?be.placeChipActive:be.placeChipInactive].filter(Boolean).join(" ");return x.jsx(Ft,{text:xe,children:x.jsxs("span",{className:Le,children:[ae&&ue?x.jsx("span",{className:be.placeDot,"aria-hidden":"true"}):null,x.jsx("span",{className:be.placeChipName,children:K.placeName}),x.jsx("span",{className:be.placeChipId,children:K.placeId})]})},`${K.placeId}:${K.placeDirName}`)})]})]})]}),x.jsxs("div",{className:be.metaActions,children:[!V&&x.jsx(hb,{}),x.jsx(Ft,{text:u("sidebar.controls","Controls"),children:x.jsx(ja,{to:"/controls","aria-label":u("sidebar.controls","Controls"),className:be.iconButton,onClick:()=>p("dashboard_click_event",{click_target:"top_header_controls",placement:"top_header",...pe}),children:x.jsx(Wp,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})})}),x.jsx(Ft,{text:u("sidebar.settings","Settings"),children:x.jsx(ja,{to:"/settings","aria-label":u("sidebar.settings","Settings"),className:be.iconButton,onClick:()=>p("dashboard_click_event",{click_target:"top_header_settings",placement:"top_header",...pe}),children:x.jsx(rS,{size:18,strokeWidth:1.75,"aria-hidden":"true",focusable:"false"})})})]})]}),x.jsx("div",{className:be.row2,"data-testid":"top-header-auxiliary-slot","data-state":w?"visible":"empty","aria-hidden":w?void 0:!0,children:w?x.jsx(Ft,{text:w.tooltip,children:x.jsxs("div",{className:be.auxiliaryPath,children:[x.jsx("span",{className:be.pathLabel,children:w.label}),x.jsx("span",{className:be.projectPath,title:w.value,children:w.value})]})}):null})]})})}const Cb="_layout_ya8ln_2",wb="_mainShell_ya8ln_8",kb="_content_ya8ln_17",xb="_loading_ya8ln_25",In={layout:Cb,mainShell:wb,content:kb,loading:xb};function Rb(){const{pathname:i,search:n}=Vt(),{trackPageView:r}=us();return R.useEffect(()=>{r(ds(i,n))},[i,n,r]),null}function Ab(){const{t:i}=Lo();return x.jsx("div",{className:In.loading,children:i("common.loading","Loading...")})}function Ib(){return x.jsx(Zy,{children:x.jsx(lf,{children:x.jsxs(qy,{children:[x.jsx(uf,{}),x.jsx(Rb,{}),x.jsxs("div",{className:In.layout,children:[x.jsx(Ev,{}),x.jsxs("div",{className:In.mainShell,children:[x.jsx(Pb,{}),x.jsx("main",{className:In.content,children:x.jsx(R.Suspense,{fallback:x.jsx(Ab,{}),children:x.jsx(ny,{})})})]})]})]})})})}function hp(i){return i.route==="/"?{index:!0,lazy:i.lazy}:{path:i.route.slice(1),lazy:i.lazy}}const Db=my([{path:"/",element:x.jsx(Ib,{}),children:[...Fp.map(hp),...ql.map(hp),{path:"changelog/:id",lazy:()=>Kt(()=>import("./ChangelogDetailPage-DJm43K1h.js"),__vite__mapDeps([42,1,9,10,8,3,4,43]))},{path:"settings",lazy:()=>Kt(()=>import("./SettingsPage-C0RRWcLC.js"),__vite__mapDeps([44,2,3,4,5,1,8,38,39,14,15,16,32,33,45]))}]}]);qh.createRoot(document.getElementById("root")).render(x.jsx(wy,{router:Db}));export{Ea as A,Ub as B,Hb as C,Ql as D,qp as E,Mb as F,Mv as G,Uv as H,Wf as I,Ln as J,ja as L,eS as M,Tb as N,oS as P,Bp as R,$y as S,bS as T,gS as X,jt as a,Eb as b,$l as c,Vt as d,us as e,_n as f,Tv as g,SS as h,Ke as i,x as j,Ft as k,df as l,My as m,ds as n,zn as o,Ef as p,rS as q,R as r,$p as s,Lb as t,Lo as u,Lv as v,_b as w,zb as x,Nb as y,Np as z};
@@ -1 +1 @@
1
- import{o as v,m as k,u as G,r as d,j as n}from"./index-CtLyZZKX.js";import{C as D}from"./UiPrimitive-_I4FkOJy.js";async function u(t,e){const r=await fetch(`${v}${t}`,e);if(!r.ok){let a=null;try{a=await r.json()}catch{}throw new k(r.status,(a==null?void 0:a.message)??r.statusText,(a==null?void 0:a.error)??null,a)}return r.json()}function S(t){return{headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}}function V(t){return u(`/api/ui-studio/usage?placeId=${t}`)}function X(t,e={}){const r=new URLSearchParams({placeId:String(t)});for(const[a,s]of Object.entries(e))s!=null&&r.set(a,String(s));return u(`/api/ui-studio/requests?${r}`)}function ee(t,e){return u(`/api/ui-studio/requests/${encodeURIComponent(e)}?placeId=${t}`)}function te(t,e){return u("/api/ui-studio/requests",{method:"DELETE",...S({placeId:t,...e})})}function ae(t,e){return u(`/api/ui-studio/snapshots/${encodeURIComponent(e)}?placeId=${t}`,{method:"DELETE"})}function re(t,e){return u("/api/ui-studio/snapshots",{method:"DELETE",...S({placeId:t,...e})})}function se(t,e){const r=new URLSearchParams({placeId:String(t)});if(e)for(const[a,s]of Object.entries(e))s!=null&&r.set(`preview.${a}`,String(s));return u(`/api/ui-studio/cleanup?${r}`)}function ie(t,e){return u("/api/ui-studio/cleanup",{method:"PUT",...S({placeId:t,...e})})}function oe(t){return u(`/api/ui-studio/cleanup/run?placeId=${t}`,{method:"POST"})}function ne(t,e){return u("/api/ui-studio/run",{method:"POST",...S({action:t,params:e})})}const C="_overlay_t66q4_4",A="_dialog_t66q4_15",E="_title_t66q4_28",x="_titleDanger_t66q4_37",U="_message_t66q4_42",H="_cascadeRow_t66q4_50",Z="_actions_t66q4_65",R="_cancelBtn_t66q4_73",w="_confirmBtn_t66q4_95",L="_confirmBtnDanger_t66q4_118",j="_busySpinner_t66q4_125",o={overlay:C,dialog:A,title:E,titleDanger:x,message:U,cascadeRow:H,actions:Z,cancelBtn:R,confirmBtn:w,confirmBtnDanger:L,busySpinner:j};function ue({title:t,message:e,danger:r=!1,cascadeOption:a,confirmLabel:s,busy:i=!1,onConfirm:T,onClose:p}){const{t:h}=G(),[_,g]=d.useState(!1),q=d.useRef(null),y=d.useRef(null);d.useEffect(()=>{var m;(m=q.current)==null||m.focus()},[]),d.useEffect(()=>{const m=l=>{if(l.key==="Escape"&&!i&&!_){p();return}if(l.key==="Tab"&&y.current){const f=Array.from(y.current.querySelectorAll('button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(f.length===0)return;const b=f[0],I=f[f.length-1];l.shiftKey&&document.activeElement===b?(l.preventDefault(),I.focus()):!l.shiftKey&&document.activeElement===I&&(l.preventDefault(),b.focus())}};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[i,_,p]);const B=async()=>{if(!(_||i)){g(!0);try{await T()}finally{g(!1)}}},M=()=>{!i&&!_&&p()},c=i||_,P=s??h("common.delete","삭제");return n.jsx("div",{className:o.overlay,role:"presentation",onClick:M,children:n.jsxs("div",{ref:y,className:o.dialog,role:"dialog","aria-modal":"true","aria-labelledby":"delete-confirm-title",onClick:m=>m.stopPropagation(),children:[n.jsx("h2",{id:"delete-confirm-title",className:`${o.title} ${r?o.titleDanger:""}`,children:t}),n.jsx("p",{className:o.message,children:e}),a&&n.jsxs("label",{className:o.cascadeRow,children:[n.jsx(D,{checked:a.checked,onChange:m=>a.onChange(m.target.checked),disabled:c}),a.label]}),n.jsxs("div",{className:o.actions,children:[n.jsx("button",{ref:q,className:o.cancelBtn,onClick:p,disabled:c,type:"button",children:h("common.cancel","취소")}),n.jsxs("button",{className:`${o.confirmBtn} ${r?o.confirmBtnDanger:""}`,onClick:()=>void B(),disabled:c,type:"button",children:[c&&n.jsx("span",{className:o.busySpinner,"aria-hidden":"true"}),P]})]})]})})}const z="/dashboard/assets/ui-studio-sample-DrNTD6yi.png",me=z,le={requestCount:6,mutationCount:22,snapshotCount:8,historyBytes:12e3,snapshotBytes:48e4,totalBytes:492e3},_e={mode:"off",cascadeSnapshots:!0},O={sample_req_1:"uiStudio.sample.history.request1.label",sample_req_2:"uiStudio.sample.history.request2.label",sample_req_3:"uiStudio.sample.history.request3.label",sample_req_4:"uiStudio.sample.history.request4.label",sample_req_5:"uiStudio.sample.history.request5.label",sample_req_6:"uiStudio.sample.history.request6.label"},N={sample_mut_1_1:"uiStudio.sample.history.request1.mutation1.diff",sample_mut_1_2:"uiStudio.sample.history.request1.mutation2.diff",sample_mut_1_3:"uiStudio.sample.history.request1.mutation3.diff",sample_mut_1_4:"uiStudio.sample.history.request1.mutation4.diff",sample_mut_1_5:"uiStudio.sample.history.request1.mutation5.diff",sample_mut_2_1:"uiStudio.sample.history.request2.mutation1.diff",sample_mut_2_2:"uiStudio.sample.history.request2.mutation2.diff",sample_mut_2_3:"uiStudio.sample.history.request2.mutation3.diff",sample_mut_2_4:"uiStudio.sample.history.request2.mutation4.diff",sample_mut_3_1:"uiStudio.sample.history.request3.mutation1.diff",sample_mut_3_2:"uiStudio.sample.history.request3.mutation2.diff",sample_mut_4_1:"uiStudio.sample.history.request4.mutation1.diff",sample_mut_4_2:"uiStudio.sample.history.request4.mutation2.diff",sample_mut_4_3:"uiStudio.sample.history.request4.mutation3.diff",sample_mut_4_4:"uiStudio.sample.history.request4.mutation4.diff",sample_mut_4_5:"uiStudio.sample.history.request4.mutation5.diff",sample_mut_4_6:"uiStudio.sample.history.request4.mutation6.diff",sample_mut_5_1:"uiStudio.sample.history.request5.mutation1.diff",sample_mut_6_1:"uiStudio.sample.history.request6.mutation1.diff",sample_mut_6_2:"uiStudio.sample.history.request6.mutation2.diff",sample_mut_6_3:"uiStudio.sample.history.request6.mutation3.diff",sample_mut_6_4:"uiStudio.sample.history.request6.mutation4.diff"},$={BackgroundColor3:"uiStudio.sample.history.detail.backgroundColor",AnchorPoint:"uiStudio.sample.history.detail.anchorPoint",Position:"uiStudio.sample.history.detail.position",Size:"uiStudio.sample.history.detail.size",TextColor3:"uiStudio.sample.history.detail.textColor",TextSize:"uiStudio.sample.history.detail.textSize",BorderSizePixel:"uiStudio.sample.history.detail.borderSize",BorderColor3:"uiStudio.sample.history.detail.borderColor"},K={sample_mut_6_3:"uiStudio.sample.history.request6.mutation3.error",sample_mut_6_4:"uiStudio.sample.history.request6.mutation4.error"},Y=[{requestId:"sample_req_1",label:"HUD 레이아웃 초기 생성",startedAt:"2026-05-03T09:12:00.000Z",closedAt:"2026-05-03T09:12:04.321Z",closeReason:"explicit",ok:!0,affectedPaths:["StarterGui.HUD"],mutationCount:5,beforeSnapshots:{"StarterGui.HUD":null},afterSnapshots:{"StarterGui.HUD":"sample_snap_1"},childMutationIds:["sample_mut_1_1","sample_mut_1_2","sample_mut_1_3","sample_mut_1_4","sample_mut_1_5"]},{requestId:"sample_req_2",label:"Inventory 모달 디자인 업데이트",startedAt:"2026-05-03T10:04:18.000Z",closedAt:"2026-05-03T10:04:22.817Z",closeReason:"idle_timeout",ok:!0,affectedPaths:["StarterGui.Inventory.Modal","StarterGui.Inventory.Modal.Header"],mutationCount:4,beforeSnapshots:{"StarterGui.Inventory.Modal":"sample_snap_1","StarterGui.Inventory.Modal.Header":"sample_snap_1"},afterSnapshots:{"StarterGui.Inventory.Modal":"sample_snap_2","StarterGui.Inventory.Modal.Header":"sample_snap_2"},childMutationIds:["sample_mut_2_1","sample_mut_2_2","sample_mut_2_3","sample_mut_2_4"]},{requestId:"sample_req_3",label:"HUD HealthBar 색상 수정",startedAt:"2026-05-03T11:30:55.000Z",closedAt:"2026-05-03T11:30:57.102Z",closeReason:"context_change",ok:!0,affectedPaths:["StarterGui.HUD.HealthBar"],mutationCount:2,beforeSnapshots:{"StarterGui.HUD.HealthBar":"sample_snap_2"},afterSnapshots:{"StarterGui.HUD.HealthBar":"sample_snap_3"},childMutationIds:["sample_mut_3_1","sample_mut_3_2"]},{requestId:"sample_req_4",label:"Inventory 탭 버튼 터치 타겟 확대",startedAt:"2026-05-03T13:22:11.000Z",closedAt:"2026-05-03T13:22:14.500Z",closeReason:"explicit",ok:!0,affectedPaths:["StarterGui.Inventory.TabBar.TabAll","StarterGui.Inventory.TabBar.TabWeapon","StarterGui.Inventory.TabBar.TabArmor"],mutationCount:6,beforeSnapshots:{"StarterGui.Inventory.TabBar.TabAll":"sample_snap_3","StarterGui.Inventory.TabBar.TabWeapon":"sample_snap_3","StarterGui.Inventory.TabBar.TabArmor":"sample_snap_3"},afterSnapshots:{"StarterGui.Inventory.TabBar.TabAll":"sample_snap_4","StarterGui.Inventory.TabBar.TabWeapon":"sample_snap_4","StarterGui.Inventory.TabBar.TabArmor":"sample_snap_4"},childMutationIds:["sample_mut_4_1","sample_mut_4_2","sample_mut_4_3","sample_mut_4_4","sample_mut_4_5","sample_mut_4_6"]},{requestId:"sample_req_5",label:"Settings 팝업 삭제",startedAt:"2026-05-03T14:45:33.000Z",closedAt:"2026-05-03T14:45:34.290Z",closeReason:"legacy_single",ok:!0,affectedPaths:["StarterGui.Settings"],mutationCount:1,beforeSnapshots:{"StarterGui.Settings":"sample_snap_4"},afterSnapshots:{"StarterGui.Settings":null},childMutationIds:["sample_mut_5_1"]},{requestId:"sample_req_6",label:"HUD 미니맵 컴포넌트 추가",startedAt:"2026-05-03T16:08:47.000Z",closedAt:"2026-05-03T16:08:51.776Z",closeReason:"server_restart",ok:!1,affectedPaths:["StarterGui.HUD.Minimap"],mutationCount:4,beforeSnapshots:{"StarterGui.HUD.Minimap":null},afterSnapshots:{"StarterGui.HUD.Minimap":"sample_snap_5"},childMutationIds:["sample_mut_6_1","sample_mut_6_2","sample_mut_6_3","sample_mut_6_4"]}],F={sample_req_1:[{mutationId:"sample_mut_1_1",requestId:"sample_req_1",ts:"2026-05-03T09:12:00.500Z",command:"manage_ui_create_tree",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"Frame + HealthBar + StaminaBar 생성",ok:!0,durationMs:312},{mutationId:"sample_mut_1_2",requestId:"sample_req_1",ts:"2026-05-03T09:12:01.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"BackgroundColor3 → Color3.new(0.2,0.8,0.2)",changeDetails:[{property:"BackgroundColor3",category:"color",label:"배경색",before:{r:36,g:42,b:52},after:{r:51,g:204,b:51}}],ok:!0,durationMs:84},{mutationId:"sample_mut_1_3",requestId:"sample_req_1",ts:"2026-05-03T09:12:01.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.StaminaBar",diffSummary:"BackgroundColor3 → Color3.new(0.1,0.6,1.0)",ok:!0,durationMs:76},{mutationId:"sample_mut_1_4",requestId:"sample_req_1",ts:"2026-05-03T09:12:02.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"AnchorPoint, Position, Size 설정",changeDetails:[{property:"AnchorPoint",category:"layout",label:"앵커",before:{x:.5,y:.5},after:{x:0,y:0}},{property:"Position",category:"layout",label:"위치",before:{xScale:.5,xOffset:0,yScale:.5,yOffset:0},after:{xScale:0,xOffset:16,yScale:0,yOffset:16}},{property:"Size",category:"size",label:"사이즈",before:{xScale:0,xOffset:240,yScale:0,yOffset:64},after:{xScale:0,xOffset:320,yScale:0,yOffset:80}}],ok:!0,durationMs:91},{mutationId:"sample_mut_1_5",requestId:"sample_req_1",ts:"2026-05-03T09:12:02.500Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1521}],sample_req_2:[{mutationId:"sample_mut_2_1",requestId:"sample_req_2",ts:"2026-05-03T10:04:18.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal.Header",diffSummary:"BackgroundColor3 어둡게 조정 (대비 개선)",ok:!0,durationMs:102},{mutationId:"sample_mut_2_2",requestId:"sample_req_2",ts:"2026-05-03T10:04:19.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal.Header.Title",diffSummary:"TextColor3 → Color3.new(1,1,1), TextSize 16→18",changeDetails:[{property:"TextColor3",category:"color",label:"글자색",before:{r:212,g:222,b:238},after:{r:255,g:255,b:255}},{property:"TextSize",category:"size",label:"글자 크기",before:16,after:18}],ok:!0,durationMs:88},{mutationId:"sample_mut_2_3",requestId:"sample_req_2",ts:"2026-05-03T10:04:19.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal",diffSummary:"BorderSizePixel 0→2, BorderColor3 설정",changeDetails:[{property:"BorderSizePixel",category:"size",label:"테두리 크기",before:0,after:2},{property:"BorderColor3",category:"color",label:"테두리색",before:{r:86,g:99,b:122},after:{r:255,g:255,b:255}}],ok:!0,durationMs:95},{mutationId:"sample_mut_2_4",requestId:"sample_req_2",ts:"2026-05-03T10:04:20.000Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.Inventory.Modal",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1802}],sample_req_3:[{mutationId:"sample_mut_3_1",requestId:"sample_req_3",ts:"2026-05-03T11:30:55.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"BackgroundColor3 → Color3.new(0.9,0.2,0.2) (빨간 계열)",ok:!0,durationMs:80},{mutationId:"sample_mut_3_2",requestId:"sample_req_3",ts:"2026-05-03T11:30:56.000Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1102}],sample_req_4:[{mutationId:"sample_mut_4_1",requestId:"sample_req_4",ts:"2026-05-03T13:22:11.300Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabAll",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:78},{mutationId:"sample_mut_4_2",requestId:"sample_req_4",ts:"2026-05-03T13:22:11.700Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabWeapon",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:71},{mutationId:"sample_mut_4_3",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.100Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabArmor",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:73},{mutationId:"sample_mut_4_4",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabConsume",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:70},{mutationId:"sample_mut_4_5",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.900Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabMisc",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:72},{mutationId:"sample_mut_4_6",requestId:"sample_req_4",ts:"2026-05-03T13:22:13.300Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabAll",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1200}],sample_req_5:[{mutationId:"sample_mut_5_1",requestId:"sample_req_5",ts:"2026-05-03T14:45:33.500Z",command:"manage_ui_delete",origin:"ai",targetPath:"StarterGui.Settings",diffSummary:"ScreenGui 제거 (Settings 전용 UI)",ok:!0,durationMs:290}],sample_req_6:[{mutationId:"sample_mut_6_1",requestId:"sample_req_6",ts:"2026-05-03T16:08:47.500Z",command:"manage_ui_create_tree",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"Frame + MapImage + PlayerDot 생성 시도",ok:!0,durationMs:340},{mutationId:"sample_mut_6_2",requestId:"sample_req_6",ts:"2026-05-03T16:08:48.200Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"Size, Position, BackgroundTransparency 설정",ok:!0,durationMs:84},{mutationId:"sample_mut_6_3",requestId:"sample_req_6",ts:"2026-05-03T16:08:48.900Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.Minimap.MapImage",diffSummary:"ImageLabel 설정 중 서버 재시작으로 중단",ok:!1,error:"server_restart: connection lost",durationMs:700},{mutationId:"sample_mut_6_4",requestId:"sample_req_6",ts:"2026-05-03T16:08:49.700Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"불완전 화면 캡처 저장",ok:!1,error:"partial snapshot: missing layers",durationMs:876}]};function W(t,e){var s;const r=N[e.mutationId],a=K[e.mutationId];return{...e,diffSummary:e.diffSummary&&r?t(r,e.diffSummary):e.diffSummary,error:e.error&&a?t(a,e.error):e.error,changeDetails:(s=e.changeDetails)==null?void 0:s.map(i=>({...i,label:t($[i.property]??"",i.label)}))}}function de(t){const e=Y.map(a=>({...a,label:a.label?t(O[a.requestId]??"",a.label):a.label})),r=Object.fromEntries(Object.entries(F).map(([a,s])=>[a,s.map(i=>W(t,i))]));return{requests:e,mutationsByRequest:r}}export{ue as D,le as S,V as a,_e as b,ne as c,te as d,ae as e,se as f,z as g,re as h,X as i,ee as j,de as k,me as l,oe as r,ie as s};
1
+ import{o as v,m as k,u as G,r as d,j as n}from"./index-je833Nom.js";import{C as D}from"./UiPrimitive-Bi3cIHAa.js";async function u(t,e){const r=await fetch(`${v}${t}`,e);if(!r.ok){let a=null;try{a=await r.json()}catch{}throw new k(r.status,(a==null?void 0:a.message)??r.statusText,(a==null?void 0:a.error)??null,a)}return r.json()}function S(t){return{headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}}function V(t){return u(`/api/ui-studio/usage?placeId=${t}`)}function X(t,e={}){const r=new URLSearchParams({placeId:String(t)});for(const[a,s]of Object.entries(e))s!=null&&r.set(a,String(s));return u(`/api/ui-studio/requests?${r}`)}function ee(t,e){return u(`/api/ui-studio/requests/${encodeURIComponent(e)}?placeId=${t}`)}function te(t,e){return u("/api/ui-studio/requests",{method:"DELETE",...S({placeId:t,...e})})}function ae(t,e){return u(`/api/ui-studio/snapshots/${encodeURIComponent(e)}?placeId=${t}`,{method:"DELETE"})}function re(t,e){return u("/api/ui-studio/snapshots",{method:"DELETE",...S({placeId:t,...e})})}function se(t,e){const r=new URLSearchParams({placeId:String(t)});if(e)for(const[a,s]of Object.entries(e))s!=null&&r.set(`preview.${a}`,String(s));return u(`/api/ui-studio/cleanup?${r}`)}function ie(t,e){return u("/api/ui-studio/cleanup",{method:"PUT",...S({placeId:t,...e})})}function oe(t){return u(`/api/ui-studio/cleanup/run?placeId=${t}`,{method:"POST"})}function ne(t,e){return u("/api/ui-studio/run",{method:"POST",...S({action:t,params:e})})}const C="_overlay_t66q4_4",A="_dialog_t66q4_15",E="_title_t66q4_28",x="_titleDanger_t66q4_37",U="_message_t66q4_42",H="_cascadeRow_t66q4_50",Z="_actions_t66q4_65",R="_cancelBtn_t66q4_73",w="_confirmBtn_t66q4_95",L="_confirmBtnDanger_t66q4_118",j="_busySpinner_t66q4_125",o={overlay:C,dialog:A,title:E,titleDanger:x,message:U,cascadeRow:H,actions:Z,cancelBtn:R,confirmBtn:w,confirmBtnDanger:L,busySpinner:j};function ue({title:t,message:e,danger:r=!1,cascadeOption:a,confirmLabel:s,busy:i=!1,onConfirm:T,onClose:p}){const{t:h}=G(),[_,g]=d.useState(!1),q=d.useRef(null),y=d.useRef(null);d.useEffect(()=>{var m;(m=q.current)==null||m.focus()},[]),d.useEffect(()=>{const m=l=>{if(l.key==="Escape"&&!i&&!_){p();return}if(l.key==="Tab"&&y.current){const f=Array.from(y.current.querySelectorAll('button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(f.length===0)return;const b=f[0],I=f[f.length-1];l.shiftKey&&document.activeElement===b?(l.preventDefault(),I.focus()):!l.shiftKey&&document.activeElement===I&&(l.preventDefault(),b.focus())}};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[i,_,p]);const B=async()=>{if(!(_||i)){g(!0);try{await T()}finally{g(!1)}}},M=()=>{!i&&!_&&p()},c=i||_,P=s??h("common.delete","삭제");return n.jsx("div",{className:o.overlay,role:"presentation",onClick:M,children:n.jsxs("div",{ref:y,className:o.dialog,role:"dialog","aria-modal":"true","aria-labelledby":"delete-confirm-title",onClick:m=>m.stopPropagation(),children:[n.jsx("h2",{id:"delete-confirm-title",className:`${o.title} ${r?o.titleDanger:""}`,children:t}),n.jsx("p",{className:o.message,children:e}),a&&n.jsxs("label",{className:o.cascadeRow,children:[n.jsx(D,{checked:a.checked,onChange:m=>a.onChange(m.target.checked),disabled:c}),a.label]}),n.jsxs("div",{className:o.actions,children:[n.jsx("button",{ref:q,className:o.cancelBtn,onClick:p,disabled:c,type:"button",children:h("common.cancel","취소")}),n.jsxs("button",{className:`${o.confirmBtn} ${r?o.confirmBtnDanger:""}`,onClick:()=>void B(),disabled:c,type:"button",children:[c&&n.jsx("span",{className:o.busySpinner,"aria-hidden":"true"}),P]})]})]})})}const z="/dashboard/assets/ui-studio-sample-DrNTD6yi.png",me=z,le={requestCount:6,mutationCount:22,snapshotCount:8,historyBytes:12e3,snapshotBytes:48e4,totalBytes:492e3},_e={mode:"off",cascadeSnapshots:!0},O={sample_req_1:"uiStudio.sample.history.request1.label",sample_req_2:"uiStudio.sample.history.request2.label",sample_req_3:"uiStudio.sample.history.request3.label",sample_req_4:"uiStudio.sample.history.request4.label",sample_req_5:"uiStudio.sample.history.request5.label",sample_req_6:"uiStudio.sample.history.request6.label"},N={sample_mut_1_1:"uiStudio.sample.history.request1.mutation1.diff",sample_mut_1_2:"uiStudio.sample.history.request1.mutation2.diff",sample_mut_1_3:"uiStudio.sample.history.request1.mutation3.diff",sample_mut_1_4:"uiStudio.sample.history.request1.mutation4.diff",sample_mut_1_5:"uiStudio.sample.history.request1.mutation5.diff",sample_mut_2_1:"uiStudio.sample.history.request2.mutation1.diff",sample_mut_2_2:"uiStudio.sample.history.request2.mutation2.diff",sample_mut_2_3:"uiStudio.sample.history.request2.mutation3.diff",sample_mut_2_4:"uiStudio.sample.history.request2.mutation4.diff",sample_mut_3_1:"uiStudio.sample.history.request3.mutation1.diff",sample_mut_3_2:"uiStudio.sample.history.request3.mutation2.diff",sample_mut_4_1:"uiStudio.sample.history.request4.mutation1.diff",sample_mut_4_2:"uiStudio.sample.history.request4.mutation2.diff",sample_mut_4_3:"uiStudio.sample.history.request4.mutation3.diff",sample_mut_4_4:"uiStudio.sample.history.request4.mutation4.diff",sample_mut_4_5:"uiStudio.sample.history.request4.mutation5.diff",sample_mut_4_6:"uiStudio.sample.history.request4.mutation6.diff",sample_mut_5_1:"uiStudio.sample.history.request5.mutation1.diff",sample_mut_6_1:"uiStudio.sample.history.request6.mutation1.diff",sample_mut_6_2:"uiStudio.sample.history.request6.mutation2.diff",sample_mut_6_3:"uiStudio.sample.history.request6.mutation3.diff",sample_mut_6_4:"uiStudio.sample.history.request6.mutation4.diff"},$={BackgroundColor3:"uiStudio.sample.history.detail.backgroundColor",AnchorPoint:"uiStudio.sample.history.detail.anchorPoint",Position:"uiStudio.sample.history.detail.position",Size:"uiStudio.sample.history.detail.size",TextColor3:"uiStudio.sample.history.detail.textColor",TextSize:"uiStudio.sample.history.detail.textSize",BorderSizePixel:"uiStudio.sample.history.detail.borderSize",BorderColor3:"uiStudio.sample.history.detail.borderColor"},K={sample_mut_6_3:"uiStudio.sample.history.request6.mutation3.error",sample_mut_6_4:"uiStudio.sample.history.request6.mutation4.error"},Y=[{requestId:"sample_req_1",label:"HUD 레이아웃 초기 생성",startedAt:"2026-05-03T09:12:00.000Z",closedAt:"2026-05-03T09:12:04.321Z",closeReason:"explicit",ok:!0,affectedPaths:["StarterGui.HUD"],mutationCount:5,beforeSnapshots:{"StarterGui.HUD":null},afterSnapshots:{"StarterGui.HUD":"sample_snap_1"},childMutationIds:["sample_mut_1_1","sample_mut_1_2","sample_mut_1_3","sample_mut_1_4","sample_mut_1_5"]},{requestId:"sample_req_2",label:"Inventory 모달 디자인 업데이트",startedAt:"2026-05-03T10:04:18.000Z",closedAt:"2026-05-03T10:04:22.817Z",closeReason:"idle_timeout",ok:!0,affectedPaths:["StarterGui.Inventory.Modal","StarterGui.Inventory.Modal.Header"],mutationCount:4,beforeSnapshots:{"StarterGui.Inventory.Modal":"sample_snap_1","StarterGui.Inventory.Modal.Header":"sample_snap_1"},afterSnapshots:{"StarterGui.Inventory.Modal":"sample_snap_2","StarterGui.Inventory.Modal.Header":"sample_snap_2"},childMutationIds:["sample_mut_2_1","sample_mut_2_2","sample_mut_2_3","sample_mut_2_4"]},{requestId:"sample_req_3",label:"HUD HealthBar 색상 수정",startedAt:"2026-05-03T11:30:55.000Z",closedAt:"2026-05-03T11:30:57.102Z",closeReason:"context_change",ok:!0,affectedPaths:["StarterGui.HUD.HealthBar"],mutationCount:2,beforeSnapshots:{"StarterGui.HUD.HealthBar":"sample_snap_2"},afterSnapshots:{"StarterGui.HUD.HealthBar":"sample_snap_3"},childMutationIds:["sample_mut_3_1","sample_mut_3_2"]},{requestId:"sample_req_4",label:"Inventory 탭 버튼 터치 타겟 확대",startedAt:"2026-05-03T13:22:11.000Z",closedAt:"2026-05-03T13:22:14.500Z",closeReason:"explicit",ok:!0,affectedPaths:["StarterGui.Inventory.TabBar.TabAll","StarterGui.Inventory.TabBar.TabWeapon","StarterGui.Inventory.TabBar.TabArmor"],mutationCount:6,beforeSnapshots:{"StarterGui.Inventory.TabBar.TabAll":"sample_snap_3","StarterGui.Inventory.TabBar.TabWeapon":"sample_snap_3","StarterGui.Inventory.TabBar.TabArmor":"sample_snap_3"},afterSnapshots:{"StarterGui.Inventory.TabBar.TabAll":"sample_snap_4","StarterGui.Inventory.TabBar.TabWeapon":"sample_snap_4","StarterGui.Inventory.TabBar.TabArmor":"sample_snap_4"},childMutationIds:["sample_mut_4_1","sample_mut_4_2","sample_mut_4_3","sample_mut_4_4","sample_mut_4_5","sample_mut_4_6"]},{requestId:"sample_req_5",label:"Settings 팝업 삭제",startedAt:"2026-05-03T14:45:33.000Z",closedAt:"2026-05-03T14:45:34.290Z",closeReason:"legacy_single",ok:!0,affectedPaths:["StarterGui.Settings"],mutationCount:1,beforeSnapshots:{"StarterGui.Settings":"sample_snap_4"},afterSnapshots:{"StarterGui.Settings":null},childMutationIds:["sample_mut_5_1"]},{requestId:"sample_req_6",label:"HUD 미니맵 컴포넌트 추가",startedAt:"2026-05-03T16:08:47.000Z",closedAt:"2026-05-03T16:08:51.776Z",closeReason:"server_restart",ok:!1,affectedPaths:["StarterGui.HUD.Minimap"],mutationCount:4,beforeSnapshots:{"StarterGui.HUD.Minimap":null},afterSnapshots:{"StarterGui.HUD.Minimap":"sample_snap_5"},childMutationIds:["sample_mut_6_1","sample_mut_6_2","sample_mut_6_3","sample_mut_6_4"]}],F={sample_req_1:[{mutationId:"sample_mut_1_1",requestId:"sample_req_1",ts:"2026-05-03T09:12:00.500Z",command:"manage_ui_create_tree",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"Frame + HealthBar + StaminaBar 생성",ok:!0,durationMs:312},{mutationId:"sample_mut_1_2",requestId:"sample_req_1",ts:"2026-05-03T09:12:01.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"BackgroundColor3 → Color3.new(0.2,0.8,0.2)",changeDetails:[{property:"BackgroundColor3",category:"color",label:"배경색",before:{r:36,g:42,b:52},after:{r:51,g:204,b:51}}],ok:!0,durationMs:84},{mutationId:"sample_mut_1_3",requestId:"sample_req_1",ts:"2026-05-03T09:12:01.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.StaminaBar",diffSummary:"BackgroundColor3 → Color3.new(0.1,0.6,1.0)",ok:!0,durationMs:76},{mutationId:"sample_mut_1_4",requestId:"sample_req_1",ts:"2026-05-03T09:12:02.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"AnchorPoint, Position, Size 설정",changeDetails:[{property:"AnchorPoint",category:"layout",label:"앵커",before:{x:.5,y:.5},after:{x:0,y:0}},{property:"Position",category:"layout",label:"위치",before:{xScale:.5,xOffset:0,yScale:.5,yOffset:0},after:{xScale:0,xOffset:16,yScale:0,yOffset:16}},{property:"Size",category:"size",label:"사이즈",before:{xScale:0,xOffset:240,yScale:0,yOffset:64},after:{xScale:0,xOffset:320,yScale:0,yOffset:80}}],ok:!0,durationMs:91},{mutationId:"sample_mut_1_5",requestId:"sample_req_1",ts:"2026-05-03T09:12:02.500Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1521}],sample_req_2:[{mutationId:"sample_mut_2_1",requestId:"sample_req_2",ts:"2026-05-03T10:04:18.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal.Header",diffSummary:"BackgroundColor3 어둡게 조정 (대비 개선)",ok:!0,durationMs:102},{mutationId:"sample_mut_2_2",requestId:"sample_req_2",ts:"2026-05-03T10:04:19.000Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal.Header.Title",diffSummary:"TextColor3 → Color3.new(1,1,1), TextSize 16→18",changeDetails:[{property:"TextColor3",category:"color",label:"글자색",before:{r:212,g:222,b:238},after:{r:255,g:255,b:255}},{property:"TextSize",category:"size",label:"글자 크기",before:16,after:18}],ok:!0,durationMs:88},{mutationId:"sample_mut_2_3",requestId:"sample_req_2",ts:"2026-05-03T10:04:19.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.Modal",diffSummary:"BorderSizePixel 0→2, BorderColor3 설정",changeDetails:[{property:"BorderSizePixel",category:"size",label:"테두리 크기",before:0,after:2},{property:"BorderColor3",category:"color",label:"테두리색",before:{r:86,g:99,b:122},after:{r:255,g:255,b:255}}],ok:!0,durationMs:95},{mutationId:"sample_mut_2_4",requestId:"sample_req_2",ts:"2026-05-03T10:04:20.000Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.Inventory.Modal",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1802}],sample_req_3:[{mutationId:"sample_mut_3_1",requestId:"sample_req_3",ts:"2026-05-03T11:30:55.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"BackgroundColor3 → Color3.new(0.9,0.2,0.2) (빨간 계열)",ok:!0,durationMs:80},{mutationId:"sample_mut_3_2",requestId:"sample_req_3",ts:"2026-05-03T11:30:56.000Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD.HealthBar",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1102}],sample_req_4:[{mutationId:"sample_mut_4_1",requestId:"sample_req_4",ts:"2026-05-03T13:22:11.300Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabAll",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:78},{mutationId:"sample_mut_4_2",requestId:"sample_req_4",ts:"2026-05-03T13:22:11.700Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabWeapon",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:71},{mutationId:"sample_mut_4_3",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.100Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabArmor",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:73},{mutationId:"sample_mut_4_4",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.500Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabConsume",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:70},{mutationId:"sample_mut_4_5",requestId:"sample_req_4",ts:"2026-05-03T13:22:12.900Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabMisc",diffSummary:"Size {0,64},{0,32} → {0,64},{0,44}",ok:!0,durationMs:72},{mutationId:"sample_mut_4_6",requestId:"sample_req_4",ts:"2026-05-03T13:22:13.300Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.Inventory.TabBar.TabAll",diffSummary:"화면 캡처 저장 완료",ok:!0,durationMs:1200}],sample_req_5:[{mutationId:"sample_mut_5_1",requestId:"sample_req_5",ts:"2026-05-03T14:45:33.500Z",command:"manage_ui_delete",origin:"ai",targetPath:"StarterGui.Settings",diffSummary:"ScreenGui 제거 (Settings 전용 UI)",ok:!0,durationMs:290}],sample_req_6:[{mutationId:"sample_mut_6_1",requestId:"sample_req_6",ts:"2026-05-03T16:08:47.500Z",command:"manage_ui_create_tree",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"Frame + MapImage + PlayerDot 생성 시도",ok:!0,durationMs:340},{mutationId:"sample_mut_6_2",requestId:"sample_req_6",ts:"2026-05-03T16:08:48.200Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"Size, Position, BackgroundTransparency 설정",ok:!0,durationMs:84},{mutationId:"sample_mut_6_3",requestId:"sample_req_6",ts:"2026-05-03T16:08:48.900Z",command:"manage_ui_update",origin:"ai",targetPath:"StarterGui.HUD.Minimap.MapImage",diffSummary:"ImageLabel 설정 중 서버 재시작으로 중단",ok:!1,error:"server_restart: connection lost",durationMs:700},{mutationId:"sample_mut_6_4",requestId:"sample_req_6",ts:"2026-05-03T16:08:49.700Z",command:"manage_ui_preview",origin:"ai",targetPath:"StarterGui.HUD.Minimap",diffSummary:"불완전 화면 캡처 저장",ok:!1,error:"partial snapshot: missing layers",durationMs:876}]};function W(t,e){var s;const r=N[e.mutationId],a=K[e.mutationId];return{...e,diffSummary:e.diffSummary&&r?t(r,e.diffSummary):e.diffSummary,error:e.error&&a?t(a,e.error):e.error,changeDetails:(s=e.changeDetails)==null?void 0:s.map(i=>({...i,label:t($[i.property]??"",i.label)}))}}function de(t){const e=Y.map(a=>({...a,label:a.label?t(O[a.requestId]??"",a.label):a.label})),r=Object.fromEntries(Object.entries(F).map(([a,s])=>[a,s.map(i=>W(t,i))]));return{requests:e,mutationsByRequest:r}}export{ue as D,le as S,V as a,_e as b,ne as c,te as d,ae as e,se as f,z as g,re as h,X as i,ee as j,de as k,me as l,oe as r,ie as s};
@@ -1 +1 @@
1
- import{r as a}from"./index-CtLyZZKX.js";function c(t){const r=Math.max(0,Math.floor(t/1e3)),n=Math.floor(r/3600),o=Math.floor(r%3600/60),e=Math.floor(r%60);return`${String(n).padStart(2,"0")}:${String(o).padStart(2,"0")}:${String(e).padStart(2,"0")}`}const s=1e3;function i(t){const[r,n]=a.useState(t??null);return a.useEffect(()=>{if(t==null){n(null);return}const o=Date.now();n(t);const e=window.setInterval(()=>{n(t+(Date.now()-o))},s);return()=>{window.clearInterval(e)}},[t]),r}export{c as f,i as u};
1
+ import{r as a}from"./index-je833Nom.js";function c(t){const r=Math.max(0,Math.floor(t/1e3)),n=Math.floor(r/3600),o=Math.floor(r%3600/60),e=Math.floor(r%60);return`${String(n).padStart(2,"0")}:${String(o).padStart(2,"0")}:${String(e).padStart(2,"0")}`}const s=1e3;function i(t){const[r,n]=a.useState(t??null);return a.useEffect(()=>{if(t==null){n(null);return}const o=Date.now();n(t);const e=window.setInterval(()=>{n(t+(Date.now()-o))},s);return()=>{window.clearInterval(e)}},[t]),r}export{c as f,i as u};
@@ -1 +1 @@
1
- import{f as T,r as a,z as I,D as P,B as D,C as k,F as A,a as h}from"./index-CtLyZZKX.js";const G="_page_1awr1_2",E="_card_1awr1_10",M="_licenseCardTarget_1awr1_26",F="_licenseCardPro_1awr1_31",N="_cardHeader_1awr1_42",U="_cardHeaderActions_1awr1_55",W="_cardHeaderTitleGroup_1awr1_61",x="_cardHelpButton_1awr1_68",O="_validationCard_1awr1_100",K="_validationSettingRow_1awr1_104",Q="_validationSettingCopy_1awr1_111",$="_validationSettingLabel_1awr1_117",q="_validationSettingStatus_1awr1_125",z="_validationPolicyControl_1awr1_132",V="_validationToggleTarget_1awr1_140",J="_touchTarget44_1awr1_146",X="_collapseButton_1awr1_151",Y="_headerBadge_1awr1_178",Z="_headerBadgeLive_1awr1_192",tt="_licenseGrid_1awr1_198",et="_statusDot_1awr1_216",at="_statusActive_1awr1_225",nt="_statusGrace_1awr1_230",ot="_statusInactive_1awr1_235",st="_statusError_1awr1_239",rt="_proBadge_1awr1_244",it="_upgradeLink_1awr1_258",ct="_licenseControls_1awr1_272",_t="_licenseControlRow_1awr1_281",lt="_licenseField_1awr1_288",gt="_licenseFieldGrow_1awr1_294",dt="_controlLabel_1awr1_299",ut="_textInput_1awr1_305",wt="_actionBtn_1awr1_325",pt="_licenseMessage_1awr1_352",Ct="_licenseNotice_1awr1_359",ht="_licenseNoticeInfo_1awr1_369",yt="_licenseNoticeWarning_1awr1_375",jt="_licenseNoticeMuted_1awr1_381",mt="_controlGrid_1awr1_386",St="_controlHint_1awr1_408",Lt="_routingOverview_1awr1_416",vt="_routingOverviewCopy_1awr1_428",Ht="_routingEyebrow_1awr1_435",ft="_priorityTargetSummary_1awr1_460",bt="_routingFeedback_1awr1_488",Rt="_tableWrap_1awr1_493",Bt="_table_1awr1_493",Tt="_routingTargetsTable_1awr1_504",It="_routingActionColumn_1awr1_509",Pt="_routingActionSlot_1awr1_513",Dt="_studioRoutingChoiceControl_1awr1_535",kt="_segment_1awr1_544",At="_segmentActive_1awr1_545",Gt="_segmentCopy_1awr1_566",Et="_segmentLabel_1awr1_572",Mt="_segmentDescription_1awr1_579",Ft="_segmentIndicator_1awr1_586",Nt="_routingDisabledReason_1awr1_625",Ut="_routingWarning_1awr1_633",Wt="_monoMuted_1awr1_641",xt="_copyIconButton_1awr1_645",Ot="_routingBadge_1awr1_670",Kt="_routingTargetRadio_1awr1_684",Qt="_routingTargetRadioActive_1awr1_705",$t="_routingRadioIndicator_1awr1_721",qt="_emptyRow_1awr1_737",zt="_settingRow_1awr1_777",Vt="_settingLabel_1awr1_791",Jt="_settingControl_1awr1_798",Xt="_select_1awr1_807",Yt="_numberInput_1awr1_829",Zt="_toggleSwitch_1awr1_851",te="_toggleInput_1awr1_858",ee="_toggleTrack_1awr1_866",ae="_toggleThumb_1awr1_888",ne="_savedIndicator_1awr1_937",oe="_savedIndicatorHidden_1awr1_949",se="_savedIndicatorFailed_1awr1_953",re="_dataHistoryIntro_1awr1_958",ie="_dataHistoryList_1awr1_966",ce="_dataHistoryRow_1awr1_972",_e="_dataHistoryDetail_1awr1_981",le="_dataHistoryRowExpanded_1awr1_992",ge="_projectChangesDataHistoryDetail_1awr1_999",de="_uiStudioDataHistoryDetail_1awr1_1003",ue="_dataHistoryMain_1awr1_1007",we="_dataHistoryTitle_1awr1_1011",pe="_dataHistoryDescription_1awr1_1017",Ce="_dataHistoryMetric_1awr1_1025",he="_dataHistoryActions_1awr1_1032",ye="_linkButton_1awr1_1038",je="_manageStorageButton_1awr1_1039",me="_dangerButton_1awr1_1040",Se="_inlineStatus_1awr1_1107",Le="_projectChangesPanel_1awr1_1115",ve="_projectChangesConsoleGrid_1awr1_1126",He="_projectChangesUsageColumn_1awr1_1133",fe="_projectChangesPolicyColumn_1awr1_1134",be="_projectChangesPanelTitle_1awr1_1145",Re="_projectChangesScope_1awr1_1152",Be="_projectChangesUsageBlock_1awr1_1158",Te="_projectChangesUsageSummary_1awr1_1164",Ie="_projectChangesQuotaRail_1awr1_1173",Pe="_projectChangesSessionRail_1awr1_1182",De="_projectChangesContextRail_1awr1_1183",ke="_projectChangesUsageLegend_1awr1_1198",Ae="_projectChangesPolicyFieldset_1awr1_1214",Ge="_projectChangesPolicyLegend_1awr1_1228",Ee="_projectChangesPresetGroup_1awr1_1237",Me="_projectChangesPresetButton_1awr1_1243",Fe="_projectChangesPresetButtonActive_1awr1_1270",Ne="_projectChangesActions_1awr1_1277",Ue="_projectChangesSaveButton_1awr1_1284",We="_projectChangesSecondaryButton_1awr1_1285",xe="_projectChangesSaved_1awr1_1342",Oe="_projectChangesWarning_1awr1_1348",Ke="_projectChangesError_1awr1_1349",Qe="_projectChangesEmpty_1awr1_1350",$e="_projectChangesLastRun_1awr1_1370",qe="_projectChangesLastRunLabel_1awr1_1381",ze="_coldGrid_1awr1_1387",Ve="_coldHint_1awr1_1405",Je="_langRow_1awr1_1414",Xe="_loading_1awr1_1427",Ye="_unit_1awr1_1436",ta={page:G,card:E,licenseCardTarget:M,licenseCardPro:F,cardHeader:N,cardHeaderActions:U,cardHeaderTitleGroup:W,cardHelpButton:x,validationCard:O,validationSettingRow:K,validationSettingCopy:Q,validationSettingLabel:$,validationSettingStatus:q,validationPolicyControl:z,validationToggleTarget:V,touchTarget44:J,collapseButton:X,headerBadge:Y,headerBadgeLive:Z,licenseGrid:tt,statusDot:et,statusActive:at,statusGrace:nt,statusInactive:ot,statusError:st,proBadge:rt,upgradeLink:it,licenseControls:ct,licenseControlRow:_t,licenseField:lt,licenseFieldGrow:gt,controlLabel:dt,textInput:ut,actionBtn:wt,licenseMessage:pt,licenseNotice:Ct,licenseNoticeInfo:ht,licenseNoticeWarning:yt,licenseNoticeMuted:jt,controlGrid:mt,controlHint:St,routingOverview:Lt,routingOverviewCopy:vt,routingEyebrow:Ht,priorityTargetSummary:ft,routingFeedback:bt,tableWrap:Rt,table:Bt,routingTargetsTable:Tt,routingActionColumn:It,routingActionSlot:Pt,studioRoutingChoiceControl:Dt,segment:kt,segmentActive:At,segmentCopy:Gt,segmentLabel:Et,segmentDescription:Mt,segmentIndicator:Ft,routingDisabledReason:Nt,routingWarning:Ut,monoMuted:Wt,copyIconButton:xt,routingBadge:Ot,routingTargetRadio:Kt,routingTargetRadioActive:Qt,routingRadioIndicator:$t,emptyRow:qt,settingRow:zt,settingLabel:Vt,settingControl:Jt,select:Xt,numberInput:Yt,toggleSwitch:Zt,toggleInput:te,toggleTrack:ee,toggleThumb:ae,savedIndicator:ne,savedIndicatorHidden:oe,savedIndicatorFailed:se,dataHistoryIntro:re,dataHistoryList:ie,dataHistoryRow:ce,dataHistoryDetail:_e,dataHistoryRowExpanded:le,projectChangesDataHistoryDetail:ge,uiStudioDataHistoryDetail:de,dataHistoryMain:ue,dataHistoryTitle:we,dataHistoryDescription:pe,dataHistoryMetric:Ce,dataHistoryActions:he,linkButton:ye,manageStorageButton:je,dangerButton:me,inlineStatus:Se,projectChangesPanel:Le,projectChangesConsoleGrid:ve,projectChangesUsageColumn:He,projectChangesPolicyColumn:fe,projectChangesPanelTitle:be,projectChangesScope:Re,projectChangesUsageBlock:Be,projectChangesUsageSummary:Te,projectChangesQuotaRail:Ie,projectChangesSessionRail:Pe,projectChangesContextRail:De,projectChangesUsageLegend:ke,projectChangesPolicyFieldset:Ae,projectChangesPolicyLegend:Ge,projectChangesPresetGroup:Ee,projectChangesPresetButton:Me,projectChangesPresetButtonActive:Fe,projectChangesActions:Ne,projectChangesSaveButton:Ue,projectChangesSecondaryButton:We,projectChangesSaved:xe,projectChangesWarning:Oe,projectChangesError:Ke,projectChangesEmpty:Qe,projectChangesLastRun:$e,projectChangesLastRunLabel:qe,coldGrid:ze,coldHint:Ve,langRow:Je,loading:Xe,unit:Ye};function ea(){const{level:y}=T(),[l,w]=a.useState(null),[j,p]=a.useState(null),[m,C]=a.useState(!1),[S,L]=a.useState(!0),[v,i]=a.useState(!1),[H,_]=a.useState(null),r=y==="disconnected",o=a.useCallback(t=>{t&&p(e=>({...e,...t,maskedKey:t.maskedKey??(e==null?void 0:e.maskedKey),provider:t.provider??(e==null?void 0:e.provider)??"auto"}))},[]),g=a.useCallback(t=>{if(!t){p(null);return}p({...t,provider:t.provider??"auto"})},[]),d=a.useCallback(async()=>{try{return await I()}catch{return null}},[]);a.useEffect(()=>{let t=!1;async function e(){try{const[s,n]=await Promise.all([h.get("/api/dashboard/settings").catch(()=>null),d()]);if(t)return;s&&w(s),n&&o(n)}catch{}finally{t||L(!1)}}return e(),()=>{t=!0}},[d,o]),a.useEffect(()=>{const t=new P;t.connect();const e=t.on("license",s=>{d().then(n=>{if(n){if((s==null?void 0:s.cleared)===!0){g(n);return}o(n)}})});return()=>{e(),t.disconnect()}},[d,o,g]);const c=a.useCallback((t,e)=>{_(t??e)},[]),f=a.useCallback(async t=>{if(r)return!1;if(!t.trim())return _("License key is required."),!1;i(!0);try{const e=await D({licenseKey:t.trim()});return o(e.license),c(e.message,e.ok?"License updated.":"License activation failed."),e.ok}catch{return _("License activation failed."),!1}finally{i(!1)}},[c,r,o]),b=a.useCallback(async()=>{if(!r){i(!0);try{const t=await k();o(t.license),c(t.message,t.ok?"License updated.":"License refresh failed.")}catch{_("License refresh failed.")}finally{i(!1)}}},[c,r,o]),R=a.useCallback(async()=>{if(!r){i(!0);try{const t=await A();g(t.license),c(t.message,t.ok?"License reset.":"License reset failed.")}catch{_("License reset failed.")}finally{i(!1)}}},[c,r,g]),B=a.useCallback(async(t,e)=>{if(!l)return;const s=l.hot[t];w(n=>n&&{...n,hot:{...n.hot,[t]:e}}),C(!0);try{await h.patch("/api/dashboard/settings",{[t]:e})}catch(n){throw w(u=>u&&{...u,hot:{...u.hot,[t]:s}}),n}finally{C(!1)}},[l]);return{settings:l,license:j,saving:m,licenseControlsDisabled:r,licenseSubmitting:v,licenseMessage:H,activateLicense:f,refreshLicense:b,resetLicense:R,updateHotSetting:B,loading:S}}export{ta as s,ea as u};
1
+ import{f as T,r as a,z as I,D as P,B as D,C as k,F as A,a as h}from"./index-je833Nom.js";const G="_page_1awr1_2",E="_card_1awr1_10",M="_licenseCardTarget_1awr1_26",F="_licenseCardPro_1awr1_31",N="_cardHeader_1awr1_42",U="_cardHeaderActions_1awr1_55",W="_cardHeaderTitleGroup_1awr1_61",x="_cardHelpButton_1awr1_68",O="_validationCard_1awr1_100",K="_validationSettingRow_1awr1_104",Q="_validationSettingCopy_1awr1_111",$="_validationSettingLabel_1awr1_117",q="_validationSettingStatus_1awr1_125",z="_validationPolicyControl_1awr1_132",V="_validationToggleTarget_1awr1_140",J="_touchTarget44_1awr1_146",X="_collapseButton_1awr1_151",Y="_headerBadge_1awr1_178",Z="_headerBadgeLive_1awr1_192",tt="_licenseGrid_1awr1_198",et="_statusDot_1awr1_216",at="_statusActive_1awr1_225",nt="_statusGrace_1awr1_230",ot="_statusInactive_1awr1_235",st="_statusError_1awr1_239",rt="_proBadge_1awr1_244",it="_upgradeLink_1awr1_258",ct="_licenseControls_1awr1_272",_t="_licenseControlRow_1awr1_281",lt="_licenseField_1awr1_288",gt="_licenseFieldGrow_1awr1_294",dt="_controlLabel_1awr1_299",ut="_textInput_1awr1_305",wt="_actionBtn_1awr1_325",pt="_licenseMessage_1awr1_352",Ct="_licenseNotice_1awr1_359",ht="_licenseNoticeInfo_1awr1_369",yt="_licenseNoticeWarning_1awr1_375",jt="_licenseNoticeMuted_1awr1_381",mt="_controlGrid_1awr1_386",St="_controlHint_1awr1_408",Lt="_routingOverview_1awr1_416",vt="_routingOverviewCopy_1awr1_428",Ht="_routingEyebrow_1awr1_435",ft="_priorityTargetSummary_1awr1_460",bt="_routingFeedback_1awr1_488",Rt="_tableWrap_1awr1_493",Bt="_table_1awr1_493",Tt="_routingTargetsTable_1awr1_504",It="_routingActionColumn_1awr1_509",Pt="_routingActionSlot_1awr1_513",Dt="_studioRoutingChoiceControl_1awr1_535",kt="_segment_1awr1_544",At="_segmentActive_1awr1_545",Gt="_segmentCopy_1awr1_566",Et="_segmentLabel_1awr1_572",Mt="_segmentDescription_1awr1_579",Ft="_segmentIndicator_1awr1_586",Nt="_routingDisabledReason_1awr1_625",Ut="_routingWarning_1awr1_633",Wt="_monoMuted_1awr1_641",xt="_copyIconButton_1awr1_645",Ot="_routingBadge_1awr1_670",Kt="_routingTargetRadio_1awr1_684",Qt="_routingTargetRadioActive_1awr1_705",$t="_routingRadioIndicator_1awr1_721",qt="_emptyRow_1awr1_737",zt="_settingRow_1awr1_777",Vt="_settingLabel_1awr1_791",Jt="_settingControl_1awr1_798",Xt="_select_1awr1_807",Yt="_numberInput_1awr1_829",Zt="_toggleSwitch_1awr1_851",te="_toggleInput_1awr1_858",ee="_toggleTrack_1awr1_866",ae="_toggleThumb_1awr1_888",ne="_savedIndicator_1awr1_937",oe="_savedIndicatorHidden_1awr1_949",se="_savedIndicatorFailed_1awr1_953",re="_dataHistoryIntro_1awr1_958",ie="_dataHistoryList_1awr1_966",ce="_dataHistoryRow_1awr1_972",_e="_dataHistoryDetail_1awr1_981",le="_dataHistoryRowExpanded_1awr1_992",ge="_projectChangesDataHistoryDetail_1awr1_999",de="_uiStudioDataHistoryDetail_1awr1_1003",ue="_dataHistoryMain_1awr1_1007",we="_dataHistoryTitle_1awr1_1011",pe="_dataHistoryDescription_1awr1_1017",Ce="_dataHistoryMetric_1awr1_1025",he="_dataHistoryActions_1awr1_1032",ye="_linkButton_1awr1_1038",je="_manageStorageButton_1awr1_1039",me="_dangerButton_1awr1_1040",Se="_inlineStatus_1awr1_1107",Le="_projectChangesPanel_1awr1_1115",ve="_projectChangesConsoleGrid_1awr1_1126",He="_projectChangesUsageColumn_1awr1_1133",fe="_projectChangesPolicyColumn_1awr1_1134",be="_projectChangesPanelTitle_1awr1_1145",Re="_projectChangesScope_1awr1_1152",Be="_projectChangesUsageBlock_1awr1_1158",Te="_projectChangesUsageSummary_1awr1_1164",Ie="_projectChangesQuotaRail_1awr1_1173",Pe="_projectChangesSessionRail_1awr1_1182",De="_projectChangesContextRail_1awr1_1183",ke="_projectChangesUsageLegend_1awr1_1198",Ae="_projectChangesPolicyFieldset_1awr1_1214",Ge="_projectChangesPolicyLegend_1awr1_1228",Ee="_projectChangesPresetGroup_1awr1_1237",Me="_projectChangesPresetButton_1awr1_1243",Fe="_projectChangesPresetButtonActive_1awr1_1270",Ne="_projectChangesActions_1awr1_1277",Ue="_projectChangesSaveButton_1awr1_1284",We="_projectChangesSecondaryButton_1awr1_1285",xe="_projectChangesSaved_1awr1_1342",Oe="_projectChangesWarning_1awr1_1348",Ke="_projectChangesError_1awr1_1349",Qe="_projectChangesEmpty_1awr1_1350",$e="_projectChangesLastRun_1awr1_1370",qe="_projectChangesLastRunLabel_1awr1_1381",ze="_coldGrid_1awr1_1387",Ve="_coldHint_1awr1_1405",Je="_langRow_1awr1_1414",Xe="_loading_1awr1_1427",Ye="_unit_1awr1_1436",ta={page:G,card:E,licenseCardTarget:M,licenseCardPro:F,cardHeader:N,cardHeaderActions:U,cardHeaderTitleGroup:W,cardHelpButton:x,validationCard:O,validationSettingRow:K,validationSettingCopy:Q,validationSettingLabel:$,validationSettingStatus:q,validationPolicyControl:z,validationToggleTarget:V,touchTarget44:J,collapseButton:X,headerBadge:Y,headerBadgeLive:Z,licenseGrid:tt,statusDot:et,statusActive:at,statusGrace:nt,statusInactive:ot,statusError:st,proBadge:rt,upgradeLink:it,licenseControls:ct,licenseControlRow:_t,licenseField:lt,licenseFieldGrow:gt,controlLabel:dt,textInput:ut,actionBtn:wt,licenseMessage:pt,licenseNotice:Ct,licenseNoticeInfo:ht,licenseNoticeWarning:yt,licenseNoticeMuted:jt,controlGrid:mt,controlHint:St,routingOverview:Lt,routingOverviewCopy:vt,routingEyebrow:Ht,priorityTargetSummary:ft,routingFeedback:bt,tableWrap:Rt,table:Bt,routingTargetsTable:Tt,routingActionColumn:It,routingActionSlot:Pt,studioRoutingChoiceControl:Dt,segment:kt,segmentActive:At,segmentCopy:Gt,segmentLabel:Et,segmentDescription:Mt,segmentIndicator:Ft,routingDisabledReason:Nt,routingWarning:Ut,monoMuted:Wt,copyIconButton:xt,routingBadge:Ot,routingTargetRadio:Kt,routingTargetRadioActive:Qt,routingRadioIndicator:$t,emptyRow:qt,settingRow:zt,settingLabel:Vt,settingControl:Jt,select:Xt,numberInput:Yt,toggleSwitch:Zt,toggleInput:te,toggleTrack:ee,toggleThumb:ae,savedIndicator:ne,savedIndicatorHidden:oe,savedIndicatorFailed:se,dataHistoryIntro:re,dataHistoryList:ie,dataHistoryRow:ce,dataHistoryDetail:_e,dataHistoryRowExpanded:le,projectChangesDataHistoryDetail:ge,uiStudioDataHistoryDetail:de,dataHistoryMain:ue,dataHistoryTitle:we,dataHistoryDescription:pe,dataHistoryMetric:Ce,dataHistoryActions:he,linkButton:ye,manageStorageButton:je,dangerButton:me,inlineStatus:Se,projectChangesPanel:Le,projectChangesConsoleGrid:ve,projectChangesUsageColumn:He,projectChangesPolicyColumn:fe,projectChangesPanelTitle:be,projectChangesScope:Re,projectChangesUsageBlock:Be,projectChangesUsageSummary:Te,projectChangesQuotaRail:Ie,projectChangesSessionRail:Pe,projectChangesContextRail:De,projectChangesUsageLegend:ke,projectChangesPolicyFieldset:Ae,projectChangesPolicyLegend:Ge,projectChangesPresetGroup:Ee,projectChangesPresetButton:Me,projectChangesPresetButtonActive:Fe,projectChangesActions:Ne,projectChangesSaveButton:Ue,projectChangesSecondaryButton:We,projectChangesSaved:xe,projectChangesWarning:Oe,projectChangesError:Ke,projectChangesEmpty:Qe,projectChangesLastRun:$e,projectChangesLastRunLabel:qe,coldGrid:ze,coldHint:Ve,langRow:Je,loading:Xe,unit:Ye};function ea(){const{level:y}=T(),[l,w]=a.useState(null),[j,p]=a.useState(null),[m,C]=a.useState(!1),[S,L]=a.useState(!0),[v,i]=a.useState(!1),[H,_]=a.useState(null),r=y==="disconnected",o=a.useCallback(t=>{t&&p(e=>({...e,...t,maskedKey:t.maskedKey??(e==null?void 0:e.maskedKey),provider:t.provider??(e==null?void 0:e.provider)??"auto"}))},[]),g=a.useCallback(t=>{if(!t){p(null);return}p({...t,provider:t.provider??"auto"})},[]),d=a.useCallback(async()=>{try{return await I()}catch{return null}},[]);a.useEffect(()=>{let t=!1;async function e(){try{const[s,n]=await Promise.all([h.get("/api/dashboard/settings").catch(()=>null),d()]);if(t)return;s&&w(s),n&&o(n)}catch{}finally{t||L(!1)}}return e(),()=>{t=!0}},[d,o]),a.useEffect(()=>{const t=new P;t.connect();const e=t.on("license",s=>{d().then(n=>{if(n){if((s==null?void 0:s.cleared)===!0){g(n);return}o(n)}})});return()=>{e(),t.disconnect()}},[d,o,g]);const c=a.useCallback((t,e)=>{_(t??e)},[]),f=a.useCallback(async t=>{if(r)return!1;if(!t.trim())return _("License key is required."),!1;i(!0);try{const e=await D({licenseKey:t.trim()});return o(e.license),c(e.message,e.ok?"License updated.":"License activation failed."),e.ok}catch{return _("License activation failed."),!1}finally{i(!1)}},[c,r,o]),b=a.useCallback(async()=>{if(!r){i(!0);try{const t=await k();o(t.license),c(t.message,t.ok?"License updated.":"License refresh failed.")}catch{_("License refresh failed.")}finally{i(!1)}}},[c,r,o]),R=a.useCallback(async()=>{if(!r){i(!0);try{const t=await A();g(t.license),c(t.message,t.ok?"License reset.":"License reset failed.")}catch{_("License reset failed.")}finally{i(!1)}}},[c,r,g]),B=a.useCallback(async(t,e)=>{if(!l)return;const s=l.hot[t];w(n=>n&&{...n,hot:{...n.hot,[t]:e}}),C(!0);try{await h.patch("/api/dashboard/settings",{[t]:e})}catch(n){throw w(u=>u&&{...u,hot:{...u.hot,[t]:s}}),n}finally{C(!1)}},[l]);return{settings:l,license:j,saving:m,licenseControlsDisabled:r,licenseSubmitting:v,licenseMessage:H,activateLicense:f,refreshLicense:b,resetLicense:R,updateHotSetting:B,loading:S}}export{ta as s,ea as u};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" href="/dashboard/weppy-icon.png" />
7
7
  <title>WEPPY Dashboard</title>
8
- <script type="module" crossorigin src="/dashboard/assets/index-CtLyZZKX.js"></script>
8
+ <script type="module" crossorigin src="/dashboard/assets/index-je833Nom.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/dashboard/assets/index-jDDNKuJU.css">
10
10
  </head>
11
11
  <body>