@sleep2agi/agent-network-dashboard 0.4.6-preview.253 → 0.4.6-preview.255

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 (141) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +4 -4
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/admin.html +1 -1
  21. package/.next/server/app/admin.rsc +1 -1
  22. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  28. package/.next/server/app/index.html +2 -2
  29. package/.next/server/app/index.rsc +2 -2
  30. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  31. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/login.html +2 -2
  37. package/.next/server/app/login.rsc +2 -2
  38. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/server-logs.html +1 -1
  78. package/.next/server/app/server-logs.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  84. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  85. package/.next/server/app/settings/networks.html +1 -1
  86. package/.next/server/app/settings/networks.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  93. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  94. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/settings/tokens.html +1 -1
  96. package/.next/server/app/settings/tokens.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  103. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  104. package/.next/server/app/settings.html +2 -2
  105. package/.next/server/app/settings.rsc +2 -2
  106. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  107. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  110. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  111. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  112. package/.next/server/app/tasks.html +1 -1
  113. package/.next/server/app/tasks.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  120. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
  121. package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
  122. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
  123. package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
  124. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
  125. package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
  126. package/.next/server/middleware-build-manifest.js +3 -3
  127. package/.next/server/pages/404.html +1 -1
  128. package/.next/server/pages/500.html +1 -1
  129. package/.next/static/chunks/{0uxqh~9coei_k.js → 0l9-fuqv0.8hs.js} +1 -1
  130. package/.next/static/chunks/0ls5ub379gwuh.js +4 -0
  131. package/.next/static/chunks/{02_k5atd08kac.js → 0r0~xrrd_ww~t.js} +1 -1
  132. package/.next/trace +2 -2
  133. package/.next/trace-build +1 -1
  134. package/app/components/TopoGraph.tsx +47 -6
  135. package/package.json +1 -1
  136. package/scripts/topo-groupbox-hubcore-ease-test.mjs +106 -0
  137. package/scripts/topo-panel-theme-ease-test.mjs +85 -0
  138. package/.next/static/chunks/10aot7mzorojw.js +0 -4
  139. /package/.next/static/{HTqLn-8m1brV0lCLDaPJk → CNet9a9Bwooa-6U9T5a5Y}/_buildManifest.js +0 -0
  140. /package/.next/static/{HTqLn-8m1brV0lCLDaPJk → CNet9a9Bwooa-6U9T5a5Y}/_clientMiddlewareManifest.js +0 -0
  141. /package/.next/static/{HTqLn-8m1brV0lCLDaPJk → CNet9a9Bwooa-6U9T5a5Y}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":279,"timestamp":91454847928,"id":4,"parentId":1,"tags":{},"startTime":1778899427094,"traceId":"78131b287cc0212f"},{"name":"load-custom-routes","duration":445,"timestamp":91454848358,"id":5,"parentId":1,"tags":{},"startTime":1778899427095,"traceId":"78131b287cc0212f"},{"name":"create-dist-dir","duration":707,"timestamp":91454848841,"id":6,"parentId":1,"tags":{},"startTime":1778899427095,"traceId":"78131b287cc0212f"},{"name":"clean","duration":29189,"timestamp":91454850400,"id":7,"parentId":1,"tags":{},"startTime":1778899427097,"traceId":"78131b287cc0212f"},{"name":"discover-routes","duration":27443,"timestamp":91454969147,"id":8,"parentId":1,"tags":{},"startTime":1778899427215,"traceId":"78131b287cc0212f"},{"name":"create-root-mapping","duration":176,"timestamp":91454996664,"id":9,"parentId":1,"tags":{},"startTime":1778899427243,"traceId":"78131b287cc0212f"},{"name":"generate-route-types","duration":20676,"timestamp":91454999754,"id":10,"parentId":1,"tags":{},"startTime":1778899427246,"traceId":"78131b287cc0212f"},{"name":"public-dir-conflict-check","duration":124,"timestamp":91455020520,"id":11,"parentId":1,"tags":{},"startTime":1778899427267,"traceId":"78131b287cc0212f"},{"name":"generate-routes-manifest","duration":4814,"timestamp":91455020818,"id":12,"parentId":1,"tags":{},"startTime":1778899427267,"traceId":"78131b287cc0212f"},{"name":"run-turbopack","duration":5934403,"timestamp":91455030882,"id":14,"parentId":1,"tags":{},"startTime":1778899427277,"traceId":"78131b287cc0212f"},{"name":"turbopack-build-events","duration":73,"timestamp":91455321204,"id":15,"parentId":1,"tags":{},"startTime":1778899427567,"traceId":"78131b287cc0212f"},{"name":"run-typescript","duration":9812812,"timestamp":91460973700,"id":16,"parentId":1,"tags":{},"startTime":1778899433220,"traceId":"78131b287cc0212f"},{"name":"generate-required-server-files","duration":2868,"timestamp":91470787849,"id":18,"parentId":1,"tags":{},"startTime":1778899443034,"traceId":"78131b287cc0212f"},{"name":"check-static-error-page","duration":15175,"timestamp":91471008965,"id":20,"parentId":19,"tags":{},"startTime":1778899443255,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":484946,"timestamp":91471026544,"id":63,"parentId":22,"tags":{},"startTime":1778899443273,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":499412,"timestamp":91471012384,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778899443259,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":581437,"timestamp":91471027217,"id":67,"parentId":28,"tags":{},"startTime":1778899443273,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":592383,"timestamp":91471016374,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778899443263,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":586694,"timestamp":91471027758,"id":70,"parentId":32,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":597279,"timestamp":91471017245,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778899443264,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":590367,"timestamp":91471026923,"id":66,"parentId":27,"tags":{},"startTime":1778899443273,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":601172,"timestamp":91471016194,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778899443262,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":595949,"timestamp":91471026682,"id":64,"parentId":25,"tags":{},"startTime":1778899443273,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":606932,"timestamp":91471015780,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778899443262,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":595531,"timestamp":91471027408,"id":68,"parentId":29,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":606617,"timestamp":91471016540,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778899443263,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":595483,"timestamp":91471027918,"id":72,"parentId":34,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":605833,"timestamp":91471017619,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778899443264,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":598118,"timestamp":91471026161,"id":62,"parentId":21,"tags":{},"startTime":1778899443272,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":613635,"timestamp":91471010707,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778899443257,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":603050,"timestamp":91471027559,"id":69,"parentId":30,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":613926,"timestamp":91471016732,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778899443263,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":606551,"timestamp":91471027835,"id":71,"parentId":33,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":616974,"timestamp":91471017453,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778899443264,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":611305,"timestamp":91471028811,"id":78,"parentId":40,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":621124,"timestamp":91471019033,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":616859,"timestamp":91471028821,"id":79,"parentId":41,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":626563,"timestamp":91471019162,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":622444,"timestamp":91471028775,"id":75,"parentId":37,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":632690,"timestamp":91471018576,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":622751,"timestamp":91471028831,"id":80,"parentId":42,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":632332,"timestamp":91471019289,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":626797,"timestamp":91471026808,"id":65,"parentId":26,"tags":{},"startTime":1778899443273,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":637678,"timestamp":91471015968,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778899443262,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":625269,"timestamp":91471028724,"id":74,"parentId":36,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":635700,"timestamp":91471018361,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":630944,"timestamp":91471028871,"id":84,"parentId":46,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":640053,"timestamp":91471019817,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":633042,"timestamp":91471028840,"id":81,"parentId":43,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":642485,"timestamp":91471019436,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":634418,"timestamp":91471027950,"id":73,"parentId":35,"tags":{},"startTime":1778899443274,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":644624,"timestamp":91471017782,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778899443264,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":639185,"timestamp":91471028861,"id":83,"parentId":45,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":648392,"timestamp":91471019691,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":639859,"timestamp":91471028882,"id":85,"parentId":47,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":648854,"timestamp":91471019942,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":650504,"timestamp":91471028801,"id":77,"parentId":39,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":660503,"timestamp":91471018884,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":649356,"timestamp":91471030376,"id":86,"parentId":48,"tags":{},"startTime":1778899443277,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":659740,"timestamp":91471020043,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":652657,"timestamp":91471028850,"id":82,"parentId":44,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":661992,"timestamp":91471019564,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":650579,"timestamp":91471035374,"id":89,"parentId":31,"tags":{},"startTime":1778899443282,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":669118,"timestamp":91471016900,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778899443263,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":670900,"timestamp":91471030403,"id":87,"parentId":49,"tags":{},"startTime":1778899443277,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":681257,"timestamp":91471020143,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778899443266,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":681214,"timestamp":91471034151,"id":88,"parentId":24,"tags":{},"startTime":1778899443280,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":702450,"timestamp":91471012996,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778899443259,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":705319,"timestamp":91471028791,"id":76,"parentId":38,"tags":{},"startTime":1778899443275,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":715448,"timestamp":91471018736,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778899443265,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":704233,"timestamp":91471037999,"id":96,"parentId":56,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":719139,"timestamp":91471023164,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778899443269,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":711537,"timestamp":91471038032,"id":97,"parentId":57,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":726301,"timestamp":91471023331,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778899443270,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":715841,"timestamp":91471037964,"id":93,"parentId":52,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":731589,"timestamp":91471022273,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778899443269,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":720505,"timestamp":91471038042,"id":98,"parentId":59,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":734845,"timestamp":91471023754,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778899443270,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":721257,"timestamp":91471037933,"id":91,"parentId":50,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":737293,"timestamp":91471021973,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778899443268,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":728918,"timestamp":91471037950,"id":92,"parentId":51,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":744767,"timestamp":91471022149,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778899443268,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":729178,"timestamp":91471038060,"id":99,"parentId":60,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":743449,"timestamp":91471023849,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778899443270,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":722379,"timestamp":91471045551,"id":101,"parentId":58,"tags":{},"startTime":1778899443292,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":744521,"timestamp":91471023459,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778899443270,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":730025,"timestamp":91471038077,"id":100,"parentId":61,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":744347,"timestamp":91471023942,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778899443270,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":709746,"timestamp":91471065164,"id":102,"parentId":55,"tags":{},"startTime":1778899443311,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":752216,"timestamp":91471022737,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778899443269,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":740919,"timestamp":91471037907,"id":90,"parentId":23,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":766156,"timestamp":91471012716,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778899443259,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":742657,"timestamp":91471037977,"id":94,"parentId":53,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":758250,"timestamp":91471022428,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778899443269,"traceId":"78131b287cc0212f"},{"name":"is-page-static","duration":746680,"timestamp":91471037986,"id":95,"parentId":54,"tags":{},"startTime":1778899443284,"traceId":"78131b287cc0212f"},{"name":"check-page","duration":762127,"timestamp":91471022572,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778899443269,"traceId":"78131b287cc0212f"},{"name":"static-check","duration":776952,"timestamp":91471007782,"id":19,"parentId":1,"tags":{},"startTime":1778899443254,"traceId":"78131b287cc0212f"},{"name":"write-routes-manifest","duration":516,"timestamp":91471792042,"id":104,"parentId":1,"tags":{},"startTime":1778899444038,"traceId":"78131b287cc0212f"},{"name":"load-dotenv","duration":68,"timestamp":91471808378,"id":107,"parentId":106,"tags":{},"startTime":1778899444055,"traceId":"78131b287cc0212f"},{"name":"run-export-path-map","duration":608,"timestamp":91471811806,"id":108,"parentId":106,"tags":{},"startTime":1778899444058,"traceId":"78131b287cc0212f"},{"name":"next-export","duration":629909,"timestamp":91471807070,"id":106,"parentId":1,"tags":{},"startTime":1778899444053,"traceId":"78131b287cc0212f"}]
