@sleep2agi/agent-network-dashboard 0.4.6-preview.186 → 0.4.6-preview.188

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 (156) 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/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +2 -2
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/admin.html +2 -2
  24. package/.next/server/app/admin.rsc +2 -2
  25. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  26. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  29. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  30. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  31. package/.next/server/app/index.html +2 -2
  32. package/.next/server/app/index.rsc +3 -3
  33. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  34. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  35. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  37. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/login.html +2 -2
  40. package/.next/server/app/login.rsc +3 -3
  41. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  42. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  43. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  46. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  47. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/logs.html +2 -2
  49. package/.next/server/app/logs.rsc +2 -2
  50. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  51. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  52. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  55. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  56. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/messages.html +2 -2
  58. package/.next/server/app/messages.rsc +2 -2
  59. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  60. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  63. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  64. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  65. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/node.html +2 -2
  67. package/.next/server/app/node.rsc +2 -2
  68. package/.next/server/app/node.segments/_full.segment.rsc +2 -2
  69. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  73. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  74. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/nodes.html +2 -2
  76. package/.next/server/app/nodes.rsc +2 -2
  77. package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
  78. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  79. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  81. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  82. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  83. package/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/server-logs.html +2 -2
  86. package/.next/server/app/server-logs.rsc +2 -2
  87. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  88. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  90. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  91. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/settings/networks.html +2 -2
  95. package/.next/server/app/settings/networks.rsc +2 -2
  96. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  97. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  98. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  99. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  100. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  101. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  102. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  103. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  105. package/.next/server/app/settings/tokens.html +2 -2
  106. package/.next/server/app/settings/tokens.rsc +2 -2
  107. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  108. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  109. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  110. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  111. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  112. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  113. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  114. package/.next/server/app/settings.html +2 -2
  115. package/.next/server/app/settings.rsc +3 -3
  116. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  117. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  119. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  120. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  121. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  122. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  124. package/.next/server/app/tasks.html +2 -2
  125. package/.next/server/app/tasks.rsc +2 -2
  126. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  127. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  128. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  129. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  130. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  131. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  132. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +3 -3
  133. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  134. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  135. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  136. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  137. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  138. package/.next/server/middleware-build-manifest.js +3 -3
  139. package/.next/server/pages/404.html +2 -2
  140. package/.next/server/pages/500.html +1 -1
  141. package/.next/server/server-reference-manifest.js +1 -1
  142. package/.next/server/server-reference-manifest.json +1 -1
  143. package/.next/static/chunks/{15k_jvc3cas35.js → 01723nbu4cc8-.js} +1 -1
  144. package/.next/static/chunks/{0edmg0urhqjv2.js → 0ps1kt.w8ck_1.js} +1 -1
  145. package/.next/static/chunks/{00c81x5qff5zr.js → 0uz.r8gblmwgq.js} +3 -3
  146. package/.next/static/chunks/{0otgjhpse~amj.css → 13k52fgtfw~0c.css} +1 -1
  147. package/.next/trace +2 -2
  148. package/.next/trace-build +1 -1
  149. package/app/components/TopoGraph.tsx +38 -4
  150. package/package.json +1 -1
  151. package/scripts/topo-legend-pin-ring-fade-test.mjs +112 -0
  152. package/scripts/topo-pin-mirror-transition-test.mjs +101 -0
  153. package/scripts/topo-working-chip-pin-test.mjs +7 -1
  154. /package/.next/static/{75nsM5w8VY5fIfcj_UAcV → wjw4ndSXScrJKPASVQ9xE}/_buildManifest.js +0 -0
  155. /package/.next/static/{75nsM5w8VY5fIfcj_UAcV → wjw4ndSXScrJKPASVQ9xE}/_clientMiddlewareManifest.js +0 -0
  156. /package/.next/static/{75nsM5w8VY5fIfcj_UAcV → wjw4ndSXScrJKPASVQ9xE}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":268,"timestamp":67354346095,"id":4,"parentId":1,"tags":{},"startTime":1778875326592,"traceId":"6ef2307f5e92e3a3"},{"name":"load-custom-routes","duration":472,"timestamp":67354346515,"id":5,"parentId":1,"tags":{},"startTime":1778875326593,"traceId":"6ef2307f5e92e3a3"},{"name":"create-dist-dir","duration":641,"timestamp":67354347047,"id":6,"parentId":1,"tags":{},"startTime":1778875326593,"traceId":"6ef2307f5e92e3a3"},{"name":"clean","duration":547,"timestamp":67354348346,"id":7,"parentId":1,"tags":{},"startTime":1778875326595,"traceId":"6ef2307f5e92e3a3"},{"name":"discover-routes","duration":10394,"timestamp":67354429538,"id":8,"parentId":1,"tags":{},"startTime":1778875326676,"traceId":"6ef2307f5e92e3a3"},{"name":"create-root-mapping","duration":161,"timestamp":67354440035,"id":9,"parentId":1,"tags":{},"startTime":1778875326686,"traceId":"6ef2307f5e92e3a3"},{"name":"generate-route-types","duration":31201,"timestamp":67354442644,"id":10,"parentId":1,"tags":{},"startTime":1778875326689,"traceId":"6ef2307f5e92e3a3"},{"name":"public-dir-conflict-check","duration":129,"timestamp":67354473984,"id":11,"parentId":1,"tags":{},"startTime":1778875326720,"traceId":"6ef2307f5e92e3a3"},{"name":"generate-routes-manifest","duration":4637,"timestamp":67354474231,"id":12,"parentId":1,"tags":{},"startTime":1778875326721,"traceId":"6ef2307f5e92e3a3"},{"name":"run-turbopack","duration":5186222,"timestamp":67354485078,"id":14,"parentId":1,"tags":{},"startTime":1778875326731,"traceId":"6ef2307f5e92e3a3"},{"name":"turbopack-build-events","duration":118,"timestamp":67354772779,"id":15,"parentId":1,"tags":{},"startTime":1778875327019,"traceId":"6ef2307f5e92e3a3"},{"name":"run-typescript","duration":8835418,"timestamp":67359679926,"id":16,"parentId":1,"tags":{},"startTime":1778875331926,"traceId":"6ef2307f5e92e3a3"},{"name":"generate-required-server-files","duration":2559,"timestamp":67368516578,"id":18,"parentId":1,"tags":{},"startTime":1778875340763,"traceId":"6ef2307f5e92e3a3"},{"name":"check-static-error-page","duration":13052,"timestamp":67368703038,"id":20,"parentId":19,"tags":{},"startTime":1778875340949,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":446747,"timestamp":67368718916,"id":63,"parentId":22,"tags":{},"startTime":1778875340965,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":460465,"timestamp":67368705387,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778875340952,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":537199,"timestamp":67368721056,"id":67,"parentId":28,"tags":{},"startTime":1778875340967,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":549752,"timestamp":67368708600,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":569988,"timestamp":67368721339,"id":69,"parentId":30,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":582524,"timestamp":67368708886,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":579759,"timestamp":67368721508,"id":70,"parentId":32,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":592092,"timestamp":67368709255,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778875340956,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":584674,"timestamp":67368718556,"id":62,"parentId":21,"tags":{},"startTime":1778875340965,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":599008,"timestamp":67368704273,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778875340951,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":594549,"timestamp":67368721582,"id":71,"parentId":33,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":606787,"timestamp":67368709405,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778875340956,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":595525,"timestamp":67368720853,"id":66,"parentId":27,"tags":{},"startTime":1778875340967,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":607944,"timestamp":67368708472,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":597430,"timestamp":67368721658,"id":72,"parentId":34,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":609611,"timestamp":67368709533,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778875340956,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":599905,"timestamp":67368721870,"id":76,"parentId":38,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":611219,"timestamp":67368710625,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":603656,"timestamp":67368721210,"id":68,"parentId":29,"tags":{},"startTime":1778875340967,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":616192,"timestamp":67368708721,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":604315,"timestamp":67368721883,"id":77,"parentId":39,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":615501,"timestamp":67368710742,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":608557,"timestamp":67368721909,"id":79,"parentId":41,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":619546,"timestamp":67368710968,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":612840,"timestamp":67368721918,"id":80,"parentId":42,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":623693,"timestamp":67368711110,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":618153,"timestamp":67368721932,"id":81,"parentId":43,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":628906,"timestamp":67368711226,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":621589,"timestamp":67368721897,"id":78,"parentId":40,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":632666,"timestamp":67368710861,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":621821,"timestamp":67368721945,"id":82,"parentId":44,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":632478,"timestamp":67368711324,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778875340958,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":624941,"timestamp":67368719665,"id":64,"parentId":25,"tags":{},"startTime":1778875340966,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":636501,"timestamp":67368708159,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778875340954,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":626729,"timestamp":67368721967,"id":84,"parentId":46,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":637249,"timestamp":67368711499,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778875340958,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":628660,"timestamp":67368721982,"id":85,"parentId":47,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":639080,"timestamp":67368711608,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778875340958,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":630245,"timestamp":67368721855,"id":75,"parentId":37,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":641670,"timestamp":67368710474,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":633078,"timestamp":67368721998,"id":86,"parentId":48,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":643436,"timestamp":67368711694,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778875340958,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":633482,"timestamp":67368721804,"id":74,"parentId":36,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":645028,"timestamp":67368710291,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778875340957,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":634593,"timestamp":67368726399,"id":89,"parentId":31,"tags":{},"startTime":1778875340973,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":652035,"timestamp":67368709018,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":638493,"timestamp":67368725299,"id":88,"parentId":24,"tags":{},"startTime":1778875340972,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":658100,"timestamp":67368705764,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778875340952,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":655752,"timestamp":67368721955,"id":83,"parentId":45,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":666362,"timestamp":67368711414,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778875340958,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":661116,"timestamp":67368722023,"id":87,"parentId":49,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":670052,"timestamp":67368713153,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778875340959,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":663376,"timestamp":67368720727,"id":65,"parentId":26,"tags":{},"startTime":1778875340967,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":675806,"timestamp":67368708344,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778875340955,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":667654,"timestamp":67368721685,"id":73,"parentId":35,"tags":{},"startTime":1778875340968,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":679723,"timestamp":67368709661,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778875340956,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":670149,"timestamp":67368728934,"id":96,"parentId":56,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":684077,"timestamp":67368715051,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778875340961,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":677608,"timestamp":67368728949,"id":97,"parentId":57,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":691396,"timestamp":67368715204,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778875340961,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":687426,"timestamp":67368728957,"id":98,"parentId":59,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":700818,"timestamp":67368715617,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778875340962,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":700584,"timestamp":67368728974,"id":99,"parentId":60,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":713899,"timestamp":67368715714,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778875340962,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":703598,"timestamp":67368728844,"id":90,"parentId":23,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":726924,"timestamp":67368705590,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778875340952,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":709445,"timestamp":67368728869,"id":91,"parentId":50,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":724750,"timestamp":67368713639,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778875340960,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":709520,"timestamp":67368728991,"id":100,"parentId":61,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":722709,"timestamp":67368715830,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778875340962,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":709720,"timestamp":67368728885,"id":92,"parentId":51,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":724784,"timestamp":67368713843,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778875340960,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":707545,"timestamp":67368735792,"id":101,"parentId":58,"tags":{},"startTime":1778875340982,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":728051,"timestamp":67368715324,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778875340962,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":693745,"timestamp":67368751979,"id":102,"parentId":55,"tags":{},"startTime":1778875340998,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":731121,"timestamp":67368714634,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778875340961,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":722778,"timestamp":67368728898,"id":93,"parentId":52,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":737663,"timestamp":67368714047,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778875340960,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":729424,"timestamp":67368728908,"id":94,"parentId":53,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":744094,"timestamp":67368714280,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778875340961,"traceId":"6ef2307f5e92e3a3"},{"name":"is-page-static","duration":740254,"timestamp":67368728921,"id":95,"parentId":54,"tags":{},"startTime":1778875340975,"traceId":"6ef2307f5e92e3a3"},{"name":"check-page","duration":754757,"timestamp":67368714460,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778875340961,"traceId":"6ef2307f5e92e3a3"},{"name":"static-check","duration":766998,"timestamp":67368702263,"id":19,"parentId":1,"tags":{},"startTime":1778875340949,"traceId":"6ef2307f5e92e3a3"},{"name":"write-routes-manifest","duration":376,"timestamp":67369476102,"id":104,"parentId":1,"tags":{},"startTime":1778875341722,"traceId":"6ef2307f5e92e3a3"},{"name":"load-dotenv","duration":77,"timestamp":67369487978,"id":107,"parentId":106,"tags":{},"startTime":1778875341734,"traceId":"6ef2307f5e92e3a3"},{"name":"run-export-path-map","duration":624,"timestamp":67369491743,"id":108,"parentId":106,"tags":{},"startTime":1778875341738,"traceId":"6ef2307f5e92e3a3"},{"name":"next-export","duration":560992,"timestamp":67369486175,"id":106,"parentId":1,"tags":{},"startTime":1778875341732,"traceId":"6ef2307f5e92e3a3"}]
