@sleep2agi/agent-network-dashboard 0.5.3-preview.70 → 0.5.3-preview.72

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 (155) 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 +5 -5
  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/[root-of-the-server]__0sv~g.o._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  134. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  138. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  139. package/.next/server/middleware-build-manifest.js +3 -3
  140. package/.next/server/pages/404.html +2 -2
  141. package/.next/server/pages/500.html +1 -1
  142. package/.next/static/chunks/{0boiij6s6nrkh.js → 024xkn5gj42x6.js} +1 -1
  143. package/.next/static/chunks/{0ehw4_lp248_1.js → 0g1v0..rg6yqs.js} +1 -1
  144. package/.next/static/chunks/{0mkpm4lv6985f.js → 0p0.bp98rgos8.js} +1 -1
  145. package/.next/static/chunks/{0ej-5z4i~xbwe.css → 0q.024-h32581.css} +1 -1
  146. package/.next/static/chunks/{0qwcmg950z6u5.js → 13s1w84b7wunl.js} +2 -2
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +87 -6
  150. package/package.json +1 -1
  151. package/scripts/topo-avatar-fallback-hover-test.mjs +104 -0
  152. package/scripts/topo-brand-logo-hover-brightness-test.mjs +105 -0
  153. /package/.next/static/{8fEL_YAK7U48berKDXWZQ → 9TcCChsKvliJ1pRHGbTGj}/_buildManifest.js +0 -0
  154. /package/.next/static/{8fEL_YAK7U48berKDXWZQ → 9TcCChsKvliJ1pRHGbTGj}/_clientMiddlewareManifest.js +0 -0
  155. /package/.next/static/{8fEL_YAK7U48berKDXWZQ → 9TcCChsKvliJ1pRHGbTGj}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":264,"timestamp":221183822246,"id":4,"parentId":1,"tags":{},"startTime":1779029156069,"traceId":"06d14cd0ba3c5b22"},{"name":"load-custom-routes","duration":756,"timestamp":221183822661,"id":5,"parentId":1,"tags":{},"startTime":1779029156069,"traceId":"06d14cd0ba3c5b22"},{"name":"create-dist-dir","duration":781,"timestamp":221183823471,"id":6,"parentId":1,"tags":{},"startTime":1779029156070,"traceId":"06d14cd0ba3c5b22"},{"name":"clean","duration":35740,"timestamp":221183824911,"id":7,"parentId":1,"tags":{},"startTime":1779029156071,"traceId":"06d14cd0ba3c5b22"},{"name":"discover-routes","duration":11118,"timestamp":221183947175,"id":8,"parentId":1,"tags":{},"startTime":1779029156193,"traceId":"06d14cd0ba3c5b22"},{"name":"create-root-mapping","duration":114,"timestamp":221183958356,"id":9,"parentId":1,"tags":{},"startTime":1779029156205,"traceId":"06d14cd0ba3c5b22"},{"name":"generate-route-types","duration":32096,"timestamp":221183961226,"id":10,"parentId":1,"tags":{},"startTime":1779029156208,"traceId":"06d14cd0ba3c5b22"},{"name":"public-dir-conflict-check","duration":104,"timestamp":221183993411,"id":11,"parentId":1,"tags":{},"startTime":1779029156240,"traceId":"06d14cd0ba3c5b22"},{"name":"generate-routes-manifest","duration":4804,"timestamp":221183993625,"id":12,"parentId":1,"tags":{},"startTime":1779029156240,"traceId":"06d14cd0ba3c5b22"},{"name":"run-turbopack","duration":6049271,"timestamp":221184003519,"id":14,"parentId":1,"tags":{},"startTime":1779029156250,"traceId":"06d14cd0ba3c5b22"},{"name":"turbopack-build-events","duration":123,"timestamp":221184334790,"id":15,"parentId":1,"tags":{},"startTime":1779029156581,"traceId":"06d14cd0ba3c5b22"},{"name":"run-typescript","duration":9526082,"timestamp":221190062304,"id":16,"parentId":1,"tags":{},"startTime":1779029162309,"traceId":"06d14cd0ba3c5b22"},{"name":"generate-required-server-files","duration":2261,"timestamp":221199589558,"id":18,"parentId":1,"tags":{},"startTime":1779029171836,"traceId":"06d14cd0ba3c5b22"},{"name":"check-static-error-page","duration":17052,"timestamp":221199758472,"id":20,"parentId":19,"tags":{},"startTime":1779029172005,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":456184,"timestamp":221199779924,"id":65,"parentId":22,"tags":{},"startTime":1779029172026,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":474318,"timestamp":221199761974,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779029172008,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":556618,"timestamp":221199780177,"id":67,"parentId":26,"tags":{},"startTime":1779029172026,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":571341,"timestamp":221199765570,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":569656,"timestamp":221199780910,"id":71,"parentId":30,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":584458,"timestamp":221199766209,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":585980,"timestamp":221199780991,"id":72,"parentId":32,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":600375,"timestamp":221199766689,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779029172013,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":587703,"timestamp":221199781198,"id":73,"parentId":33,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":602123,"timestamp":221199766842,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779029172013,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":596493,"timestamp":221199780301,"id":68,"parentId":27,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":611259,"timestamp":221199765707,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":597713,"timestamp":221199780720,"id":70,"parentId":29,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":612473,"timestamp":221199766019,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":597408,"timestamp":221199781288,"id":74,"parentId":34,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":611747,"timestamp":221199766988,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779029172013,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":603717,"timestamp":221199781395,"id":78,"parentId":38,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":617056,"timestamp":221199768114,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779029172014,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":603976,"timestamp":221199781375,"id":77,"parentId":37,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":617462,"timestamp":221199767926,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779029172014,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":606607,"timestamp":221199781408,"id":79,"parentId":39,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":619831,"timestamp":221199768240,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779029172015,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":608402,"timestamp":221199781321,"id":75,"parentId":35,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":622593,"timestamp":221199767168,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779029172013,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":610082,"timestamp":221199781341,"id":76,"parentId":36,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":623765,"timestamp":221199767697,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779029172014,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":617902,"timestamp":221199779603,"id":64,"parentId":21,"tags":{},"startTime":1779029172026,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":637320,"timestamp":221199760229,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779029172007,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":616255,"timestamp":221199781467,"id":83,"parentId":45,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":628355,"timestamp":221199769435,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779029172016,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":619882,"timestamp":221199781440,"id":81,"parentId":42,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":632620,"timestamp":221199768763,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779029172015,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":620096,"timestamp":221199781455,"id":82,"parentId":44,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":632317,"timestamp":221199769285,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779029172016,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":621337,"timestamp":221199780421,"id":69,"parentId":28,"tags":{},"startTime":1779029172027,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":635946,"timestamp":221199765848,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":622428,"timestamp":221199780051,"id":66,"parentId":25,"tags":{},"startTime":1779029172026,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":637137,"timestamp":221199765385,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779029172012,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":621592,"timestamp":221199781501,"id":85,"parentId":47,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":633454,"timestamp":221199769683,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779029172016,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":623866,"timestamp":221199781512,"id":86,"parentId":48,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":634020,"timestamp":221199771397,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779029172018,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":617850,"timestamp":221199792280,"id":91,"parentId":31,"tags":{},"startTime":1779029172039,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":643810,"timestamp":221199766361,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779029172013,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":619467,"timestamp":221199791045,"id":90,"parentId":24,"tags":{},"startTime":1779029172037,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":647949,"timestamp":221199762594,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779029172009,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":635227,"timestamp":221199781424,"id":80,"parentId":40,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":648328,"timestamp":221199768362,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779029172015,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":635299,"timestamp":221199781528,"id":87,"parentId":49,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":645298,"timestamp":221199771558,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779029172018,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":623805,"timestamp":221199793178,"id":92,"parentId":41,"tags":{},"startTime":1779029172039,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":648545,"timestamp":221199768478,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779029172015,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":650689,"timestamp":221199781542,"id":88,"parentId":50,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":660604,"timestamp":221199771676,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779029172018,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":659229,"timestamp":221199781560,"id":89,"parentId":51,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":669059,"timestamp":221199771786,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779029172018,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":649740,"timestamp":221199794672,"id":93,"parentId":43,"tags":{},"startTime":1779029172041,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":675531,"timestamp":221199768930,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779029172015,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":685987,"timestamp":221199797114,"id":95,"parentId":52,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":710966,"timestamp":221199772230,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779029172019,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":688737,"timestamp":221199797128,"id":96,"parentId":53,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":713520,"timestamp":221199772423,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779029172019,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":689375,"timestamp":221199797187,"id":100,"parentId":58,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":712638,"timestamp":221199773973,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779029172020,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":691996,"timestamp":221199797077,"id":94,"parentId":23,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":726822,"timestamp":221199762320,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779029172009,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":696709,"timestamp":221199797322,"id":101,"parentId":59,"tags":{},"startTime":1779029172044,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":719853,"timestamp":221199774222,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779029172020,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":699769,"timestamp":221199797346,"id":102,"parentId":61,"tags":{},"startTime":1779029172044,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":722270,"timestamp":221199774905,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779029172021,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":704992,"timestamp":221199797374,"id":104,"parentId":63,"tags":{},"startTime":1779029172044,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":727151,"timestamp":221199775257,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779029172022,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":707353,"timestamp":221199797145,"id":97,"parentId":54,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":731929,"timestamp":221199772607,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779029172019,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":712339,"timestamp":221199797175,"id":99,"parentId":56,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":736444,"timestamp":221199773103,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779029172019,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":699464,"timestamp":221199810296,"id":105,"parentId":60,"tags":{},"startTime":1779029172057,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":735353,"timestamp":221199774431,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779029172021,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":687887,"timestamp":221199822597,"id":106,"parentId":57,"tags":{},"startTime":1779029172069,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":737147,"timestamp":221199773375,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779029172020,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":723414,"timestamp":221199797358,"id":103,"parentId":62,"tags":{},"startTime":1779029172044,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":745729,"timestamp":221199775090,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779029172021,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":723747,"timestamp":221199797160,"id":98,"parentId":55,"tags":{},"startTime":1779029172043,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":748102,"timestamp":221199772831,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779029172019,"traceId":"06d14cd0ba3c5b22"},{"name":"is-page-static","duration":743169,"timestamp":221199781483,"id":84,"parentId":46,"tags":{},"startTime":1779029172028,"traceId":"06d14cd0ba3c5b22"},{"name":"check-page","duration":755130,"timestamp":221199769561,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779029172016,"traceId":"06d14cd0ba3c5b22"},{"name":"static-check","duration":767441,"timestamp":221199757279,"id":19,"parentId":1,"tags":{},"startTime":1779029172004,"traceId":"06d14cd0ba3c5b22"}]
