@sleep2agi/agent-network-dashboard 0.4.6-preview.206 → 0.4.6-preview.208
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/prerender-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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- 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 +2 -2
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +2 -2
- package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +2 -2
- package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +2 -2
- package/.next/server/app/node.segments/_full.segment.rsc +2 -2
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +2 -2
- package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +2 -2
- package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- 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/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- 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/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +2 -2
- package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- 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 +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{101rwb3rv5ek6.js → 0p0m766u5hdie.js} +1 -1
- package/.next/static/chunks/{10227p9.h_iwe.js → 0r_3o1g0huc5x.js} +3 -3
- package/.next/static/chunks/{05_62ey8jqws1.js → 0rkjlkz92cv1t.js} +1 -1
- package/.next/static/chunks/{01g4iybwpori..css → 0~k1yvhakbob6.css} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +89 -7
- package/package.json +1 -1
- package/scripts/topo-empty-state-breath-test.mjs +150 -0
- package/scripts/topo-statusbar-chips-self-hover-test.mjs +177 -0
- /package/.next/static/{3wpxJKGpalx1lcuz7MNps → 1qAKm3mDY7idTFEolEfzw}/_buildManifest.js +0 -0
- /package/.next/static/{3wpxJKGpalx1lcuz7MNps → 1qAKm3mDY7idTFEolEfzw}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{3wpxJKGpalx1lcuz7MNps → 1qAKm3mDY7idTFEolEfzw}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":245,"timestamp":74768139139,"id":4,"parentId":1,"tags":{},"startTime":1778882740385,"traceId":"2dcb071a1ea62265"},{"name":"load-custom-routes","duration":450,"timestamp":74768139520,"id":5,"parentId":1,"tags":{},"startTime":1778882740386,"traceId":"2dcb071a1ea62265"},{"name":"create-dist-dir","duration":573,"timestamp":74768140028,"id":6,"parentId":1,"tags":{},"startTime":1778882740386,"traceId":"2dcb071a1ea62265"},{"name":"clean","duration":433,"timestamp":74768141216,"id":7,"parentId":1,"tags":{},"startTime":1778882740387,"traceId":"2dcb071a1ea62265"},{"name":"discover-routes","duration":10765,"timestamp":74768222406,"id":8,"parentId":1,"tags":{},"startTime":1778882740469,"traceId":"2dcb071a1ea62265"},{"name":"create-root-mapping","duration":180,"timestamp":74768233228,"id":9,"parentId":1,"tags":{},"startTime":1778882740480,"traceId":"2dcb071a1ea62265"},{"name":"generate-route-types","duration":32324,"timestamp":74768235744,"id":10,"parentId":1,"tags":{},"startTime":1778882740482,"traceId":"2dcb071a1ea62265"},{"name":"public-dir-conflict-check","duration":97,"timestamp":74768268222,"id":11,"parentId":1,"tags":{},"startTime":1778882740515,"traceId":"2dcb071a1ea62265"},{"name":"generate-routes-manifest","duration":4739,"timestamp":74768268451,"id":12,"parentId":1,"tags":{},"startTime":1778882740515,"traceId":"2dcb071a1ea62265"},{"name":"run-turbopack","duration":5522154,"timestamp":74768278342,"id":14,"parentId":1,"tags":{},"startTime":1778882740525,"traceId":"2dcb071a1ea62265"},{"name":"turbopack-build-events","duration":116,"timestamp":74768560798,"id":15,"parentId":1,"tags":{},"startTime":1778882740807,"traceId":"2dcb071a1ea62265"},{"name":"run-typescript","duration":8806974,"timestamp":74773831326,"id":16,"parentId":1,"tags":{},"startTime":1778882746078,"traceId":"2dcb071a1ea62265"},{"name":"generate-required-server-files","duration":2714,"timestamp":74782640041,"id":18,"parentId":1,"tags":{},"startTime":1778882754886,"traceId":"2dcb071a1ea62265"},{"name":"check-static-error-page","duration":13056,"timestamp":74782815817,"id":20,"parentId":19,"tags":{},"startTime":1778882755062,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":459703,"timestamp":74782831917,"id":63,"parentId":22,"tags":{},"startTime":1778882755078,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":472883,"timestamp":74782818913,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778882755065,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":572922,"timestamp":74782832506,"id":67,"parentId":28,"tags":{},"startTime":1778882755079,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":583239,"timestamp":74782822288,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":578169,"timestamp":74782832144,"id":65,"parentId":26,"tags":{},"startTime":1778882755078,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":588273,"timestamp":74782822114,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778882755068,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":579824,"timestamp":74782834230,"id":69,"parentId":30,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":591668,"timestamp":74782822463,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":600959,"timestamp":74782834426,"id":70,"parentId":32,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":612731,"timestamp":74782822737,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":603669,"timestamp":74782832026,"id":64,"parentId":25,"tags":{},"startTime":1778882755078,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":613809,"timestamp":74782821935,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778882755068,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":603905,"timestamp":74782834040,"id":68,"parentId":29,"tags":{},"startTime":1778882755080,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":615630,"timestamp":74782822366,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":605754,"timestamp":74782834497,"id":71,"parentId":33,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":617452,"timestamp":74782822838,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":608258,"timestamp":74782834577,"id":72,"parentId":34,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":619961,"timestamp":74782822916,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":619331,"timestamp":74782834611,"id":73,"parentId":35,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":630999,"timestamp":74782822993,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":623625,"timestamp":74782831592,"id":62,"parentId":21,"tags":{},"startTime":1778882755078,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":637885,"timestamp":74782817372,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778882755064,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":622298,"timestamp":74782834782,"id":76,"parentId":38,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":633504,"timestamp":74782823622,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":622577,"timestamp":74782834731,"id":74,"parentId":36,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":633934,"timestamp":74782823406,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":624321,"timestamp":74782834819,"id":78,"parentId":40,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":635432,"timestamp":74782823747,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":626979,"timestamp":74782834763,"id":75,"parentId":37,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":638255,"timestamp":74782823530,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":629363,"timestamp":74782834859,"id":81,"parentId":43,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":640319,"timestamp":74782823954,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":629656,"timestamp":74782834867,"id":82,"parentId":44,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":640539,"timestamp":74782824034,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":630222,"timestamp":74782834847,"id":80,"parentId":42,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":641225,"timestamp":74782823889,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":632109,"timestamp":74782834883,"id":83,"parentId":45,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":642944,"timestamp":74782824110,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":636549,"timestamp":74782834932,"id":87,"parentId":49,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":645787,"timestamp":74782825741,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778882755072,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":636717,"timestamp":74782834919,"id":86,"parentId":48,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":647350,"timestamp":74782824316,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778882755071,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":641172,"timestamp":74782834905,"id":85,"parentId":47,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":651873,"timestamp":74782824253,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778882755071,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":637299,"timestamp":74782840342,"id":89,"parentId":31,"tags":{},"startTime":1778882755087,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":655144,"timestamp":74782822537,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778882755069,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":643289,"timestamp":74782834896,"id":84,"parentId":46,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":654059,"timestamp":74782824170,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":642987,"timestamp":74782838712,"id":88,"parentId":24,"tags":{},"startTime":1778882755085,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":662287,"timestamp":74782819449,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778882755066,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":661387,"timestamp":74782834796,"id":77,"parentId":39,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":672551,"timestamp":74782823685,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":681003,"timestamp":74782832251,"id":66,"parentId":27,"tags":{},"startTime":1778882755079,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":691113,"timestamp":74782822205,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778882755068,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":691574,"timestamp":74782842624,"id":90,"parentId":23,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":715054,"timestamp":74782819213,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778882755065,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":698550,"timestamp":74782842669,"id":92,"parentId":51,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":714959,"timestamp":74782826319,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778882755073,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":707890,"timestamp":74782834834,"id":79,"parentId":41,"tags":{},"startTime":1778882755081,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":718957,"timestamp":74782823819,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778882755070,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":700229,"timestamp":74782842722,"id":96,"parentId":56,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":715554,"timestamp":74782827432,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778882755074,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":700756,"timestamp":74782842683,"id":93,"parentId":52,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":716996,"timestamp":74782826486,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778882755073,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":708301,"timestamp":74782842732,"id":97,"parentId":57,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":723464,"timestamp":74782827644,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778882755074,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":708488,"timestamp":74782842780,"id":100,"parentId":61,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":722699,"timestamp":74782828597,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778882755075,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":709730,"timestamp":74782842746,"id":98,"parentId":59,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":724238,"timestamp":74782828287,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778882755075,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":708525,"timestamp":74782848540,"id":101,"parentId":58,"tags":{},"startTime":1778882755095,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":729265,"timestamp":74782827836,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778882755074,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":714874,"timestamp":74782842763,"id":99,"parentId":60,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":729243,"timestamp":74782828445,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778882755075,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":715099,"timestamp":74782842691,"id":94,"parentId":53,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":731173,"timestamp":74782826666,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778882755073,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":691236,"timestamp":74782866834,"id":102,"parentId":55,"tags":{},"startTime":1778882755113,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":731142,"timestamp":74782826992,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778882755073,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":716449,"timestamp":74782842654,"id":91,"parentId":50,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":732999,"timestamp":74782826140,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778882755072,"traceId":"2dcb071a1ea62265"},{"name":"is-page-static","duration":739516,"timestamp":74782842705,"id":95,"parentId":54,"tags":{},"startTime":1778882755089,"traceId":"2dcb071a1ea62265"},{"name":"check-page","duration":755443,"timestamp":74782826825,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778882755073,"traceId":"2dcb071a1ea62265"},{"name":"static-check","duration":767654,"timestamp":74782814677,"id":19,"parentId":1,"tags":{},"startTime":1778882755061,"traceId":"2dcb071a1ea62265"},{"name":"write-routes-manifest","duration":411,"timestamp":74783589949,"id":104,"parentId":1,"tags":{},"startTime":1778882755836,"traceId":"2dcb071a1ea62265"},{"name":"load-dotenv","duration":45,"timestamp":74783600527,"id":107,"parentId":106,"tags":{},"startTime":1778882755847,"traceId":"2dcb071a1ea62265"},{"name":"run-export-path-map","duration":644,"timestamp":74783604609,"id":108,"parentId":106,"tags":{},"startTime":1778882755851,"traceId":"2dcb071a1ea62265"},{"name":"next-export","duration":603317,"timestamp":74783599305,"id":106,"parentId":1,"tags":{},"startTime":1778882755846,"traceId":"2dcb071a1ea62265"}]
|
|
2
|
-
[{"name":"move-exported-app-not-found-","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":274,"timestamp":75472327541,"id":4,"parentId":1,"tags":{},"startTime":1778883444574,"traceId":"15757ac1d044274a"},{"name":"load-custom-routes","duration":490,"timestamp":75472327956,"id":5,"parentId":1,"tags":{},"startTime":1778883444574,"traceId":"15757ac1d044274a"},{"name":"create-dist-dir","duration":629,"timestamp":75472328487,"id":6,"parentId":1,"tags":{},"startTime":1778883444575,"traceId":"15757ac1d044274a"},{"name":"clean","duration":524,"timestamp":75472329707,"id":7,"parentId":1,"tags":{},"startTime":1778883444576,"traceId":"15757ac1d044274a"},{"name":"discover-routes","duration":9081,"timestamp":75472408875,"id":8,"parentId":1,"tags":{},"startTime":1778883444655,"traceId":"15757ac1d044274a"},{"name":"create-root-mapping","duration":123,"timestamp":75472418042,"id":9,"parentId":1,"tags":{},"startTime":1778883444664,"traceId":"15757ac1d044274a"},{"name":"generate-route-types","duration":38737,"timestamp":75472420331,"id":10,"parentId":1,"tags":{},"startTime":1778883444667,"traceId":"15757ac1d044274a"},{"name":"public-dir-conflict-check","duration":96,"timestamp":75472459216,"id":11,"parentId":1,"tags":{},"startTime":1778883444705,"traceId":"15757ac1d044274a"},{"name":"generate-routes-manifest","duration":4734,"timestamp":75472459429,"id":12,"parentId":1,"tags":{},"startTime":1778883444706,"traceId":"15757ac1d044274a"},{"name":"run-turbopack","duration":5178900,"timestamp":75472469716,"id":14,"parentId":1,"tags":{},"startTime":1778883444716,"traceId":"15757ac1d044274a"},{"name":"turbopack-build-events","duration":71,"timestamp":75472742583,"id":15,"parentId":1,"tags":{},"startTime":1778883444989,"traceId":"15757ac1d044274a"},{"name":"run-typescript","duration":8286776,"timestamp":75477657424,"id":16,"parentId":1,"tags":{},"startTime":1778883449904,"traceId":"15757ac1d044274a"},{"name":"generate-required-server-files","duration":3272,"timestamp":75485945479,"id":18,"parentId":1,"tags":{},"startTime":1778883458192,"traceId":"15757ac1d044274a"},{"name":"check-static-error-page","duration":15648,"timestamp":75486130414,"id":20,"parentId":19,"tags":{},"startTime":1778883458377,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":471689,"timestamp":75486148260,"id":63,"parentId":22,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":486504,"timestamp":75486133655,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778883458380,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":525449,"timestamp":75486147933,"id":62,"parentId":21,"tags":{},"startTime":1778883458394,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":541458,"timestamp":75486132017,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778883458378,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":532387,"timestamp":75486148905,"id":67,"parentId":28,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":543981,"timestamp":75486137394,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":532981,"timestamp":75486148630,"id":66,"parentId":27,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":544401,"timestamp":75486137258,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":540395,"timestamp":75486149096,"id":68,"parentId":29,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":552010,"timestamp":75486137538,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":550862,"timestamp":75486148388,"id":64,"parentId":25,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":562502,"timestamp":75486136911,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778883458383,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":554718,"timestamp":75486149671,"id":74,"parentId":36,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":565247,"timestamp":75486139191,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778883458385,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":562477,"timestamp":75486148513,"id":65,"parentId":26,"tags":{},"startTime":1778883458395,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":573967,"timestamp":75486137114,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778883458383,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":569066,"timestamp":75486149697,"id":75,"parentId":37,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":579438,"timestamp":75486139393,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":573747,"timestamp":75486149469,"id":71,"parentId":33,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":584921,"timestamp":75486138343,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778883458385,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":574387,"timestamp":75486149539,"id":72,"parentId":34,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":585473,"timestamp":75486138491,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778883458385,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":575208,"timestamp":75486149720,"id":77,"parentId":39,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":585286,"timestamp":75486139677,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":576714,"timestamp":75486149565,"id":73,"parentId":35,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":587680,"timestamp":75486138648,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778883458385,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":580994,"timestamp":75486149751,"id":80,"parentId":42,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":590719,"timestamp":75486140084,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":585172,"timestamp":75486149741,"id":79,"parentId":41,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":595015,"timestamp":75486139942,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":589337,"timestamp":75486149710,"id":76,"parentId":38,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":599556,"timestamp":75486139536,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":586969,"timestamp":75486152673,"id":83,"parentId":45,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":599262,"timestamp":75486140437,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":587280,"timestamp":75486152656,"id":82,"parentId":44,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":599652,"timestamp":75486140315,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":592478,"timestamp":75486149731,"id":78,"parentId":40,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":602431,"timestamp":75486139822,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":589767,"timestamp":75486152623,"id":81,"parentId":43,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":602216,"timestamp":75486140201,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778883458386,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":591675,"timestamp":75486152700,"id":85,"parentId":47,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":603710,"timestamp":75486140704,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":594010,"timestamp":75486152715,"id":86,"parentId":48,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":605922,"timestamp":75486140842,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":591573,"timestamp":75486159707,"id":89,"parentId":31,"tags":{},"startTime":1778883458406,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":613454,"timestamp":75486137869,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":597527,"timestamp":75486158569,"id":88,"parentId":24,"tags":{},"startTime":1778883458405,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":621887,"timestamp":75486134250,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778883458381,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":604596,"timestamp":75486152684,"id":84,"parentId":46,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":616778,"timestamp":75486140546,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":608081,"timestamp":75486149404,"id":70,"parentId":32,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":619337,"timestamp":75486138184,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":605780,"timestamp":75486152727,"id":87,"parentId":49,"tags":{},"startTime":1778883458399,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":617588,"timestamp":75486140963,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778883458387,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":612369,"timestamp":75486149236,"id":69,"parentId":30,"tags":{},"startTime":1778883458396,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":623933,"timestamp":75486137711,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778883458384,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":603148,"timestamp":75486162198,"id":94,"parentId":53,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":621808,"timestamp":75486143575,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778883458390,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":613743,"timestamp":75486162243,"id":97,"parentId":57,"tags":{},"startTime":1778883458409,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":632059,"timestamp":75486144935,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778883458391,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":622761,"timestamp":75486162255,"id":98,"parentId":59,"tags":{},"startTime":1778883458409,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":639468,"timestamp":75486145592,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778883458392,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":637205,"timestamp":75486162454,"id":99,"parentId":60,"tags":{},"startTime":1778883458409,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":654003,"timestamp":75486145738,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778883458392,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":644673,"timestamp":75486162151,"id":91,"parentId":50,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":663947,"timestamp":75486142948,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778883458389,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":652194,"timestamp":75486162485,"id":100,"parentId":61,"tags":{},"startTime":1778883458409,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":669009,"timestamp":75486145857,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778883458392,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":652809,"timestamp":75486162170,"id":92,"parentId":51,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":671871,"timestamp":75486143164,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778883458389,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":646284,"timestamp":75486168833,"id":101,"parentId":58,"tags":{},"startTime":1778883458415,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":669981,"timestamp":75486145163,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778883458391,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":653091,"timestamp":75486162123,"id":90,"parentId":23,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":681277,"timestamp":75486133963,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778883458380,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":653097,"timestamp":75486162213,"id":95,"parentId":54,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":671522,"timestamp":75486143816,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778883458390,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":653210,"timestamp":75486162186,"id":93,"parentId":52,"tags":{},"startTime":1778883458408,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":672063,"timestamp":75486143352,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778883458390,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":633269,"timestamp":75486185506,"id":102,"parentId":55,"tags":{},"startTime":1778883458432,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":674714,"timestamp":75486144099,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778883458390,"traceId":"15757ac1d044274a"},{"name":"is-page-static","duration":657386,"timestamp":75486162228,"id":96,"parentId":56,"tags":{},"startTime":1778883458409,"traceId":"15757ac1d044274a"},{"name":"check-page","duration":674932,"timestamp":75486144700,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778883458391,"traceId":"15757ac1d044274a"},{"name":"static-check","duration":690387,"timestamp":75486129286,"id":19,"parentId":1,"tags":{},"startTime":1778883458376,"traceId":"15757ac1d044274a"},{"name":"write-routes-manifest","duration":319,"timestamp":75486827166,"id":104,"parentId":1,"tags":{},"startTime":1778883459073,"traceId":"15757ac1d044274a"},{"name":"load-dotenv","duration":58,"timestamp":75486839320,"id":107,"parentId":106,"tags":{},"startTime":1778883459086,"traceId":"15757ac1d044274a"},{"name":"run-export-path-map","duration":810,"timestamp":75486842424,"id":108,"parentId":106,"tags":{},"startTime":1778883459089,"traceId":"15757ac1d044274a"},{"name":"next-export","duration":544561,"timestamp":75486837579,"id":106,"parentId":1,"tags":{},"startTime":1778883459084,"traceId":"15757ac1d044274a"}]
|
|
2
|
+
[{"name":"move-exported-app-not-found-","duration":2119,"timestamp":75487385386,"id":109,"parentId":105,"tags":{},"startTime":1778883459632,"traceId":"15757ac1d044274a"},{"name":"move-exported-app-global-error-","duration":564,"timestamp":75487387584,"id":110,"parentId":105,"tags":{},"startTime":1778883459634,"traceId":"15757ac1d044274a"},{"name":"static-generation","duration":559522,"timestamp":75486830909,"id":105,"parentId":1,"tags":{},"startTime":1778883459077,"traceId":"15757ac1d044274a"},{"name":"write-routes-manifest","duration":403,"timestamp":75487390585,"id":111,"parentId":1,"tags":{},"startTime":1778883459637,"traceId":"15757ac1d044274a"},{"name":"print-tree-view","duration":3574,"timestamp":75487409032,"id":112,"parentId":1,"tags":{},"startTime":1778883459655,"traceId":"15757ac1d044274a"},{"name":"write-route-bundle-stats","duration":11579,"timestamp":75487412632,"id":113,"parentId":1,"tags":{},"startTime":1778883459659,"traceId":"15757ac1d044274a"},{"name":"telemetry-flush","duration":19639,"timestamp":75487424234,"id":114,"parentId":1,"tags":{},"startTime":1778883459671,"traceId":"15757ac1d044274a"},{"name":"next-build","duration":15166899,"timestamp":75472276998,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778883444523,"traceId":"15757ac1d044274a"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":5178900,"timestamp":75472469716,"id":14,"parentId":1,"tags":{},"startTime":1778883444716,"traceId":"15757ac1d044274a"},{"name":"turbopack-build-events","duration":71,"timestamp":75472742583,"id":15,"parentId":1,"tags":{},"startTime":1778883444989,"traceId":"15757ac1d044274a"},{"name":"run-typescript","duration":8286776,"timestamp":75477657424,"id":16,"parentId":1,"tags":{},"startTime":1778883449904,"traceId":"15757ac1d044274a"},{"name":"static-check","duration":690387,"timestamp":75486129286,"id":19,"parentId":1,"tags":{},"startTime":1778883458376,"traceId":"15757ac1d044274a"},{"name":"static-generation","duration":559522,"timestamp":75486830909,"id":105,"parentId":1,"tags":{},"startTime":1778883459077,"traceId":"15757ac1d044274a"},{"name":"telemetry-flush","duration":19639,"timestamp":75487424234,"id":114,"parentId":1,"tags":{},"startTime":1778883459671,"traceId":"15757ac1d044274a"},{"name":"next-build","duration":15166899,"timestamp":75472276998,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778883444523,"traceId":"15757ac1d044274a"}]
|
|
@@ -1502,7 +1502,21 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1502
1502
|
return (
|
|
1503
1503
|
<>
|
|
1504
1504
|
<span
|
|
1505
|
-
|
|
1505
|
+
// Round 201 / Loop: the working chip joins the
|
|
1506
|
+
// "chip's hover state deepens its OWN identity colour"
|
|
1507
|
+
// family that R193 opened (active-links chip) and R195
|
|
1508
|
+
// extended (recent-panel footer). Pre-R201 hovering the
|
|
1509
|
+
// working chip fired R55 canvas dim + chip-row highlight
|
|
1510
|
+
// but the chip itself stayed at bg-green-500/10 — cause
|
|
1511
|
+
// silent, effect loud. R201 deepens its OWN green hue
|
|
1512
|
+
// (10→15 bg, 20→30 border) only when clickable.
|
|
1513
|
+
// transition-colors duration-200 blends the swap to
|
|
1514
|
+
// match R193's timing on the active-links chip.
|
|
1515
|
+
className={`px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${
|
|
1516
|
+
workingCount > 0
|
|
1517
|
+
? 'bg-green-500/10 text-green-300 border-green-500/20 hover:bg-green-500/15 hover:border-green-500/30'
|
|
1518
|
+
: 'bg-green-500/10 text-green-300 border-green-500/20'
|
|
1519
|
+
}`}
|
|
1506
1520
|
data-working-chip
|
|
1507
1521
|
data-working-chip-aliases={workingAliases.join(',')}
|
|
1508
1522
|
data-pin-mirror={pinnedStatus === 'working' ? 'true' : 'false'}
|
|
@@ -1518,10 +1532,16 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1518
1532
|
// (working / online / vendor letter). The visual is small
|
|
1519
1533
|
// — a 1-2 px inset double ring — but the eye catches the
|
|
1520
1534
|
// pop on every pin/unpin without the ease.
|
|
1535
|
+
// Round 201 / Loop: inline transition list now also covers
|
|
1536
|
+
// background-color + border-color so the R201 hover tint
|
|
1537
|
+
// eases. Tailwind transition-colors on the className would
|
|
1538
|
+
// be overridden by this inline declaration, so we splice
|
|
1539
|
+
// the colour properties directly into the existing
|
|
1540
|
+
// R180 box-shadow transition.
|
|
1521
1541
|
style={{
|
|
1522
1542
|
cursor: workingCount > 0 ? 'pointer' : undefined,
|
|
1523
1543
|
boxShadow: pinnedStatus === 'working' ? 'inset 0 0 0 1px #4ade80, inset 0 0 0 2px rgba(255,255,255,0.45)' : undefined,
|
|
1524
|
-
transition: 'box-shadow 150ms ease-out',
|
|
1544
|
+
transition: 'box-shadow 150ms ease-out, background-color 200ms ease-out, border-color 200ms ease-out',
|
|
1525
1545
|
}}
|
|
1526
1546
|
onMouseEnter={() => { if (workingCount > 0) setHoveredStatus('working'); }}
|
|
1527
1547
|
onMouseLeave={() => setHoveredStatus(prev => prev === 'working' ? null : prev)}
|
|
@@ -1548,7 +1568,19 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1548
1568
|
{workingCount} working
|
|
1549
1569
|
</span>
|
|
1550
1570
|
<span
|
|
1551
|
-
|
|
1571
|
+
// Round 201 / Loop: online chip — mirror of the working
|
|
1572
|
+
// chip treatment above. cyan hue 10→15 bg + 20→30 border
|
|
1573
|
+
// on hover, only when there's at least one online node
|
|
1574
|
+
// to highlight. Three sibling chips in the chip row now
|
|
1575
|
+
// all speak the same gesture vocabulary:
|
|
1576
|
+
// working chip · green 10→15 (R201)
|
|
1577
|
+
// online chip · cyan 10→15 (R201)
|
|
1578
|
+
// active-links · gray → cyan (R193)
|
|
1579
|
+
className={`px-2.5 py-1 rounded-md border anet-topo-chip-focus transition-colors duration-200 ${
|
|
1580
|
+
onlineNodes.length > 0
|
|
1581
|
+
? 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20 hover:bg-cyan-500/15 hover:border-cyan-500/30'
|
|
1582
|
+
: 'bg-cyan-500/10 text-cyan-300 border-cyan-500/20'
|
|
1583
|
+
}`}
|
|
1552
1584
|
data-online-chip
|
|
1553
1585
|
data-online-chip-aliases={onlineAliases.join(',')}
|
|
1554
1586
|
data-pin-mirror={pinnedStatus === 'idle' ? 'true' : 'false'}
|
|
@@ -1557,10 +1589,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
1557
1589
|
role={onlineNodes.length > 0 ? 'link' : undefined}
|
|
1558
1590
|
tabIndex={onlineNodes.length > 0 ? 0 : undefined}
|
|
1559
1591
|
// R180: smooth-pin-mirror family — see working chip above.
|
|
1592
|
+
// R201: inline transition list also covers bg + border so
|
|
1593
|
+
// the new R201 hover tint eases (mirror of working chip).
|
|
1560
1594
|
style={{
|
|
1561
1595
|
cursor: onlineNodes.length > 0 ? 'pointer' : undefined,
|
|
1562
1596
|
boxShadow: pinnedStatus === 'idle' ? 'inset 0 0 0 1px #67e8f9, inset 0 0 0 2px rgba(255,255,255,0.45)' : undefined,
|
|
1563
|
-
transition: 'box-shadow 150ms ease-out',
|
|
1597
|
+
transition: 'box-shadow 150ms ease-out, background-color 200ms ease-out, border-color 200ms ease-out',
|
|
1564
1598
|
}}
|
|
1565
1599
|
onMouseEnter={() => {
|
|
1566
1600
|
// If a working filter would isolate nothing, route to idle.
|
|
@@ -4448,13 +4482,61 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
4448
4482
|
invitation, not an error. Two-line layout uses
|
|
4449
4483
|
standard SVG <text>+<text> rather than tspan so the
|
|
4450
4484
|
y-coordinates are explicit and the data-attr selector
|
|
4451
|
-
still finds the primary line.
|
|
4485
|
+
still finds the primary line.
|
|
4486
|
+
|
|
4487
|
+
Round 200 / Loop · milestone: empty-state lines now
|
|
4488
|
+
breathe in opacity. Pre-R200 the two texts sat at
|
|
4489
|
+
fixed 0.65 / 0.45 — visually identical to "frozen"
|
|
4490
|
+
or "broken". A slow 4.4s in-out breath (peak just
|
|
4491
|
+
above resting, trough just below) says "waiting,
|
|
4492
|
+
listening". Pacing matches R84 idle-hub breath at
|
|
4493
|
+
the slow end of its workingCount=0 cycle, so the
|
|
4494
|
+
two empty-state surfaces (hub centre + panel
|
|
4495
|
+
placeholder) share rhythm; when the first message
|
|
4496
|
+
arrives, both surfaces become non-empty in sync.
|
|
4497
|
+
Reduced-motion users see the resting opacity only
|
|
4498
|
+
(SMIL is gated to !reducedMotion, same idiom every
|
|
4499
|
+
other ambient animation uses). Negative `begin`
|
|
4500
|
+
phase-shifts the sub-line 1.5s behind the main
|
|
4501
|
+
line so the two read as a gentle inhale-exhale
|
|
4502
|
+
instead of a single double-loud pulse. */
|
|
4452
4503
|
<>
|
|
4453
|
-
<text
|
|
4504
|
+
<text
|
|
4505
|
+
x="115" y="54" textAnchor="middle"
|
|
4506
|
+
fill={pal.legendText}
|
|
4507
|
+
fontSize="10" fontFamily="monospace" fontStyle="italic"
|
|
4508
|
+
opacity={0.65}
|
|
4509
|
+
data-recent-signal-empty
|
|
4510
|
+
data-recent-signal-empty-breathes={reducedMotion ? 'false' : 'true'}
|
|
4511
|
+
>
|
|
4454
4512
|
no flow yet
|
|
4513
|
+
{!reducedMotion && (
|
|
4514
|
+
<animate
|
|
4515
|
+
attributeName="opacity"
|
|
4516
|
+
values="0.55;0.78;0.55"
|
|
4517
|
+
dur="4.4s"
|
|
4518
|
+
repeatCount="indefinite"
|
|
4519
|
+
/>
|
|
4520
|
+
)}
|
|
4455
4521
|
</text>
|
|
4456
|
-
<text
|
|
4522
|
+
<text
|
|
4523
|
+
x="115" y="68" textAnchor="middle"
|
|
4524
|
+
fill={pal.legendText}
|
|
4525
|
+
fontSize="8" fontFamily="monospace"
|
|
4526
|
+
opacity={0.45}
|
|
4527
|
+
data-recent-signal-empty-hint
|
|
4528
|
+
data-recent-signal-empty-hint-breathes={reducedMotion ? 'false' : 'true'}
|
|
4529
|
+
>
|
|
4457
4530
|
send a message between agents
|
|
4531
|
+
{!reducedMotion && (
|
|
4532
|
+
<animate
|
|
4533
|
+
attributeName="opacity"
|
|
4534
|
+
values="0.36;0.58;0.36"
|
|
4535
|
+
dur="4.4s"
|
|
4536
|
+
begin="-1.5s"
|
|
4537
|
+
repeatCount="indefinite"
|
|
4538
|
+
/>
|
|
4539
|
+
)}
|
|
4458
4540
|
</text>
|
|
4459
4541
|
</>
|
|
4460
4542
|
) : (
|
package/package.json
CHANGED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* Round 200 verification (milestone): recent-signal panel empty-
|
|
2
|
+
* state texts breathe in opacity. The two lines "no flow yet" and
|
|
3
|
+
* "send a message between agents" each get a SMIL <animate> child
|
|
4
|
+
* cycling opacity ~0.55 ↔ 0.78 (main) and 0.36 ↔ 0.58 (sub) over
|
|
5
|
+
* 4.4s. Sub-line is phase-shifted -1.5s so the two read as
|
|
6
|
+
* inhale-exhale, not synchronised pulse.
|
|
7
|
+
*
|
|
8
|
+
* Pre-R200 both texts sat at fixed opacity 0.65 / 0.45 — visually
|
|
9
|
+
* identical to "frozen" or "broken" first-impression. Slow breath
|
|
10
|
+
* = "waiting, listening" while staying calm.
|
|
11
|
+
*
|
|
12
|
+
* Test:
|
|
13
|
+
* 1. Mock 0 messages → flowLinks.length === 0 → empty state fires.
|
|
14
|
+
* 2. data-recent-signal-empty + data-recent-signal-empty-hint
|
|
15
|
+
* both present.
|
|
16
|
+
* 3. data-recent-signal-empty-breathes='true'
|
|
17
|
+
* data-recent-signal-empty-hint-breathes='true'
|
|
18
|
+
* 4. Both texts contain an <animate> child with:
|
|
19
|
+
* - attributeName='opacity'
|
|
20
|
+
* - dur='4.4s'
|
|
21
|
+
* - repeatCount='indefinite'
|
|
22
|
+
* - values cover a range (not a single value)
|
|
23
|
+
* 5. Sub-line <animate> has begin='-1.5s' (phase-shift).
|
|
24
|
+
* 6. Main <animate> begin is unset / '0s' (no phase shift).
|
|
25
|
+
* 7. Captured opacity values shift over time (sample twice, ~2s
|
|
26
|
+
* apart): same element should produce different rendered
|
|
27
|
+
* opacity values because SMIL is animating.
|
|
28
|
+
*/
|
|
29
|
+
import { chromium } from 'playwright';
|
|
30
|
+
import { readFileSync } from 'node:fs';
|
|
31
|
+
|
|
32
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
33
|
+
const browser = await chromium.launch({ headless: true });
|
|
34
|
+
|
|
35
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
36
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
37
|
+
await ctx.addInitScript(() => {
|
|
38
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
42
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
43
|
+
const r = await route.fetch();
|
|
44
|
+
const b = await r.json();
|
|
45
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
46
|
+
const mk = (alias) => ({
|
|
47
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'cli-claude-code',
|
|
48
|
+
network_id: nid, project_dir: null,
|
|
49
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
50
|
+
});
|
|
51
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
52
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
53
|
+
] } });
|
|
54
|
+
});
|
|
55
|
+
// 0 messages → empty state fires
|
|
56
|
+
await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: { messages: [] } }));
|
|
57
|
+
await ctx.route('**/api/hub/tasks*', (route) => route.fulfill({ json: { tasks: [] } }));
|
|
58
|
+
|
|
59
|
+
const page = await ctx.newPage();
|
|
60
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
61
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
62
|
+
await page.waitForSelector('[data-recent-signal-empty]', { timeout: 10000 });
|
|
63
|
+
await page.waitForTimeout(300);
|
|
64
|
+
|
|
65
|
+
const probeStructure = async () => page.evaluate(() => {
|
|
66
|
+
const main = document.querySelector('[data-recent-signal-empty]');
|
|
67
|
+
const sub = document.querySelector('[data-recent-signal-empty-hint]');
|
|
68
|
+
function pickAnim(textEl) {
|
|
69
|
+
if (!textEl) return null;
|
|
70
|
+
const a = textEl.querySelector('animate');
|
|
71
|
+
if (!a) return { found: false };
|
|
72
|
+
return {
|
|
73
|
+
found: true,
|
|
74
|
+
attribute: a.getAttribute('attributeName'),
|
|
75
|
+
values: a.getAttribute('values'),
|
|
76
|
+
dur: a.getAttribute('dur'),
|
|
77
|
+
begin: a.getAttribute('begin'),
|
|
78
|
+
repeatCount: a.getAttribute('repeatCount'),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
mainText: main?.textContent?.trim(),
|
|
83
|
+
mainBreathes:main?.getAttribute('data-recent-signal-empty-breathes'),
|
|
84
|
+
mainAnim: pickAnim(main),
|
|
85
|
+
subText: sub?.textContent?.trim(),
|
|
86
|
+
subBreathes: sub?.getAttribute('data-recent-signal-empty-hint-breathes'),
|
|
87
|
+
subAnim: pickAnim(sub),
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const s = await probeStructure();
|
|
92
|
+
|
|
93
|
+
// Sample rendered opacity twice ~2s apart to verify SMIL is actually
|
|
94
|
+
// animating in the browser, not just declared.
|
|
95
|
+
async function sampleOpacities() {
|
|
96
|
+
return page.evaluate(() => {
|
|
97
|
+
const main = document.querySelector('[data-recent-signal-empty]');
|
|
98
|
+
const sub = document.querySelector('[data-recent-signal-empty-hint]');
|
|
99
|
+
// SMIL renders into the SVG-internal opacity (DOM attr stays
|
|
100
|
+
// static at the React-rendered value; computed style reads the
|
|
101
|
+
// animated current value).
|
|
102
|
+
return {
|
|
103
|
+
mainComputed: parseFloat(getComputedStyle(main).opacity),
|
|
104
|
+
subComputed: parseFloat(getComputedStyle(sub).opacity),
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const sample1 = await sampleOpacities();
|
|
109
|
+
await page.waitForTimeout(2000);
|
|
110
|
+
const sample2 = await sampleOpacities();
|
|
111
|
+
|
|
112
|
+
await browser.close();
|
|
113
|
+
|
|
114
|
+
const parseValues = (v) => (v || '').split(/[;,]/).map(parseFloat).filter(Number.isFinite);
|
|
115
|
+
const mainVals = parseValues(s.mainAnim?.values);
|
|
116
|
+
const subVals = parseValues(s.subAnim?.values);
|
|
117
|
+
|
|
118
|
+
const results = {
|
|
119
|
+
empty_state_visible: s.mainText === 'no flow yet',
|
|
120
|
+
hint_visible: s.subText === 'send a message between agents',
|
|
121
|
+
main_breathes_attr: s.mainBreathes === 'true',
|
|
122
|
+
hint_breathes_attr: s.subBreathes === 'true',
|
|
123
|
+
|
|
124
|
+
main_anim_found: s.mainAnim?.found === true,
|
|
125
|
+
main_anim_opacity: s.mainAnim?.attribute === 'opacity',
|
|
126
|
+
main_anim_dur_4p4s: s.mainAnim?.dur === '4.4s',
|
|
127
|
+
main_anim_indefinite: s.mainAnim?.repeatCount === 'indefinite',
|
|
128
|
+
main_anim_values_range: mainVals.length >= 3 && (Math.max(...mainVals) - Math.min(...mainVals)) > 0.1,
|
|
129
|
+
main_anim_no_phase_shift: !s.mainAnim?.begin || s.mainAnim?.begin === '0s' || s.mainAnim?.begin === '',
|
|
130
|
+
|
|
131
|
+
sub_anim_found: s.subAnim?.found === true,
|
|
132
|
+
sub_anim_opacity: s.subAnim?.attribute === 'opacity',
|
|
133
|
+
sub_anim_dur_4p4s: s.subAnim?.dur === '4.4s',
|
|
134
|
+
sub_anim_phase_shift: s.subAnim?.begin === '-1.5s',
|
|
135
|
+
sub_anim_values_range: subVals.length >= 3 && (Math.max(...subVals) - Math.min(...subVals)) > 0.1,
|
|
136
|
+
|
|
137
|
+
// SMIL actually animates — sampling at different cycle phases yields
|
|
138
|
+
// different rendered opacities. With 4.4s period and 2s gap, the two
|
|
139
|
+
// samples are at distinct phases and should diverge by at least 0.04
|
|
140
|
+
// unless we landed on symmetric cycle points (extremely rare given
|
|
141
|
+
// mock timing variance — re-check loose bound).
|
|
142
|
+
main_opacity_animating: Math.abs(sample1.mainComputed - sample2.mainComputed) > 0.02,
|
|
143
|
+
sub_opacity_animating: Math.abs(sample1.subComputed - sample2.subComputed) > 0.02,
|
|
144
|
+
};
|
|
145
|
+
const ok = Object.values(results).every(Boolean);
|
|
146
|
+
console.log(`${ok ? '✅' : '❌'} empty-state breath:`, JSON.stringify(results),
|
|
147
|
+
`\n structure:`, s,
|
|
148
|
+
`\n sample1:`, sample1,
|
|
149
|
+
`\n sample2:`, sample2);
|
|
150
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/* Round 201 verification: the chip-row "N working" / "N online" chips
|
|
2
|
+
* adopt deeper versions of their own identity colour on hover,
|
|
3
|
+
* mirroring R193 active-links chip pattern.
|
|
4
|
+
*
|
|
5
|
+
* Pre-R201 hover working chip → R55 canvas dim + chip-row highlight,
|
|
6
|
+
* but chip itself stayed at bg-{color}-500/10 — cause silent, effect
|
|
7
|
+
* loud. R201 deepens 10→15 bg and 20→30 border on hover (only when
|
|
8
|
+
* the chip has a target count > 0). The inline transition list is
|
|
9
|
+
* extended to cover background-color + border-color so the swap
|
|
10
|
+
* eases instead of snapping (Tailwind transition-colors on the
|
|
11
|
+
* className alone would be overridden by the existing R180 inline
|
|
12
|
+
* box-shadow transition).
|
|
13
|
+
*
|
|
14
|
+
* Test (cyber dark, 4 working sessions):
|
|
15
|
+
* 1. Working chip: clickable='true', className has hover:bg-green-500/15
|
|
16
|
+
* + hover:border-green-500/30, transition includes 'background-color'
|
|
17
|
+
* + 'border-color' (both 200ms), inline still has 'box-shadow 150ms'.
|
|
18
|
+
* 2. Online chip: same shape with cyan hue.
|
|
19
|
+
* 3. Hover the working chip — wait past 220ms → computed bg
|
|
20
|
+
* shifts to a more-saturated/darker green (RGB-or-OKLab signal).
|
|
21
|
+
* 4. Move away — bg returns to idle (with margin past 220ms).
|
|
22
|
+
* 5. The chip's R55 canvas-effect setHoveredStatus still fires —
|
|
23
|
+
* verified via hoveredStatus change reflected on the working
|
|
24
|
+
* legend row's data-legend-row-lifted attribute.
|
|
25
|
+
*/
|
|
26
|
+
import { chromium } from 'playwright';
|
|
27
|
+
import { readFileSync } from 'node:fs';
|
|
28
|
+
|
|
29
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
30
|
+
const browser = await chromium.launch({ headless: true });
|
|
31
|
+
|
|
32
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
|
|
33
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
34
|
+
await ctx.addInitScript(() => {
|
|
35
|
+
try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
39
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
40
|
+
const r = await route.fetch();
|
|
41
|
+
const b = await r.json();
|
|
42
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
43
|
+
const mk = (alias) => ({
|
|
44
|
+
alias, status: 'working', model: 'claude-opus-4', runtime: 'cli-claude-code',
|
|
45
|
+
network_id: nid, project_dir: null,
|
|
46
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
47
|
+
});
|
|
48
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [
|
|
49
|
+
mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
|
|
50
|
+
] } });
|
|
51
|
+
});
|
|
52
|
+
await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: { messages: [] } }));
|
|
53
|
+
await ctx.route('**/api/hub/tasks*', (route) => route.fulfill({ json: { tasks: [] } }));
|
|
54
|
+
|
|
55
|
+
const page = await ctx.newPage();
|
|
56
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
|
|
57
|
+
await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
|
|
58
|
+
await page.waitForSelector('[data-working-chip]', { timeout: 10000 });
|
|
59
|
+
await page.waitForTimeout(300);
|
|
60
|
+
|
|
61
|
+
const probeChip = async (selector) => page.evaluate((sel) => {
|
|
62
|
+
const el = document.querySelector(sel);
|
|
63
|
+
if (!el) return null;
|
|
64
|
+
const cs = getComputedStyle(el);
|
|
65
|
+
return {
|
|
66
|
+
className: el.getAttribute('class') || '',
|
|
67
|
+
clickable: el.getAttribute('data-working-chip-clickable') ||
|
|
68
|
+
el.getAttribute('data-online-chip-clickable'),
|
|
69
|
+
bg: cs.backgroundColor,
|
|
70
|
+
borderColor: cs.borderTopColor,
|
|
71
|
+
transition: el.style.transition,
|
|
72
|
+
};
|
|
73
|
+
}, selector);
|
|
74
|
+
|
|
75
|
+
const idleWorking = await probeChip('[data-working-chip]');
|
|
76
|
+
const idleOnline = await probeChip('[data-online-chip]');
|
|
77
|
+
|
|
78
|
+
await page.hover('[data-working-chip]');
|
|
79
|
+
await page.waitForTimeout(250);
|
|
80
|
+
const hoverWorking = await probeChip('[data-working-chip]');
|
|
81
|
+
|
|
82
|
+
// Confirm R55 canvas effect still fires — hoveredStatus='working'
|
|
83
|
+
// lifts the legend working row.
|
|
84
|
+
const workingRowLifted = await page.evaluate(() =>
|
|
85
|
+
document.querySelector('[data-legend-status="working"]')
|
|
86
|
+
?.getAttribute('data-legend-row-lifted'));
|
|
87
|
+
|
|
88
|
+
await page.mouse.move(0, 0);
|
|
89
|
+
await page.waitForTimeout(280);
|
|
90
|
+
const settledWorking = await probeChip('[data-working-chip]');
|
|
91
|
+
|
|
92
|
+
await page.hover('[data-online-chip]');
|
|
93
|
+
await page.waitForTimeout(250);
|
|
94
|
+
const hoverOnline = await probeChip('[data-online-chip]');
|
|
95
|
+
|
|
96
|
+
await page.mouse.move(0, 0);
|
|
97
|
+
await page.waitForTimeout(280);
|
|
98
|
+
const settledOnline = await probeChip('[data-online-chip]');
|
|
99
|
+
|
|
100
|
+
await browser.close();
|
|
101
|
+
|
|
102
|
+
// Tailwind 4 emits oklab/oklch / color-mix forms. Just check the bg
|
|
103
|
+
// string actually differs idle vs hover, and a brief parser confirms
|
|
104
|
+
// the channel that should grow (green for working, blue/green for cyan).
|
|
105
|
+
// Parse colors including alpha. R201's Tailwind /10 → /15 emits same
|
|
106
|
+
// OKLab L/a/b with stepped-up alpha (0.1 → 0.15); R193's gray→cyan
|
|
107
|
+
// pattern emits a different hue at any alpha. Both are "more saturated
|
|
108
|
+
// against the canvas" from the user's POV. Capture alpha and treat
|
|
109
|
+
// alpha-increase as a valid saturation signal alongside chroma growth.
|
|
110
|
+
function parseColor(s) {
|
|
111
|
+
if (!s) return null;
|
|
112
|
+
let m = s.match(/rgba?\(\s*(\d+)\s*,?\s*(\d+)\s*,?\s*(\d+)(?:\s*[,/]\s*([\d.]+))?/);
|
|
113
|
+
if (m) return { kind: 'rgb', r: +m[1], g: +m[2], b: +m[3], a: m[4] != null ? +m[4] : 1 };
|
|
114
|
+
m = s.match(/oklab\(\s*([\-\d.]+)\s+([\-\d.]+)\s+([\-\d.]+)(?:\s*\/\s*([\d.]+))?/);
|
|
115
|
+
if (m) return { kind: 'oklab', L: +m[1], a: +m[2], b: +m[3], alpha: m[4] != null ? +m[4] : 1 };
|
|
116
|
+
m = s.match(/oklch\(\s*([\-\d.]+)\s+([\-\d.]+)\s+([\-\d.]+)(?:\s*\/\s*([\d.]+))?/);
|
|
117
|
+
if (m) return { kind: 'oklch', L: +m[1], C: +m[2], h: +m[3], alpha: m[4] != null ? +m[4] : 1 };
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// "More saturated against the canvas" = either chroma/hue distance
|
|
122
|
+
// from gray grew OR alpha grew (Tailwind /10 → /15 deepens by alpha).
|
|
123
|
+
const moreSaturated = (idle, hov) => {
|
|
124
|
+
if (!idle || !hov) return false;
|
|
125
|
+
if (idle.kind === 'rgb' && hov.kind === 'rgb') {
|
|
126
|
+
const chromaIdle = Math.max(idle.r, idle.g, idle.b) - Math.min(idle.r, idle.g, idle.b);
|
|
127
|
+
const chromaHov = Math.max(hov.r, hov.g, hov.b) - Math.min(hov.r, hov.g, hov.b);
|
|
128
|
+
return chromaHov > chromaIdle || hov.a > idle.a + 0.01;
|
|
129
|
+
}
|
|
130
|
+
if (idle.kind === 'oklab' && hov.kind === 'oklab') {
|
|
131
|
+
const dIdle = Math.hypot(idle.a, idle.b);
|
|
132
|
+
const dHov = Math.hypot(hov.a, hov.b);
|
|
133
|
+
return dHov > dIdle + 0.005 || hov.alpha > idle.alpha + 0.01;
|
|
134
|
+
}
|
|
135
|
+
if (idle.kind === 'oklch' && hov.kind === 'oklch') {
|
|
136
|
+
return hov.C > idle.C + 0.005 || hov.alpha > idle.alpha + 0.01;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const idleWorkingC = parseColor(idleWorking?.bg);
|
|
142
|
+
const hoverWorkingC = parseColor(hoverWorking?.bg);
|
|
143
|
+
const idleOnlineC = parseColor(idleOnline?.bg);
|
|
144
|
+
const hoverOnlineC = parseColor(hoverOnline?.bg);
|
|
145
|
+
|
|
146
|
+
const results = {
|
|
147
|
+
working_clickable: idleWorking?.clickable === 'true',
|
|
148
|
+
working_className_has_hover: idleWorking?.className.includes('hover:bg-green-500/15')
|
|
149
|
+
&& idleWorking?.className.includes('hover:border-green-500/30'),
|
|
150
|
+
working_transition_includes_bg: /background-color\s+(?:200ms|0\.2s)/.test(idleWorking?.transition || ''),
|
|
151
|
+
working_transition_includes_border: /border-color\s+(?:200ms|0\.2s)/.test(idleWorking?.transition || ''),
|
|
152
|
+
working_transition_keeps_boxshadow: /box-shadow\s+(?:150ms|0\.15s)/.test(idleWorking?.transition || ''),
|
|
153
|
+
working_hover_bg_changed: idleWorking?.bg !== hoverWorking?.bg,
|
|
154
|
+
working_hover_more_saturated: moreSaturated(idleWorkingC, hoverWorkingC),
|
|
155
|
+
working_settles_back: settledWorking?.bg === idleWorking?.bg,
|
|
156
|
+
// R55 canvas-effect still fires from the chip — hovering the
|
|
157
|
+
// working chip lifts the legend working row.
|
|
158
|
+
working_canvas_effect_fires: workingRowLifted === 'true',
|
|
159
|
+
|
|
160
|
+
online_clickable: idleOnline?.clickable === 'true',
|
|
161
|
+
online_className_has_hover: idleOnline?.className.includes('hover:bg-cyan-500/15')
|
|
162
|
+
&& idleOnline?.className.includes('hover:border-cyan-500/30'),
|
|
163
|
+
online_transition_includes_bg: /background-color\s+(?:200ms|0\.2s)/.test(idleOnline?.transition || ''),
|
|
164
|
+
online_transition_includes_border: /border-color\s+(?:200ms|0\.2s)/.test(idleOnline?.transition || ''),
|
|
165
|
+
online_hover_bg_changed: idleOnline?.bg !== hoverOnline?.bg,
|
|
166
|
+
online_hover_more_saturated: moreSaturated(idleOnlineC, hoverOnlineC),
|
|
167
|
+
online_settles_back: settledOnline?.bg === idleOnline?.bg,
|
|
168
|
+
};
|
|
169
|
+
const ok = Object.values(results).every(Boolean);
|
|
170
|
+
console.log(`${ok ? '✅' : '❌'} status-bar chips self-hover:`, JSON.stringify(results),
|
|
171
|
+
`\n idleWorking:`, idleWorking,
|
|
172
|
+
`\n hoverWorking:`, hoverWorking,
|
|
173
|
+
`\n settledWorking:`, settledWorking,
|
|
174
|
+
`\n idleOnline:`, idleOnline,
|
|
175
|
+
`\n hoverOnline:`, hoverOnline,
|
|
176
|
+
`\n settledOnline:`, settledOnline);
|
|
177
|
+
process.exit(ok ? 0 : 1);
|
|
File without changes
|
/package/.next/static/{3wpxJKGpalx1lcuz7MNps → 1qAKm3mDY7idTFEolEfzw}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|