2
- [{"name":"move-exported-app-not-found-","duration":3007,"timestamp":91472441688,"id":109,"parentId":105,"tags":{},"startTime":1778899444688,"traceId":"78131b287cc0212f"},{"name":"move-exported-app-global-error-","duration":716,"timestamp":91472444821,"id":110,"parentId":105,"tags":{},"startTime":1778899444691,"traceId":"78131b287cc0212f"},{"name":"static-generation","duration":648122,"timestamp":91471799453,"id":105,"parentId":1,"tags":{},"startTime":1778899444046,"traceId":"78131b287cc0212f"},{"name":"write-routes-manifest","duration":410,"timestamp":91472447752,"id":111,"parentId":1,"tags":{},"startTime":1778899444694,"traceId":"78131b287cc0212f"},{"name":"print-tree-view","duration":4704,"timestamp":91472466744,"id":112,"parentId":1,"tags":{},"startTime":1778899444713,"traceId":"78131b287cc0212f"},{"name":"write-route-bundle-stats","duration":13710,"timestamp":91472471502,"id":113,"parentId":1,"tags":{},"startTime":1778899444718,"traceId":"78131b287cc0212f"},{"name":"telemetry-flush","duration":21899,"timestamp":91472485250,"id":114,"parentId":1,"tags":{},"startTime":1778899444732,"traceId":"78131b287cc0212f"},{"name":"next-build","duration":17711667,"timestamp":91454795511,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899427042,"traceId":"78131b287cc0212f"}]
1
+ [{"name":"generate-buildid","duration":326,"timestamp":92059557046,"id":4,"parentId":1,"tags":{},"startTime":1778900031803,"traceId":"0ba1af1bb1779032"},{"name":"load-custom-routes","duration":465,"timestamp":92059557525,"id":5,"parentId":1,"tags":{},"startTime":1778900031804,"traceId":"0ba1af1bb1779032"},{"name":"create-dist-dir","duration":737,"timestamp":92059558061,"id":6,"parentId":1,"tags":{},"startTime":1778900031804,"traceId":"0ba1af1bb1779032"},{"name":"clean","duration":33315,"timestamp":92059559538,"id":7,"parentId":1,"tags":{},"startTime":1778900031806,"traceId":"0ba1af1bb1779032"},{"name":"discover-routes","duration":28520,"timestamp":92059681958,"id":8,"parentId":1,"tags":{},"startTime":1778900031928,"traceId":"0ba1af1bb1779032"},{"name":"create-root-mapping","duration":198,"timestamp":92059710570,"id":9,"parentId":1,"tags":{},"startTime":1778900031957,"traceId":"0ba1af1bb1779032"},{"name":"generate-route-types","duration":23457,"timestamp":92059714304,"id":10,"parentId":1,"tags":{},"startTime":1778900031961,"traceId":"0ba1af1bb1779032"},{"name":"public-dir-conflict-check","duration":116,"timestamp":92059737858,"id":11,"parentId":1,"tags":{},"startTime":1778900031984,"traceId":"0ba1af1bb1779032"},{"name":"generate-routes-manifest","duration":5015,"timestamp":92059738123,"id":12,"parentId":1,"tags":{},"startTime":1778900031984,"traceId":"0ba1af1bb1779032"},{"name":"run-turbopack","duration":5861609,"timestamp":92059756563,"id":14,"parentId":1,"tags":{},"startTime":1778900032003,"traceId":"0ba1af1bb1779032"},{"name":"turbopack-build-events","duration":99,"timestamp":92060065548,"id":15,"parentId":1,"tags":{},"startTime":1778900032312,"traceId":"0ba1af1bb1779032"},{"name":"run-typescript","duration":9548879,"timestamp":92065627676,"id":16,"parentId":1,"tags":{},"startTime":1778900037874,"traceId":"0ba1af1bb1779032"},{"name":"generate-required-server-files","duration":2786,"timestamp":92075177701,"id":18,"parentId":1,"tags":{},"startTime":1778900047424,"traceId":"0ba1af1bb1779032"},{"name":"check-static-error-page","duration":14963,"timestamp":92075374876,"id":20,"parentId":19,"tags":{},"startTime":1778900047621,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":600621,"timestamp":92075394043,"id":67,"parentId":28,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":612583,"timestamp":92075382245,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":612388,"timestamp":92075395156,"id":69,"parentId":30,"tags":{},"startTime":1778900047641,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":625104,"timestamp":92075382519,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":629758,"timestamp":92075393326,"id":63,"parentId":22,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":644854,"timestamp":92075378333,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":676072,"timestamp":92075393473,"id":64,"parentId":25,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":687879,"timestamp":92075381739,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":676125,"timestamp":92075395363,"id":70,"parentId":32,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":688629,"timestamp":92075382920,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":707549,"timestamp":92075395552,"id":73,"parentId":35,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":720016,"timestamp":92075383382,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":717958,"timestamp":92075395517,"id":72,"parentId":34,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":730310,"timestamp":92075383235,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":729614,"timestamp":92075393738,"id":66,"parentId":27,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":741326,"timestamp":92075382093,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":732314,"timestamp":92075395668,"id":74,"parentId":36,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":744177,"timestamp":92075383893,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":735134,"timestamp":92075395702,"id":75,"parentId":37,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":746743,"timestamp":92075384148,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1778900047630,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":736699,"timestamp":92075395735,"id":77,"parentId":39,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":748046,"timestamp":92075384440,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":740331,"timestamp":92075392888,"id":62,"parentId":21,"tags":{},"startTime":1778900047639,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":756714,"timestamp":92075376592,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778900047623,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":743590,"timestamp":92075395770,"id":78,"parentId":40,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":754862,"timestamp":92075384557,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":748392,"timestamp":92075395780,"id":79,"parentId":41,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":759562,"timestamp":92075384656,"id":41,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":748770,"timestamp":92075395807,"id":81,"parentId":43,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":759744,"timestamp":92075384876,"id":43,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":750734,"timestamp":92075395815,"id":82,"parentId":44,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":761610,"timestamp":92075384975,"id":44,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":757631,"timestamp":92075395720,"id":76,"parentId":38,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":769085,"timestamp":92075384325,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":757721,"timestamp":92075395842,"id":84,"parentId":46,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":768262,"timestamp":92075385328,"id":46,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":759937,"timestamp":92075395829,"id":83,"parentId":45,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":770616,"timestamp":92075385190,"id":45,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":763490,"timestamp":92075396081,"id":87,"parentId":49,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":773935,"timestamp":92075385682,"id":49,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":764441,"timestamp":92075395865,"id":86,"parentId":48,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":774757,"timestamp":92075385581,"id":48,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":767268,"timestamp":92075395856,"id":85,"parentId":47,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":777712,"timestamp":92075385469,"id":47,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":746807,"timestamp":92075417048,"id":89,"parentId":31,"tags":{},"startTime":1778900047663,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":781250,"timestamp":92075382651,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":749202,"timestamp":92075415535,"id":88,"parentId":24,"tags":{},"startTime":1778900047662,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":785943,"timestamp":92075378839,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":770265,"timestamp":92075395438,"id":71,"parentId":33,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":782665,"timestamp":92075383086,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":819070,"timestamp":92075393618,"id":65,"parentId":26,"tags":{},"startTime":1778900047640,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":830843,"timestamp":92075381931,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1778900047628,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":827047,"timestamp":92075395793,"id":80,"parentId":42,"tags":{},"startTime":1778900047642,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":838142,"timestamp":92075384772,"id":42,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1778900047631,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":801552,"timestamp":92075427127,"id":93,"parentId":52,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":842198,"timestamp":92075386558,"id":52,"parentId":19,"tags":{"page":"/messages"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":805784,"timestamp":92075426903,"id":90,"parentId":23,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":854138,"timestamp":92075378606,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1778900047625,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":811896,"timestamp":92075427183,"id":96,"parentId":56,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":851009,"timestamp":92075388138,"id":56,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1778900047634,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":813665,"timestamp":92075427217,"id":97,"parentId":57,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":852523,"timestamp":92075388415,"id":57,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":814431,"timestamp":92075426956,"id":92,"parentId":51,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":855077,"timestamp":92075386359,"id":51,"parentId":19,"tags":{"page":"/logs"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":816003,"timestamp":92075427235,"id":98,"parentId":59,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":854155,"timestamp":92075389153,"id":59,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":818231,"timestamp":92075427167,"id":95,"parentId":54,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":858331,"timestamp":92075387118,"id":54,"parentId":19,"tags":{"page":"/nodes"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":819971,"timestamp":92075426941,"id":91,"parentId":50,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":860810,"timestamp":92075386146,"id":50,"parentId":19,"tags":{"page":"/login"},"startTime":1778900047632,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":821934,"timestamp":92075427272,"id":100,"parentId":61,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":859723,"timestamp":92075389520,"id":61,"parentId":19,"tags":{"page":"/tasks"},"startTime":1778900047636,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":765791,"timestamp":92075485139,"id":101,"parentId":55,"tags":{},"startTime":1778900047731,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":863512,"timestamp":92075387468,"id":55,"parentId":19,"tags":{"page":"/"},"startTime":1778900047634,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":762849,"timestamp":92075490620,"id":102,"parentId":58,"tags":{},"startTime":1778900047737,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":864878,"timestamp":92075388640,"id":58,"parentId":19,"tags":{"page":"/settings"},"startTime":1778900047635,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":827189,"timestamp":92075427252,"id":99,"parentId":60,"tags":{},"startTime":1778900047674,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":865154,"timestamp":92075389346,"id":60,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1778900047636,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":870078,"timestamp":92075394952,"id":68,"parentId":29,"tags":{},"startTime":1778900047641,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":882719,"timestamp":92075382372,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1778900047629,"traceId":"0ba1af1bb1779032"},{"name":"is-page-static","duration":854647,"timestamp":92075427147,"id":94,"parentId":53,"tags":{},"startTime":1778900047673,"traceId":"0ba1af1bb1779032"},{"name":"check-page","duration":895045,"timestamp":92075386820,"id":53,"parentId":19,"tags":{"page":"/node"},"startTime":1778900047633,"traceId":"0ba1af1bb1779032"},{"name":"static-check","duration":908123,"timestamp":92075373809,"id":19,"parentId":1,"tags":{},"startTime":1778900047620,"traceId":"0ba1af1bb1779032"},{"name":"write-routes-manifest","duration":451,"timestamp":92076289573,"id":104,"parentId":1,"tags":{},"startTime":1778900048536,"traceId":"0ba1af1bb1779032"},{"name":"load-dotenv","duration":72,"timestamp":92076304627,"id":107,"parentId":106,"tags":{},"startTime":1778900048551,"traceId":"0ba1af1bb1779032"},{"name":"run-export-path-map","duration":561,"timestamp":92076307592,"id":108,"parentId":106,"tags":{},"startTime":1778900048554,"traceId":"0ba1af1bb1779032"},{"name":"next-export","duration":629142,"timestamp":92076302957,"id":106,"parentId":1,"tags":{},"startTime":1778900048549,"traceId":"0ba1af1bb1779032"}]
2
+ [{"name":"move-exported-app-not-found-","duration":2252,"timestamp":92076937526,"id":109,"parentId":105,"tags":{},"startTime":1778900049184,"traceId":"0ba1af1bb1779032"},{"name":"move-exported-app-global-error-","duration":1299,"timestamp":92076939900,"id":110,"parentId":105,"tags":{},"startTime":1778900049186,"traceId":"0ba1af1bb1779032"},{"name":"static-generation","duration":648504,"timestamp":92076294664,"id":105,"parentId":1,"tags":{},"startTime":1778900048541,"traceId":"0ba1af1bb1779032"},{"name":"write-routes-manifest","duration":517,"timestamp":92076943359,"id":111,"parentId":1,"tags":{},"startTime":1778900049190,"traceId":"0ba1af1bb1779032"},{"name":"print-tree-view","duration":3723,"timestamp":92076961696,"id":112,"parentId":1,"tags":{},"startTime":1778900049208,"traceId":"0ba1af1bb1779032"},{"name":"write-route-bundle-stats","duration":13619,"timestamp":92076965455,"id":113,"parentId":1,"tags":{},"startTime":1778900049212,"traceId":"0ba1af1bb1779032"},{"name":"telemetry-flush","duration":18030,"timestamp":92076979111,"id":114,"parentId":1,"tags":{},"startTime":1778900049225,"traceId":"0ba1af1bb1779032"},{"name":"next-build","duration":17499101,"timestamp":92059498090,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900031744,"traceId":"0ba1af1bb1779032"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5934403,"timestamp":91455030882,"id":14,"parentId":1,"tags":{},"startTime":1778899427277,"traceId":"78131b287cc0212f"},{"name":"turbopack-build-events","duration":73,"timestamp":91455321204,"id":15,"parentId":1,"tags":{},"startTime":1778899427567,"traceId":"78131b287cc0212f"},{"name":"run-typescript","duration":9812812,"timestamp":91460973700,"id":16,"parentId":1,"tags":{},"startTime":1778899433220,"traceId":"78131b287cc0212f"},{"name":"static-check","duration":776952,"timestamp":91471007782,"id":19,"parentId":1,"tags":{},"startTime":1778899443254,"traceId":"78131b287cc0212f"},{"name":"static-generation","duration":648122,"timestamp":91471799453,"id":105,"parentId":1,"tags":{},"startTime":1778899444046,"traceId":"78131b287cc0212f"},{"name":"telemetry-flush","duration":21899,"timestamp":91472485250,"id":114,"parentId":1,"tags":{},"startTime":1778899444732,"traceId":"78131b287cc0212f"},{"name":"next-build","duration":17711667,"timestamp":91454795511,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778899427042,"traceId":"78131b287cc0212f"}]
1
+ [{"name":"run-turbopack","duration":5861609,"timestamp":92059756563,"id":14,"parentId":1,"tags":{},"startTime":1778900032003,"traceId":"0ba1af1bb1779032"},{"name":"turbopack-build-events","duration":99,"timestamp":92060065548,"id":15,"parentId":1,"tags":{},"startTime":1778900032312,"traceId":"0ba1af1bb1779032"},{"name":"run-typescript","duration":9548879,"timestamp":92065627676,"id":16,"parentId":1,"tags":{},"startTime":1778900037874,"traceId":"0ba1af1bb1779032"},{"name":"static-check","duration":908123,"timestamp":92075373809,"id":19,"parentId":1,"tags":{},"startTime":1778900047620,"traceId":"0ba1af1bb1779032"},{"name":"static-generation","duration":648504,"timestamp":92076294664,"id":105,"parentId":1,"tags":{},"startTime":1778900048541,"traceId":"0ba1af1bb1779032"},{"name":"telemetry-flush","duration":18030,"timestamp":92076979111,"id":114,"parentId":1,"tags":{},"startTime":1778900049225,"traceId":"0ba1af1bb1779032"},{"name":"next-build","duration":17499101,"timestamp":92059498090,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778900031744,"traceId":"0ba1af1bb1779032"}]
@@ -3063,7 +3063,15 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
3063
3063
  // is preserved.
3064
3064
  filter={(isPinned || isHovered) ? 'url(#topo-groupbox-lift)' : undefined}
3065
3065
  style={{
3066
- transition: 'stroke 200ms ease-out, stroke-width 200ms ease-out, fill-opacity 200ms ease-out, filter 200ms ease-out',
3066
+ /* Round 248 / Loop: append fill 200ms ease-out to
3067
+ the existing R66 transition list. Pre-R248 the
3068
+ rect's fill (isLight ? '#0f172a' (slate-900) :
3069
+ '#a5b4fc' (indigo-300)) snapped on theme toggle
3070
+ while stroke / fill-opacity / filter all eased.
3071
+ Closes the last theme-toggle snap on the group
3072
+ box surface — same idiom R246 + R247 used at
3073
+ per-node label-card and side-panel scopes. */
3074
+ transition: 'stroke 200ms ease-out, stroke-width 200ms ease-out, fill-opacity 200ms ease-out, filter 200ms ease-out, fill 200ms ease-out',
3067
3075
  pointerEvents: 'none',
3068
3076
  // CSS var consumed by `.anet-topo-groupbox-live`
3069
3077
  // (line 877 of globals.css). React's CSSProperties
@@ -4036,8 +4044,24 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
4036
4044
  </circle>
4037
4045
  );
4038
4046
  })()}
4039
- {/* core — 20px diameter, larger inner highlight reads as a "lit lamp" */}
4040
- <circle cx={cx} cy={cy} r="10" fill={isLight ? '#059669' : '#10b981'} />
4047
+ {/* core — 20px diameter, larger inner highlight reads as a "lit lamp"
4048
+ Round 248 / Loop: hub center core gets a fill transition.
4049
+ Pre-R248 the core circle (the visual anchor at the centre
4050
+ of the canvas, fill=isLight ? '#059669' emerald-600 :
4051
+ '#10b981' emerald-500) hard-flipped on theme toggle —
4052
+ the most visually prominent element on the canvas
4053
+ snapping while everything else (R244 halo / R241 hub
4054
+ spokes / R246 label cards / R247 side panels) eased.
4055
+ Inline transition closes the gap. data-topo-hub-core
4056
+ attr added for test introspection (the parent <g> at
4057
+ line 3587 has data-topo-hub but the core specifically
4058
+ is the canvas anchor). */}
4059
+ <circle
4060
+ cx={cx} cy={cy} r="10"
4061
+ fill={isLight ? '#059669' : '#10b981'}
4062
+ data-topo-hub-core
4063
+ style={{ transition: 'fill 200ms ease-out' }}
4064
+ />
4041
4065
  {/* R130 / Loop: when workingCount > 0, the decorative inner
4042
4066
  highlight gets replaced with the workingCount digit. The
4043
4067
  R84 busyness breath already encodes the same metric
@@ -5263,13 +5287,25 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5263
5287
  pin status (R61). Reuses R18's KPI-card hover-
5264
5288
  elevation idiom for visual consistency. Theme-
5265
5289
  aware shadow colour stays the same; just the
5266
- spread + blur grow. */
5290
+ spread + blur grow.
5291
+
5292
+ Round 247 / Loop: extend the transition list to
5293
+ include fill + stroke + opacity at 200ms. R135
5294
+ already eased filter (hover drop-shadow); the
5295
+ three theme-driven properties (pal.legendBox.fill
5296
+ cyber #020617 ↔ light #ffffff, pal.legendBox.
5297
+ stroke cyber #1f2937 ↔ light #e2e8f0, opacity
5298
+ 0.92 ↔ 0.97) still snapped on theme toggle. Same
5299
+ per-element 4-property easing R246 added to the
5300
+ per-node label card chrome — now applied at the
5301
+ panel scope so the whole panel (background + chrome
5302
+ + shadow) eases as one unit through theme switches. */
5267
5303
  filter: hoveredPanel === 'recent'
5268
5304
  ? (isLight ? 'drop-shadow(0 4px 12px rgba(15,23,42,0.14))'
5269
5305
  : 'drop-shadow(0 4px 12px rgba(0,0,0,0.65))')
5270
5306
  : (isLight ? 'drop-shadow(0 2px 6px rgba(15,23,42,0.08))'
5271
5307
  : 'drop-shadow(0 2px 6px rgba(0,0,0,0.45))'),
5272
- transition: 'filter 200ms ease-out',
5308
+ transition: 'filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out',
5273
5309
  }}
