@sleep2agi/agent-network-dashboard 0.4.6-preview.255 → 0.4.6-preview.257
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +4 -4
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.html +1 -1
- package/.next/server/app/admin.rsc +1 -1
- package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +1 -1
- package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages.html +1 -1
- package/.next/server/app/messages.rsc +1 -1
- package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node.html +1 -1
- package/.next/server/app/node.rsc +1 -1
- package/.next/server/app/node.segments/_full.segment.rsc +1 -1
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +1 -1
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes.html +1 -1
- package/.next/server/app/nodes.rsc +1 -1
- package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +1 -1
- package/.next/server/app/server-logs.rsc +1 -1
- package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks.html +1 -1
- package/.next/server/app/settings/networks.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +1 -1
- package/.next/server/app/settings/tokens.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks.html +1 -1
- package/.next/server/app/tasks.rsc +1 -1
- package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{0l9-fuqv0.8hs.js → 0bf5jlulny0a4.js} +1 -1
- package/.next/static/chunks/{0ls5ub379gwuh.js → 0x2xktkosa9jo.js} +2 -2
- package/.next/static/chunks/{0r0~xrrd_ww~t.js → 163hogc.6af4c.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +51 -12
- package/package.json +1 -1
- package/scripts/topo-chrome-pop-extension-test.mjs +98 -0
- package/scripts/topo-chrome-pop-nodesize-test.mjs +88 -0
- /package/.next/static/{CNet9a9Bwooa-6U9T5a5Y → Y70LgbBo4fA7-eNNd9B5f}/_buildManifest.js +0 -0
- /package/.next/static/{CNet9a9Bwooa-6U9T5a5Y → Y70LgbBo4fA7-eNNd9B5f}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{CNet9a9Bwooa-6U9T5a5Y → Y70LgbBo4fA7-eNNd9B5f}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.4.6-preview.255"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,59276,e=>{"use strict";var s=e.i(12629),a=e.i(11449);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},70286,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.4.6-preview.257"],70286)},65610,e=>{"use strict";var s=e.i(22381),a=e.i(23910),t=e.i(56839),r=e.i(59276),n=e.i(70286);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:l}=(0,r.useHealth)(),{license:i}=(0,r.useLicense)(),[c,d]=(0,a.useState)(""),[o,x]=(0,a.useState)(""),[m,h]=(0,a.useState)(""),[g,u]=(0,a.useState)(""),[p,N]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",j="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${j}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${j}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${l?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:l?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsxs)("span",{className:"text-gray-500",children:["SSE streams ",(0,s.jsx)("span",{className:"text-gray-600",children:"· server"})]}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:l?.uptime?`${Math.floor(l.uptime/3600)}h ${Math.floor(l.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 font-mono ${j}`,title:"From package.json @sleep2agi/agent-network-dashboard",children:n.DASHBOARD_VERSION})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:"Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",i?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===i.license.type?"text-green-300 bg-green-500/10 border-green-500/30":i.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),i.license.type,i.license.days_left?` \xb7 ${i.license.days_left}d left`:""]})]}),i?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[i.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[i.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.license.expires_at})]}),i.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${j}`,children:i.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!c.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:c})}),s=await e.json();x(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&d(""),setTimeout(()=>x(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),o&&(0,s.jsx)("div",{className:`mt-2 text-xs ${o.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:o})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:m,onChange:e=>h(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:g,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!m||!g)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void N("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:m,new_password:g})}),t=await a.json();if(N(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}h(""),u("")}setTimeout(()=>N(""),5e3)},disabled:!m||!g,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),p&&(0,s.jsx)("div",{className:`mt-2 text-xs ${p.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:p})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);
|
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":326,"timestamp":92059557046,"id":4,"parentId":1,"tags":{},"startTime":1778900031803,"traceId":"0ba1af1bb1779032"},{"name":"load-custom-routes","duration":465,"timestamp":92059557525,"id":5,"parentId":1,"tags":{},"startTime":1778900031804,"traceId":"0ba1af1bb1779032"},{"name":"create-dist-dir","duration":737,"timestamp":92059558061,"id":6,"parentId":1,"tags":{},"startTime":1778900031804,"traceId":"0ba1af1bb1779032"},{"name":"clean","duration":33315,"timestamp":92059559538,"id":7,"parentId":1,"tags":{},"startTime":1778900031806,"traceId":"0ba1af1bb1779032"},{"name":"discover-routes","duration":28520,"timestamp":92059681958,"id":8,"parentId":1,"tags":{},"startTime":1778900031928,"traceId":"0ba1af1bb1779032"},{"name":"create-root-mapping","duration":198,"timestamp":92059710570,"id":9,"parentId":1,"tags":{},"startTime":1778900031957,"traceId":"0ba1af1bb1779032"},{"name":"generate-route-types","duration":23457,"timestamp":92059714304,"id":10,"parentId":1,"tags":{},"startTime":1778900031961,"traceId":"0ba1af1bb1779032"},{"name":"public-dir-conflict-check","duration":116,"timestamp":92059737858,"id":11,"parentId":1,"tags":{},"startTime":1778900031984,"traceId":"0ba1af1bb1779032"},{"name":"generate-routes-manifest","duration":5015,"timestamp":92059738123,"id":12,"parentId":1,"tags":{},"startTime":1778900031984,"traceId":"0ba1af1bb1779032"},{"name":"run-turbopack","duration":5861609,"timestamp":92059756563,"id":14,"parentId":1,"tags":{},"startTime":1778900032003,"traceId":"0ba1af1bb1779032"},{"name":"turbopack-build-events","duration":99,"timestamp":92060065548,"id":15,"parentId":1,"tags":{},"startTime":1778900032312,"traceId":"0ba1af1bb1779032"},{"name":"run-typescript","duration":9548879,"timestamp":92065627676,"id":16,"parentId":1,"tags":{},"startTime":1778900037874,"traceId":"0ba1af1bb1779032"},{"name":"generate-required-server-files","duration":2786,"timestamp":92075177701,"id":18,"parentId":1,"tags":{},"startTime":1778900047424,"traceId":"0ba1af1bb1779032"},{"name":"check-static-error-page","duration":14963,"timestamp":92075374876,"id":20,"parentId":19,"tags":{},"startTime":1778900047621,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":600621,"timestamp":92075394043,"id":67,"parentId":28,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":612583,"timestamp":92075382245,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":612388,"timestamp":92075395156,"id":69,"parentId":30,"tags":{},"startTime":1778900047641,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":625104,"timestamp":92075382519,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":629758,"timestamp":92075393326,"id":63,"parentId":22,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":644854,"timestamp":92075378333,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":676072,"timestamp":92075393473,"id":64,"parentId":25,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":687879,"timestamp":92075381739,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":676125,"timestamp":92075395363,"id":70,"parentId":32,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":688629,"timestamp":92075382920,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":707549,"timestamp":92075395552,"id":73,"parentId":35,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":720016,"timestamp":92075383382,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":717958,"timestamp":92075395517,"id":72,"parentId":34,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":730310,"timestamp":92075383235,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":729614,"timestamp":92075393738,"id":66,"parentId":27,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":741326,"timestamp":92075382093,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":732314,"timestamp":92075395668,"id":74,"parentId":36,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":744177,"timestamp":92075383893,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":735134,"timestamp":92075395702,"id":75,"parentId":37,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":746743,"timestamp":92075384148,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":736699,"timestamp":92075395735,"id":77,"parentId":39,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":748046,"timestamp":92075384440,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":740331,"timestamp":92075392888,"id":62,"parentId":21,"tags":{},"startTime":1778900047639,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":756714,"timestamp":92075376592,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778900047623,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":743590,"timestamp":92075395770,"id":78,"parentId":40,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":754862,"timestamp":92075384557,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":748392,"timestamp":92075395780,"id":79,"parentId":41,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":759562,"timestamp":92075384656,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":748770,"timestamp":92075395807,"id":81,"parentId":43,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":759744,"timestamp":92075384876,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":750734,"timestamp":92075395815,"id":82,"parentId":44,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":761610,"timestamp":92075384975,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":757631,"timestamp":92075395720,"id":76,"parentId":38,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":769085,"timestamp":92075384325,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":757721,"timestamp":92075395842,"id":84,"parentId":46,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":768262,"timestamp":92075385328,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":759937,"timestamp":92075395829,"id":83,"parentId":45,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":770616,"timestamp":92075385190,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":763490,"timestamp":92075396081,"id":87,"parentId":49,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":773935,"timestamp":92075385682,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":764441,"timestamp":92075395865,"id":86,"parentId":48,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":774757,"timestamp":92075385581,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":767268,"timestamp":92075395856,"id":85,"parentId":47,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":777712,"timestamp":92075385469,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":746807,"timestamp":92075417048,"id":89,"parentId":31,"tags":{},"startTime":1778900047663,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":781250,"timestamp":92075382651,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":749202,"timestamp":92075415535,"id":88,"parentId":24,"tags":{},"startTime":1778900047662,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":785943,"timestamp":92075378839,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":770265,"timestamp":92075395438,"id":71,"parentId":33,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":782665,"timestamp":92075383086,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":819070,"timestamp":92075393618,"id":65,"parentId":26,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":830843,"timestamp":92075381931,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":827047,"timestamp":92075395793,"id":80,"parentId":42,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":838142,"timestamp":92075384772,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":801552,"timestamp":92075427127,"id":93,"parentId":52,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":842198,"timestamp":92075386558,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":805784,"timestamp":92075426903,"id":90,"parentId":23,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":854138,"timestamp":92075378606,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":811896,"timestamp":92075427183,"id":96,"parentId":56,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":851009,"timestamp":92075388138,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778900047634,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":813665,"timestamp":92075427217,"id":97,"parentId":57,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":852523,"timestamp":92075388415,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":814431,"timestamp":92075426956,"id":92,"parentId":51,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":855077,"timestamp":92075386359,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":816003,"timestamp":92075427235,"id":98,"parentId":59,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":854155,"timestamp":92075389153,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":818231,"timestamp":92075427167,"id":95,"parentId":54,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":858331,"timestamp":92075387118,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":819971,"timestamp":92075426941,"id":91,"parentId":50,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":860810,"timestamp":92075386146,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":821934,"timestamp":92075427272,"id":100,"parentId":61,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":859723,"timestamp":92075389520,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778900047636,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":765791,"timestamp":92075485139,"id":101,"parentId":55,"tags":{},"startTime":1778900047731,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":863512,"timestamp":92075387468,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778900047634,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":762849,"timestamp":92075490620,"id":102,"parentId":58,"tags":{},"startTime":1778900047737,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":864878,"timestamp":92075388640,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":827189,"timestamp":92075427252,"id":99,"parentId":60,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":865154,"timestamp":92075389346,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778900047636,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":870078,"timestamp":92075394952,"id":68,"parentId":29,"tags":{},"startTime":1778900047641,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":882719,"timestamp":92075382372,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":854647,"timestamp":92075427147,"id":94,"parentId":53,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":895045,"timestamp":92075386820,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"static-check","duration":908123,"timestamp":92075373809,"id":19,"parentId":1,"tags":{},"startTime":1778900047620,"traceId":"0ba1af1bb1779032"},{"name":"write-routes-manifest","duration":451,"timestamp":92076289573,"id":104,"parentId":1,"tags":{},"startTime":1778900048536,"traceId":"0ba1af1bb1779032"},{"name":"load-dotenv","duration":72,"timestamp":92076304627,"id":107,"parentId":106,"tags":{},"startTime":1778900048551,"traceId":"0ba1af1bb1779032"},{"name":"run-export-path-map","duration":561,"timestamp":92076307592,"id":108,"parentId":106,"tags":{},"startTime":1778900048554,"traceId":"0ba1af1bb1779032"},{"name":"next-export","duration":629142,"timestamp":92076302957,"id":106,"parentId":1,"tags":{},"startTime":1778900048549,"traceId":"0ba1af1bb1779032"}]
|
|
2
|
-
[{"name":"move-exported-app-not-found-","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":254,"timestamp":92911526564,"id":4,"parentId":1,"tags":{},"startTime":1778900883773,"traceId":"5d003c9cb25dfbf2"},{"name":"load-custom-routes","duration":478,"timestamp":92911526959,"id":5,"parentId":1,"tags":{},"startTime":1778900883773,"traceId":"5d003c9cb25dfbf2"},{"name":"create-dist-dir","duration":715,"timestamp":92911527480,"id":6,"parentId":1,"tags":{},"startTime":1778900883774,"traceId":"5d003c9cb25dfbf2"},{"name":"clean","duration":34169,"timestamp":92911528869,"id":7,"parentId":1,"tags":{},"startTime":1778900883775,"traceId":"5d003c9cb25dfbf2"},{"name":"discover-routes","duration":24626,"timestamp":92911661761,"id":8,"parentId":1,"tags":{},"startTime":1778900883908,"traceId":"5d003c9cb25dfbf2"},{"name":"create-root-mapping","duration":135,"timestamp":92911686456,"id":9,"parentId":1,"tags":{},"startTime":1778900883933,"traceId":"5d003c9cb25dfbf2"},{"name":"generate-route-types","duration":22009,"timestamp":92911689191,"id":10,"parentId":1,"tags":{},"startTime":1778900883935,"traceId":"5d003c9cb25dfbf2"},{"name":"public-dir-conflict-check","duration":110,"timestamp":92911711294,"id":11,"parentId":1,"tags":{},"startTime":1778900883958,"traceId":"5d003c9cb25dfbf2"},{"name":"generate-routes-manifest","duration":4775,"timestamp":92911711527,"id":12,"parentId":1,"tags":{},"startTime":1778900883958,"traceId":"5d003c9cb25dfbf2"},{"name":"run-turbopack","duration":6232125,"timestamp":92911722548,"id":14,"parentId":1,"tags":{},"startTime":1778900883969,"traceId":"5d003c9cb25dfbf2"},{"name":"turbopack-build-events","duration":72,"timestamp":92912007676,"id":15,"parentId":1,"tags":{},"startTime":1778900884254,"traceId":"5d003c9cb25dfbf2"},{"name":"run-typescript","duration":9760257,"timestamp":92917964209,"id":16,"parentId":1,"tags":{},"startTime":1778900890210,"traceId":"5d003c9cb25dfbf2"},{"name":"generate-required-server-files","duration":2854,"timestamp":92927725799,"id":18,"parentId":1,"tags":{},"startTime":1778900899972,"traceId":"5d003c9cb25dfbf2"},{"name":"check-static-error-page","duration":14832,"timestamp":92927940391,"id":20,"parentId":19,"tags":{},"startTime":1778900900187,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":603407,"timestamp":92927961850,"id":68,"parentId":29,"tags":{},"startTime":1778900900208,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":617906,"timestamp":92927947548,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":627736,"timestamp":92927962044,"id":69,"parentId":30,"tags":{},"startTime":1778900900208,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":642170,"timestamp":92927947717,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":632064,"timestamp":92927958125,"id":63,"parentId":22,"tags":{},"startTime":1778900900204,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":646508,"timestamp":92927943739,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778900900190,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":642034,"timestamp":92927962257,"id":70,"parentId":32,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":656178,"timestamp":92927948199,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":648007,"timestamp":92927962399,"id":72,"parentId":34,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":661977,"timestamp":92927948510,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778900900195,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":652384,"timestamp":92927962429,"id":73,"parentId":35,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":666197,"timestamp":92927948673,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778900900195,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":660950,"timestamp":92927958225,"id":64,"parentId":25,"tags":{},"startTime":1778900900204,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":672331,"timestamp":92927946903,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778900900193,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":659566,"timestamp":92927962552,"id":74,"parentId":36,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":672949,"timestamp":92927949223,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778900900195,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":666601,"timestamp":92927958332,"id":65,"parentId":26,"tags":{},"startTime":1778900900205,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":677871,"timestamp":92927947114,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778900900193,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":668837,"timestamp":92927962612,"id":77,"parentId":39,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":681767,"timestamp":92927949725,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":683678,"timestamp":92927962587,"id":75,"parentId":37,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":696900,"timestamp":92927949424,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":687055,"timestamp":92927962601,"id":76,"parentId":38,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":700136,"timestamp":92927949583,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":690801,"timestamp":92927962634,"id":79,"parentId":41,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":703522,"timestamp":92927949963,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":705786,"timestamp":92927962646,"id":80,"parentId":42,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":718376,"timestamp":92927950125,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":707901,"timestamp":92927962656,"id":81,"parentId":43,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":720341,"timestamp":92927950259,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":712632,"timestamp":92927962675,"id":83,"parentId":45,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":724929,"timestamp":92927950419,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":713292,"timestamp":92927962666,"id":82,"parentId":44,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":725688,"timestamp":92927950344,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":716327,"timestamp":92927962622,"id":78,"parentId":40,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":729144,"timestamp":92927949847,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778900900196,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":718827,"timestamp":92927965730,"id":86,"parentId":48,"tags":{},"startTime":1778900900212,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":733959,"timestamp":92927950639,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":719642,"timestamp":92927965702,"id":85,"parentId":47,"tags":{},"startTime":1778900900212,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":734809,"timestamp":92927950574,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":724481,"timestamp":92927965744,"id":87,"parentId":49,"tags":{},"startTime":1778900900212,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":739568,"timestamp":92927950704,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":721432,"timestamp":92927969222,"id":88,"parentId":24,"tags":{},"startTime":1778900900215,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":746350,"timestamp":92927944344,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778900900191,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":733220,"timestamp":92927958435,"id":66,"parentId":27,"tags":{},"startTime":1778900900205,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":744439,"timestamp":92927947260,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":731535,"timestamp":92927962685,"id":84,"parentId":46,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":743780,"timestamp":92927950483,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778900900197,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":726107,"timestamp":92927970365,"id":89,"parentId":31,"tags":{},"startTime":1778900900217,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":748665,"timestamp":92927947862,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":753502,"timestamp":92927958690,"id":67,"parentId":28,"tags":{},"startTime":1778900900205,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":764864,"timestamp":92927947401,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778900900194,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":778187,"timestamp":92927957726,"id":62,"parentId":21,"tags":{},"startTime":1778900900204,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":793845,"timestamp":92927942149,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778900900188,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":788692,"timestamp":92927978892,"id":90,"parentId":23,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":823612,"timestamp":92927944058,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778900900190,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":788921,"timestamp":92927978949,"id":93,"parentId":52,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":815256,"timestamp":92927952656,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778900900199,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":794356,"timestamp":92927978983,"id":96,"parentId":56,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":819691,"timestamp":92927953705,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778900900200,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":796448,"timestamp":92927978995,"id":97,"parentId":57,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":821581,"timestamp":92927953916,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778900900200,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":803992,"timestamp":92927978936,"id":92,"parentId":51,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":830458,"timestamp":92927952525,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778900900199,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":805338,"timestamp":92927979022,"id":98,"parentId":59,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":829812,"timestamp":92927954623,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778900900201,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":810458,"timestamp":92927979042,"id":99,"parentId":60,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":834779,"timestamp":92927954780,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778900900201,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":811250,"timestamp":92927979066,"id":100,"parentId":61,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":835429,"timestamp":92927954933,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778900900201,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":814906,"timestamp":92927978970,"id":95,"parentId":54,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":840814,"timestamp":92927953105,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778900900199,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":791525,"timestamp":92928005798,"id":102,"parentId":58,"tags":{},"startTime":1778900900252,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":843248,"timestamp":92927954120,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778900900200,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":805313,"timestamp":92927992620,"id":101,"parentId":55,"tags":{},"startTime":1778900900239,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":844676,"timestamp":92927953295,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778900900200,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":843010,"timestamp":92927962327,"id":71,"parentId":33,"tags":{},"startTime":1778900900209,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":857292,"timestamp":92927948358,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778900900195,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":838001,"timestamp":92927978921,"id":91,"parentId":50,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":864643,"timestamp":92927952326,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778900900199,"traceId":"5d003c9cb25dfbf2"},{"name":"is-page-static","duration":840284,"timestamp":92927978962,"id":94,"parentId":53,"tags":{},"startTime":1778900900225,"traceId":"5d003c9cb25dfbf2"},{"name":"check-page","duration":866419,"timestamp":92927952862,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778900900199,"traceId":"5d003c9cb25dfbf2"},{"name":"static-check","duration":880111,"timestamp":92927939227,"id":19,"parentId":1,"tags":{},"startTime":1778900900186,"traceId":"5d003c9cb25dfbf2"},{"name":"write-routes-manifest","duration":577,"timestamp":92928826966,"id":104,"parentId":1,"tags":{},"startTime":1778900901073,"traceId":"5d003c9cb25dfbf2"},{"name":"load-dotenv","duration":70,"timestamp":92928844589,"id":107,"parentId":106,"tags":{},"startTime":1778900901091,"traceId":"5d003c9cb25dfbf2"},{"name":"run-export-path-map","duration":702,"timestamp":92928848270,"id":108,"parentId":106,"tags":{},"startTime":1778900901095,"traceId":"5d003c9cb25dfbf2"},{"name":"next-export","duration":706472,"timestamp":92928842774,"id":106,"parentId":1,"tags":{},"startTime":1778900901089,"traceId":"5d003c9cb25dfbf2"}]
|
|
2
|
+
[{"name":"move-exported-app-not-found-","duration":2955,"timestamp":92929553982,"id":109,"parentId":105,"tags":{},"startTime":1778900901800,"traceId":"5d003c9cb25dfbf2"},{"name":"move-exported-app-global-error-","duration":662,"timestamp":92929557068,"id":110,"parentId":105,"tags":{},"startTime":1778900901803,"traceId":"5d003c9cb25dfbf2"},{"name":"static-generation","duration":726033,"timestamp":92928834193,"id":105,"parentId":1,"tags":{},"startTime":1778900901080,"traceId":"5d003c9cb25dfbf2"},{"name":"write-routes-manifest","duration":487,"timestamp":92929560415,"id":111,"parentId":1,"tags":{},"startTime":1778900901807,"traceId":"5d003c9cb25dfbf2"},{"name":"print-tree-view","duration":5221,"timestamp":92929582387,"id":112,"parentId":1,"tags":{},"startTime":1778900901829,"traceId":"5d003c9cb25dfbf2"},{"name":"write-route-bundle-stats","duration":14555,"timestamp":92929587651,"id":113,"parentId":1,"tags":{},"startTime":1778900901834,"traceId":"5d003c9cb25dfbf2"},{"name":"telemetry-flush","duration":17351,"timestamp":92929602243,"id":114,"parentId":1,"tags":{},"startTime":1778900901849,"traceId":"5d003c9cb25dfbf2"},{"name":"next-build","duration":18148348,"timestamp":92911471284,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900883718,"traceId":"5d003c9cb25dfbf2"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":6232125,"timestamp":92911722548,"id":14,"parentId":1,"tags":{},"startTime":1778900883969,"traceId":"5d003c9cb25dfbf2"},{"name":"turbopack-build-events","duration":72,"timestamp":92912007676,"id":15,"parentId":1,"tags":{},"startTime":1778900884254,"traceId":"5d003c9cb25dfbf2"},{"name":"run-typescript","duration":9760257,"timestamp":92917964209,"id":16,"parentId":1,"tags":{},"startTime":1778900890210,"traceId":"5d003c9cb25dfbf2"},{"name":"static-check","duration":880111,"timestamp":92927939227,"id":19,"parentId":1,"tags":{},"startTime":1778900900186,"traceId":"5d003c9cb25dfbf2"},{"name":"static-generation","duration":726033,"timestamp":92928834193,"id":105,"parentId":1,"tags":{},"startTime":1778900901080,"traceId":"5d003c9cb25dfbf2"},{"name":"telemetry-flush","duration":17351,"timestamp":92929602243,"id":114,"parentId":1,"tags":{},"startTime":1778900901849,"traceId":"5d003c9cb25dfbf2"},{"name":"next-build","duration":18148348,"timestamp":92911471284,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900883718,"traceId":"5d003c9cb25dfbf2"}]
|
|
@@ -1069,8 +1069,20 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1069
1069
|
// is currently popping so only that icon picks up the class.
|
|
1070
1070
|
// Arms for 240ms (CSS animation 220ms + 20ms buffer) so a quick
|
|
1071
1071
|
// re-click can replay cleanly.
|
|
1072
|
-
|
|
1073
|
-
|
|
1072
|
+
// Round 249 / Loop: extend chromePopping to cover ring/grid layout
|
|
1073
|
+
// toggle + fullscreen button alongside the existing zoom-in/zoom-out.
|
|
1074
|
+
// Pre-R249 only the zoom buttons fired the R186 .anet-chrome-pop scale
|
|
1075
|
+
// pulse on click; the other chrome controls (layout toggle, fullscreen)
|
|
1076
|
+
// had no transient "I just clicked" signal — silent click → state change
|
|
1077
|
+
// with only the post-click visual difference to confirm action. R249
|
|
1078
|
+
// gives every clickable chrome control the same 220ms scale pulse, so
|
|
1079
|
+
// the whole strip speaks one consistent click vocabulary. Reset button
|
|
1080
|
+
// keeps its own R184 rotation animation (different gesture, semantic).
|
|
1081
|
+
// Node-size S/M/L keep their R171 layoutSwitching crossfade (already
|
|
1082
|
+
// gestural). Type union grows but the helper signature stays one-arg.
|
|
1083
|
+
type ChromePop = 'zoom-in' | 'zoom-out' | 'layout-ring' | 'layout-grid' | 'fullscreen' | 'size-S' | 'size-M' | 'size-L';
|
|
1084
|
+
const [chromePopping, setChromePopping] = useState<ChromePop | null>(null);
|
|
1085
|
+
const popChrome = (which: ChromePop) => {
|
|
1074
1086
|
setChromePopping(which);
|
|
1075
1087
|
setTimeout(() => setChromePopping(prev => prev === which ? null : prev), 240);
|
|
1076
1088
|
};
|
|
@@ -1420,29 +1432,38 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1420
1432
|
-fullscreen etc). */}
|
|
1421
1433
|
<div className="inline-flex rounded-md border border-gray-500/25 overflow-hidden" role="group" aria-label="Topology layout">
|
|
1422
1434
|
<button
|
|
1423
|
-
onClick={() => { if (layout !== 'ring') toggleLayout(); }}
|
|
1435
|
+
onClick={() => { popChrome('layout-ring'); if (layout !== 'ring') toggleLayout(); }}
|
|
1424
1436
|
aria-pressed={layout === 'ring'}
|
|
1425
1437
|
title="Ring layout (l to toggle)"
|
|
1426
1438
|
data-topo-chrome-layout="ring"
|
|
1427
1439
|
data-topo-chrome-layout-active={layout === 'ring' ? 'true' : 'false'}
|
|
1440
|
+
data-topo-chrome-layout-ring-popping={chromePopping === 'layout-ring' ? 'true' : 'false'}
|
|
1428
1441
|
// Round 196 / Loop: add active: (pressed) state for tactile
|
|
1429
1442
|
// click feedback — bridges mouse-down → R186/R184/R192 pop-on-
|
|
1430
1443
|
// release. Selected variant deepens to cyan-500/25 (one tier
|
|
1431
1444
|
// above its hover:cyan-500/20); unselected variant deepens
|
|
1432
1445
|
// to cyan-500/15 (one tier above its hover:cyan-500/5).
|
|
1433
|
-
|
|
1446
|
+
// Round 249 / Loop: chrome-pop joins the click handshake —
|
|
1447
|
+
// mouse-down deepens cyan press (R196), release fires
|
|
1448
|
+
// .anet-chrome-pop on the button (R249) AND triggers
|
|
1449
|
+
// toggleLayout if state changes. The pop runs even when
|
|
1450
|
+
// clicking the already-active layout (no state change),
|
|
1451
|
+
// confirming the click was received either way.
|
|
1452
|
+
className={`px-2.5 py-1 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'ring' ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-500 hover:text-gray-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-ring' ? ' anet-chrome-pop' : ''}`}
|
|
1434
1453
|
>
|
|
1435
1454
|
Ring
|
|
1436
1455
|
</button>
|
|
1437
1456
|
<button
|
|
1438
|
-
onClick={() => { if (layout !== 'grid') toggleLayout(); }}
|
|
1457
|
+
onClick={() => { popChrome('layout-grid'); if (layout !== 'grid') toggleLayout(); }}
|
|
1439
1458
|
aria-pressed={layout === 'grid'}
|
|
1440
1459
|
title="Grid layout (l to toggle)"
|
|
1441
1460
|
data-topo-chrome-layout="grid"
|
|
1442
1461
|
data-topo-chrome-layout-active={layout === 'grid' ? 'true' : 'false'}
|
|
1462
|
+
data-topo-chrome-layout-grid-popping={chromePopping === 'layout-grid' ? 'true' : 'false'}
|
|
1443
1463
|
// Round 196 / Loop: R163 layout-toggle Grid variant picks up
|
|
1444
1464
|
// press-state — same tier pattern as Ring above.
|
|
1445
|
-
|
|
1465
|
+
// Round 249 / Loop: chrome-pop on click — same as Ring.
|
|
1466
|
+
className={`px-2.5 py-1 border-l border-gray-500/25 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${layout === 'grid' ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'text-gray-500 hover:text-gray-300 hover:bg-cyan-500/5 active:bg-cyan-500/15'} ${chromePopping === 'layout-grid' ? ' anet-chrome-pop' : ''}`}
|
|
1446
1467
|
>
|
|
1447
1468
|
Grid
|
|
1448
1469
|
</button>
|
|
@@ -6391,13 +6412,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
6391
6412
|
role="group"
|
|
6392
6413
|
aria-label="Node size"
|
|
6393
6414
|
>
|
|
6394
|
-
{([['S', 0.7], ['M', 0.84], ['L', 1]] as const).map(([lbl, v], idx) =>
|
|
6415
|
+
{([['S', 0.7], ['M', 0.84], ['L', 1]] as const).map(([lbl, v], idx) => {
|
|
6416
|
+
const popKey = `size-${lbl}` as 'size-S' | 'size-M' | 'size-L';
|
|
6417
|
+
return (
|
|
6395
6418
|
<button
|
|
6396
6419
|
key={lbl}
|
|
6397
|
-
onClick={() => pickNodeScale(v)}
|
|
6420
|
+
onClick={() => { popChrome(popKey); pickNodeScale(v); }}
|
|
6398
6421
|
aria-pressed={nodeScale === v}
|
|
6399
6422
|
data-topo-chrome-nodesize={lbl}
|
|
6400
6423
|
data-topo-chrome-nodesize-active={nodeScale === v ? 'true' : 'false'}
|
|
6424
|
+
data-topo-chrome-nodesize-popping={chromePopping === popKey ? 'true' : 'false'}
|
|
6401
6425
|
title={`Node size: ${lbl === 'S' ? 'small' : lbl === 'M' ? 'medium' : 'large'}`}
|
|
6402
6426
|
// Round 179 / Loop: nodeSize S/M/L active-button hover
|
|
6403
6427
|
// variant closes the inconsistency with R163 layout
|
|
@@ -6413,12 +6437,24 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
6413
6437
|
// (active:) — selected variant deepens to cyan-500/25,
|
|
6414
6438
|
// unselected to white/10. Same tier pattern as R196 layout
|
|
6415
6439
|
// toggle + zoom/reset/fullscreen below.
|
|
6416
|
-
|
|
6440
|
+
// Round 250 / Loop: nodeSize buttons close the chrome-pop
|
|
6441
|
+
// family — every clickable chrome button now fires the
|
|
6442
|
+
// R186 .anet-chrome-pop scale-pulse on release. R171
|
|
6443
|
+
// canvas crossfade (nodeSizeSwitching) keeps masking the
|
|
6444
|
+
// node radius change at the global scope; R250 chrome-pop
|
|
6445
|
+
// adds the LOCAL button-level confirmation. The two
|
|
6446
|
+
// happen simultaneously without conflict — local scale
|
|
6447
|
+
// pulse on the button, global canvas dim around it.
|
|
6448
|
+
// Milestone round: the entire chrome strip (zoom -/+,
|
|
6449
|
+
// ring/grid, fullscreen, S/M/L) now speaks one
|
|
6450
|
+
// consistent click vocabulary.
|
|
6451
|
+
className={`px-2 py-1 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset ${idx > 0 ? 'border-l' : ''} ${nodeScale === v ? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25' : 'hover:bg-white/5 active:bg-white/10'}${chromePopping === popKey ? ' anet-chrome-pop' : ''}`}
|
|
6417
6452
|
style={{ color: nodeScale === v ? undefined : pal.legendText, borderColor: pal.containerBorder }}
|
|
6418
6453
|
>
|
|
6419
6454
|
{lbl}
|
|
6420
6455
|
</button>
|
|
6421
|
-
|
|
6456
|
+
);
|
|
6457
|
+
})}
|
|
6422
6458
|
</div>
|
|
6423
6459
|
<div
|
|
6424
6460
|
className="flex items-center rounded-md border overflow-hidden"
|
|
@@ -6545,17 +6581,20 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
6545
6581
|
background + color when active so the Tailwind cyan
|
|
6546
6582
|
classes win specificity. */}
|
|
6547
6583
|
<button
|
|
6548
|
-
onClick={toggleFullscreen}
|
|
6584
|
+
onClick={() => { popChrome('fullscreen'); toggleFullscreen(); }}
|
|
6549
6585
|
data-topo-chrome-fullscreen
|
|
6550
6586
|
data-topo-chrome-fullscreen-active={isFullscreen ? 'true' : 'false'}
|
|
6587
|
+
data-topo-chrome-fullscreen-popping={chromePopping === 'fullscreen' ? 'true' : 'false'}
|
|
6551
6588
|
// R196: fullscreen also picks up press-state — active variant
|
|
6552
6589
|
// deepens cyan-500/20 → cyan-500/25 on press; non-active
|
|
6553
6590
|
// deepens white/5 → white/10.
|
|
6591
|
+
// R249: chrome-pop on click — same one-vocabulary click signal
|
|
6592
|
+
// as layout toggle and zoom buttons.
|
|
6554
6593
|
className={`p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
|
|
6555
6594
|
isFullscreen
|
|
6556
6595
|
? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25'
|
|
6557
6596
|
: 'hover:bg-white/5 active:bg-white/10'
|
|
6558
|
-
}`}
|
|
6597
|
+
}${chromePopping === 'fullscreen' ? ' anet-chrome-pop' : ''}`}
|
|
6559
6598
|
style={{
|
|
6560
6599
|
borderColor: pal.containerBorder,
|
|
6561
6600
|
...(isFullscreen
|
package/package.json
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* Round 249 verification: chrome-pop click animation extends from
|
|
2
|
+
* the existing zoom-in/zoom-out pair to ring/grid layout toggle +
|
|
3
|
+
* fullscreen buttons. Whole chrome strip now speaks one click
|
|
4
|
+
* vocabulary instead of zoom-only-pops + silent-everything-else.
|
|
5
|
+
*
|
|
6
|
+
* Per button, on click:
|
|
7
|
+
* data-topo-chrome-{key}-popping flips 'false' → 'true' for ~240ms
|
|
8
|
+
* className gains 'anet-chrome-pop' for the same window
|
|
9
|
+
*
|
|
10
|
+
* Test scope:
|
|
11
|
+
* - Ring layout button: click → data-topo-chrome-layout-ring-popping='true' (within 100ms)
|
|
12
|
+
* - Grid layout button: click → data-topo-chrome-layout-grid-popping='true'
|
|
13
|
+
* - Fullscreen button: click → data-topo-chrome-fullscreen-popping='true'
|
|
14
|
+
*
|
|
15
|
+
* Hard-to-test trap: chromePopping is transient (240ms TTL). Probe
|
|
16
|
+
* immediately after Playwright click resolves. Wait full 240ms after
|
|
17
|
+
* for the second probe — must be 'false' again.
|
|
18
|
+
*/
|
|
19
|
+
import { chromium } from 'playwright';
|
|
20
|
+
import { readFileSync } from 'node:fs';
|
|
21
|
+
|
|
22
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
23
|
+
const browser = await chromium.launch({ headless: true });
|
|
24
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
25
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
26
|
+
await ctx.addInitScript(() => {
|
|
27
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
28
|
+
});
|
|
29
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
30
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
31
|
+
const r = await route.fetch();
|
|
32
|
+
const b = await r.json();
|
|
33
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
34
|
+
const mk = (alias) => ({
|
|
35
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
36
|
+
network_id: nid, project_dir: null,
|
|
37
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
38
|
+
});
|
|
39
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
40
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
41
|
+
] } });
|
|
42
|
+
});
|
|
43
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
|
|
44
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
45
|
+
|
|
46
|
+
const page = await ctx.newPage();
|
|
47
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
48
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
49
|
+
await page.waitForSelector('[data-topo-chrome-layout="ring"]', { timeout: 10000 });
|
|
50
|
+
await page.waitForSelector('[data-topo-chrome-fullscreen]', { timeout: 10000 });
|
|
51
|
+
await page.waitForTimeout(300);
|
|
52
|
+
|
|
53
|
+
const testButton = async (clickSelector, poppingAttr, label) => {
|
|
54
|
+
// Click + immediately read state. The chromePopping setState is
|
|
55
|
+
// synchronous within the click handler, so the DOM should reflect
|
|
56
|
+
// 'true' on the next React commit (very soon after click resolves).
|
|
57
|
+
await page.locator(clickSelector).click();
|
|
58
|
+
// Probe quickly — within the 240ms window
|
|
59
|
+
await page.waitForTimeout(50);
|
|
60
|
+
const duringPop = await page.locator(clickSelector).getAttribute(poppingAttr);
|
|
61
|
+
const classDuring = await page.locator(clickSelector).getAttribute('class');
|
|
62
|
+
// Wait for the pop to clear
|
|
63
|
+
await page.waitForTimeout(300);
|
|
64
|
+
const afterPop = await page.locator(clickSelector).getAttribute(poppingAttr);
|
|
65
|
+
const classAfter = await page.locator(clickSelector).getAttribute('class');
|
|
66
|
+
return {
|
|
67
|
+
label,
|
|
68
|
+
duringAttr: duringPop,
|
|
69
|
+
duringClass: /anet-chrome-pop/.test(classDuring || ''),
|
|
70
|
+
afterAttr: afterPop,
|
|
71
|
+
afterClass: /anet-chrome-pop/.test(classAfter || ''),
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const ring = await testButton('[data-topo-chrome-layout="ring"]', 'data-topo-chrome-layout-ring-popping', 'ring');
|
|
76
|
+
const grid = await testButton('[data-topo-chrome-layout="grid"]', 'data-topo-chrome-layout-grid-popping', 'grid');
|
|
77
|
+
// For fullscreen, browser context may not honour requestFullscreen in
|
|
78
|
+
// headless mode — wrap in try/catch on the page side. Test only the
|
|
79
|
+
// data attr + className.
|
|
80
|
+
const fullscreen = await testButton('[data-topo-chrome-fullscreen]', 'data-topo-chrome-fullscreen-popping', 'fullscreen');
|
|
81
|
+
|
|
82
|
+
await browser.close();
|
|
83
|
+
|
|
84
|
+
const ok_each = (b) =>
|
|
85
|
+
b.duringAttr === 'true' && b.duringClass === true &&
|
|
86
|
+
b.afterAttr === 'false' && b.afterClass === false;
|
|
87
|
+
|
|
88
|
+
const results = {
|
|
89
|
+
ring_pops_on_click: ok_each(ring),
|
|
90
|
+
grid_pops_on_click: ok_each(grid),
|
|
91
|
+
fullscreen_pops_on_click: ok_each(fullscreen),
|
|
92
|
+
};
|
|
93
|
+
const ok = Object.values(results).every(Boolean);
|
|
94
|
+
console.log(`${ok ? '✅' : '❌'} chrome-pop extension:`, JSON.stringify(results),
|
|
95
|
+
'\n ring: ', ring,
|
|
96
|
+
'\n grid: ', grid,
|
|
97
|
+
'\n fullscreen:', fullscreen);
|
|
98
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* Round 250 verification: nodeSize S/M/L buttons close the chrome-
|
|
2
|
+
* pop click-feedback family. Every clickable chrome button now fires
|
|
3
|
+
* the R186 .anet-chrome-pop 220ms scale-pulse on release.
|
|
4
|
+
*
|
|
5
|
+
* R171 nodeSizeSwitching canvas crossfade still masks the radius
|
|
6
|
+
* change at the global scope; R250 chrome-pop adds the LOCAL
|
|
7
|
+
* button-level click confirmation.
|
|
8
|
+
*
|
|
9
|
+
* Test scope: click each of S/M/L → within 50ms data-topo-chrome-
|
|
10
|
+
* nodesize-popping='true' + className contains 'anet-chrome-pop'.
|
|
11
|
+
* After 300ms both clear.
|
|
12
|
+
*/
|
|
13
|
+
import { chromium } from 'playwright';
|
|
14
|
+
import { readFileSync } from 'node:fs';
|
|
15
|
+
|
|
16
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
17
|
+
const browser = await chromium.launch({ headless: true });
|
|
18
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
19
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
20
|
+
await ctx.addInitScript(() => {
|
|
21
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
22
|
+
});
|
|
23
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
24
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
25
|
+
const r = await route.fetch();
|
|
26
|
+
const b = await r.json();
|
|
27
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
28
|
+
const mk = (alias) => ({
|
|
29
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
30
|
+
network_id: nid, project_dir: null,
|
|
31
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
32
|
+
});
|
|
33
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
34
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
35
|
+
] } });
|
|
36
|
+
});
|
|
37
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
|
|
38
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
39
|
+
|
|
40
|
+
const page = await ctx.newPage();
|
|
41
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
42
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
43
|
+
await page.waitForSelector('[data-topo-chrome-nodesize="S"]', { timeout: 10000 });
|
|
44
|
+
await page.waitForTimeout(300);
|
|
45
|
+
|
|
46
|
+
const testButton = async (size) => {
|
|
47
|
+
const sel = `[data-topo-chrome-nodesize="${size}"]`;
|
|
48
|
+
await page.locator(sel).click();
|
|
49
|
+
await page.waitForTimeout(50);
|
|
50
|
+
const duringAttr = await page.locator(sel).getAttribute('data-topo-chrome-nodesize-popping');
|
|
51
|
+
const duringClass = await page.locator(sel).getAttribute('class');
|
|
52
|
+
// Wait past the 240ms TTL
|
|
53
|
+
await page.waitForTimeout(300);
|
|
54
|
+
const afterAttr = await page.locator(sel).getAttribute('data-topo-chrome-nodesize-popping');
|
|
55
|
+
const afterClass = await page.locator(sel).getAttribute('class');
|
|
56
|
+
return {
|
|
57
|
+
size,
|
|
58
|
+
duringAttr,
|
|
59
|
+
duringClassHasPop: /anet-chrome-pop/.test(duringClass || ''),
|
|
60
|
+
afterAttr,
|
|
61
|
+
afterClassHasPop: /anet-chrome-pop/.test(afterClass || ''),
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// Click each in order S → L → M to mix up state
|
|
66
|
+
const small = await testButton('S');
|
|
67
|
+
const large = await testButton('L');
|
|
68
|
+
const medium = await testButton('M');
|
|
69
|
+
|
|
70
|
+
await browser.close();
|
|
71
|
+
|
|
72
|
+
const ok_each = (b) =>
|
|
73
|
+
b.duringAttr === 'true' &&
|
|
74
|
+
b.duringClassHasPop === true &&
|
|
75
|
+
b.afterAttr === 'false' &&
|
|
76
|
+
b.afterClassHasPop === false;
|
|
77
|
+
|
|
78
|
+
const results = {
|
|
79
|
+
small_pops: ok_each(small),
|
|
80
|
+
medium_pops: ok_each(medium),
|
|
81
|
+
large_pops: ok_each(large),
|
|
82
|
+
};
|
|
83
|
+
const ok = Object.values(results).every(Boolean);
|
|
84
|
+
console.log(`${ok ? '✅' : '❌'} chrome-pop nodesize:`, JSON.stringify(results),
|
|
85
|
+
'\n small: ', small,
|
|
86
|
+
'\n medium:', medium,
|
|
87
|
+
'\n large: ', large);
|
|
88
|
+
process.exit(ok ? 0 : 1);
|
|
File without changes
|
/package/.next/static/{CNet9a9Bwooa-6U9T5a5Y → Y70LgbBo4fA7-eNNd9B5f}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|