2
- [{"name":"write-routes-manifest","duration":426,"timestamp":221200534030,"id":108,"parentId":1,"tags":{},"startTime":1779029172780,"traceId":"06d14cd0ba3c5b22"},{"name":"load-dotenv","duration":44,"timestamp":221200545241,"id":111,"parentId":110,"tags":{},"startTime":1779029172792,"traceId":"06d14cd0ba3c5b22"},{"name":"run-export-path-map","duration":732,"timestamp":221200547840,"id":112,"parentId":110,"tags":{},"startTime":1779029172794,"traceId":"06d14cd0ba3c5b22"},{"name":"next-export","duration":603859,"timestamp":221200543899,"id":110,"parentId":1,"tags":{},"startTime":1779029172790,"traceId":"06d14cd0ba3c5b22"},{"name":"move-exported-app-not-found-","duration":524,"timestamp":221201151394,"id":113,"parentId":109,"tags":{},"startTime":1779029173398,"traceId":"06d14cd0ba3c5b22"},{"name":"move-exported-app-global-error-","duration":356,"timestamp":221201152043,"id":114,"parentId":109,"tags":{},"startTime":1779029173398,"traceId":"06d14cd0ba3c5b22"},{"name":"static-generation","duration":615988,"timestamp":221200538220,"id":109,"parentId":1,"tags":{},"startTime":1779029172784,"traceId":"06d14cd0ba3c5b22"},{"name":"write-routes-manifest","duration":361,"timestamp":221201154438,"id":115,"parentId":1,"tags":{},"startTime":1779029173401,"traceId":"06d14cd0ba3c5b22"},{"name":"print-tree-view","duration":4609,"timestamp":221201165251,"id":116,"parentId":1,"tags":{},"startTime":1779029173412,"traceId":"06d14cd0ba3c5b22"},{"name":"write-route-bundle-stats","duration":14533,"timestamp":221201169896,"id":117,"parentId":1,"tags":{},"startTime":1779029173416,"traceId":"06d14cd0ba3c5b22"},{"name":"telemetry-flush","duration":42939,"timestamp":221201184456,"id":118,"parentId":1,"tags":{},"startTime":1779029173431,"traceId":"06d14cd0ba3c5b22"},{"name":"next-build","duration":17461197,"timestamp":221183766230,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779029156013,"traceId":"06d14cd0ba3c5b22"}]
1
+ [{"name":"generate-buildid","duration":327,"timestamp":221861821914,"id":4,"parentId":1,"tags":{},"startTime":1779029834068,"traceId":"6e21d4fb4120b966"},{"name":"load-custom-routes","duration":491,"timestamp":221861822394,"id":5,"parentId":1,"tags":{},"startTime":1779029834069,"traceId":"6e21d4fb4120b966"},{"name":"create-dist-dir","duration":744,"timestamp":221861822931,"id":6,"parentId":1,"tags":{},"startTime":1779029834069,"traceId":"6e21d4fb4120b966"},{"name":"clean","duration":35812,"timestamp":221861824377,"id":7,"parentId":1,"tags":{},"startTime":1779029834071,"traceId":"6e21d4fb4120b966"},{"name":"discover-routes","duration":22519,"timestamp":221861949024,"id":8,"parentId":1,"tags":{},"startTime":1779029834195,"traceId":"6e21d4fb4120b966"},{"name":"create-root-mapping","duration":122,"timestamp":221861971607,"id":9,"parentId":1,"tags":{},"startTime":1779029834218,"traceId":"6e21d4fb4120b966"},{"name":"generate-route-types","duration":19057,"timestamp":221861974305,"id":10,"parentId":1,"tags":{},"startTime":1779029834221,"traceId":"6e21d4fb4120b966"},{"name":"public-dir-conflict-check","duration":104,"timestamp":221861993439,"id":11,"parentId":1,"tags":{},"startTime":1779029834240,"traceId":"6e21d4fb4120b966"},{"name":"generate-routes-manifest","duration":5258,"timestamp":221861993658,"id":12,"parentId":1,"tags":{},"startTime":1779029834240,"traceId":"6e21d4fb4120b966"},{"name":"run-turbopack","duration":5858808,"timestamp":221862005583,"id":14,"parentId":1,"tags":{},"startTime":1779029834252,"traceId":"6e21d4fb4120b966"},{"name":"turbopack-build-events","duration":74,"timestamp":221862307592,"id":15,"parentId":1,"tags":{},"startTime":1779029834554,"traceId":"6e21d4fb4120b966"},{"name":"run-typescript","duration":9792462,"timestamp":221867872661,"id":16,"parentId":1,"tags":{},"startTime":1779029840119,"traceId":"6e21d4fb4120b966"},{"name":"generate-required-server-files","duration":3024,"timestamp":221877666247,"id":18,"parentId":1,"tags":{},"startTime":1779029849913,"traceId":"6e21d4fb4120b966"},{"name":"check-static-error-page","duration":16411,"timestamp":221877860913,"id":20,"parentId":19,"tags":{},"startTime":1779029850107,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":559509,"timestamp":221877880968,"id":65,"parentId":22,"tags":{},"startTime":1779029850127,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":576683,"timestamp":221877863959,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779029850110,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":637826,"timestamp":221877882720,"id":69,"parentId":28,"tags":{},"startTime":1779029850129,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":653177,"timestamp":221877867473,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":642969,"timestamp":221877883261,"id":72,"parentId":32,"tags":{},"startTime":1779029850130,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":658118,"timestamp":221877868185,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":649985,"timestamp":221877881107,"id":66,"parentId":25,"tags":{},"startTime":1779029850127,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":664092,"timestamp":221877867056,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779029850113,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":649518,"timestamp":221877887278,"id":74,"parentId":34,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":668376,"timestamp":221877868476,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779029850115,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":672577,"timestamp":221877887180,"id":73,"parentId":33,"tags":{},"startTime":1779029850133,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":691483,"timestamp":221877868345,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779029850115,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":677078,"timestamp":221877883030,"id":70,"parentId":29,"tags":{},"startTime":1779029850129,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":692550,"timestamp":221877867604,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":680981,"timestamp":221877883196,"id":71,"parentId":30,"tags":{},"startTime":1779029850129,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":696483,"timestamp":221877867739,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":683919,"timestamp":221877880495,"id":64,"parentId":21,"tags":{},"startTime":1779029850127,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":701912,"timestamp":221877862534,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779029850109,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":685225,"timestamp":221877887327,"id":76,"parentId":36,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":703408,"timestamp":221877869193,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779029850115,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":697220,"timestamp":221877881197,"id":67,"parentId":26,"tags":{},"startTime":1779029850127,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":711231,"timestamp":221877867237,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":698822,"timestamp":221877887397,"id":80,"parentId":40,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":716586,"timestamp":221877869677,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":702338,"timestamp":221877887307,"id":75,"parentId":35,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":721067,"timestamp":221877868625,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779029850115,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":707283,"timestamp":221877882569,"id":68,"parentId":27,"tags":{},"startTime":1779029850129,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":722533,"timestamp":221877867358,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":702641,"timestamp":221877887409,"id":81,"parentId":42,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":720052,"timestamp":221877870041,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":720728,"timestamp":221877887370,"id":78,"parentId":38,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":738638,"timestamp":221877869520,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":720868,"timestamp":221877887449,"id":84,"parentId":46,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":737285,"timestamp":221877871066,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779029850117,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":724798,"timestamp":221877887418,"id":82,"parentId":44,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":741908,"timestamp":221877870368,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779029850117,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":725954,"timestamp":221877887484,"id":87,"parentId":49,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":742111,"timestamp":221877871370,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779029850118,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":728798,"timestamp":221877887355,"id":77,"parentId":37,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":746804,"timestamp":221877869390,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":732555,"timestamp":221877887506,"id":89,"parentId":51,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":745586,"timestamp":221877874526,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779029850121,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":733121,"timestamp":221877887431,"id":83,"parentId":45,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":750135,"timestamp":221877870455,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779029850117,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":734979,"timestamp":221877887459,"id":85,"parentId":47,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":751284,"timestamp":221877871199,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779029850117,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":738475,"timestamp":221877887497,"id":88,"parentId":50,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":751628,"timestamp":221877874398,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779029850121,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":743942,"timestamp":221877887472,"id":86,"parentId":48,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":760188,"timestamp":221877871274,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779029850118,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":739092,"timestamp":221877892947,"id":92,"parentId":41,"tags":{},"startTime":1779029850139,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":762303,"timestamp":221877869781,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":743995,"timestamp":221877892087,"id":91,"parentId":31,"tags":{},"startTime":1779029850138,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":768256,"timestamp":221877867872,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779029850114,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":749858,"timestamp":221877890907,"id":90,"parentId":24,"tags":{},"startTime":1779029850137,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":776324,"timestamp":221877864487,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779029850111,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":747116,"timestamp":221877898305,"id":93,"parentId":43,"tags":{},"startTime":1779029850145,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":775303,"timestamp":221877870151,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":794098,"timestamp":221877887384,"id":79,"parentId":39,"tags":{},"startTime":1779029850134,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":811958,"timestamp":221877869595,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779029850116,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":779841,"timestamp":221877903888,"id":94,"parentId":23,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":819525,"timestamp":221877864256,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779029850111,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":786002,"timestamp":221877903979,"id":100,"parentId":58,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":813739,"timestamp":221877876318,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":787358,"timestamp":221877904724,"id":101,"parentId":59,"tags":{},"startTime":1779029850151,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":815683,"timestamp":221877876466,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":792574,"timestamp":221877903934,"id":96,"parentId":53,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":821367,"timestamp":221877875186,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779029850121,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":794020,"timestamp":221877904758,"id":102,"parentId":61,"tags":{},"startTime":1779029850151,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":821980,"timestamp":221877876852,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":801187,"timestamp":221877904774,"id":103,"parentId":62,"tags":{},"startTime":1779029850151,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":829064,"timestamp":221877876964,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":802172,"timestamp":221877903957,"id":98,"parentId":55,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":830589,"timestamp":221877875566,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779029850122,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":801426,"timestamp":221877904784,"id":104,"parentId":63,"tags":{},"startTime":1779029850151,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":829138,"timestamp":221877877091,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":785009,"timestamp":221877921270,"id":105,"parentId":60,"tags":{},"startTime":1779029850168,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":829714,"timestamp":221877876583,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779029850123,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":802967,"timestamp":221877903970,"id":99,"parentId":56,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":831263,"timestamp":221877875720,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779029850122,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":804608,"timestamp":221877903918,"id":95,"parentId":52,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":833591,"timestamp":221877874976,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779029850121,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":807212,"timestamp":221877903943,"id":97,"parentId":54,"tags":{},"startTime":1779029850150,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":835818,"timestamp":221877875369,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779029850122,"traceId":"6e21d4fb4120b966"},{"name":"is-page-static","duration":762657,"timestamp":221877948758,"id":106,"parentId":57,"tags":{},"startTime":1779029850195,"traceId":"6e21d4fb4120b966"},{"name":"check-page","duration":835536,"timestamp":221877875895,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779029850122,"traceId":"6e21d4fb4120b966"},{"name":"static-check","duration":851358,"timestamp":221877860109,"id":19,"parentId":1,"tags":{},"startTime":1779029850106,"traceId":"6e21d4fb4120b966"}]
2
+ [{"name":"write-routes-manifest","duration":505,"timestamp":221878721030,"id":108,"parentId":1,"tags":{},"startTime":1779029850967,"traceId":"6e21d4fb4120b966"},{"name":"load-dotenv","duration":49,"timestamp":221878733566,"id":111,"parentId":110,"tags":{},"startTime":1779029850980,"traceId":"6e21d4fb4120b966"},{"name":"run-export-path-map","duration":520,"timestamp":221878736406,"id":112,"parentId":110,"tags":{},"startTime":1779029850983,"traceId":"6e21d4fb4120b966"},{"name":"next-export","duration":654967,"timestamp":221878732265,"id":110,"parentId":1,"tags":{},"startTime":1779029850979,"traceId":"6e21d4fb4120b966"},{"name":"move-exported-app-not-found-","duration":559,"timestamp":221879390551,"id":113,"parentId":109,"tags":{},"startTime":1779029851637,"traceId":"6e21d4fb4120b966"},{"name":"move-exported-app-global-error-","duration":403,"timestamp":221879391193,"id":114,"parentId":109,"tags":{},"startTime":1779029851637,"traceId":"6e21d4fb4120b966"},{"name":"static-generation","duration":666787,"timestamp":221878726572,"id":109,"parentId":1,"tags":{},"startTime":1779029850973,"traceId":"6e21d4fb4120b966"},{"name":"write-routes-manifest","duration":368,"timestamp":221879393573,"id":115,"parentId":1,"tags":{},"startTime":1779029851640,"traceId":"6e21d4fb4120b966"},{"name":"print-tree-view","duration":4287,"timestamp":221879412435,"id":116,"parentId":1,"tags":{},"startTime":1779029851659,"traceId":"6e21d4fb4120b966"},{"name":"write-route-bundle-stats","duration":12514,"timestamp":221879416750,"id":117,"parentId":1,"tags":{},"startTime":1779029851663,"traceId":"6e21d4fb4120b966"},{"name":"telemetry-flush","duration":24060,"timestamp":221879429291,"id":118,"parentId":1,"tags":{},"startTime":1779029851676,"traceId":"6e21d4fb4120b966"},{"name":"next-build","duration":17684404,"timestamp":221861768974,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779029834015,"traceId":"6e21d4fb4120b966"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":6049271,"timestamp":221184003519,"id":14,"parentId":1,"tags":{},"startTime":1779029156250,"traceId":"06d14cd0ba3c5b22"},{"name":"turbopack-build-events","duration":123,"timestamp":221184334790,"id":15,"parentId":1,"tags":{},"startTime":1779029156581,"traceId":"06d14cd0ba3c5b22"},{"name":"run-typescript","duration":9526082,"timestamp":221190062304,"id":16,"parentId":1,"tags":{},"startTime":1779029162309,"traceId":"06d14cd0ba3c5b22"},{"name":"static-check","duration":767441,"timestamp":221199757279,"id":19,"parentId":1,"tags":{},"startTime":1779029172004,"traceId":"06d14cd0ba3c5b22"},{"name":"static-generation","duration":615988,"timestamp":221200538220,"id":109,"parentId":1,"tags":{},"startTime":1779029172784,"traceId":"06d14cd0ba3c5b22"},{"name":"telemetry-flush","duration":42939,"timestamp":221201184456,"id":118,"parentId":1,"tags":{},"startTime":1779029173431,"traceId":"06d14cd0ba3c5b22"},{"name":"next-build","duration":17461197,"timestamp":221183766230,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779029156013,"traceId":"06d14cd0ba3c5b22"}]
1
+ [{"name":"run-turbopack","duration":5858808,"timestamp":221862005583,"id":14,"parentId":1,"tags":{},"startTime":1779029834252,"traceId":"6e21d4fb4120b966"},{"name":"turbopack-build-events","duration":74,"timestamp":221862307592,"id":15,"parentId":1,"tags":{},"startTime":1779029834554,"traceId":"6e21d4fb4120b966"},{"name":"run-typescript","duration":9792462,"timestamp":221867872661,"id":16,"parentId":1,"tags":{},"startTime":1779029840119,"traceId":"6e21d4fb4120b966"},{"name":"static-check","duration":851358,"timestamp":221877860109,"id":19,"parentId":1,"tags":{},"startTime":1779029850106,"traceId":"6e21d4fb4120b966"},{"name":"static-generation","duration":666787,"timestamp":221878726572,"id":109,"parentId":1,"tags":{},"startTime":1779029850973,"traceId":"6e21d4fb4120b966"},{"name":"telemetry-flush","duration":24060,"timestamp":221879429291,"id":118,"parentId":1,"tags":{},"startTime":1779029851676,"traceId":"6e21d4fb4120b966"},{"name":"next-build","duration":17684404,"timestamp":221861768974,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779029834015,"traceId":"6e21d4fb4120b966"}]
@@ -1836,17 +1836,60 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1836
1836
  0.001ms under prefers-reduced-motion: reduce).
1837
1837
  data-topo-brand-logo-breath attr exposes the gate
1838
1838
  state for tests. */}