5274
5310
  data-topo-panel-elevation="recent"
5275
5311
  />
@@ -5932,6 +5968,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5932
5968
  rect at line ~3299. Both panels grow their shadow on
5933
5969
  hover to telegraph "the chrome is interactive" since
5934
5970
  their rows pin / nav. */}
5971
+ {/* Round 247 / Loop: sibling treatment to the recent-signal
5972
+ panel — fill + stroke + opacity transitions added so
5973
+ the legend panel also eases through theme toggles
5974
+ (no snap on cyber↔light switch). Same 200ms cadence
5975
+ across the panel pair. */}
5935
5976
  <rect
5936
5977
  x="0" y="0" width="224" height="104" rx="10"
5937
5978
  fill={pal.legendBox.fill}
@@ -5943,7 +5984,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
5943
5984
  : 'drop-shadow(0 4px 12px rgba(0,0,0,0.65))')
5944
5985
  : (isLight ? 'drop-shadow(0 2px 6px rgba(15,23,42,0.08))'
5945
5986
  : 'drop-shadow(0 2px 6px rgba(0,0,0,0.45))'),
5946
- transition: 'filter 200ms ease-out',
5987
+ transition: 'filter 200ms ease-out, fill 200ms ease-out, stroke 200ms ease-out, opacity 200ms ease-out',
5947
5988
  }}
