@sleep2agi/agent-network-dashboard 0.5.1-preview.12 → 0.5.1-preview.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +4 -4
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/admin.html +2 -2
  23. package/.next/server/app/admin.rsc +2 -2
  24. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  25. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  27. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  30. package/.next/server/app/index.html +2 -2
  31. package/.next/server/app/index.rsc +3 -3
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  34. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  36. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/login.html +2 -2
  39. package/.next/server/app/login.rsc +3 -3
  40. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  46. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/logs.html +2 -2
  48. package/.next/server/app/logs.rsc +2 -2
  49. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  55. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/messages.html +2 -2
  57. package/.next/server/app/messages.rsc +2 -2
  58. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  59. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  64. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/node.html +2 -2
  66. package/.next/server/app/node.rsc +2 -2
  67. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  68. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  69. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  70. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  72. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  73. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/nodes.html +2 -2
  75. package/.next/server/app/nodes.rsc +2 -2
  76. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  78. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  79. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  81. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs.html +2 -2
  85. package/.next/server/app/server-logs.rsc +2 -2
  86. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  89. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/networks.html +2 -2
  94. package/.next/server/app/settings/networks.rsc +2 -2
  95. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  97. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  98. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  100. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  102. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens.html +2 -2
  105. package/.next/server/app/settings/tokens.rsc +2 -2
  106. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  111. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  113. package/.next/server/app/settings.html +2 -2
  114. package/.next/server/app/settings.rsc +3 -3
  115. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks.html +2 -2
  124. package/.next/server/app/tasks.rsc +2 -2
  125. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  131. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +1 -1
  132. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  134. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  137. package/.next/server/middleware-build-manifest.js +3 -3
  138. package/.next/server/pages/404.html +2 -2
  139. package/.next/server/pages/500.html +1 -1
  140. package/.next/static/chunks/{156q5y0rq19h5.js → 03mfrl9fd9smg.js} +1 -1
  141. package/.next/static/chunks/0kt7qs66ra2.2.css +2 -0
  142. package/.next/static/chunks/{163kbbv9y-8_7.js → 116zy6jdhuaa2.js} +1 -1
  143. package/.next/static/chunks/{122abdjq6gm8i.js → 12m~64tlig.y4.js} +1 -1
  144. package/.next/trace +2 -2
  145. package/.next/trace-build +1 -1
  146. package/app/components/TopoGraph.tsx +39 -7
  147. package/package.json +1 -1
  148. package/scripts/topo-fullscreen-icon-hover-scale-test.mjs +91 -0
  149. package/scripts/topo-zoom-icon-hover-scale-test.mjs +114 -0
  150. package/.next/static/chunks/0rwo2q9_by3o-.css +0 -2
  151. /package/.next/static/{xhrrmtOS6EmcuOXkSdTGX → rDAS8dVgx4ldg7AtRGdUB}/_buildManifest.js +0 -0
  152. /package/.next/static/{xhrrmtOS6EmcuOXkSdTGX → rDAS8dVgx4ldg7AtRGdUB}/_clientMiddlewareManifest.js +0 -0
  153. /package/.next/static/{xhrrmtOS6EmcuOXkSdTGX → rDAS8dVgx4ldg7AtRGdUB}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":305,"timestamp":133431701730,"id":4,"parentId":1,"tags":{},"startTime":1778941403948,"traceId":"5d109780091e5078"},{"name":"load-custom-routes","duration":535,"timestamp":133431702192,"id":5,"parentId":1,"tags":{},"startTime":1778941403948,"traceId":"5d109780091e5078"},{"name":"create-dist-dir","duration":816,"timestamp":133431702776,"id":6,"parentId":1,"tags":{},"startTime":1778941403949,"traceId":"5d109780091e5078"},{"name":"clean","duration":33340,"timestamp":133431704445,"id":7,"parentId":1,"tags":{},"startTime":1778941403951,"traceId":"5d109780091e5078"},{"name":"discover-routes","duration":14832,"timestamp":133431823690,"id":8,"parentId":1,"tags":{},"startTime":1778941404070,"traceId":"5d109780091e5078"},{"name":"create-root-mapping","duration":136,"timestamp":133431838589,"id":9,"parentId":1,"tags":{},"startTime":1778941404085,"traceId":"5d109780091e5078"},{"name":"generate-route-types","duration":36409,"timestamp":133431841315,"id":10,"parentId":1,"tags":{},"startTime":1778941404088,"traceId":"5d109780091e5078"},{"name":"public-dir-conflict-check","duration":168,"timestamp":133431877848,"id":11,"parentId":1,"tags":{},"startTime":1778941404124,"traceId":"5d109780091e5078"},{"name":"generate-routes-manifest","duration":6609,"timestamp":133431878225,"id":12,"parentId":1,"tags":{},"startTime":1778941404125,"traceId":"5d109780091e5078"},{"name":"run-turbopack","duration":6195004,"timestamp":133431890965,"id":14,"parentId":1,"tags":{},"startTime":1778941404137,"traceId":"5d109780091e5078"},{"name":"turbopack-build-events","duration":104,"timestamp":133432230407,"id":15,"parentId":1,"tags":{},"startTime":1778941404477,"traceId":"5d109780091e5078"},{"name":"run-typescript","duration":9849483,"timestamp":133438096943,"id":16,"parentId":1,"tags":{},"startTime":1778941410343,"traceId":"5d109780091e5078"},{"name":"generate-required-server-files","duration":2341,"timestamp":133447947609,"id":18,"parentId":1,"tags":{},"startTime":1778941420194,"traceId":"5d109780091e5078"},{"name":"check-static-error-page","duration":15913,"timestamp":133448165633,"id":20,"parentId":19,"tags":{},"startTime":1778941420412,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":567459,"timestamp":133448185652,"id":65,"parentId":22,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":584830,"timestamp":133448168484,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778941420415,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":626767,"timestamp":133448185783,"id":66,"parentId":25,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":640360,"timestamp":133448172449,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778941420419,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":632196,"timestamp":133448185887,"id":67,"parentId":26,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":645526,"timestamp":133448172630,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778941420419,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":639997,"timestamp":133448185356,"id":64,"parentId":21,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":658520,"timestamp":133448166907,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778941420413,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":638797,"timestamp":133448186800,"id":73,"parentId":33,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":650762,"timestamp":133448174876,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778941420421,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":660236,"timestamp":133448186912,"id":75,"parentId":35,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":674804,"timestamp":133448175175,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778941420421,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":673047,"timestamp":133448186412,"id":70,"parentId":29,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":685792,"timestamp":133448173764,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778941420420,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":685599,"timestamp":133448186928,"id":76,"parentId":36,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":696905,"timestamp":133448175705,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":687336,"timestamp":133448186133,"id":69,"parentId":28,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":700671,"timestamp":133448172867,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778941420419,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":692623,"timestamp":133448186624,"id":72,"parentId":32,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":704573,"timestamp":133448174730,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778941420421,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":694229,"timestamp":133448186979,"id":79,"parentId":39,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":705233,"timestamp":133448176022,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":712470,"timestamp":133448186970,"id":78,"parentId":38,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":723566,"timestamp":133448175943,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":712714,"timestamp":133448186991,"id":80,"parentId":40,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":723633,"timestamp":133448176107,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":713870,"timestamp":133448186955,"id":77,"parentId":37,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":725021,"timestamp":133448175847,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":720513,"timestamp":133448187048,"id":83,"parentId":45,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":730817,"timestamp":133448176799,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778941420423,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":725383,"timestamp":133448187078,"id":85,"parentId":47,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":734274,"timestamp":133448178237,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":729782,"timestamp":133448186014,"id":68,"parentId":27,"tags":{},"startTime":1778941420432,"traceId":"5d109780091e5078"},{"name":"check-page","duration":743115,"timestamp":133448172753,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778941420419,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":730135,"timestamp":133448187086,"id":86,"parentId":48,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":738878,"timestamp":133448178407,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":731669,"timestamp":133448187064,"id":84,"parentId":46,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":741870,"timestamp":133448176901,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778941420423,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":734829,"timestamp":133448187100,"id":87,"parentId":49,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":743461,"timestamp":133448178513,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":735772,"timestamp":133448187112,"id":88,"parentId":50,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":744349,"timestamp":133448178574,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":735960,"timestamp":133448187121,"id":89,"parentId":51,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":744494,"timestamp":133448178623,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":739174,"timestamp":133448186561,"id":71,"parentId":30,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":751848,"timestamp":133448173936,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778941420420,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":739383,"timestamp":133448187034,"id":82,"parentId":44,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":749781,"timestamp":133448176676,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778941420423,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":735690,"timestamp":133448194524,"id":91,"parentId":31,"tags":{},"startTime":1778941420441,"traceId":"5d109780091e5078"},{"name":"check-page","duration":756025,"timestamp":133448174238,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778941420421,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":746970,"timestamp":133448186883,"id":74,"parentId":34,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":758867,"timestamp":133448175026,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778941420421,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":742397,"timestamp":133448195348,"id":92,"parentId":41,"tags":{},"startTime":1778941420442,"traceId":"5d109780091e5078"},{"name":"check-page","duration":761634,"timestamp":133448176169,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778941420422,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":742547,"timestamp":133448199755,"id":96,"parentId":53,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":763221,"timestamp":133448179119,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":750838,"timestamp":133448199778,"id":98,"parentId":55,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":771258,"timestamp":133448179400,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778941420426,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":767077,"timestamp":133448187020,"id":81,"parentId":42,"tags":{},"startTime":1778941420433,"traceId":"5d109780091e5078"},{"name":"check-page","duration":777773,"timestamp":133448176371,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778941420423,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":758333,"timestamp":133448199791,"id":99,"parentId":56,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":778676,"timestamp":133448179542,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778941420426,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":766587,"timestamp":133448199911,"id":101,"parentId":59,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":786226,"timestamp":133448180315,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778941420427,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":778892,"timestamp":133448193193,"id":90,"parentId":24,"tags":{},"startTime":1778941420439,"traceId":"5d109780091e5078"},{"name":"check-page","duration":803074,"timestamp":133448169083,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778941420415,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":775629,"timestamp":133448196866,"id":93,"parentId":43,"tags":{},"startTime":1778941420443,"traceId":"5d109780091e5078"},{"name":"check-page","duration":796070,"timestamp":133448176471,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778941420423,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":774505,"timestamp":133448199933,"id":102,"parentId":61,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":793556,"timestamp":133448180939,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778941420427,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":771328,"timestamp":133448210868,"id":105,"parentId":60,"tags":{},"startTime":1778941420457,"traceId":"5d109780091e5078"},{"name":"check-page","duration":801729,"timestamp":133448180515,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778941420427,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":765662,"timestamp":133448224101,"id":106,"parentId":57,"tags":{},"startTime":1778941420470,"traceId":"5d109780091e5078"},{"name":"check-page","duration":810106,"timestamp":133448179701,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778941420426,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":792135,"timestamp":133448199739,"id":95,"parentId":52,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":812960,"timestamp":133448178959,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778941420425,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":792573,"timestamp":133448199708,"id":94,"parentId":23,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":823505,"timestamp":133448168805,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778941420415,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":803851,"timestamp":133448199769,"id":97,"parentId":54,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":824413,"timestamp":133448179246,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778941420426,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":822859,"timestamp":133448199803,"id":100,"parentId":58,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":842595,"timestamp":133448180112,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778941420426,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":831035,"timestamp":133448199960,"id":104,"parentId":63,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":849783,"timestamp":133448181270,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778941420428,"traceId":"5d109780091e5078"},{"name":"is-page-static","duration":842692,"timestamp":133448199946,"id":103,"parentId":62,"tags":{},"startTime":1778941420446,"traceId":"5d109780091e5078"},{"name":"check-page","duration":861565,"timestamp":133448181115,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778941420427,"traceId":"5d109780091e5078"},{"name":"static-check","duration":878123,"timestamp":133448164592,"id":19,"parentId":1,"tags":{},"startTime":1778941420411,"traceId":"5d109780091e5078"}]
2
- [{"name":"write-routes-manifest","duration":739,"timestamp":133449054949,"id":108,"parentId":1,"tags":{},"startTime":1778941421301,"traceId":"5d109780091e5078"},{"name":"load-dotenv","duration":43,"timestamp":133449067155,"id":111,"parentId":110,"tags":{},"startTime":1778941421313,"traceId":"5d109780091e5078"},{"name":"run-export-path-map","duration":556,"timestamp":133449070189,"id":112,"parentId":110,"tags":{},"startTime":1778941421316,"traceId":"5d109780091e5078"},{"name":"next-export","duration":581871,"timestamp":133449065936,"id":110,"parentId":1,"tags":{},"startTime":1778941421312,"traceId":"5d109780091e5078"},{"name":"move-exported-app-not-found-","duration":758,"timestamp":133449651773,"id":113,"parentId":109,"tags":{},"startTime":1778941421898,"traceId":"5d109780091e5078"},{"name":"move-exported-app-global-error-","duration":524,"timestamp":133449652667,"id":114,"parentId":109,"tags":{},"startTime":1778941421899,"traceId":"5d109780091e5078"},{"name":"static-generation","duration":595583,"timestamp":133449059986,"id":109,"parentId":1,"tags":{},"startTime":1778941421306,"traceId":"5d109780091e5078"},{"name":"write-routes-manifest","duration":492,"timestamp":133449655891,"id":115,"parentId":1,"tags":{},"startTime":1778941421902,"traceId":"5d109780091e5078"},{"name":"print-tree-view","duration":3722,"timestamp":133449675531,"id":116,"parentId":1,"tags":{},"startTime":1778941421922,"traceId":"5d109780091e5078"},{"name":"write-route-bundle-stats","duration":12387,"timestamp":133449679285,"id":117,"parentId":1,"tags":{},"startTime":1778941421926,"traceId":"5d109780091e5078"},{"name":"telemetry-flush","duration":20554,"timestamp":133449691700,"id":118,"parentId":1,"tags":{},"startTime":1778941421938,"traceId":"5d109780091e5078"},{"name":"next-build","duration":18068790,"timestamp":133431643499,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778941403890,"traceId":"5d109780091e5078"}]
1
+ [{"name":"generate-buildid","duration":272,"timestamp":134037606285,"id":4,"parentId":1,"tags":{},"startTime":1778942009853,"traceId":"91883933f13adad4"},{"name":"load-custom-routes","duration":503,"timestamp":134037606703,"id":5,"parentId":1,"tags":{},"startTime":1778942009853,"traceId":"91883933f13adad4"},{"name":"create-dist-dir","duration":702,"timestamp":134037607250,"id":6,"parentId":1,"tags":{},"startTime":1778942009854,"traceId":"91883933f13adad4"},{"name":"clean","duration":32768,"timestamp":134037608645,"id":7,"parentId":1,"tags":{},"startTime":1778942009855,"traceId":"91883933f13adad4"},{"name":"discover-routes","duration":23824,"timestamp":134037736173,"id":8,"parentId":1,"tags":{},"startTime":1778942009982,"traceId":"91883933f13adad4"},{"name":"create-root-mapping","duration":152,"timestamp":134037760103,"id":9,"parentId":1,"tags":{},"startTime":1778942010006,"traceId":"91883933f13adad4"},{"name":"generate-route-types","duration":28477,"timestamp":134037763494,"id":10,"parentId":1,"tags":{},"startTime":1778942010010,"traceId":"91883933f13adad4"},{"name":"public-dir-conflict-check","duration":99,"timestamp":134037792106,"id":11,"parentId":1,"tags":{},"startTime":1778942010038,"traceId":"91883933f13adad4"},{"name":"generate-routes-manifest","duration":5799,"timestamp":134037792326,"id":12,"parentId":1,"tags":{},"startTime":1778942010039,"traceId":"91883933f13adad4"},{"name":"run-turbopack","duration":5866277,"timestamp":134037815685,"id":14,"parentId":1,"tags":{},"startTime":1778942010062,"traceId":"91883933f13adad4"},{"name":"turbopack-build-events","duration":98,"timestamp":134038106229,"id":15,"parentId":1,"tags":{},"startTime":1778942010353,"traceId":"91883933f13adad4"},{"name":"run-typescript","duration":8922388,"timestamp":134043691126,"id":16,"parentId":1,"tags":{},"startTime":1778942015937,"traceId":"91883933f13adad4"},{"name":"generate-required-server-files","duration":2065,"timestamp":134052614594,"id":18,"parentId":1,"tags":{},"startTime":1778942024861,"traceId":"91883933f13adad4"},{"name":"check-static-error-page","duration":12700,"timestamp":134052766357,"id":20,"parentId":19,"tags":{},"startTime":1778942025013,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":394330,"timestamp":134052781981,"id":65,"parentId":22,"tags":{},"startTime":1778942025028,"traceId":"91883933f13adad4"},{"name":"check-page","duration":407083,"timestamp":134052769391,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778942025016,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":518016,"timestamp":134052784151,"id":71,"parentId":30,"tags":{},"startTime":1778942025030,"traceId":"91883933f13adad4"},{"name":"check-page","duration":529467,"timestamp":134052772800,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":528203,"timestamp":134052784228,"id":72,"parentId":32,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":539345,"timestamp":134052773159,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":530851,"timestamp":134052784396,"id":73,"parentId":33,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":542011,"timestamp":134052773294,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778942025020,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":534771,"timestamp":134052782454,"id":69,"parentId":28,"tags":{},"startTime":1778942025029,"traceId":"91883933f13adad4"},{"name":"check-page","duration":544754,"timestamp":134052772526,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":535050,"timestamp":134052784479,"id":74,"parentId":34,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":546148,"timestamp":134052773426,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778942025020,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":537784,"timestamp":134052784514,"id":75,"parentId":35,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":548789,"timestamp":134052773555,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778942025020,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":538712,"timestamp":134052784540,"id":76,"parentId":36,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":549184,"timestamp":134052774107,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778942025020,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":544127,"timestamp":134052784586,"id":78,"parentId":38,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":554405,"timestamp":134052774354,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":547214,"timestamp":134052784599,"id":79,"parentId":39,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":557430,"timestamp":134052774424,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":550940,"timestamp":134052784614,"id":80,"parentId":40,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":561107,"timestamp":134052774488,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":561614,"timestamp":134052784623,"id":81,"parentId":42,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":571551,"timestamp":134052774743,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":569456,"timestamp":134052784636,"id":82,"parentId":44,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":578950,"timestamp":134052775188,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":572005,"timestamp":134052782345,"id":68,"parentId":27,"tags":{},"startTime":1778942025029,"traceId":"91883933f13adad4"},{"name":"check-page","duration":581982,"timestamp":134052772403,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":570532,"timestamp":134052784649,"id":83,"parentId":45,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":579899,"timestamp":134052775325,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":571629,"timestamp":134052784571,"id":77,"parentId":37,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":581987,"timestamp":134052774256,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":574586,"timestamp":134052782123,"id":66,"parentId":25,"tags":{},"startTime":1778942025028,"traceId":"91883933f13adad4"},{"name":"check-page","duration":584661,"timestamp":134052772101,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778942025018,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":574772,"timestamp":134052784672,"id":85,"parentId":47,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":584013,"timestamp":134052775476,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":577359,"timestamp":134052784699,"id":87,"parentId":49,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":586469,"timestamp":134052775629,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":579174,"timestamp":134052784709,"id":88,"parentId":50,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":588230,"timestamp":134052775692,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":583667,"timestamp":134052781704,"id":64,"parentId":21,"tags":{},"startTime":1778942025028,"traceId":"91883933f13adad4"},{"name":"check-page","duration":597645,"timestamp":134052767763,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778942025014,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":586859,"timestamp":134052782233,"id":67,"parentId":26,"tags":{},"startTime":1778942025029,"traceId":"91883933f13adad4"},{"name":"check-page","duration":596860,"timestamp":134052772280,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":581127,"timestamp":134052788508,"id":90,"parentId":24,"tags":{},"startTime":1778942025035,"traceId":"91883933f13adad4"},{"name":"check-page","duration":599732,"timestamp":134052769952,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778942025016,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":586810,"timestamp":134052784685,"id":86,"parentId":48,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":595996,"timestamp":134052775541,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":584063,"timestamp":134052794182,"id":93,"parentId":43,"tags":{},"startTime":1778942025040,"traceId":"91883933f13adad4"},{"name":"check-page","duration":603416,"timestamp":134052774873,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":594490,"timestamp":134052783925,"id":70,"parentId":29,"tags":{},"startTime":1778942025030,"traceId":"91883933f13adad4"},{"name":"check-page","duration":605799,"timestamp":134052772647,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":600550,"timestamp":134052784662,"id":84,"parentId":46,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":609860,"timestamp":134052775404,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":601522,"timestamp":134052784723,"id":89,"parentId":51,"tags":{},"startTime":1778942025031,"traceId":"91883933f13adad4"},{"name":"check-page","duration":610544,"timestamp":134052775750,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":597978,"timestamp":134052793137,"id":92,"parentId":41,"tags":{},"startTime":1778942025039,"traceId":"91883933f13adad4"},{"name":"check-page","duration":616609,"timestamp":134052774549,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1778942025021,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":639828,"timestamp":134052810775,"id":94,"parentId":23,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":680984,"timestamp":134052769694,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778942025016,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":661196,"timestamp":134052789652,"id":91,"parentId":31,"tags":{},"startTime":1778942025036,"traceId":"91883933f13adad4"},{"name":"check-page","duration":677957,"timestamp":134052772925,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778942025019,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":672141,"timestamp":134052810872,"id":100,"parentId":58,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":705701,"timestamp":134052777397,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778942025024,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":672298,"timestamp":134052810985,"id":101,"parentId":59,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":705705,"timestamp":134052777638,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778942025024,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":672684,"timestamp":134052810836,"id":97,"parentId":54,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":707185,"timestamp":134052776373,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1778942025023,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":672873,"timestamp":134052810846,"id":98,"parentId":55,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":707214,"timestamp":134052776542,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1778942025023,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":678514,"timestamp":134052810823,"id":96,"parentId":53,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":713133,"timestamp":134052776242,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1778942025023,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":679049,"timestamp":134052810859,"id":99,"parentId":56,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":713199,"timestamp":134052776737,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778942025023,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":678910,"timestamp":134052811073,"id":104,"parentId":63,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":711273,"timestamp":134052778724,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778942025025,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":679274,"timestamp":134052810808,"id":95,"parentId":52,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":713993,"timestamp":134052776103,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1778942025022,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":679818,"timestamp":134052811029,"id":102,"parentId":61,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":712510,"timestamp":134052778360,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778942025025,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":683286,"timestamp":134052811083,"id":105,"parentId":60,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":716537,"timestamp":134052777864,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1778942025024,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":684759,"timestamp":134052811044,"id":103,"parentId":62,"tags":{},"startTime":1778942025057,"traceId":"91883933f13adad4"},{"name":"check-page","duration":717287,"timestamp":134052778544,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778942025025,"traceId":"91883933f13adad4"},{"name":"is-page-static","duration":676098,"timestamp":134052820184,"id":106,"parentId":57,"tags":{},"startTime":1778942025066,"traceId":"91883933f13adad4"},{"name":"check-page","duration":719356,"timestamp":134052776946,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1778942025023,"traceId":"91883933f13adad4"},{"name":"static-check","duration":730693,"timestamp":134052765650,"id":19,"parentId":1,"tags":{},"startTime":1778942025012,"traceId":"91883933f13adad4"}]
2
+ [{"name":"write-routes-manifest","duration":483,"timestamp":134053504757,"id":108,"parentId":1,"tags":{},"startTime":1778942025751,"traceId":"91883933f13adad4"},{"name":"load-dotenv","duration":48,"timestamp":134053516790,"id":111,"parentId":110,"tags":{},"startTime":1778942025763,"traceId":"91883933f13adad4"},{"name":"run-export-path-map","duration":533,"timestamp":134053519254,"id":112,"parentId":110,"tags":{},"startTime":1778942025766,"traceId":"91883933f13adad4"},{"name":"next-export","duration":573171,"timestamp":134053515446,"id":110,"parentId":1,"tags":{},"startTime":1778942025762,"traceId":"91883933f13adad4"},{"name":"move-exported-app-not-found-","duration":1361,"timestamp":134054091768,"id":113,"parentId":109,"tags":{},"startTime":1778942026338,"traceId":"91883933f13adad4"},{"name":"move-exported-app-global-error-","duration":361,"timestamp":134054093218,"id":114,"parentId":109,"tags":{},"startTime":1778942026339,"traceId":"91883933f13adad4"},{"name":"static-generation","duration":585943,"timestamp":134053509355,"id":109,"parentId":1,"tags":{},"startTime":1778942025756,"traceId":"91883933f13adad4"},{"name":"write-routes-manifest","duration":381,"timestamp":134054095531,"id":115,"parentId":1,"tags":{},"startTime":1778942026342,"traceId":"91883933f13adad4"},{"name":"print-tree-view","duration":4209,"timestamp":134054112527,"id":116,"parentId":1,"tags":{},"startTime":1778942026359,"traceId":"91883933f13adad4"},{"name":"write-route-bundle-stats","duration":14104,"timestamp":134054116770,"id":117,"parentId":1,"tags":{},"startTime":1778942026363,"traceId":"91883933f13adad4"},{"name":"telemetry-flush","duration":23023,"timestamp":134054130903,"id":118,"parentId":1,"tags":{},"startTime":1778942026377,"traceId":"91883933f13adad4"},{"name":"next-build","duration":16603402,"timestamp":134037550547,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778942009797,"traceId":"91883933f13adad4"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6195004,"timestamp":133431890965,"id":14,"parentId":1,"tags":{},"startTime":1778941404137,"traceId":"5d109780091e5078"},{"name":"turbopack-build-events","duration":104,"timestamp":133432230407,"id":15,"parentId":1,"tags":{},"startTime":1778941404477,"traceId":"5d109780091e5078"},{"name":"run-typescript","duration":9849483,"timestamp":133438096943,"id":16,"parentId":1,"tags":{},"startTime":1778941410343,"traceId":"5d109780091e5078"},{"name":"static-check","duration":878123,"timestamp":133448164592,"id":19,"parentId":1,"tags":{},"startTime":1778941420411,"traceId":"5d109780091e5078"},{"name":"static-generation","duration":595583,"timestamp":133449059986,"id":109,"parentId":1,"tags":{},"startTime":1778941421306,"traceId":"5d109780091e5078"},{"name":"telemetry-flush","duration":20554,"timestamp":133449691700,"id":118,"parentId":1,"tags":{},"startTime":1778941421938,"traceId":"5d109780091e5078"},{"name":"next-build","duration":18068790,"timestamp":133431643499,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778941403890,"traceId":"5d109780091e5078"}]
1
+ [{"name":"run-turbopack","duration":5866277,"timestamp":134037815685,"id":14,"parentId":1,"tags":{},"startTime":1778942010062,"traceId":"91883933f13adad4"},{"name":"turbopack-build-events","duration":98,"timestamp":134038106229,"id":15,"parentId":1,"tags":{},"startTime":1778942010353,"traceId":"91883933f13adad4"},{"name":"run-typescript","duration":8922388,"timestamp":134043691126,"id":16,"parentId":1,"tags":{},"startTime":1778942015937,"traceId":"91883933f13adad4"},{"name":"static-check","duration":730693,"timestamp":134052765650,"id":19,"parentId":1,"tags":{},"startTime":1778942025012,"traceId":"91883933f13adad4"},{"name":"static-generation","duration":585943,"timestamp":134053509355,"id":109,"parentId":1,"tags":{},"startTime":1778942025756,"traceId":"91883933f13adad4"},{"name":"telemetry-flush","duration":23023,"timestamp":134054130903,"id":118,"parentId":1,"tags":{},"startTime":1778942026377,"traceId":"91883933f13adad4"},{"name":"next-build","duration":16603402,"timestamp":134037550547,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778942009797,"traceId":"91883933f13adad4"}]
@@ -8164,7 +8164,8 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8164
8164
  // R196: press-state deepens bg one tier above hover (white/5
8165
8165
  // → white/10) so mouse-down has a tactile dim before the
8166
8166
  // R186 icon pop fires on release.
8167
- className="px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset"
8167
+ // R352: `group` lets the inner svg respond via group-hover.
8168
+ className="group px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset"
8168
8169
  style={{ color: pal.legendText }}
8169
8170
  aria-label="Zoom out"
8170
8171
  title="Zoom out (−)"
@@ -8172,11 +8173,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8172
8173
  {/* R186: icon pop on click. CSS animation runs once;
8173
8174
  React removes the class after 240ms so a quick
8174
8175
  re-click can replay. */}
8176
+ {/* Round 352 / Loop: zoom-out icon picks up group-hover:
8177
+ scale-110 — sibling to R350 reset hover-rotate. Pre-
8178
+ R352 hovering the zoom button only changed the bg
8179
+ (white/5); the icon inside stayed perfectly still.
8180
+ R352 lifts the icon 10% on hover for a tactile "this
8181
+ button does something" cue. The R186 anet-chrome-pop
8182
+ keyframe (220ms scale 1→1.06→1) still owns transform
8183
+ during click via CSS-animation precedence over
8184
+ transition-transform; after the pop ends + className
8185
+ is removed, the group-hover scale-110 picks up
8186
+ smoothly. `transform-gpu` hint promotes the svg to
8187
+ its own compositor layer for crisper edges during
8188
+ the scale tween. Sibling change on zoom-in icon
8189
+ below. */}
8175
8190
  <svg
8176
8191
  width="12" height="12" viewBox="0 0 24 24"
8177
8192
  fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round"
8178
8193
  aria-hidden
8179
- className={chromePopping === 'zoom-out' ? 'anet-chrome-pop' : undefined}
8194
+ className={`transition-transform duration-200 ease-out group-hover:scale-110 transform-gpu${chromePopping === 'zoom-out' ? ' anet-chrome-pop' : ''}`}
8180
8195
  data-topo-chrome-zoom-out-icon
8181
8196
  ><path d="M5 12h14" /></svg>
8182
8197
  </button>
@@ -8252,18 +8267,22 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8252
8267
  data-topo-chrome-zoom-in
8253
8268
  data-topo-chrome-zoom-in-popping={chromePopping === 'zoom-in' ? 'true' : 'false'}
8254
8269
  // R196: press-state (mirror of zoom-out above).
8255
- className="px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset"
8270
+ // R352: `group` lets the inner svg respond via group-hover.
8271
+ className="group px-2 py-1 hover:bg-white/5 active:bg-white/10 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 focus-visible:ring-inset"
8256
8272
  style={{ color: pal.legendText }}
8257
8273
  aria-label="Zoom in"
8258
8274
  title="Zoom in (+)"
8259
8275
  >
8260
8276
  {/* R186: icon pop on click. Same one-shot CSS animation
8261
8277
  as zoom-out; React removes the class after 240ms. */}
8278
+ {/* R352 sibling — zoom-in icon picks up the same
8279
+ group-hover:scale-110 family. Mirror change at
8280
+ the zoom-out icon above. */}
8262
8281
  <svg
8263
8282
  width="12" height="12" viewBox="0 0 24 24"
8264
8283
  fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round"
8265
8284
  aria-hidden
8266
- className={chromePopping === 'zoom-in' ? 'anet-chrome-pop' : undefined}
8285
+ className={`transition-transform duration-200 ease-out group-hover:scale-110 transform-gpu${chromePopping === 'zoom-in' ? ' anet-chrome-pop' : ''}`}
8267
8286
  data-topo-chrome-zoom-in-icon
8268
8287
  ><path d="M12 5v14M5 12h14" /></svg>
8269
8288
  </button>
@@ -8351,7 +8370,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8351
8370
  its inactive state benefits from the same "hover previews
8352
8371
  active state" idiom R163 designed. Sibling treatment to
8353
8372
  the nodeSize buttons at line ~6711. */
8354
- className={`p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
8373
+ // R353: `group` lets the inner svg respond via group-hover —
8374
+ // sibling to R352 zoom buttons. Closes the chrome-strip per-
8375
+ // icon hover-affordance arc (zoom-out / zoom-in / reset /
8376
+ // fullscreen now all carry an icon-level hover gesture in
8377
+ // addition to the bg hover).
8378
+ className={`group p-1.5 rounded-md border transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-cyan-400/60 ${
8355
8379
  isFullscreen
8356
8380
  ? 'bg-cyan-500/15 text-cyan-300 font-medium hover:bg-cyan-500/20 active:bg-cyan-500/25'
8357
8381
  : 'hover:bg-cyan-500/5 active:bg-cyan-500/15'
@@ -8370,12 +8394,20 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8370
8394
  at the reset icon above. data-topo-chrome-fullscreen-
8371
8395
  icon attribute exposes BOTH variants (entered / exited)
8372
8396
  for the round's stroke-width regression probe. */}
8397
+ {/* Round 353 / Loop: fullscreen icon (both enter + exit
8398
+ variants) picks up the R352 family group-hover:scale-110.
8399
+ Pre-R353 hovering the button only changed the bg; the
8400
+ icon stayed still. R353 lifts the icon 10 % on hover —
8401
+ same gesture vocabulary as the zoom buttons. transform-
8402
+ gpu hint promotes the svg to its own compositor layer
8403
+ for crisper edges during the scale tween. Closes the
8404
+ chrome-strip per-icon hover-affordance arc. */}
8373
8405
  {isFullscreen ? (
8374
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden data-topo-chrome-fullscreen-icon="exit">
8406
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden className="transition-transform duration-200 ease-out group-hover:scale-110 transform-gpu" data-topo-chrome-fullscreen-icon="exit">
8375
8407
  <path d="M8 3v4a1 1 0 0 1-1 1H3M21 8h-4a1 1 0 0 1-1-1V3M3 16h4a1 1 0 0 1 1 1v4M16 21v-4a1 1 0 0 1 1-1h4" />
8376
8408
  </svg>
8377
8409
  ) : (
8378
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden data-topo-chrome-fullscreen-icon="enter">
8410
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden className="transition-transform duration-200 ease-out group-hover:scale-110 transform-gpu" data-topo-chrome-fullscreen-icon="enter">
8379
8411
  <path d="M3 8V5a2 2 0 0 1 2-2h3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M21 16v3a2 2 0 0 1-2 2h-3" />
8380
8412
  </svg>
8381
8413
  )}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.1-preview.12",
3
+ "version": "0.5.1-preview.14",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,91 @@
1
+ /* Round 353 verification: fullscreen icon (enter + exit variants)
2
+ * picks up group-hover:scale-110 — sibling to R352 zoom icons + R350
3
+ * reset hover-rotate. Closes the chrome-strip per-icon hover-
4
+ * affordance arc:
5
+ * zoom-out R352 scale 1 → 1.1
6
+ * zoom-in R352 scale 1 → 1.1
7
+ * reset R350 rotate 0 → -8°
8
+ * fullscreen R353 scale 1 → 1.1 (this round, both enter+exit svgs)
9
+ *
10
+ * Tailwind 4 compiles scale-110 to the modern CSS `scale` property
11
+ * (verified during R352 — getComputedStyle(el).scale carries the
12
+ * value, not transform).
13
+ *
14
+ * Contract (cyber, non-fullscreen):
15
+ * - Rest: enter-icon computed scale 'none' (no scale applied).
16
+ * - Hover button: enter-icon scale='1.1'.
17
+ * - Inline transition contains scale (or transform — Tailwind 4
18
+ * emits both transition-property entries on transition-transform).
19
+ * - Pre-R353 invariants: R288 strokeWidth=2.5 preserved, anet-
20
+ * chrome-pop class absent at rest, data-topo-chrome-fullscreen-
21
+ * icon="enter" attr intact.
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
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
29
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
30
+ await ctx.addInitScript(() => {
31
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
32
+ });
33
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
34
+ await ctx.route('**/api/hub/status*', async (route) => {
35
+ const r = await route.fetch();
36
+ const b = await r.json();
37
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
38
+ const mk = (alias) => ({
39
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
40
+ network_id: nid, project_dir: null,
41
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
42
+ });
43
+ await route.fulfill({ response: r, json: { ...b, sessions: [ mk('a'), mk('b'), mk('c') ] } });
44
+ });
45
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
46
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
47
+
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
50
+ await page.waitForSelector('[data-topo-chrome-fullscreen-icon="enter"]', { timeout: 15000 });
51
+ await page.waitForTimeout(300);
52
+
53
+ const restProbe = await page.evaluate(() => {
54
+ const ico = document.querySelector('[data-topo-chrome-fullscreen-icon="enter"]');
55
+ const cs = ico ? getComputedStyle(ico) : null;
56
+ return {
57
+ scale: cs?.scale ?? null,
58
+ transition: cs?.transition ?? null,
59
+ strokeW: ico?.getAttribute('stroke-width') ?? null,
60
+ className: ico?.getAttribute('class') ?? null,
61
+ };
62
+ });
63
+
64
+ // Hover the fullscreen button.
65
+ await page.hover('[data-topo-chrome-fullscreen]');
66
+ await page.waitForTimeout(300);
67
+ const hoverProbe = await page.evaluate(() => {
68
+ const ico = document.querySelector('[data-topo-chrome-fullscreen-icon="enter"]');
69
+ return { scale: ico ? getComputedStyle(ico).scale : null };
70
+ });
71
+
72
+ await browser.close();
73
+
74
+ const isRestScale = (s) => s === 'none' || s === '1' || s === '1 1' || s === null;
75
+ const isHoverScale110 = (s) => s === '1.1' || s === '1.1 1.1';
76
+ const hasTrans = (s, prop) =>
77
+ new RegExp(`${prop}\\s+\\d*\\.?\\d*s|${prop}\\s+\\d+ms`, 'i').test(s || '');
78
+
79
+ const results = {
80
+ rest_scale_1: isRestScale(restProbe.scale),
81
+ trans_has_scale: hasTrans(restProbe.transition, 'scale') || hasTrans(restProbe.transition, 'transform'),
82
+ strokew_2_5: restProbe.strokeW === '2.5', // R288
83
+ no_chrome_pop_rest: !/anet-chrome-pop/.test(restProbe.className || ''),
84
+ has_group_hover_cls: /group-hover:scale-110/.test(restProbe.className || ''),
85
+ hover_scale_110: isHoverScale110(hoverProbe.scale),
86
+ };
87
+ const ok = Object.values(results).every(Boolean);
88
+ console.log(`${ok ? '✅' : '❌'} fullscreen icon hover-scale:`, JSON.stringify(results),
89
+ '\n rest: ', restProbe,
90
+ '\n hover:', hoverProbe);
91
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,114 @@
1
+ /* Round 352 verification: zoom-out + zoom-in icons gain group-hover:
2
+ * scale-110 — sibling to R350 reset hover-rotate. Pre-R352 hovering
3
+ * the zoom buttons only changed the bg (white/5); the icons stayed
4
+ * still. R352 lifts each icon 10 % on hover for a tactile "this
5
+ * button does something" cue. Pure-CSS via Tailwind `group` parent +
6
+ * `group-hover:scale-110` on the svg + `transition-transform
7
+ * duration-200 ease-out`. CSS-animation precedence keeps R186
8
+ * anet-chrome-pop owning transform during the 220 ms click pop;
9
+ * group-hover scale-110 picks up smoothly afterward.
10
+ *
11
+ * Contract:
12
+ * - Rest: both zoom icons computed transform 'matrix(1, 0, 0, 1, 0, 0)'
13
+ * (or 'none').
14
+ * - Hover zoom-out button: zoom-out icon transform matrix(1.1, 0, 0,
15
+ * 1.1, 0, 0).
16
+ * - Hover zoom-in button: zoom-in icon transform matrix(1.1, 0, 0,
17
+ * 1.1, 0, 0).
18
+ * - Inline transition on both icons contains 'transform'.
19
+ * - Pre-R352 invariants: data-topo-chrome-zoom-{out,in}-icon attrs
20
+ * intact, R288 strokeWidth=2.5 preserved, anet-chrome-pop class
21
+ * absent at rest.
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
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
29
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
30
+ await ctx.addInitScript(() => {
31
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
32
+ });
33
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
34
+ await ctx.route('**/api/hub/status*', async (route) => {
35
+ const r = await route.fetch();
36
+ const b = await r.json();
37
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
38
+ const mk = (alias) => ({
39
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
40
+ network_id: nid, project_dir: null,
41
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
42
+ });
43
+ await route.fulfill({ response: r, json: { ...b, sessions: [ mk('a'), mk('b'), mk('c') ] } });
44
+ });
45
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
46
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
47
+
48
+ const page = await ctx.newPage();
49
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
50
+ await page.waitForSelector('[data-topo-chrome-zoom-out-icon]', { timeout: 15000 });
51
+ await page.waitForSelector('[data-topo-chrome-zoom-in-icon]', { timeout: 5000 });
52
+ await page.waitForTimeout(300);
53
+
54
+ // Tailwind 4 compiles scale-110 to the modern CSS `scale` property
55
+ // (not legacy `transform: scale()`), so we probe both — `transform`
56
+ // stays at identity matrix and `scale` carries the 1.1 value.
57
+ const restProbe = await page.evaluate(() => {
58
+ const oico = document.querySelector('[data-topo-chrome-zoom-out-icon]');
59
+ const iico = document.querySelector('[data-topo-chrome-zoom-in-icon]');
60
+ const ocs = oico ? getComputedStyle(oico) : null;
61
+ const ics = iico ? getComputedStyle(iico) : null;
62
+ return {
63
+ outScale: ocs?.scale ?? null,
64
+ outTransition: ocs?.transition ?? null,
65
+ outStrokeW: oico?.getAttribute('stroke-width') ?? null,
66
+ outClass: oico?.getAttribute('class') ?? null,
67
+ inScale: ics?.scale ?? null,
68
+ inTransition: ics?.transition ?? null,
69
+ inStrokeW: iico?.getAttribute('stroke-width') ?? null,
70
+ inClass: iico?.getAttribute('class') ?? null,
71
+ };
72
+ });
73
+
74
+ // Hover zoom-out button.
75
+ await page.hover('[data-topo-chrome-zoom-out]');
76
+ await page.waitForTimeout(300);
77
+ const zoomOutHover = await page.evaluate(() => {
78
+ const ico = document.querySelector('[data-topo-chrome-zoom-out-icon]');
79
+ return { scale: ico ? getComputedStyle(ico).scale : null };
80
+ });
81
+
82
+ // Hover zoom-in button.
83
+ await page.hover('[data-topo-chrome-zoom-in]');
84
+ await page.waitForTimeout(300);
85
+ const zoomInHover = await page.evaluate(() => {
86
+ const ico = document.querySelector('[data-topo-chrome-zoom-in-icon]');
87
+ return { scale: ico ? getComputedStyle(ico).scale : null };
88
+ });
89
+
90
+ await browser.close();
91
+
92
+ const isRestScale = (s) => s === 'none' || s === '1' || s === '1 1' || s === null;
93
+ const isHoverScale110 = (s) => s === '1.1' || s === '1.1 1.1';
94
+ const hasTrans = (s, prop) =>
95
+ new RegExp(`${prop}\\s+\\d*\\.?\\d*s|${prop}\\s+\\d+ms`, 'i').test(s || '');
96
+
97
+ const results = {
98
+ rest_out_scale_1: isRestScale(restProbe.outScale),
99
+ rest_in_scale_1: isRestScale(restProbe.inScale),
100
+ out_trans_has_scale: hasTrans(restProbe.outTransition, 'scale') || hasTrans(restProbe.outTransition, 'transform'),
101
+ in_trans_has_scale: hasTrans(restProbe.inTransition, 'scale') || hasTrans(restProbe.inTransition, 'transform'),
102
+ out_strokew_2_5: restProbe.outStrokeW === '2.5',
103
+ in_strokew_2_5: restProbe.inStrokeW === '2.5',
104
+ out_no_pop: !/anet-chrome-pop/.test(restProbe.outClass || ''),
105
+ in_no_pop: !/anet-chrome-pop/.test(restProbe.inClass || ''),
106
+ hover_out_scale_110: isHoverScale110(zoomOutHover.scale),
107
+ hover_in_scale_110: isHoverScale110(zoomInHover.scale),
108
+ };
109
+ const ok = Object.values(results).every(Boolean);
110
+ console.log(`${ok ? '✅' : '❌'} zoom icons hover-scale:`, JSON.stringify(results),
111
+ '\n rest: ', restProbe,
112
+ '\n hover zoom-out: ', zoomOutHover,
113
+ '\n hover zoom-in: ', zoomInHover);
114
+ process.exit(ok ? 0 : 1);