@sleep2agi/agent-network-dashboard 0.4.6-preview.254 → 0.4.6-preview.256
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 +3 -3
- 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/{0vnfrj3ndo1c-.js → 03d-r-pr67wu-.js} +1 -1
- package/.next/static/chunks/{11nkwgn-q0l5i.js → 0ljcve1vb.~w4.js} +1 -1
- package/.next/static/chunks/0uw2wqi73vdi2.js +4 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +59 -11
- package/package.json +1 -1
- package/scripts/topo-chrome-pop-extension-test.mjs +98 -0
- package/scripts/topo-groupbox-hubcore-ease-test.mjs +106 -0
- package/.next/static/chunks/057.5yv578zn_.js +0 -4
- /package/.next/static/{0hZTVyxUAVE3P-SPCsfBZ → 9ntdyOJUtEyVYw1JfVat1}/_buildManifest.js +0 -0
- /package/.next/static/{0hZTVyxUAVE3P-SPCsfBZ → 9ntdyOJUtEyVYw1JfVat1}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{0hZTVyxUAVE3P-SPCsfBZ → 9ntdyOJUtEyVYw1JfVat1}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":407,"timestamp":91771678731,"id":4,"parentId":1,"tags":{},"startTime":1778899743925,"traceId":"d1877b7828307ffe"},{"name":"load-custom-routes","duration":603,"timestamp":91771679317,"id":5,"parentId":1,"tags":{},"startTime":1778899743926,"traceId":"d1877b7828307ffe"},{"name":"create-dist-dir","duration":869,"timestamp":91771679985,"id":6,"parentId":1,"tags":{},"startTime":1778899743926,"traceId":"d1877b7828307ffe"},{"name":"clean","duration":32902,"timestamp":91771681625,"id":7,"parentId":1,"tags":{},"startTime":1778899743928,"traceId":"d1877b7828307ffe"},{"name":"discover-routes","duration":11502,"timestamp":91771801967,"id":8,"parentId":1,"tags":{},"startTime":1778899744048,"traceId":"d1877b7828307ffe"},{"name":"create-root-mapping","duration":176,"timestamp":91771813556,"id":9,"parentId":1,"tags":{},"startTime":1778899744060,"traceId":"d1877b7828307ffe"},{"name":"generate-route-types","duration":36159,"timestamp":91771817098,"id":10,"parentId":1,"tags":{},"startTime":1778899744063,"traceId":"d1877b7828307ffe"},{"name":"public-dir-conflict-check","duration":107,"timestamp":91771853359,"id":11,"parentId":1,"tags":{},"startTime":1778899744100,"traceId":"d1877b7828307ffe"},{"name":"generate-routes-manifest","duration":5475,"timestamp":91771853592,"id":12,"parentId":1,"tags":{},"startTime":1778899744100,"traceId":"d1877b7828307ffe"},{"name":"run-turbopack","duration":5797104,"timestamp":91771864837,"id":14,"parentId":1,"tags":{},"startTime":1778899744111,"traceId":"d1877b7828307ffe"},{"name":"turbopack-build-events","duration":79,"timestamp":91772161683,"id":15,"parentId":1,"tags":{},"startTime":1778899744408,"traceId":"d1877b7828307ffe"},{"name":"run-typescript","duration":9529507,"timestamp":91777673048,"id":16,"parentId":1,"tags":{},"startTime":1778899749919,"traceId":"d1877b7828307ffe"},{"name":"generate-required-server-files","duration":2275,"timestamp":91787203493,"id":18,"parentId":1,"tags":{},"startTime":1778899759450,"traceId":"d1877b7828307ffe"},{"name":"check-static-error-page","duration":11098,"timestamp":91787416346,"id":20,"parentId":19,"tags":{},"startTime":1778899759663,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":470657,"timestamp":91787429835,"id":63,"parentId":22,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":481251,"timestamp":91787419402,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":631319,"timestamp":91787430378,"id":67,"parentId":28,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":639113,"timestamp":91787422696,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":634457,"timestamp":91787429920,"id":64,"parentId":25,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":642123,"timestamp":91787422319,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":636205,"timestamp":91787430130,"id":66,"parentId":27,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":643804,"timestamp":91787422592,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":636568,"timestamp":91787430827,"id":70,"parentId":32,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":644123,"timestamp":91787423324,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":643283,"timestamp":91787430993,"id":73,"parentId":35,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":650784,"timestamp":91787423553,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":649607,"timestamp":91787431125,"id":74,"parentId":36,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":656900,"timestamp":91787423894,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":654708,"timestamp":91787431158,"id":75,"parentId":37,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":661923,"timestamp":91787423997,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":660935,"timestamp":91787431185,"id":76,"parentId":38,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":668092,"timestamp":91787424112,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":665963,"timestamp":91787430658,"id":69,"parentId":30,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":673746,"timestamp":91787422941,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":667214,"timestamp":91787431195,"id":77,"parentId":39,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":674289,"timestamp":91787424167,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":671853,"timestamp":91787431216,"id":79,"parentId":41,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":678835,"timestamp":91787424281,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":683892,"timestamp":91787431225,"id":80,"parentId":42,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":690854,"timestamp":91787424334,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":688020,"timestamp":91787431235,"id":81,"parentId":43,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":694978,"timestamp":91787424383,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":692614,"timestamp":91787431244,"id":82,"parentId":44,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":699473,"timestamp":91787424431,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":693124,"timestamp":91787430966,"id":72,"parentId":34,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":700639,"timestamp":91787423486,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":697586,"timestamp":91787431254,"id":83,"parentId":45,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":704416,"timestamp":91787424482,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":700332,"timestamp":91787431206,"id":78,"parentId":40,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":707349,"timestamp":91787424231,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":702787,"timestamp":91787431273,"id":85,"parentId":47,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":709508,"timestamp":91787424597,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":716291,"timestamp":91787429561,"id":62,"parentId":21,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":728042,"timestamp":91787417866,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778899759664,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":717160,"timestamp":91787430891,"id":71,"parentId":33,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":724685,"timestamp":91787423419,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778899759670,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":718743,"timestamp":91787430530,"id":68,"parentId":29,"tags":{},"startTime":1778899759677,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":726503,"timestamp":91787422814,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":721802,"timestamp":91787431264,"id":84,"parentId":46,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":728581,"timestamp":91787424531,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":725902,"timestamp":91787431293,"id":87,"parentId":49,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":732558,"timestamp":91787424698,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":728631,"timestamp":91787430018,"id":65,"parentId":26,"tags":{},"startTime":1778899759676,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":736210,"timestamp":91787422488,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":728142,"timestamp":91787442573,"id":89,"parentId":31,"tags":{},"startTime":1778899759689,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":747707,"timestamp":91787423075,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778899759669,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":804370,"timestamp":91787431283,"id":86,"parentId":48,"tags":{},"startTime":1778899759678,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":811081,"timestamp":91787424650,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":820917,"timestamp":91787444896,"id":92,"parentId":51,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":840799,"timestamp":91787425086,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":835683,"timestamp":91787438081,"id":88,"parentId":24,"tags":{},"startTime":1778899759684,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":853974,"timestamp":91787419859,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":852898,"timestamp":91787444950,"id":97,"parentId":57,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":871509,"timestamp":91787426403,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":859217,"timestamp":91787444938,"id":96,"parentId":56,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":877992,"timestamp":91787426246,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":865456,"timestamp":91787444907,"id":93,"parentId":52,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":885214,"timestamp":91787425206,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":873352,"timestamp":91787444960,"id":98,"parentId":59,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":891512,"timestamp":91787426872,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":875344,"timestamp":91787444974,"id":99,"parentId":60,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":893355,"timestamp":91787427033,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":876794,"timestamp":91787444917,"id":94,"parentId":53,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":896424,"timestamp":91787425339,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":880152,"timestamp":91787444989,"id":100,"parentId":61,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":898079,"timestamp":91787427185,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":880723,"timestamp":91787444884,"id":91,"parentId":50,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":900684,"timestamp":91787424966,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778899759671,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":866990,"timestamp":91787458769,"id":101,"parentId":58,"tags":{},"startTime":1778899759705,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":899267,"timestamp":91787426522,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778899759673,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":883525,"timestamp":91787444856,"id":90,"parentId":23,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":908784,"timestamp":91787419653,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778899759666,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":853609,"timestamp":91787474924,"id":102,"parentId":55,"tags":{},"startTime":1778899759721,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":902858,"timestamp":91787425708,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"is-page-static","duration":903359,"timestamp":91787444927,"id":95,"parentId":54,"tags":{},"startTime":1778899759691,"traceId":"d1877b7828307ffe"},{"name":"check-page","duration":922884,"timestamp":91787425488,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778899759672,"traceId":"d1877b7828307ffe"},{"name":"static-check","duration":933236,"timestamp":91787415331,"id":19,"parentId":1,"tags":{},"startTime":1778899759662,"traceId":"d1877b7828307ffe"},{"name":"write-routes-manifest","duration":593,"timestamp":91788358298,"id":104,"parentId":1,"tags":{},"startTime":1778899760605,"traceId":"d1877b7828307ffe"},{"name":"load-dotenv","duration":65,"timestamp":91788372827,"id":107,"parentId":106,"tags":{},"startTime":1778899760619,"traceId":"d1877b7828307ffe"},{"name":"run-export-path-map","duration":831,"timestamp":91788376193,"id":108,"parentId":106,"tags":{},"startTime":1778899760622,"traceId":"d1877b7828307ffe"},{"name":"next-export","duration":630047,"timestamp":91788371118,"id":106,"parentId":1,"tags":{},"startTime":1778899760617,"traceId":"d1877b7828307ffe"}]
|
|
2
|
-
[{"name":"move-exported-app-not-found-","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":304,"timestamp":92554569846,"id":4,"parentId":1,"tags":{},"startTime":1778900526816,"traceId":"9a17790898a38791"},{"name":"load-custom-routes","duration":678,"timestamp":92554570356,"id":5,"parentId":1,"tags":{},"startTime":1778900526817,"traceId":"9a17790898a38791"},{"name":"create-dist-dir","duration":927,"timestamp":92554571103,"id":6,"parentId":1,"tags":{},"startTime":1778900526817,"traceId":"9a17790898a38791"},{"name":"clean","duration":29889,"timestamp":92554572707,"id":7,"parentId":1,"tags":{},"startTime":1778900526819,"traceId":"9a17790898a38791"},{"name":"discover-routes","duration":11259,"timestamp":92554687138,"id":8,"parentId":1,"tags":{},"startTime":1778900526933,"traceId":"9a17790898a38791"},{"name":"create-root-mapping","duration":167,"timestamp":92554698469,"id":9,"parentId":1,"tags":{},"startTime":1778900526945,"traceId":"9a17790898a38791"},{"name":"generate-route-types","duration":39148,"timestamp":92554701092,"id":10,"parentId":1,"tags":{},"startTime":1778900526947,"traceId":"9a17790898a38791"},{"name":"public-dir-conflict-check","duration":146,"timestamp":92554740352,"id":11,"parentId":1,"tags":{},"startTime":1778900526987,"traceId":"9a17790898a38791"},{"name":"generate-routes-manifest","duration":6755,"timestamp":92554740678,"id":12,"parentId":1,"tags":{},"startTime":1778900526987,"traceId":"9a17790898a38791"},{"name":"run-turbopack","duration":6388335,"timestamp":92554753419,"id":14,"parentId":1,"tags":{},"startTime":1778900527000,"traceId":"9a17790898a38791"},{"name":"turbopack-build-events","duration":96,"timestamp":92555086787,"id":15,"parentId":1,"tags":{},"startTime":1778900527333,"traceId":"9a17790898a38791"},{"name":"run-typescript","duration":9397266,"timestamp":92561150969,"id":16,"parentId":1,"tags":{},"startTime":1778900533397,"traceId":"9a17790898a38791"},{"name":"generate-required-server-files","duration":2532,"timestamp":92570549566,"id":18,"parentId":1,"tags":{},"startTime":1778900542796,"traceId":"9a17790898a38791"},{"name":"check-static-error-page","duration":12059,"timestamp":92570751668,"id":20,"parentId":19,"tags":{},"startTime":1778900542998,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":447678,"timestamp":92570766298,"id":63,"parentId":22,"tags":{},"startTime":1778900543013,"traceId":"9a17790898a38791"},{"name":"check-page","duration":460304,"timestamp":92570753896,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778900543000,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":568854,"timestamp":92570768514,"id":69,"parentId":30,"tags":{},"startTime":1778900543015,"traceId":"9a17790898a38791"},{"name":"check-page","duration":579880,"timestamp":92570757585,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":573162,"timestamp":92570766390,"id":64,"parentId":25,"tags":{},"startTime":1778900543013,"traceId":"9a17790898a38791"},{"name":"check-page","duration":582746,"timestamp":92570756862,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778900543003,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":573616,"timestamp":92570767623,"id":65,"parentId":26,"tags":{},"startTime":1778900543014,"traceId":"9a17790898a38791"},{"name":"check-page","duration":584247,"timestamp":92570757042,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778900543003,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":574001,"timestamp":92570770584,"id":71,"parentId":33,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":586645,"timestamp":92570757985,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":575873,"timestamp":92570770674,"id":72,"parentId":34,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":588497,"timestamp":92570758099,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":612255,"timestamp":92570768152,"id":67,"parentId":28,"tags":{},"startTime":1778900543014,"traceId":"9a17790898a38791"},{"name":"check-page","duration":623174,"timestamp":92570757321,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":610191,"timestamp":92570770493,"id":70,"parentId":32,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":622816,"timestamp":92570757902,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":615188,"timestamp":92570765930,"id":62,"parentId":21,"tags":{},"startTime":1778900543012,"traceId":"9a17790898a38791"},{"name":"check-page","duration":628359,"timestamp":92570752809,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778900542999,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":612998,"timestamp":92570768350,"id":68,"parentId":29,"tags":{},"startTime":1778900543015,"traceId":"9a17790898a38791"},{"name":"check-page","duration":623935,"timestamp":92570757444,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":610815,"timestamp":92570770715,"id":73,"parentId":35,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":623374,"timestamp":92570758189,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":618909,"timestamp":92570767806,"id":66,"parentId":27,"tags":{},"startTime":1778900543014,"traceId":"9a17790898a38791"},{"name":"check-page","duration":629577,"timestamp":92570757192,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778900543003,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":618512,"timestamp":92570770961,"id":79,"parentId":41,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":632602,"timestamp":92570758895,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":623785,"timestamp":92570770916,"id":76,"parentId":38,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":636035,"timestamp":92570758712,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":624023,"timestamp":92570770855,"id":74,"parentId":36,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":636396,"timestamp":92570758512,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":634333,"timestamp":92570770948,"id":78,"parentId":40,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":646491,"timestamp":92570758837,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":640433,"timestamp":92570770993,"id":81,"parentId":43,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":652412,"timestamp":92570759070,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":642366,"timestamp":92570770894,"id":75,"parentId":37,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":655871,"timestamp":92570758629,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":644811,"timestamp":92570771088,"id":85,"parentId":47,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":656447,"timestamp":92570759496,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778900543006,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":648126,"timestamp":92570771069,"id":84,"parentId":46,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":659870,"timestamp":92570759367,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778900543006,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":648394,"timestamp":92570770978,"id":80,"parentId":42,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":660432,"timestamp":92570758965,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":648961,"timestamp":92570771115,"id":87,"parentId":49,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":658910,"timestamp":92570761209,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778900543007,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":649332,"timestamp":92570776700,"id":88,"parentId":24,"tags":{},"startTime":1778900543023,"traceId":"9a17790898a38791"},{"name":"check-page","duration":671693,"timestamp":92570754392,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778900543001,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":647542,"timestamp":92570781433,"id":89,"parentId":31,"tags":{},"startTime":1778900543028,"traceId":"9a17790898a38791"},{"name":"check-page","duration":671337,"timestamp":92570757699,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778900543004,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":666861,"timestamp":92570771100,"id":86,"parentId":48,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":676921,"timestamp":92570761106,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778900543007,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":670508,"timestamp":92570771026,"id":82,"parentId":44,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":682415,"timestamp":92570759169,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":671760,"timestamp":92570771042,"id":83,"parentId":45,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":683574,"timestamp":92570759275,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778900543006,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":696827,"timestamp":92570770931,"id":77,"parentId":39,"tags":{},"startTime":1778900543017,"traceId":"9a17790898a38791"},{"name":"check-page","duration":709058,"timestamp":92570758774,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778900543005,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":688653,"timestamp":92570788151,"id":96,"parentId":56,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":714303,"timestamp":92570762567,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778900543009,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":697283,"timestamp":92570783964,"id":90,"parentId":23,"tags":{},"startTime":1778900543030,"traceId":"9a17790898a38791"},{"name":"check-page","duration":727152,"timestamp":92570754154,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778900543000,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":698277,"timestamp":92570788163,"id":97,"parentId":57,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":723789,"timestamp":92570762705,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778900543009,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":699425,"timestamp":92570788180,"id":98,"parentId":59,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":724466,"timestamp":92570763185,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778900543009,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":706679,"timestamp":92570788221,"id":100,"parentId":61,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":731561,"timestamp":92570763479,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778900543010,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":712288,"timestamp":92570788136,"id":95,"parentId":54,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":738482,"timestamp":92570761984,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":713547,"timestamp":92570788100,"id":93,"parentId":52,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":739980,"timestamp":92570761721,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":714659,"timestamp":92570788202,"id":99,"parentId":60,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":739557,"timestamp":92570763348,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778900543010,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":701696,"timestamp":92570801619,"id":101,"parentId":58,"tags":{},"startTime":1778900543048,"traceId":"9a17790898a38791"},{"name":"check-page","duration":740536,"timestamp":92570762819,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778900543009,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":715797,"timestamp":92570788119,"id":94,"parentId":53,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":742107,"timestamp":92570761853,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":682724,"timestamp":92570824789,"id":102,"parentId":55,"tags":{},"startTime":1778900543071,"traceId":"9a17790898a38791"},{"name":"check-page","duration":745356,"timestamp":92570762192,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":724598,"timestamp":92570783996,"id":91,"parentId":50,"tags":{},"startTime":1778900543030,"traceId":"9a17790898a38791"},{"name":"check-page","duration":747118,"timestamp":92570761514,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"is-page-static","duration":720627,"timestamp":92570788079,"id":92,"parentId":51,"tags":{},"startTime":1778900543034,"traceId":"9a17790898a38791"},{"name":"check-page","duration":747109,"timestamp":92570761618,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778900543008,"traceId":"9a17790898a38791"},{"name":"static-check","duration":757975,"timestamp":92570750792,"id":19,"parentId":1,"tags":{},"startTime":1778900542997,"traceId":"9a17790898a38791"},{"name":"write-routes-manifest","duration":583,"timestamp":92571516513,"id":104,"parentId":1,"tags":{},"startTime":1778900543763,"traceId":"9a17790898a38791"},{"name":"load-dotenv","duration":90,"timestamp":92571529809,"id":107,"parentId":106,"tags":{},"startTime":1778900543776,"traceId":"9a17790898a38791"},{"name":"run-export-path-map","duration":670,"timestamp":92571533149,"id":108,"parentId":106,"tags":{},"startTime":1778900543779,"traceId":"9a17790898a38791"},{"name":"next-export","duration":614187,"timestamp":92571527416,"id":106,"parentId":1,"tags":{},"startTime":1778900543774,"traceId":"9a17790898a38791"}]
|
|
2
|
+
[{"name":"move-exported-app-not-found-","duration":2351,"timestamp":92572145361,"id":109,"parentId":105,"tags":{},"startTime":1778900544392,"traceId":"9a17790898a38791"},{"name":"move-exported-app-global-error-","duration":989,"timestamp":92572147806,"id":110,"parentId":105,"tags":{},"startTime":1778900544394,"traceId":"9a17790898a38791"},{"name":"static-generation","duration":628641,"timestamp":92571522039,"id":105,"parentId":1,"tags":{},"startTime":1778900543768,"traceId":"9a17790898a38791"},{"name":"write-routes-manifest","duration":439,"timestamp":92572150833,"id":111,"parentId":1,"tags":{},"startTime":1778900544397,"traceId":"9a17790898a38791"},{"name":"print-tree-view","duration":4492,"timestamp":92572163575,"id":112,"parentId":1,"tags":{},"startTime":1778900544410,"traceId":"9a17790898a38791"},{"name":"write-route-bundle-stats","duration":16000,"timestamp":92572168099,"id":113,"parentId":1,"tags":{},"startTime":1778900544414,"traceId":"9a17790898a38791"},{"name":"telemetry-flush","duration":21237,"timestamp":92572184151,"id":114,"parentId":1,"tags":{},"startTime":1778900544430,"traceId":"9a17790898a38791"},{"name":"next-build","duration":17691787,"timestamp":92554513632,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900526760,"traceId":"9a17790898a38791"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":6388335,"timestamp":92554753419,"id":14,"parentId":1,"tags":{},"startTime":1778900527000,"traceId":"9a17790898a38791"},{"name":"turbopack-build-events","duration":96,"timestamp":92555086787,"id":15,"parentId":1,"tags":{},"startTime":1778900527333,"traceId":"9a17790898a38791"},{"name":"run-typescript","duration":9397266,"timestamp":92561150969,"id":16,"parentId":1,"tags":{},"startTime":1778900533397,"traceId":"9a17790898a38791"},{"name":"static-check","duration":757975,"timestamp":92570750792,"id":19,"parentId":1,"tags":{},"startTime":1778900542997,"traceId":"9a17790898a38791"},{"name":"static-generation","duration":628641,"timestamp":92571522039,"id":105,"parentId":1,"tags":{},"startTime":1778900543768,"traceId":"9a17790898a38791"},{"name":"telemetry-flush","duration":21237,"timestamp":92572184151,"id":114,"parentId":1,"tags":{},"startTime":1778900544430,"traceId":"9a17790898a38791"},{"name":"next-build","duration":17691787,"timestamp":92554513632,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900526760,"traceId":"9a17790898a38791"}]
|
|
@@ -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';
|
|
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>
|
|
@@ -3063,7 +3084,15 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
3063
3084
|
// is preserved.
|
|
3064
3085
|
filter={(isPinned || isHovered) ? 'url(#topo-groupbox-lift)' : undefined}
|
|
3065
3086
|
style={{
|
|
3066
|
-
|
|
3087
|
+
/* Round 248 / Loop: append fill 200ms ease-out to
|
|
3088
|
+
the existing R66 transition list. Pre-R248 the
|
|
3089
|
+
rect's fill (isLight ? '#0f172a' (slate-900) :
|
|
3090
|
+
'#a5b4fc' (indigo-300)) snapped on theme toggle
|
|
3091
|
+
while stroke / fill-opacity / filter all eased.
|
|
3092
|
+
Closes the last theme-toggle snap on the group
|
|
3093
|
+
box surface — same idiom R246 + R247 used at
|
|
3094
|
+
per-node label-card and side-panel scopes. */
|
|
3095
|
+
transition: 'stroke 200ms ease-out, stroke-width 200ms ease-out, fill-opacity 200ms ease-out, filter 200ms ease-out, fill 200ms ease-out',
|
|
3067
3096
|
pointerEvents: 'none',
|
|
3068
3097
|
// CSS var consumed by `.anet-topo-groupbox-live`
|
|
3069
3098
|
// (line 877 of globals.css). React's CSSProperties
|
|
@@ -4036,8 +4065,24 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
4036
4065
|
</circle>
|
|
4037
4066
|
);
|
|
4038
4067
|
})()}
|
|
4039
|
-
{/* core — 20px diameter, larger inner highlight reads as a "lit lamp"
|
|
4040
|
-
|
|
4068
|
+
{/* core — 20px diameter, larger inner highlight reads as a "lit lamp"
|
|
4069
|
+
Round 248 / Loop: hub center core gets a fill transition.
|
|
4070
|
+
Pre-R248 the core circle (the visual anchor at the centre
|
|
4071
|
+
of the canvas, fill=isLight ? '#059669' emerald-600 :
|
|
4072
|
+
'#10b981' emerald-500) hard-flipped on theme toggle —
|
|
4073
|
+
the most visually prominent element on the canvas
|
|
4074
|
+
snapping while everything else (R244 halo / R241 hub
|
|
4075
|
+
spokes / R246 label cards / R247 side panels) eased.
|
|
4076
|
+
Inline transition closes the gap. data-topo-hub-core
|
|
4077
|
+
attr added for test introspection (the parent <g> at
|
|
4078
|
+
line 3587 has data-topo-hub but the core specifically
|
|
4079
|
+
is the canvas anchor). */}
|
|
4080
|
+
<circle
|
|
4081
|
+
cx={cx} cy={cy} r="10"
|
|
4082
|
+
fill={isLight ? '#059669' : '#10b981'}
|
|
4083
|
+
data-topo-hub-core
|
|
4084
|
+
style={{ transition: 'fill 200ms ease-out' }}
|
|
4085
|
+
/>
|
|
4041
4086
|
{/* R130 / Loop: when workingCount > 0, the decorative inner
|
|
4042
4087
|
highlight gets replaced with the workingCount digit. The
|
|
4043
4088
|
R84 busyness breath already encodes the same metric
|
|
@@ -6521,17 +6566,20 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
6521
6566
|
background + color when active so the Tailwind cyan
|
|
6522
6567
|
classes win specificity. */}
|
|
6523
6568
|
<button
|
|
6524
|
-
onClick={toggleFullscreen}
|
|
6569
|
+
onClick={() => { popChrome('fullscreen'); toggleFullscreen(); }}
|
|
6525
6570
|
data-topo-chrome-fullscreen
|
|
6526
6571
|
data-topo-chrome-fullscreen-active={isFullscreen ? 'true' : 'false'}
|
|
6572
|
+
data-topo-chrome-fullscreen-popping={chromePopping === 'fullscreen' ? 'true' : 'false'}
|
|
6527
6573
|
// R196: fullscreen also picks up press-state — active variant
|
|
6528
6574
|
// deepens cyan-500/20 → cyan-500/25 on press; non-active
|
|
6529
6575
|
// deepens white/5 → white/10.
|
|
6576
|
+
// R249: chrome-pop on click — same one-vocabulary click signal
|
|
6577
|
+
// as layout toggle and zoom buttons.
|
|
6530
6578
|
className={`p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
|
|
6531
6579
|
isFullscreen
|
|
6532
6580
|
? 'bg-cyan-500/15 text-cyan-300 hover:bg-cyan-500/20 active:bg-cyan-500/25'
|
|
6533
6581
|
: 'hover:bg-white/5 active:bg-white/10'
|
|
6534
|
-
}`}
|
|
6582
|
+
}${chromePopping === 'fullscreen' ? ' anet-chrome-pop' : ''}`}
|
|
6535
6583
|
style={{
|
|
6536
6584
|
borderColor: pal.containerBorder,
|
|
6537
6585
|
...(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,106 @@
|
|
|
1
|
+
/* Round 248 verification: two more theme-toggle snap closures:
|
|
2
|
+
*
|
|
3
|
+
* 1. Group box <rect> (#111 / R66): existing transition list
|
|
4
|
+
* 'stroke + stroke-width + fill-opacity + filter 200ms' grows
|
|
5
|
+
* to include 'fill 200ms'. The rect's theme-driven fill
|
|
6
|
+
* (isLight ? slate-900 : indigo-300) no longer snaps.
|
|
7
|
+
*
|
|
8
|
+
* 2. Hub center core <circle> (the visual anchor at canvas
|
|
9
|
+
* centre, fill=isLight ? emerald-600 : emerald-500): had NO
|
|
10
|
+
* transition at all — most prominent element on canvas was
|
|
11
|
+
* flipping in one frame while everything around it eased.
|
|
12
|
+
* R248 adds inline 'fill 200ms ease-out' + data-topo-hub-
|
|
13
|
+
* core attr for test introspection.
|
|
14
|
+
*
|
|
15
|
+
* Test scope:
|
|
16
|
+
* - Hub core probe ([data-topo-hub-core]): present, has fill
|
|
17
|
+
* attribute, transition contains 'fill 200ms' (or 0.2s)
|
|
18
|
+
* - Group box probe ([data-group-label]) → climb to its
|
|
19
|
+
* <rect> sibling — needs grid layout + ≥2 prefix-shared
|
|
20
|
+
* aliases. Probe its style.transition for 'fill 200ms'
|
|
21
|
+
* alongside the existing R66 properties.
|
|
22
|
+
*/
|
|
23
|
+
import { chromium } from 'playwright';
|
|
24
|
+
import { readFileSync } from 'node:fs';
|
|
25
|
+
|
|
26
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
27
|
+
const browser = await chromium.launch({ headless: true });
|
|
28
|
+
// Hub core renders only in ring layout; group boxes only in grid.
|
|
29
|
+
// Two contexts back-to-back.
|
|
30
|
+
async function setupLayout(layout) {
|
|
31
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
32
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
33
|
+
await ctx.addInitScript((l) => {
|
|
34
|
+
try {
|
|
35
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
36
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
37
|
+
localStorage.setItem('anet-topo-layout', l);
|
|
38
|
+
} catch {}
|
|
39
|
+
}, layout);
|
|
40
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
41
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
42
|
+
const r = await route.fetch();
|
|
43
|
+
const b = await r.json();
|
|
44
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
45
|
+
const mk = (alias) => ({
|
|
46
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
47
|
+
network_id: nid, project_dir: null,
|
|
48
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
49
|
+
});
|
|
50
|
+
// 3 alpha-prefix + 1 delta — R106 cluster makes ONE alpha group box in grid
|
|
51
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
52
|
+
mk('alpha-1'), mk('alpha-2'), mk('alpha-3'), mk('delta'),
|
|
53
|
+
] } });
|
|
54
|
+
});
|
|
55
|
+
await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
|
|
56
|
+
await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
|
|
57
|
+
const page = await ctx.newPage();
|
|
58
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
59
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
60
|
+
await page.waitForTimeout(400);
|
|
61
|
+
return page;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Scenario A: ring → hub core
|
|
65
|
+
const pageRing = await setupLayout('ring');
|
|
66
|
+
await pageRing.waitForSelector('[data-topo-hub-core]', { timeout: 10000, state: 'attached' });
|
|
67
|
+
const hub = await pageRing.evaluate(() => {
|
|
68
|
+
const el = document.querySelector('[data-topo-hub-core]');
|
|
69
|
+
return el ? { fill: el.getAttribute('fill'), transition: el.style.transition } : null;
|
|
70
|
+
});
|
|
71
|
+
await pageRing.close();
|
|
72
|
+
|
|
73
|
+
// Scenario B: grid → group box <rect>
|
|
74
|
+
const pageGrid = await setupLayout('grid');
|
|
75
|
+
// Wait for group label (signals group box has been mounted alongside)
|
|
76
|
+
await pageGrid.waitForSelector('[data-group-label]', { timeout: 10000, state: 'attached' });
|
|
77
|
+
const groupBox = await pageGrid.evaluate(() => {
|
|
78
|
+
const allRects = Array.from(document.querySelectorAll('rect'));
|
|
79
|
+
const found = allRects.find(r => r.getAttribute('rx') === '14'
|
|
80
|
+
&& r.style && /fill\s+200ms/.test(r.style.transition || ''));
|
|
81
|
+
return found ? { fill: found.getAttribute('fill'), transition: found.style.transition } : null;
|
|
82
|
+
});
|
|
83
|
+
await pageGrid.close();
|
|
84
|
+
|
|
85
|
+
const out = { hub, groupBox };
|
|
86
|
+
await browser.close();
|
|
87
|
+
|
|
88
|
+
const hasProp = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
|
|
89
|
+
|
|
90
|
+
const results = {
|
|
91
|
+
hub_present: out.hub !== null,
|
|
92
|
+
hub_has_fill_attr: typeof out.hub?.fill === 'string' && out.hub.fill.length > 0,
|
|
93
|
+
hub_transition_has_fill: hasProp(out.hub?.transition, 'fill'),
|
|
94
|
+
|
|
95
|
+
groupbox_present: out.groupBox !== null,
|
|
96
|
+
groupbox_has_fill_attr: typeof out.groupBox?.fill === 'string' && out.groupBox.fill.length > 0,
|
|
97
|
+
groupbox_transition_stroke: hasProp(out.groupBox?.transition, 'stroke'),
|
|
98
|
+
groupbox_transition_fill_op: hasProp(out.groupBox?.transition, 'fill-opacity'),
|
|
99
|
+
groupbox_transition_filter: hasProp(out.groupBox?.transition, 'filter'),
|
|
100
|
+
groupbox_transition_fill: hasProp(out.groupBox?.transition, 'fill'),
|
|
101
|
+
};
|
|
102
|
+
const ok = Object.values(results).every(Boolean);
|
|
103
|
+
console.log(`${ok ? '✅' : '❌'} groupbox + hubcore ease:`, JSON.stringify(results),
|
|
104
|
+
'\n hub: ', out.hub,
|
|
105
|
+
'\n groupBox:', out.groupBox);
|
|
106
|
+
process.exit(ok ? 0 : 1);
|