5948
5989
  data-topo-panel-elevation="legend"
5949
5990
  />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.6-preview.253",
3
+ "version": "0.4.6-preview.255",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -0,0 +1,106 @@
1
+ /* Round 248 verification: two more theme-toggle snap closures:
2
+ *
3
+ * 1. Group box <rect> (#111 / R66): existing transition list
4
+ * 'stroke + stroke-width + fill-opacity + filter 200ms' grows
5
+ * to include 'fill 200ms'. The rect's theme-driven fill
6
+ * (isLight ? slate-900 : indigo-300) no longer snaps.
7
+ *
8
+ * 2. Hub center core <circle> (the visual anchor at canvas
9
+ * centre, fill=isLight ? emerald-600 : emerald-500): had NO
10
+ * transition at all — most prominent element on canvas was
11
+ * flipping in one frame while everything around it eased.
12
+ * R248 adds inline 'fill 200ms ease-out' + data-topo-hub-
13
+ * core attr for test introspection.
14
+ *
15
+ * Test scope:
16
+ * - Hub core probe ([data-topo-hub-core]): present, has fill
17
+ * attribute, transition contains 'fill 200ms' (or 0.2s)
18
+ * - Group box probe ([data-group-label]) → climb to its
19
+ * <rect> sibling — needs grid layout + ≥2 prefix-shared
20
+ * aliases. Probe its style.transition for 'fill 200ms'
21
+ * alongside the existing R66 properties.
22
+ */
23
+ import { chromium } from 'playwright';
24
+ import { readFileSync } from 'node:fs';
25
+
26
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
27
+ const browser = await chromium.launch({ headless: true });
28
+ // Hub core renders only in ring layout; group boxes only in grid.
29
+ // Two contexts back-to-back.
30
+ async function setupLayout(layout) {
31
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
32
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
33
+ await ctx.addInitScript((l) => {
34
+ try {
35
+ localStorage.setItem('anet-theme', 'cyber');
36
+ sessionStorage.setItem('anet_v3_auth', '1');
37
+ localStorage.setItem('anet-topo-layout', l);
38
+ } catch {}
39
+ }, layout);
40
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
41
+ await ctx.route('**/api/hub/status*', async (route) => {
42
+ const r = await route.fetch();
43
+ const b = await r.json();
44
+ const nid = (b.sessions || [])[0]?.network_id || 'default';
45
+ const mk = (alias) => ({
46
+ alias, status: 'working', model: 'claude-opus-4', runtime: 'claude-code-cli',
47
+ network_id: nid, project_dir: null,
48
+ created_at: fresh, updated_at: fresh, last_seen_at: fresh,
49
+ });
50
+ // 3 alpha-prefix + 1 delta — R106 cluster makes ONE alpha group box in grid
51
+ await route.fulfill({ response: r, json: { ...b, sessions: [
52
+ mk('alpha-1'), mk('alpha-2'), mk('alpha-3'), mk('delta'),
53
+ ] } });
54
+ });
55
+ await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
56
+ await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
57
+ const page = await ctx.newPage();
58
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
59
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
60
+ await page.waitForTimeout(400);
61
+ return page;
62
+ }
63
+
64
+ // Scenario A: ring → hub core
65
+ const pageRing = await setupLayout('ring');
66
+ await pageRing.waitForSelector('[data-topo-hub-core]', { timeout: 10000, state: 'attached' });
67
+ const hub = await pageRing.evaluate(() => {
68
+ const el = document.querySelector('[data-topo-hub-core]');
69
+ return el ? { fill: el.getAttribute('fill'), transition: el.style.transition } : null;
70
+ });
71
+ await pageRing.close();
72
+
73
+ // Scenario B: grid → group box <rect>
74
+ const pageGrid = await setupLayout('grid');
75
+ // Wait for group label (signals group box has been mounted alongside)
76
+ await pageGrid.waitForSelector('[data-group-label]', { timeout: 10000, state: 'attached' });
77
+ const groupBox = await pageGrid.evaluate(() => {
78
+ const allRects = Array.from(document.querySelectorAll('rect'));
79
+ const found = allRects.find(r => r.getAttribute('rx') === '14'
80
+ && r.style && /fill\s+200ms/.test(r.style.transition || ''));
81
+ return found ? { fill: found.getAttribute('fill'), transition: found.style.transition } : null;
82
+ });
83
+ await pageGrid.close();
84
+
85
+ const out = { hub, groupBox };
86
+ await browser.close();
87
+
88
+ const hasProp = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
89
+
90
+ const results = {
91
+ hub_present: out.hub !== null,
92
+ hub_has_fill_attr: typeof out.hub?.fill === 'string' && out.hub.fill.length > 0,
93
+ hub_transition_has_fill: hasProp(out.hub?.transition, 'fill'),
94
+
95
+ groupbox_present: out.groupBox !== null,
96
+ groupbox_has_fill_attr: typeof out.groupBox?.fill === 'string' && out.groupBox.fill.length > 0,
97
+ groupbox_transition_stroke: hasProp(out.groupBox?.transition, 'stroke'),
98
+ groupbox_transition_fill_op: hasProp(out.groupBox?.transition, 'fill-opacity'),
99
+ groupbox_transition_filter: hasProp(out.groupBox?.transition, 'filter'),
100
+ groupbox_transition_fill: hasProp(out.groupBox?.transition, 'fill'),
101
+ };
102
+ const ok = Object.values(results).every(Boolean);
103
+ console.log(`${ok ? '✅' : '❌'} groupbox + hubcore ease:`, JSON.stringify(results),
104
+ '\n hub: ', out.hub,
105
+ '\n groupBox:', out.groupBox);
106
+ process.exit(ok ? 0 : 1);
@@ -0,0 +1,85 @@
1
+ /* Round 247 verification: recent-signal + legend panel chrome
2
+ * <rect>s pick up fill + stroke + opacity in their transition
3
+ * lists, completing the per-panel theme-toggle smoothing.
4
+ *
5
+ * Pre-R247 each panel rect transition was 'filter 200ms ease-out'
6
+ * (R135 hover-elevation drop-shadow). Three theme-driven properties
7
+ * snapped on theme toggle:
8
+ * - fill: pal.legendBox.fill (cyber #020617 ↔ light #ffffff)
9
+ * - stroke: pal.legendBox.stroke (cyber #1f2937 ↔ light #e2e8f0)
10
+ * - opacity: 0.92 cyber ↔ 0.97 light
11
+ *
12
+ * R247 adds all three to the transition list at 200ms ease-out.
13
+ * Mirrors R246's per-node label-card treatment at the panel scope.
14
+ *
15
+ * Test scope per panel:
16
+ * - element present at [data-topo-panel-elevation]
17
+ * - style.transition contains filter, fill, stroke, AND opacity
18
+ * each at 200ms (or 0.2s browser-normalised)
19
+ */
20
+ import { chromium } from 'playwright';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
24
+ const browser = await chromium.launch({ headless: true });
25
+ const ctx = await browser.newContext({ viewport: { width: 1500, height: 1500 } });
26
+ await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
27
+ await ctx.addInitScript(() => {
28
+ try { localStorage.setItem('anet-theme', 'cyber'); sessionStorage.setItem('anet_v3_auth', '1'); } catch {}
29
+ });
30
+ const fresh = new Date(Date.now() - 60 * 1000).toISOString();
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: 'working', 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: [
41
+ mk('alpha'), mk('beta'), mk('gamma'), mk('delta'),
42
+ ] } });
43
+ });
44
+ await ctx.route('**/api/hub/messages*', (r2) => r2.fulfill({ json: { messages: [] } }));
45
+ await ctx.route('**/api/hub/tasks*', (r2) => r2.fulfill({ json: { tasks: [] } }));
46
+
47
+ const page = await ctx.newPage();
48
+ await page.goto('http://127.0.0.1:3000/', { waitUntil: 'domcontentloaded' });
49
+ await page.waitForFunction(() => document.querySelectorAll('g[data-node]').length === 4, { timeout: 30000 });
50
+ await page.waitForSelector('[data-topo-panel-elevation="recent"]', { timeout: 10000, state: 'attached' });
51
+ await page.waitForSelector('[data-topo-panel-elevation="legend"]', { timeout: 10000, state: 'attached' });
52
+ await page.waitForTimeout(300);
53
+
54
+ const probe = await page.evaluate(() => {
55
+ const grab = (panel) => {
56
+ const r = document.querySelector(`[data-topo-panel-elevation="${panel}"]`);
57
+ if (!r) return null;
58
+ return { transition: r.style.transition };
59
+ };
60
+ return {
61
+ recent: grab('recent'),
62
+ legend: grab('legend'),
63
+ };
64
+ });
65
+ await browser.close();
66
+
67
+ const hasProp = (s, prop) => new RegExp(`${prop}\\s+(?:200ms|0\\.2s)`).test(s || '');
68
+
69
+ const results = {
70
+ recent_present: probe.recent !== null,
71
+ recent_has_filter_200: hasProp(probe.recent?.transition, 'filter'),
72
+ recent_has_fill_200: hasProp(probe.recent?.transition, 'fill'),
73
+ recent_has_stroke_200: hasProp(probe.recent?.transition, 'stroke'),
74
+ recent_has_opacity_200: hasProp(probe.recent?.transition, 'opacity'),
75
+ legend_present: probe.legend !== null,
76
+ legend_has_filter_200: hasProp(probe.legend?.transition, 'filter'),
77
+ legend_has_fill_200: hasProp(probe.legend?.transition, 'fill'),
78
+ legend_has_stroke_200: hasProp(probe.legend?.transition, 'stroke'),
79
+ legend_has_opacity_200: hasProp(probe.legend?.transition, 'opacity'),
80
+ };
81
+ const ok = Object.values(results).every(Boolean);
82
+ console.log(`${ok ? '✅' : '❌'} panel theme ease:`, JSON.stringify(results),
83
+ '\n recent:', probe.recent,
84
+ '\n legend:', probe.legend);
85
+ process.exit(ok ? 0 : 1);