2
- [{"name":"move-exported-app-not-found-","duration":2600,"timestamp":67370050469,"id":109,"parentId":105,"tags":{},"startTime":1778875342297,"traceId":"6ef2307f5e92e3a3"},{"name":"move-exported-app-global-error-","duration":536,"timestamp":67370053165,"id":110,"parentId":105,"tags":{},"startTime":1778875342299,"traceId":"6ef2307f5e92e3a3"},{"name":"static-generation","duration":575512,"timestamp":67369480230,"id":105,"parentId":1,"tags":{},"startTime":1778875341727,"traceId":"6ef2307f5e92e3a3"},{"name":"write-routes-manifest","duration":429,"timestamp":67370055908,"id":111,"parentId":1,"tags":{},"startTime":1778875342302,"traceId":"6ef2307f5e92e3a3"},{"name":"print-tree-view","duration":5430,"timestamp":67370065250,"id":112,"parentId":1,"tags":{},"startTime":1778875342312,"traceId":"6ef2307f5e92e3a3"},{"name":"write-route-bundle-stats","duration":16504,"timestamp":67370070716,"id":113,"parentId":1,"tags":{},"startTime":1778875342317,"traceId":"6ef2307f5e92e3a3"},{"name":"telemetry-flush","duration":21273,"timestamp":67370087246,"id":114,"parentId":1,"tags":{},"startTime":1778875342334,"traceId":"6ef2307f5e92e3a3"},{"name":"next-build","duration":15819171,"timestamp":67354289380,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778875326536,"traceId":"6ef2307f5e92e3a3"}]
1
+ [{"name":"generate-buildid","duration":379,"timestamp":68022718264,"id":4,"parentId":1,"tags":{},"startTime":1778875994965,"traceId":"2dd64a34042ffde1"},{"name":"load-custom-routes","duration":523,"timestamp":68022718808,"id":5,"parentId":1,"tags":{},"startTime":1778875994965,"traceId":"2dd64a34042ffde1"},{"name":"create-dist-dir","duration":709,"timestamp":68022719376,"id":6,"parentId":1,"tags":{},"startTime":1778875994966,"traceId":"2dd64a34042ffde1"},{"name":"clean","duration":534,"timestamp":68022720716,"id":7,"parentId":1,"tags":{},"startTime":1778875994967,"traceId":"2dd64a34042ffde1"},{"name":"discover-routes","duration":13149,"timestamp":68022808219,"id":8,"parentId":1,"tags":{},"startTime":1778875995054,"traceId":"2dd64a34042ffde1"},{"name":"create-root-mapping","duration":204,"timestamp":68022821466,"id":9,"parentId":1,"tags":{},"startTime":1778875995068,"traceId":"2dd64a34042ffde1"},{"name":"generate-route-types","duration":33008,"timestamp":68022824687,"id":10,"parentId":1,"tags":{},"startTime":1778875995071,"traceId":"2dd64a34042ffde1"},{"name":"public-dir-conflict-check","duration":148,"timestamp":68022857869,"id":11,"parentId":1,"tags":{},"startTime":1778875995104,"traceId":"2dd64a34042ffde1"},{"name":"generate-routes-manifest","duration":4743,"timestamp":68022858219,"id":12,"parentId":1,"tags":{},"startTime":1778875995104,"traceId":"2dd64a34042ffde1"},{"name":"run-turbopack","duration":6170367,"timestamp":68022867940,"id":14,"parentId":1,"tags":{},"startTime":1778875995114,"traceId":"2dd64a34042ffde1"},{"name":"turbopack-build-events","duration":99,"timestamp":68023153996,"id":15,"parentId":1,"tags":{},"startTime":1778875995400,"traceId":"2dd64a34042ffde1"},{"name":"run-typescript","duration":8557200,"timestamp":68029051093,"id":16,"parentId":1,"tags":{},"startTime":1778876001297,"traceId":"2dd64a34042ffde1"},{"name":"generate-required-server-files","duration":2305,"timestamp":68037609403,"id":18,"parentId":1,"tags":{},"startTime":1778876009856,"traceId":"2dd64a34042ffde1"},{"name":"check-static-error-page","duration":14578,"timestamp":68037765158,"id":20,"parentId":19,"tags":{},"startTime":1778876010011,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":447150,"timestamp":68037782645,"id":63,"parentId":22,"tags":{},"startTime":1778876010029,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":461670,"timestamp":68037768310,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778876010015,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":479828,"timestamp":68037784354,"id":67,"parentId":28,"tags":{},"startTime":1778876010031,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":492381,"timestamp":68037771899,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":481799,"timestamp":68037787499,"id":70,"parentId":32,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":496835,"timestamp":68037772528,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778876010019,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":493128,"timestamp":68037787579,"id":71,"parentId":33,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":508110,"timestamp":68037772658,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778876010019,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":499405,"timestamp":68037787671,"id":72,"parentId":34,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":514376,"timestamp":68037772762,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778876010019,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":508873,"timestamp":68037787705,"id":73,"parentId":35,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":523736,"timestamp":68037772892,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778876010019,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":516345,"timestamp":68037787858,"id":74,"parentId":36,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":530866,"timestamp":68037773390,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":526999,"timestamp":68037782766,"id":64,"parentId":25,"tags":{},"startTime":1778876010029,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":538378,"timestamp":68037771455,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":527163,"timestamp":68037787915,"id":76,"parentId":38,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":541403,"timestamp":68037773739,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":534391,"timestamp":68037782272,"id":62,"parentId":21,"tags":{},"startTime":1778876010029,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":549995,"timestamp":68037766714,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778876010013,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":533297,"timestamp":68037787896,"id":75,"parentId":37,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":547633,"timestamp":68037773600,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":540221,"timestamp":68037784106,"id":66,"parentId":27,"tags":{},"startTime":1778876010030,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":552618,"timestamp":68037771756,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":537469,"timestamp":68037787107,"id":68,"parentId":29,"tags":{},"startTime":1778876010033,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":552574,"timestamp":68037772036,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":537676,"timestamp":68037787957,"id":79,"parentId":41,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":551603,"timestamp":68037774070,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":543269,"timestamp":68037787973,"id":80,"parentId":42,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":557103,"timestamp":68037774183,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":543390,"timestamp":68037788019,"id":82,"parentId":44,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":557048,"timestamp":68037774391,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":554490,"timestamp":68037783929,"id":65,"parentId":26,"tags":{},"startTime":1778876010030,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":566849,"timestamp":68037771631,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":553430,"timestamp":68037787932,"id":77,"parentId":39,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":567559,"timestamp":68037773851,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":554234,"timestamp":68037787299,"id":69,"parentId":30,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":569387,"timestamp":68037772176,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778876010018,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":555837,"timestamp":68037788068,"id":85,"parentId":47,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":569212,"timestamp":68037774740,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":561813,"timestamp":68037788056,"id":84,"parentId":46,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":575322,"timestamp":68037774584,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":565190,"timestamp":68037787989,"id":81,"parentId":43,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":578923,"timestamp":68037774292,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":565646,"timestamp":68037788083,"id":86,"parentId":48,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":578890,"timestamp":68037774882,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":561591,"timestamp":68037792778,"id":89,"parentId":31,"tags":{},"startTime":1778876010039,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":582125,"timestamp":68037772281,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778876010019,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":569791,"timestamp":68037788039,"id":83,"parentId":45,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":583377,"timestamp":68037774490,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778876010021,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":611201,"timestamp":68037788098,"id":87,"parentId":49,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":623045,"timestamp":68037776335,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778876010023,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":616029,"timestamp":68037791547,"id":88,"parentId":24,"tags":{},"startTime":1778876010038,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":638821,"timestamp":68037768824,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778876010015,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":621015,"timestamp":68037795353,"id":91,"parentId":50,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":643037,"timestamp":68037776771,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778876010023,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":624700,"timestamp":68037795369,"id":92,"parentId":51,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":643158,"timestamp":68037776953,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778876010023,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":633629,"timestamp":68037787943,"id":78,"parentId":40,"tags":{},"startTime":1778876010034,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":647684,"timestamp":68037773945,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778876010020,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":632633,"timestamp":68037795422,"id":96,"parentId":56,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":649729,"timestamp":68037778394,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778876010025,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":632889,"timestamp":68037795438,"id":97,"parentId":57,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":649764,"timestamp":68037778603,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778876010025,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":635988,"timestamp":68037795380,"id":93,"parentId":52,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":654284,"timestamp":68037777149,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778876010023,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":637200,"timestamp":68037795452,"id":98,"parentId":59,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":653473,"timestamp":68037779222,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778876010025,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":642876,"timestamp":68037795489,"id":100,"parentId":61,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":658909,"timestamp":68037779496,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778876010026,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":637117,"timestamp":68037801353,"id":101,"parentId":58,"tags":{},"startTime":1778876010048,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":659712,"timestamp":68037778778,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778876010025,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":621189,"timestamp":68037819072,"id":102,"parentId":55,"tags":{},"startTime":1778876010065,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":662500,"timestamp":68037777789,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778876010024,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":645741,"timestamp":68037795324,"id":90,"parentId":23,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":672514,"timestamp":68037768570,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778876010015,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":646369,"timestamp":68037795472,"id":99,"parentId":60,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":662510,"timestamp":68037779362,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778876010026,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":656855,"timestamp":68037795395,"id":94,"parentId":53,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":674933,"timestamp":68037777353,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778876010024,"traceId":"2dd64a34042ffde1"},{"name":"is-page-static","duration":669962,"timestamp":68037795411,"id":95,"parentId":54,"tags":{},"startTime":1778876010042,"traceId":"2dd64a34042ffde1"},{"name":"check-page","duration":687863,"timestamp":68037777550,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778876010024,"traceId":"2dd64a34042ffde1"},{"name":"static-check","duration":701422,"timestamp":68037764030,"id":19,"parentId":1,"tags":{},"startTime":1778876010010,"traceId":"2dd64a34042ffde1"},{"name":"write-routes-manifest","duration":427,"timestamp":68038473250,"id":104,"parentId":1,"tags":{},"startTime":1778876010720,"traceId":"2dd64a34042ffde1"},{"name":"load-dotenv","duration":45,"timestamp":68038485116,"id":107,"parentId":106,"tags":{},"startTime":1778876010731,"traceId":"2dd64a34042ffde1"},{"name":"run-export-path-map","duration":970,"timestamp":68038488907,"id":108,"parentId":106,"tags":{},"startTime":1778876010735,"traceId":"2dd64a34042ffde1"},{"name":"next-export","duration":542964,"timestamp":68038483936,"id":106,"parentId":1,"tags":{},"startTime":1778876010730,"traceId":"2dd64a34042ffde1"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2059,"timestamp":68039030548,"id":109,"parentId":105,"tags":{},"startTime":1778876011277,"traceId":"2dd64a34042ffde1"},{"name":"move-exported-app-global-error-","duration":542,"timestamp":68039032688,"id":110,"parentId":105,"tags":{},"startTime":1778876011279,"traceId":"2dd64a34042ffde1"},{"name":"static-generation","duration":557180,"timestamp":68038477749,"id":105,"parentId":1,"tags":{},"startTime":1778876010724,"traceId":"2dd64a34042ffde1"},{"name":"write-routes-manifest","duration":345,"timestamp":68039035110,"id":111,"parentId":1,"tags":{},"startTime":1778876011281,"traceId":"2dd64a34042ffde1"},{"name":"print-tree-view","duration":4291,"timestamp":68039049488,"id":112,"parentId":1,"tags":{},"startTime":1778876011296,"traceId":"2dd64a34042ffde1"},{"name":"write-route-bundle-stats","duration":12607,"timestamp":68039053807,"id":113,"parentId":1,"tags":{},"startTime":1778876011300,"traceId":"2dd64a34042ffde1"},{"name":"telemetry-flush","duration":22460,"timestamp":68039066445,"id":114,"parentId":1,"tags":{},"startTime":1778876011313,"traceId":"2dd64a34042ffde1"},{"name":"next-build","duration":16424965,"timestamp":68022663970,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778875994910,"traceId":"2dd64a34042ffde1"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5186222,"timestamp":67354485078,"id":14,"parentId":1,"tags":{},"startTime":1778875326731,"traceId":"6ef2307f5e92e3a3"},{"name":"turbopack-build-events","duration":118,"timestamp":67354772779,"id":15,"parentId":1,"tags":{},"startTime":1778875327019,"traceId":"6ef2307f5e92e3a3"},{"name":"run-typescript","duration":8835418,"timestamp":67359679926,"id":16,"parentId":1,"tags":{},"startTime":1778875331926,"traceId":"6ef2307f5e92e3a3"},{"name":"static-check","duration":766998,"timestamp":67368702263,"id":19,"parentId":1,"tags":{},"startTime":1778875340949,"traceId":"6ef2307f5e92e3a3"},{"name":"static-generation","duration":575512,"timestamp":67369480230,"id":105,"parentId":1,"tags":{},"startTime":1778875341727,"traceId":"6ef2307f5e92e3a3"},{"name":"telemetry-flush","duration":21273,"timestamp":67370087246,"id":114,"parentId":1,"tags":{},"startTime":1778875342334,"traceId":"6ef2307f5e92e3a3"},{"name":"next-build","duration":15819171,"timestamp":67354289380,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778875326536,"traceId":"6ef2307f5e92e3a3"}]
1
+ [{"name":"run-turbopack","duration":6170367,"timestamp":68022867940,"id":14,"parentId":1,"tags":{},"startTime":1778875995114,"traceId":"2dd64a34042ffde1"},{"name":"turbopack-build-events","duration":99,"timestamp":68023153996,"id":15,"parentId":1,"tags":{},"startTime":1778875995400,"traceId":"2dd64a34042ffde1"},{"name":"run-typescript","duration":8557200,"timestamp":68029051093,"id":16,"parentId":1,"tags":{},"startTime":1778876001297,"traceId":"2dd64a34042ffde1"},{"name":"static-check","duration":701422,"timestamp":68037764030,"id":19,"parentId":1,"tags":{},"startTime":1778876010010,"traceId":"2dd64a34042ffde1"},{"name":"static-generation","duration":557180,"timestamp":68038477749,"id":105,"parentId":1,"tags":{},"startTime":1778876010724,"traceId":"2dd64a34042ffde1"},{"name":"telemetry-flush","duration":22460,"timestamp":68039066445,"id":114,"parentId":1,"tags":{},"startTime":1778876011313,"traceId":"2dd64a34042ffde1"},{"name":"next-build","duration":16424965,"timestamp":68022663970,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778875994910,"traceId":"2dd64a34042ffde1"}]
@@ -1467,9 +1467,17 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1467
1467
  role={workingCount > 0 ? 'button' : undefined}