1839
+ {/* Round 557 / Loop — brand logo gains 4th hover axis:
1840
+ hover:brightness-110 (filter). Adds a chromatic axis
1841
+ to the brand-mark hover signature alongside R548
1842
+ scale, R549 rotate, R553 idle breath:
1843
+ R548 hover:scale-105 transform-scale
1844
+ R549 hover:rotate-6 transform-rotate
1845
+ R553 idle breath (5s) opacity (animation)
1846
+ R557 hover:brightness-110 filter ← this round
1847
+ All 4 axes ride on INDEPENDENT CSS properties (scale,
1848
+ rotate, opacity, filter) — they compose freely without
1849
+ clobbering each other. The cyan/teal crescent gains a
1850
+ soft +10% brightness boost on hover, layered on top of
1851
+ the existing scale + rotate lift + ongoing idle breath.
1852
+ Why +10% (vs more aggressive 125/150): brand mark wants
1853
+ restraint. The eye reads the brightness shift as "this
1854
+ mark lights up under attention" without crossing into
1855
+ "this mark is now glowing".
1856
+ Implementation: className extends transition-transform
1857
+ → transition-[transform,filter] so the brightness
1858
+ tweens at the same 200ms ease-out cadence as the scale
1859
+ + rotate axes — one motion-coherent 3-property hover
1860
+ lift on the className tier (plus the inline color 200ms
1861
+ transition for theme-toggle eases).
1862
+ Brand-mark family axis count: 4 hover-state axes
1863
+ cleanly factor across:
1864
+ geometry (scale + rotate)
1865
+ paint (opacity breath + brightness on hover)
1866
+ Cluster reads as "alive, lifting, and lighting up under
1867
+ attention" — three independent gesture vocabularies on
1868
+ one surface.
1869
+ data-topo-brand-logo-hover-brightness attr surfaces
1870
+ the landing value for tests. */}
1839
1871
  <svg
1840
1872
  width="40" height="40" viewBox="0 0 32 32" aria-hidden
1841
- className={`shrink-0 transition-transform duration-200 ease-out hover:scale-105 hover:rotate-6 transform-gpu${!reducedMotion ? ' anet-topo-brand-logo-breath' : ''}`}
1873
+ className={`shrink-0 transition-[transform,filter] duration-200 ease-out hover:scale-105 hover:rotate-6 hover:brightness-110 transform-gpu${!reducedMotion ? ' anet-topo-brand-logo-breath' : ''}`}
1842
1874
  data-topo-brand-logo
1843
1875
  data-topo-brand-logo-hover-scale="1.05"
1844
1876
  data-topo-brand-logo-hover-rotate="6deg"
1877
+ data-topo-brand-logo-hover-brightness="1.1"
1845
1878
  data-topo-brand-logo-breath={!reducedMotion ? 'true' : 'false'}
1846
1879
  style={{
1847
1880
  color: isLight ? '#0d9488' : '#67e8f9',
1848
1881
  cursor: 'default',
1849
- transition: 'color 200ms ease-out',
1882
+ // R557 — extend transition list to include filter (and
1883
+ // re-spec transform for cadence parity) so the new
1884
+ // hover:brightness-110 axis eases at 200ms alongside
1885
+ // the existing color 200ms (theme-toggle ease) and the
1886
+ // className-based hover:scale-105 / hover:rotate-6.
1887
+ // Inline transition is a shorthand and overrides the
1888
+ // className's transition-[transform,filter] — listing
1889
+ // all axes here ensures the eased property set covers
1890
+ // color (theme) + transform (scale + rotate) + filter
1891
+ // (brightness) at uniform 200ms ease-out.
1892
+ transition: 'color 200ms ease-out, transform 200ms ease-out, filter 200ms ease-out',
1850
1893
  }}