1468
1468
  tabIndex={workingCount > 0 ? 0 : undefined}
1469
1469
  aria-pressed={workingCount > 0 ? (pinnedStatus === 'working') : undefined}
1470
+ // Round 180 / Loop: pin-mirror inset rings now ease in/out
1471
+ // instead of snapping. R165 added this transition to the
1472
+ // pressure-bar segments; R180 closes the smooth-pin-mirror
1473
+ // family across the three remaining chip-row pin chips
1474
+ // (working / online / vendor letter). The visual is small
1475
+ // — a 1-2 px inset double ring — but the eye catches the
1476
+ // pop on every pin/unpin without the ease.
1470
1477
  style={{
1471
1478
  cursor: workingCount > 0 ? 'pointer' : undefined,
1472
1479
  boxShadow: pinnedStatus === 'working' ? 'inset 0 0 0 1px #4ade80, inset 0 0 0 2px rgba(255,255,255,0.45)' : undefined,
1480
+ transition: 'box-shadow 150ms ease-out',
1473
1481
  }}
1474
1482
  onMouseEnter={() => { if (workingCount > 0) setHoveredStatus('working'); }}
1475
1483
  onMouseLeave={() => setHoveredStatus(prev => prev === 'working' ? null : prev)}
@@ -1504,9 +1512,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
1504
1512
  title={onlineTitle}