1851
1894
  >
1852
1895
  <mask id="s2a-titleblock-moon-mask">
@@ -8876,6 +8919,30 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8876
8919
  />
8877
8920
  );
8878
8921
  }
8922
+ /* Round 558 / Loop — closes the per-node avatar hover-
8923
+ affordance arc by extending R501's brightness lift
8924
+ (image-branch only) to the TWO remaining avatar
8925
+ variants: vendor monogram + prefix-group hue-hashed
8926
+ initial fallback. Pre-R558 only the vendor.logo
8927
+ image branch lifted on hover; the other two
8928
+ variants stayed paint-static under attention.
8929
+
8930
+ Per-node avatar hover-brightness family (3 anchors,
8931
+ all gated on !reducedMotion && hoveredAlias matches):
8932
+ R501 vendor.logo image filter on <image>
8933
+ R558 vendor monogram filter on wrapping <g>
8934
+ R558 prefix-group fallback filter on wrapping <g>
8935
+
8936
+ Implementation: each fallback branch returns a
8937
+ fragment with <circle> + <text> as siblings.
8938
+ Wrapping them in a single <g> with the filter
8939
+ centralizes the paint axis. Same brightness(1.15)
8940
+ value as R501 for cross-branch consistency. Same
8941
+ transition cadence (filter 200ms ease-out).
8942
+
8943
+ data-node-avatar-monogram-hovered + -fallback-
8944
+ hovered attrs surface the gates for tests. */
8945
+ const isAvatarFallbackHovered = !reducedMotion && hoveredAlias === session.alias;
8879
8946
  if (vendor.id !== 'unknown') {
8880
8947
  // Known model house, logo asset not in public/vendors/
8881
8948
  // yet — vendor-tinted monogram stands in.
@@ -8895,7 +8962,14 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8895
8962
  where less visual weight signals "we don't know
8896
8963
  what this is" appropriately. */
8897
8964
  return (
8898
- <>
8965
+ <g
8966
+ data-node-avatar-monogram={session.alias}
8967
+ data-node-avatar-monogram-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
8968
+ style={{
8969
+ filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
8970
+ transition: 'filter 200ms ease-out',
8971
+ }}
8972
+ >
8899
8973
  <circle cx={pos.x} cy={pos.y} r={ar} fill={vendor.mono.bg} stroke={vendor.mono.ring} strokeWidth="1.5" />
8900
8974
  {/* Round 284 / Loop: known-vendor monogram letter
8901
8975
  swaps fontFamily monospace → system sans-serif.
@@ -8927,14 +9001,21 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8927
9001
  >
8928
9002
  {vendor.initial}
8929
9003
  </text>
8930
- </>
9004
+ </g>
8931
9005
  );
8932
9006
  }
8933
9007
  // Round 106 (issue #83): hue keyed to the prefix group,
8934
9008
  // not the full alias — every 通信* node shares one color.
8935
9009
  const c = aliasAvatarColors(groupKeys[session.alias] || session.alias);
8936
9010
  return (
8937
- <>
9011
+ <g
9012
+ data-node-avatar-fallback={session.alias}
9013
+ data-node-avatar-fallback-hovered={isAvatarFallbackHovered ? 'true' : 'false'}
9014
+ style={{
9015
+ filter: isAvatarFallbackHovered ? 'brightness(1.15)' : undefined,
9016
+ transition: 'filter 200ms ease-out',
9017
+ }}
9018
+ >
8938
9019
  <circle cx={pos.x} cy={pos.y} r={ar} fill={c.bg} stroke={c.ring} strokeWidth="1" />
8939
9020
  <text
8940
9021
  x={pos.x}
@@ -8948,7 +9029,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
8948
9029
  >
8949
9030
  {aliasInitial(session.alias)}
8950
9031
  </text>
8951
- </>
9032
+ </g>
8952
9033
  );
8953
9034
  })()}
8954
9035
  {/* Issue #96: runtime badge — small corner glyph marking the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.5.3-preview.70",
3
+ "version": "0.5.3-preview.72",
4
4
  "description": "Agent Network Dashboard \u2014 Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,104 @@
1
+ /* Round 558 verification: per-node avatar hover-brightness family
2
+ * closes at 3 anchors. R501 already covers the vendor.logo image
3
+ * branch; R558 adds the monogram + prefix-group fallback branches.
4
+ *
5
+ * Mock with claude-code-cli runtime and no recognized vendor model
6
+ * → triggers the prefix-group fallback branch (hue-hashed initial).
7
+ *
8
+ * Test phases:
9
+ * 1. wait for [data-node-avatar-fallback] to render
10
+ * 2. rest filter = 'none', hovered attr = 'false'
11
+ * 3. hover the node → filter contains 'brightness(1.15)',
12
+ * hovered attr = 'true'
13
+ * 4. source-side regex confirms both fallback branches wired
14
+ */
15
+ import { chromium } from 'playwright';
16
+ import { readFileSync } from 'node:fs';
17
+
18
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
19
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
20
+
21
+ const browser = await chromium.launch({ headless: true });
22
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
23
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
24
+ await ctx.addInitScript(() => {
25
+ try {
26
+ localStorage.setItem('anet-theme', 'cyber');
27
+ localStorage.setItem('anet-topo-layout', 'ring');
28
+ sessionStorage.setItem('anet_v3_auth', '1');
29
+ } catch {}
30
+ });
31
+ // model=null → vendor=unknown → prefix-group fallback branch.
32
+ await ctx.route('**/api/hub/status*', async (route) => {
33
+ const r = await route.fetch();
34
+ const b = await r.json();
35
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
36
+ const mk = (alias) => ({
37
+ alias, status: 'idle', model: null, runtime: null,
38
+ network_id: nid, project_dir: null,
39
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
40
+ });
41
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('foo·1'), mk('foo·2')] } });
42
+ });
43
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
44
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
45
+ const page = await ctx.newPage();
46
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
47
+ await page.waitForSelector('[data-node-avatar-fallback="foo·1"]', { timeout: 15000 });
48
+ await page.waitForTimeout(500);
49
+
50
+ const avatarSel = '[data-node-avatar-fallback="foo·1"]';
51
+ const nodeSel = 'g[data-node="foo·1"]';
52
+
53
+ const rest = await page.evaluate((s) => {
54
+ const el = document.querySelector(s);
55
+ if (!el) return null;
56
+ const cs = getComputedStyle(el);
57
+ return {
58
+ filter: cs.filter,
59
+ transitionProperty: cs.transitionProperty,
60
+ transitionDuration: cs.transitionDuration,
61
+ hoveredAttr: el.getAttribute('data-node-avatar-fallback-hovered'),
62
+ };
63
+ }, avatarSel);
64
+
65
+ // Hover the parent node group (the avatar is pointerEvents:none inside,
66
+ // but the node group handles hover; node-hovered state is what we test).
67
+ await page.hover(nodeSel);
68
+ await page.waitForTimeout(400);
69
+ const hover = await page.evaluate((s) => {
70
+ const el = document.querySelector(s);
71
+ if (!el) return null;
72
+ const cs = getComputedStyle(el);
73
+ return {
74
+ filter: cs.filter,
75
+ hoveredAttr: el.getAttribute('data-node-avatar-fallback-hovered'),
76
+ };
77
+ }, avatarSel);
78
+
79
+ await browser.close();
80
+
81
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
82
+ const sourceMonogramG = /data-node-avatar-monogram-hovered=\{isAvatarFallbackHovered/.test(src);
83
+ const sourceFallbackG = /data-node-avatar-fallback-hovered=\{isAvatarFallbackHovered/.test(src);
84
+ const sourceBrightnessExpr = /filter: isAvatarFallbackHovered \? 'brightness\(1\.15\)' : undefined/.test(src);
85
+ const sourceTransitionExpr = /transition: 'filter 200ms ease-out'/.test(src);
86
+
87
+ const results = {
88
+ rest_filter_none: rest?.filter === 'none',
89
+ rest_hovered_false: rest?.hoveredAttr === 'false',
90
+ hover_filter_brightness: /brightness\(1\.15\)/.test(hover?.filter || ''),
91
+ hover_hovered_true: hover?.hoveredAttr === 'true',
92
+ transition_filter: /filter/.test(rest?.transitionProperty || ''),
93
+ transition_duration: rest?.transitionDuration === '0.2s',
94
+ source_monogram_group: sourceMonogramG,
95
+ source_fallback_group: sourceFallbackG,
96
+ source_brightness_expr: sourceBrightnessExpr,
97
+ source_transition_expr: sourceTransitionExpr,
98
+ };
99
+ const ok = Object.values(results).every(Boolean);
100
+ console.log(`${ok ? '✅' : '❌'} R558 per-node avatar fallback hover-brightness (closes 3-anchor family):`,
101
+ JSON.stringify(results, null, 2),
102
+ `\n rest: ${JSON.stringify(rest)}`,
103
+ `\n hover: ${JSON.stringify(hover)}`);
104
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,105 @@
1
+ /* Round 557 verification: title-block brand logo gains 4th hover
2
+ * axis — hover:brightness-110 (filter). Composes with R548 scale +
3
+ * R549 rotate + R553 idle breath.
4
+ *
5
+ * Test phases:
6
+ * 1. rest: filter = 'none' (no brightness on idle, breath uses opacity)
7
+ * 2. hover: filter contains 'brightness(1.1)' (or similar)
8
+ * 3. data-attr present
9
+ * 4. source: className contains hover:brightness-110 and
10
+ * transition-[transform,filter]
11
+ *
12
+ * R553 breath uses opacity, NOT filter — so filter stays clean at
13
+ * rest. On hover, Tailwind adds filter: brightness(1.1).
14
+ */
15
+ import { chromium } from 'playwright';
16
+ import { readFileSync } from 'node:fs';
17
+
18
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
19
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
20
+
21
+ const browser = await chromium.launch({ headless: true });
22
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
23
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
24
+ await ctx.addInitScript(() => {
25
+ try {
26
+ localStorage.setItem('anet-theme', 'cyber');
27
+ localStorage.setItem('anet-topo-layout', 'ring');
28
+ sessionStorage.setItem('anet_v3_auth', '1');
29
+ } catch {}
30
+ });
31
+ await ctx.route('**/api/hub/status*', async (route) => {
32
+ const r = await route.fetch();
33
+ const b = await r.json();
34
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
35
+ const mk = (alias) => ({
36
+ alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
37
+ network_id: nid, project_dir: null,
38
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
39
+ });
40
+ await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1')] } });
41
+ });
42
+ await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [] } }));
43
+ await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
44
+ const page = await ctx.newPage();
45
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
46
+ await page.waitForSelector('[data-topo-brand-logo]', { timeout: 15000 });
47
+ await page.waitForTimeout(500);
48
+
49
+ const sel = '[data-topo-brand-logo]';
50
+ const rest = await page.evaluate((s) => {
51
+ const el = document.querySelector(s);
52
+ if (!el) return null;
53
+ const cs = getComputedStyle(el);
54
+ return {
55
+ filter: cs.filter,
56
+ transitionProperty: cs.transitionProperty,
57
+ transitionDuration: cs.transitionDuration,
58
+ hoverBrightnessAttr: el.getAttribute('data-topo-brand-logo-hover-brightness'),
59
+ };
60
+ }, sel);
61
+
62
+ await page.hover(sel);
63
+ await page.waitForTimeout(400);
64
+ const hover = await page.evaluate((s) => {
65
+ const el = document.querySelector(s);
66
+ if (!el) return null;
67
+ const cs = getComputedStyle(el);
68
+ return {
69
+ filter: cs.filter,
70
+ scale: cs.scale,
71
+ rotate: cs.rotate,
72
+ };
73
+ }, sel);
74
+
75
+ await browser.close();
76
+
77
+ const src = readFileSync('/home/vansin/agent-network-dashboard/app/components/TopoGraph.tsx', 'utf8');
78
+ const sourceClassname = /hover:brightness-110/.test(src);
79
+ const sourceTransition = /transition-\[transform,filter\] duration-200 ease-out hover:scale-105 hover:rotate-6 hover:brightness-110/.test(src);
80
+ const sourceAttr = /data-topo-brand-logo-hover-brightness="1\.1"/.test(src);
81
+
82
+ const results = {
83
+ rest_filter_none: rest?.filter === 'none',
84
+ rest_brightness_attr: rest?.hoverBrightnessAttr === '1.1',
85
+ // Computed filter on hover should contain brightness(1.1) — handle
86
+ // both raw and serialized forms.
87
+ hover_filter_brightness: /brightness\(1\.1\)/.test(hover?.filter || ''),
88
+ hover_scale_still_105: hover?.scale === '1.05',
89
+ hover_rotate_still_6: hover?.rotate === '6deg',
90
+ transition_has_transform: /transform/.test(rest?.transitionProperty || ''),
91
+ transition_has_filter: /filter/.test(rest?.transitionProperty || ''),
92
+ // 3 axes (color + transform + filter) → '0.2s, 0.2s, 0.2s'
93
+ transition_duration: /^0\.2s(,\s*0\.2s)*$/.test(rest?.transitionDuration || ''),
94
+ source_classname: sourceClassname,
95
+ source_transition_list: sourceTransition,
96
+ source_attr: sourceAttr,
97
+ };
98
+ const ok = Object.values(results).every(Boolean);
99
+ console.log(`${ok ? '✅' : '❌'} R557 brand-logo hover:brightness-110 (4th axis):`,
100
+ JSON.stringify(results, null, 2),
101
+ `\n rest filter: ${rest?.filter}`,
102
+ `\n hover filter: ${hover?.filter}`,
103
+ `\n hover scale: ${hover?.scale}, rotate: ${hover?.rotate}`,
104
+ `\n transition: ${rest?.transitionProperty}`);
105
+ process.exit(ok ? 0 : 1);