1505
1513
  role={onlineNodes.length > 0 ? 'link' : undefined}
1506
1514
  tabIndex={onlineNodes.length > 0 ? 0 : undefined}
1515
+ // R180: smooth-pin-mirror family — see working chip above.
1507
1516
  style={{
1508
1517
  cursor: onlineNodes.length > 0 ? 'pointer' : undefined,
1509
1518
  boxShadow: pinnedStatus === 'idle' ? 'inset 0 0 0 1px #67e8f9, inset 0 0 0 2px rgba(255,255,255,0.45)' : undefined,
1519
+ transition: 'box-shadow 150ms ease-out',
1510
1520
  }}
1511
1521
  onMouseEnter={() => {
1512
1522
  // If a working filter would isolate nothing, route to idle.
@@ -2003,11 +2013,13 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
2003
2013
  data-vendor-pinned={isPinned ? 'true' : 'false'}
2004
2014
  data-vendor-aliases={aliases.join(',')}
2005
2015
  title={tooltip}
2016
+ // R180: smooth-pin-mirror family — see working chip above.
2006
2017
  style={{
2007
2018
  cursor: 'pointer',
2008
2019
  boxShadow: isPinned
2009
2020
  ? `inset 0 0 0 1px ${v.color}, inset 0 0 0 2px rgba(255,255,255,0.45)`
2010
2021
  : undefined,
2022
+ transition: 'box-shadow 150ms ease-out',
2011
2023
  }}
2012
2024
  onMouseEnter={() => setHoveredVendor(v.initial)}
2013
2025
  onMouseLeave={() => setHoveredVendor(prev => prev === v.initial ? null : prev)}
@@ -4663,10 +4675,32 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4663
4675
  <circle cx="16" cy={row.y0} r="5.5" fill={row.fill} />
4664
4676
  {/* R61 pinned-state ring — concentric stroke at r=8 in
4665
4677
  the row colour, draws OUTSIDE the swatch so it
4666
- doesn't fight the fill colour the user is matching. */}
4667
- {isPinned && (
4668
- <circle cx="16" cy={row.y0} r="8" fill="none" stroke={row.fill} strokeWidth="1.5" />
4669
- )}
4678
+ doesn't fight the fill colour the user is matching.
4679
+ Round 181 / Loop: the ring used to mount/unmount
4680
+ with the conditional render, snapping on every
4681
+ pin/unpin. Now always mounted with opacity gated
4682
+ by isPinned + a 150ms transition so the ring
4683
+ eases in on pin and out on unpin — same gesture
4684
+ vocabulary the R165/R180 smooth-pin-mirror family
4685
+ uses for the chip-row pin chips. strokeWidth=1.5
4686
+ is the R51 overlap-test sentinel but the test
4687
+ selector is gated to g[data-node] ancestors,
4688
+ so this legend-internal circle is invisible to
4689
+ that probe. pointerEvents:none so the ring can't
4690
+ intercept the row click that produced it. */}
4691
+ <circle
4692
+ cx="16" cy={row.y0} r="8"
4693
+ fill="none"
4694
+ stroke={row.fill}
4695
+ strokeWidth="1.5"
4696
+ opacity={isPinned ? 1 : 0}
4697
+ data-legend-pin-ring={row.key}
4698
+ data-legend-pin-ring-pinned={isPinned ? 'true' : 'false'}
4699
+ style={{
4700
+ pointerEvents: 'none',
4701
+ transition: 'opacity 150ms ease-out',
4702
+ }}
4703
+ />
4670
4704
  <text
4671
4705
  x="30" y={row.y1}
4672
4706
  fill={hoveredStatus === row.key || isPinned ? pal.legendHeadline : pal.legendText}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.186",
3
+ "version": "0.4.6-preview.188",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,112 @@
1
+ /* Round 181 verification: legend row pinned-state ring (R61) is
2
+ * now always-mounted with opacity-gated visibility + 150ms
3
+ * transition — smooth fade in/out on pin / unpin.
4
+ *
5
+ * Pre-R181 the ring mounted/unmounted conditionally, snapping
6
+ * on every state change. Same vocabulary as R165/R180 smooth-
7
+ * pin-mirror family, applied at the legend-row scope.
8
+ *
9
+ * Test:
10
+ * 1. Idle: ring exists in DOM but opacity=0
11
+ * 2. Click 'working' legend row → ring for working = opacity=1
12
+ * 3. Other rings (idle / offline) stay opacity=0
13
+ * 4. Re-click 'working' → unpin → opacity returns to 0
14
+ * 5. All rings carry 'opacity 150ms ease-out' transition
15
+ */
16
+ import { chromium } from 'playwright';
17
+ import { readFileSync } from 'node:fs';
18
+
19
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
20
+ const browser = await chromium.launch({ headless: true });
21
+
22
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
23
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
24
+ await ctx.addInitScript(() => {
25
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
26
+ });
27
+
28
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
29
+ const stale = new Date(Date.now() - 10 * 60 * 1000).toISOString();
30
+ await ctx.route('**/api/hub/status*', async (route) => {
31
+ const r = await route.fetch();
32
+ const b = await r.json();
33
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
34
+ const mk = (alias, status, last) => ({
35
+ alias, status, model: 'claude-opus-4', runtime: 'cli-claude-code',
36
+ network_id: nid, project_dir: null,
37
+ created_at: last, updated_at: last, last_seen_at: last,
38
+ });
39
+ // Mix of statuses so all three legend rows render
40
+ await route.fulfill({ response: r, json: { ...b, sessions: [
41
+ mk('w1', 'working', fresh), mk('w2', 'working', fresh),
42
+ mk('i1', 'idle', fresh),
43
+ mk('o1', 'offline', stale),
44
+ ] } });
45
+ });
46
+ await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: { messages: [] } }));
47
+ await ctx.route('**/api/hub/tasks*', (route) => route.fulfill({ json: { tasks: [] } }));
48
+
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
51
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
52
+ await page.waitForSelector('[data-legend-pin-ring]', { timeout: 10000 });
53
+ await page.waitForTimeout(400);
54
+
55
+ const probe = () => page.evaluate(() => {
56
+ const grab = (k) => {
57
+ const r = document.querySelector(`[data-legend-pin-ring="${k}"]`);
58
+ return r ? {
59
+ opacity: parseFloat(r.getAttribute('opacity') || ''),
60
+ pinnedAttr: r.getAttribute('data-legend-pin-ring-pinned'),
61
+ transition: r.style.transition || getComputedStyle(r).transition,
62
+ } : null;
63
+ };
64
+ return {
65
+ working: grab('working'),
66
+ idle: grab('idle'),
67
+ offline: grab('offline'),
68
+ };
69
+ });
70
+
71
+ const idle = await probe();
72
+
73
+ // Pin 'working' status by clicking the legend row
74
+ await page.locator('[data-legend-status="working"]').click();
75
+ await page.waitForTimeout(250);
76
+ const afterPin = await probe();
77
+
78
+ // Re-click to unpin
79
+ await page.locator('[data-legend-status="working"]').click();
80
+ await page.waitForTimeout(250);
81
+ const afterUnpin = await probe();
82
+
83
+ await browser.close();
84
+
85
+ const hasTransition = (s) =>
86
+ (s?.transition || '').includes('opacity 150ms') ||
87
+ /opacity\s+0\.15s|opacity\s+150ms/.test(s?.transition || '');
88
+
89
+ const results = {
90
+ // Idle (no pin)
91
+ three_rings_present: idle.working !== null && idle.idle !== null && idle.offline !== null,
92
+ idle_working_opacity_0: idle.working?.opacity === 0,
93
+ idle_idle_opacity_0: idle.idle?.opacity === 0,
94
+ idle_offline_opacity_0: idle.offline?.opacity === 0,
95
+ all_have_transition: hasTransition(idle.working) && hasTransition(idle.idle) && hasTransition(idle.offline),
96
+
97
+ // After pin working
98
+ pin_working_opacity_1: afterPin.working?.opacity === 1,
99
+ pin_working_pinned_attr: afterPin.working?.pinnedAttr === 'true',
100
+ pin_idle_stays_0: afterPin.idle?.opacity === 0,
101
+ pin_offline_stays_0: afterPin.offline?.opacity === 0,
102
+
103
+ // After unpin
104
+ unpin_working_opacity_0: afterUnpin.working?.opacity === 0,
105
+ unpin_working_pinned_attr: afterUnpin.working?.pinnedAttr === 'false',
106
+ };
107
+ const ok = Object.values(results).every(Boolean);
108
+ console.log(`${ok ? '✅' : '❌'} legend pin-ring fade:`, JSON.stringify(results),
109
+ `\n idle =`, idle,
110
+ `\n pinned =`, afterPin,
111
+ `\n unpinned =`, afterUnpin);
112
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,101 @@
1
+ /* Round 180 verification: working / online / vendor-letter chips
2
+ * pick up box-shadow transition on pin/unpin.
3
+ *
4
+ * Pre-R180 the inset-ring pin-mirror style snapped instantly when
5
+ * the user pinned or unpinned a filter via these three chip
6
+ * surfaces. R165 had added the transition to pressure-bar
7
+ * segments only — R180 closes the smooth-pin-mirror family
8
+ * across all chip-row pinnable surfaces.
9
+ *
10
+ * Test:
11
+ * 1. Mock 3 working sessions across 2 vendors (claude + 书生)
12
+ * 2. Probe inline transition on working / online / vendor chips
13
+ * 3. All three should have 'box-shadow 150ms ease-out' in their
14
+ * inline transition style
15
+ */
16
+ import { chromium } from 'playwright';
17
+ import { readFileSync } from 'node:fs';
18
+
19
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
20
+ const browser = await chromium.launch({ headless: true });
21
+
22
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
23
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
24
+ await ctx.addInitScript(() => {
25
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
26
+ });
27
+
28
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
29
+ await ctx.route('**/api/hub/status*', async (route) => {
30
+ const r = await route.fetch();
31
+ const b = await r.json();
32
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
33
+ // Two distinct vendor families so vendor letter chip shows up
34
+ // (vendorDist.length > 1 requirement).
35
+ const mk = (alias, model) => ({
36
+ alias, status: 'working', model, runtime: 'cli-claude-code',
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: [
41
+ mk('alpha', 'claude-opus-4'),
42
+ mk('beta', 'claude-opus-4'),
43
+ mk('gamma', 'intern-s1-mini'),
44
+ ] } });
45
+ });
46
+ await ctx.route('**/api/hub/messages*', (route) => route.fulfill({ json: { messages: [] } }));
47
+ await ctx.route('**/api/hub/tasks*', (route) => route.fulfill({ json: { tasks: [] } }));
48
+
49
+ const page = await ctx.newPage();
50
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
51
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 3, { timeout: 30000 });
52
+ await page.waitForSelector('[data-working-chip]', { timeout: 10000 });
53
+ await page.waitForSelector('[data-vendor-letter]', { timeout: 10000 });
54
+ await page.waitForTimeout(400);
55
+
56
+ const probe = async () => page.evaluate(() => {
57
+ const grab = (sel) => {
58
+ const el = document.querySelector(sel);
59
+ return el ? {
60
+ transition: el.style.transition || getComputedStyle(el).transition || '',
61
+ boxShadow: el.style.boxShadow || getComputedStyle(el).boxShadow || '',
62
+ } : null;
63
+ };
64
+ return {
65
+ working: grab('[data-working-chip]'),
66
+ online: grab('[data-online-chip-clickable]'),
67
+ vendor: grab('[data-vendor-letter]'),
68
+ };
69
+ });
70
+
71
+ const idle = await probe();
72
+
73
+ // Click the working chip to pin → boxShadow should appear
74
+ await page.locator('[data-working-chip]').click();
75
+ await page.waitForTimeout(250);
76
+ const pinnedWorking = await probe();
77
+
78
+ await browser.close();
79
+
80
+ const hasTransition = (s) =>
81
+ (s?.transition || '').includes('box-shadow 150ms') ||
82
+ /box-shadow\s+0\.15s|box-shadow\s+150ms/.test(s?.transition || '');
83
+
84
+ const results = {
85
+ working_found: idle.working !== null,
86
+ online_found: idle.online !== null,
87
+ vendor_found: idle.vendor !== null,
88
+ working_has_bs_transition: hasTransition(idle.working),
89
+ online_has_bs_transition: hasTransition(idle.online),
90
+ vendor_has_bs_transition: hasTransition(idle.vendor),
91
+ // Pre-pin: no inset rings on working chip
92
+ working_idle_no_inset: !(idle.working?.boxShadow || '').includes('inset'),
93
+ // After pin: inset rings appear, transition still set
94
+ working_pinned_has_inset: (pinnedWorking.working?.boxShadow || '').includes('inset'),
95
+ working_pinned_keeps_transition: hasTransition(pinnedWorking.working),
96
+ };
97
+ const ok = Object.values(results).every(Boolean);
98
+ console.log(`${ok ? '✅' : '❌'} pin-mirror transition:`, JSON.stringify(results),
99
+ `\n idle =`, idle,
100
+ `\n pinned =`, pinnedWorking);
101
+ process.exit(ok ? 0 : 1);
@@ -72,7 +72,13 @@ const readChip = () => p1.evaluate(() => {
72
72
  tabindex: chip?.getAttribute('tabindex'),
73
73
  pinMirror: chip?.getAttribute('data-pin-mirror'),
74
74
  ariaPressed: chip?.getAttribute('aria-pressed'),
75
- boxShadow: chip?.getAttribute('style')?.includes('box-shadow'),
75
+ // R180 fix: probe the box-shadow PROPERTY value, not a
76
+ // substring match on the style attribute. Pre-R180 the
77
+ // inline style only contained 'box-shadow' when pinned;
78
+ // R180 added 'transition: box-shadow 150ms ease-out' that
79
+ // also matches the substring even when unpinned. Read the
80
+ // actual property to keep the assertion precise.
81
+ boxShadow: !!(chip && chip.style && chip.style.boxShadow),
76
82
  cursor: chip?.getAttribute('style')?.includes('cursor: pointer'),
77
83
  };
78
84
  });