@luxonis/depthai-viewer-common 3.7.4 → 3.7.6

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 (524) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.MPL-2.0 +373 -0
  3. package/NOTICE +15 -0
  4. package/REFACTOR_HANDOFF.md +969 -0
  5. package/REFACTOR_PLAN.md +265 -0
  6. package/THIRD_PARTY_NOTICES.md +3624 -0
  7. package/build-utils.sh +45 -0
  8. package/dist/components/DepthAIContext.d.ts +1 -1
  9. package/dist/components/DepthAIContext.d.ts.map +1 -1
  10. package/dist/components/DepthAIContext.js.map +1 -1
  11. package/dist/components/Streams.d.ts.map +1 -1
  12. package/dist/components/Streams.js +10 -3
  13. package/dist/components/Streams.js.map +1 -1
  14. package/dist/dai-connection/connection.d.ts +5 -3
  15. package/dist/dai-connection/connection.d.ts.map +1 -1
  16. package/dist/dai-connection/connection.js +3 -3
  17. package/dist/dai-connection/connection.js.map +1 -1
  18. package/dist/hooks/benchmark-automation.d.ts.map +1 -1
  19. package/dist/hooks/benchmark-automation.js +1 -1
  20. package/dist/hooks/benchmark-automation.js.map +1 -1
  21. package/dist/hooks/connection.d.ts +1 -1
  22. package/dist/hooks/connection.d.ts.map +1 -1
  23. package/dist/hooks/connection.js +21 -0
  24. package/dist/hooks/connection.js.map +1 -1
  25. package/dist/index.css +160 -0
  26. package/dist/models/device-configuration.d.ts +1 -1
  27. package/dist/providers/ConnectionProvider.d.ts.map +1 -1
  28. package/dist/providers/ConnectionProvider.js +1 -1
  29. package/dist/providers/ConnectionProvider.js.map +1 -1
  30. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts +2 -1
  31. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts.map +1 -1
  32. package/dist/providers/VisualizerRuntimeConfigProvider.js +6 -2
  33. package/dist/providers/VisualizerRuntimeConfigProvider.js.map +1 -1
  34. package/dist/utils/vite-dev-fix.js +1 -1
  35. package/dist/utils/vite-dev-fix.js.map +1 -1
  36. package/dist/visualizer/browser-decoder-fixtures-entry.d.ts +2 -0
  37. package/dist/visualizer/browser-decoder-fixtures-entry.d.ts.map +1 -0
  38. package/dist/visualizer/browser-decoder-fixtures-entry.js +28 -0
  39. package/dist/visualizer/browser-decoder-fixtures-entry.js.map +1 -0
  40. package/dist/visualizer/components/CssBaseline.d.ts +5 -0
  41. package/dist/visualizer/components/CssBaseline.d.ts.map +1 -0
  42. package/dist/visualizer/components/CssBaseline.js +5 -0
  43. package/dist/visualizer/components/CssBaseline.js.map +1 -0
  44. package/dist/visualizer/components/EmptyState.d.ts +7 -0
  45. package/dist/visualizer/components/EmptyState.d.ts.map +1 -0
  46. package/dist/visualizer/components/EmptyState.js +5 -0
  47. package/dist/visualizer/components/EmptyState.js.map +1 -0
  48. package/dist/visualizer/components/ErrorBoundary.d.ts +16 -0
  49. package/dist/visualizer/components/ErrorBoundary.d.ts.map +1 -0
  50. package/dist/visualizer/components/ErrorBoundary.js +27 -0
  51. package/dist/visualizer/components/ErrorBoundary.js.map +1 -0
  52. package/dist/visualizer/components/GlobalCss.d.ts +2 -0
  53. package/dist/visualizer/components/GlobalCss.d.ts.map +1 -0
  54. package/dist/visualizer/components/GlobalCss.js +4 -0
  55. package/dist/visualizer/components/GlobalCss.js.map +1 -0
  56. package/dist/visualizer/components/Panel.d.ts +37 -0
  57. package/dist/visualizer/components/Panel.d.ts.map +1 -0
  58. package/dist/visualizer/components/Panel.js +129 -0
  59. package/dist/visualizer/components/Panel.js.map +1 -0
  60. package/dist/visualizer/components/PanelLayout.d.ts +3 -0
  61. package/dist/visualizer/components/PanelLayout.d.ts.map +1 -0
  62. package/dist/visualizer/components/PanelLayout.js +5 -0
  63. package/dist/visualizer/components/PanelLayout.js.map +1 -0
  64. package/dist/visualizer/components/PanelToolbar.d.ts +24 -0
  65. package/dist/visualizer/components/PanelToolbar.d.ts.map +1 -0
  66. package/dist/visualizer/components/PanelToolbar.js +69 -0
  67. package/dist/visualizer/components/PanelToolbar.js.map +1 -0
  68. package/dist/visualizer/components/RemountOnValueChange.d.ts +7 -0
  69. package/dist/visualizer/components/RemountOnValueChange.d.ts.map +1 -0
  70. package/dist/visualizer/components/RemountOnValueChange.js +20 -0
  71. package/dist/visualizer/components/RemountOnValueChange.js.map +1 -0
  72. package/dist/visualizer/components/measure-event-loop-delay.d.ts +2 -0
  73. package/dist/visualizer/components/measure-event-loop-delay.d.ts.map +1 -0
  74. package/dist/visualizer/components/measure-event-loop-delay.js +18 -0
  75. package/dist/visualizer/components/measure-event-loop-delay.js.map +1 -0
  76. package/dist/visualizer/components/shared-interval.d.ts +2 -0
  77. package/dist/visualizer/components/shared-interval.d.ts.map +1 -0
  78. package/dist/visualizer/components/shared-interval.js +50 -0
  79. package/dist/visualizer/components/shared-interval.js.map +1 -0
  80. package/dist/visualizer/components/use-element-width.d.ts +3 -0
  81. package/dist/visualizer/components/use-element-width.d.ts.map +1 -0
  82. package/dist/visualizer/components/use-element-width.js +23 -0
  83. package/dist/visualizer/components/use-element-width.js.map +1 -0
  84. package/dist/visualizer/connection/adapter.d.ts +43 -0
  85. package/dist/visualizer/connection/adapter.d.ts.map +1 -0
  86. package/dist/visualizer/connection/adapter.js +196 -0
  87. package/dist/visualizer/connection/adapter.js.map +1 -0
  88. package/dist/visualizer/connection/communicator.d.ts +94 -0
  89. package/dist/visualizer/connection/communicator.d.ts.map +1 -0
  90. package/dist/visualizer/connection/communicator.js +134 -0
  91. package/dist/visualizer/connection/communicator.js.map +1 -0
  92. package/dist/visualizer/connection/connection.d.ts +54 -0
  93. package/dist/visualizer/connection/connection.d.ts.map +1 -0
  94. package/dist/visualizer/connection/connection.js +155 -0
  95. package/dist/visualizer/connection/connection.js.map +1 -0
  96. package/dist/visualizer/connection/foxglove-client-adapter.d.ts +31 -0
  97. package/dist/visualizer/connection/foxglove-client-adapter.d.ts.map +1 -0
  98. package/dist/visualizer/connection/foxglove-client-adapter.js +125 -0
  99. package/dist/visualizer/connection/foxglove-client-adapter.js.map +1 -0
  100. package/dist/visualizer/connection/foxglove-connection.d.ts +86 -0
  101. package/dist/visualizer/connection/foxglove-connection.d.ts.map +1 -0
  102. package/dist/visualizer/connection/foxglove-connection.js +329 -0
  103. package/dist/visualizer/connection/foxglove-connection.js.map +1 -0
  104. package/dist/visualizer/connection/foxglove-protocol.d.ts +6 -0
  105. package/dist/visualizer/connection/foxglove-protocol.d.ts.map +1 -0
  106. package/dist/visualizer/connection/foxglove-protocol.js +63 -0
  107. package/dist/visualizer/connection/foxglove-protocol.js.map +1 -0
  108. package/dist/visualizer/connection/foxglove-ws-types.d.ts +80 -0
  109. package/dist/visualizer/connection/foxglove-ws-types.d.ts.map +1 -0
  110. package/dist/visualizer/connection/foxglove-ws-types.js +13 -0
  111. package/dist/visualizer/connection/foxglove-ws-types.js.map +1 -0
  112. package/dist/visualizer/connection/webrtc/bridge.d.ts +11 -0
  113. package/dist/visualizer/connection/webrtc/bridge.d.ts.map +1 -0
  114. package/dist/visualizer/connection/webrtc/bridge.js +453 -0
  115. package/dist/visualizer/connection/webrtc/bridge.js.map +1 -0
  116. package/dist/visualizer/connection/webrtc/comms-proxy.d.ts +9 -0
  117. package/dist/visualizer/connection/webrtc/comms-proxy.d.ts.map +1 -0
  118. package/dist/visualizer/connection/webrtc/comms-proxy.js +90 -0
  119. package/dist/visualizer/connection/webrtc/comms-proxy.js.map +1 -0
  120. package/dist/visualizer/connection/webrtc/handler.d.ts +97 -0
  121. package/dist/visualizer/connection/webrtc/handler.d.ts.map +1 -0
  122. package/dist/visualizer/connection/webrtc/handler.js +149 -0
  123. package/dist/visualizer/connection/webrtc/handler.js.map +1 -0
  124. package/dist/visualizer/connection/webrtc/worker.d.ts +2 -0
  125. package/dist/visualizer/connection/webrtc/worker.d.ts.map +1 -0
  126. package/dist/visualizer/connection/webrtc/worker.js +32 -0
  127. package/dist/visualizer/connection/webrtc/worker.js.map +1 -0
  128. package/dist/visualizer/connection/ws/worker.d.ts +17 -0
  129. package/dist/visualizer/connection/ws/worker.d.ts.map +1 -0
  130. package/dist/visualizer/connection/ws/worker.js +161 -0
  131. package/dist/visualizer/connection/ws/worker.js.map +1 -0
  132. package/dist/visualizer/context/AppConfigurationContext.d.ts +9 -0
  133. package/dist/visualizer/context/AppConfigurationContext.d.ts.map +1 -0
  134. package/dist/visualizer/context/AppConfigurationContext.js +4 -0
  135. package/dist/visualizer/context/AppConfigurationContext.js.map +1 -0
  136. package/dist/visualizer/context/ConnectionsProvider.d.ts +5 -0
  137. package/dist/visualizer/context/ConnectionsProvider.d.ts.map +1 -0
  138. package/dist/visualizer/context/ConnectionsProvider.js +8 -0
  139. package/dist/visualizer/context/ConnectionsProvider.js.map +1 -0
  140. package/dist/visualizer/context/CurrentLayoutContext.d.ts +63 -0
  141. package/dist/visualizer/context/CurrentLayoutContext.d.ts.map +1 -0
  142. package/dist/visualizer/context/CurrentLayoutContext.js +4 -0
  143. package/dist/visualizer/context/CurrentLayoutContext.js.map +1 -0
  144. package/dist/visualizer/context/MessagePipelineInternalContext.d.ts +3 -0
  145. package/dist/visualizer/context/MessagePipelineInternalContext.d.ts.map +1 -0
  146. package/dist/visualizer/context/MessagePipelineInternalContext.js +3 -0
  147. package/dist/visualizer/context/MessagePipelineInternalContext.js.map +1 -0
  148. package/dist/visualizer/context/MessagePipelineProvider.d.ts +17 -0
  149. package/dist/visualizer/context/MessagePipelineProvider.d.ts.map +1 -0
  150. package/dist/visualizer/context/MessagePipelineProvider.js +224 -0
  151. package/dist/visualizer/context/MessagePipelineProvider.js.map +1 -0
  152. package/dist/visualizer/context/MinimalCurrentLayoutProvider.d.ts +5 -0
  153. package/dist/visualizer/context/MinimalCurrentLayoutProvider.d.ts.map +1 -0
  154. package/dist/visualizer/context/MinimalCurrentLayoutProvider.js +198 -0
  155. package/dist/visualizer/context/MinimalCurrentLayoutProvider.js.map +1 -0
  156. package/dist/visualizer/context/PanelCatalogContext.d.ts +11 -0
  157. package/dist/visualizer/context/PanelCatalogContext.d.ts.map +1 -0
  158. package/dist/visualizer/context/PanelCatalogContext.js +4 -0
  159. package/dist/visualizer/context/PanelCatalogContext.js.map +1 -0
  160. package/dist/visualizer/context/PanelStateContextProvider.d.ts +5 -0
  161. package/dist/visualizer/context/PanelStateContextProvider.d.ts.map +1 -0
  162. package/dist/visualizer/context/PanelStateContextProvider.js +5 -0
  163. package/dist/visualizer/context/PanelStateContextProvider.js.map +1 -0
  164. package/dist/visualizer/context/TimelineInteractionStateProvider.d.ts +5 -0
  165. package/dist/visualizer/context/TimelineInteractionStateProvider.d.ts.map +1 -0
  166. package/dist/visualizer/context/TimelineInteractionStateProvider.js +5 -0
  167. package/dist/visualizer/context/TimelineInteractionStateProvider.js.map +1 -0
  168. package/dist/visualizer/context/VisualizerContext.d.ts +13 -0
  169. package/dist/visualizer/context/VisualizerContext.d.ts.map +1 -0
  170. package/dist/visualizer/context/VisualizerContext.js +81 -0
  171. package/dist/visualizer/context/VisualizerContext.js.map +1 -0
  172. package/dist/visualizer/context/VisualizerFlatContext.d.ts +10 -0
  173. package/dist/visualizer/context/VisualizerFlatContext.d.ts.map +1 -0
  174. package/dist/visualizer/context/VisualizerFlatContext.js +13 -0
  175. package/dist/visualizer/context/VisualizerFlatContext.js.map +1 -0
  176. package/dist/visualizer/context/message-pipeline-store.d.ts +35 -0
  177. package/dist/visualizer/context/message-pipeline-store.d.ts.map +1 -0
  178. package/dist/visualizer/context/message-pipeline-store.js +275 -0
  179. package/dist/visualizer/context/message-pipeline-store.js.map +1 -0
  180. package/dist/visualizer/context/message-pipeline-types.d.ts +52 -0
  181. package/dist/visualizer/context/message-pipeline-types.d.ts.map +1 -0
  182. package/dist/visualizer/context/message-pipeline-types.js +5 -0
  183. package/dist/visualizer/context/message-pipeline-types.js.map +1 -0
  184. package/dist/visualizer/context/pause-frame.d.ts +4 -0
  185. package/dist/visualizer/context/pause-frame.d.ts.map +1 -0
  186. package/dist/visualizer/context/pause-frame.js +21 -0
  187. package/dist/visualizer/context/pause-frame.js.map +1 -0
  188. package/dist/visualizer/fonts/fonts.css +6 -0
  189. package/dist/visualizer/fonts/ubuntu-mono.ttf +0 -0
  190. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.d.ts +7 -0
  191. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.d.ts.map +1 -0
  192. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.js +12 -0
  193. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.js.map +1 -0
  194. package/dist/visualizer/i18n-stubs/i18next.d.ts +24 -0
  195. package/dist/visualizer/i18n-stubs/i18next.d.ts.map +1 -0
  196. package/dist/visualizer/i18n-stubs/i18next.js +46 -0
  197. package/dist/visualizer/i18n-stubs/i18next.js.map +1 -0
  198. package/dist/visualizer/i18n-stubs/react-i18next.d.ts +10 -0
  199. package/dist/visualizer/i18n-stubs/react-i18next.d.ts.map +1 -0
  200. package/dist/visualizer/i18n-stubs/react-i18next.js +15 -0
  201. package/dist/visualizer/i18n-stubs/react-i18next.js.map +1 -0
  202. package/dist/visualizer/index.d.ts +14 -0
  203. package/dist/visualizer/index.d.ts.map +1 -0
  204. package/dist/visualizer/index.js +16 -0
  205. package/dist/visualizer/index.js.map +1 -0
  206. package/dist/visualizer/messaging/browser-decoder-fixtures.d.ts +15 -0
  207. package/dist/visualizer/messaging/browser-decoder-fixtures.d.ts.map +1 -0
  208. package/dist/visualizer/messaging/browser-decoder-fixtures.js +205 -0
  209. package/dist/visualizer/messaging/browser-decoder-fixtures.js.map +1 -0
  210. package/dist/visualizer/messaging/decode-core.d.ts +75 -0
  211. package/dist/visualizer/messaging/decode-core.d.ts.map +1 -0
  212. package/dist/visualizer/messaging/decode-core.js +244 -0
  213. package/dist/visualizer/messaging/decode-core.js.map +1 -0
  214. package/dist/visualizer/messaging/decoder-fixtures.d.ts +14 -0
  215. package/dist/visualizer/messaging/decoder-fixtures.d.ts.map +1 -0
  216. package/dist/visualizer/messaging/decoder-fixtures.js +743 -0
  217. package/dist/visualizer/messaging/decoder-fixtures.js.map +1 -0
  218. package/dist/visualizer/messaging/decoder-harness.d.ts +24 -0
  219. package/dist/visualizer/messaging/decoder-harness.d.ts.map +1 -0
  220. package/dist/visualizer/messaging/decoder-harness.js +24 -0
  221. package/dist/visualizer/messaging/decoder-harness.js.map +1 -0
  222. package/dist/visualizer/messaging/deserialization/detections/constants.d.ts +16 -0
  223. package/dist/visualizer/messaging/deserialization/detections/constants.d.ts.map +1 -0
  224. package/dist/visualizer/messaging/deserialization/detections/constants.js +106 -0
  225. package/dist/visualizer/messaging/deserialization/detections/constants.js.map +1 -0
  226. package/dist/visualizer/messaging/deserialization/detections/custom.d.ts +11 -0
  227. package/dist/visualizer/messaging/deserialization/detections/custom.d.ts.map +1 -0
  228. package/dist/visualizer/messaging/deserialization/detections/custom.js +62 -0
  229. package/dist/visualizer/messaging/deserialization/detections/custom.js.map +1 -0
  230. package/dist/visualizer/messaging/deserialization/detections/detection.d.ts +14 -0
  231. package/dist/visualizer/messaging/deserialization/detections/detection.d.ts.map +1 -0
  232. package/dist/visualizer/messaging/deserialization/detections/detection.js +296 -0
  233. package/dist/visualizer/messaging/deserialization/detections/detection.js.map +1 -0
  234. package/dist/visualizer/messaging/deserialization/detections/utils.d.ts +9 -0
  235. package/dist/visualizer/messaging/deserialization/detections/utils.d.ts.map +1 -0
  236. package/dist/visualizer/messaging/deserialization/detections/utils.js +22 -0
  237. package/dist/visualizer/messaging/deserialization/detections/utils.js.map +1 -0
  238. package/dist/visualizer/messaging/deserialization/imu/imu.d.ts +5 -0
  239. package/dist/visualizer/messaging/deserialization/imu/imu.d.ts.map +1 -0
  240. package/dist/visualizer/messaging/deserialization/imu/imu.js +27 -0
  241. package/dist/visualizer/messaging/deserialization/imu/imu.js.map +1 -0
  242. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.d.ts +2 -0
  243. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.d.ts.map +1 -0
  244. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.js +45 -0
  245. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.js.map +1 -0
  246. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.d.ts +9 -0
  247. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.d.ts.map +1 -0
  248. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.js +46 -0
  249. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.js.map +1 -0
  250. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts +2 -0
  251. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts.map +1 -0
  252. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js +477 -0
  253. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js.map +1 -0
  254. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts +35 -0
  255. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts.map +1 -0
  256. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.js +344 -0
  257. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.js.map +1 -0
  258. package/dist/visualizer/messaging/deserialization/pointcloud/utils.d.ts +18 -0
  259. package/dist/visualizer/messaging/deserialization/pointcloud/utils.d.ts.map +1 -0
  260. package/dist/visualizer/messaging/deserialization/pointcloud/utils.js +58 -0
  261. package/dist/visualizer/messaging/deserialization/pointcloud/utils.js.map +1 -0
  262. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.d.ts +9 -0
  263. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.d.ts.map +1 -0
  264. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.js +39 -0
  265. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.js.map +1 -0
  266. package/dist/visualizer/messaging/deserialization/video/color.d.ts +9 -0
  267. package/dist/visualizer/messaging/deserialization/video/color.d.ts.map +1 -0
  268. package/dist/visualizer/messaging/deserialization/video/color.js +27 -0
  269. package/dist/visualizer/messaging/deserialization/video/color.js.map +1 -0
  270. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.d.ts +5 -0
  271. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.d.ts.map +1 -0
  272. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.js +124 -0
  273. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.js.map +1 -0
  274. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.d.ts +13 -0
  275. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.d.ts.map +1 -0
  276. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.js +37 -0
  277. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.js.map +1 -0
  278. package/dist/visualizer/messaging/deserialization/video/depth.d.ts +15 -0
  279. package/dist/visualizer/messaging/deserialization/video/depth.d.ts.map +1 -0
  280. package/dist/visualizer/messaging/deserialization/video/depth.js +126 -0
  281. package/dist/visualizer/messaging/deserialization/video/depth.js.map +1 -0
  282. package/dist/visualizer/messaging/deserialization/video/h264.d.ts +81 -0
  283. package/dist/visualizer/messaging/deserialization/video/h264.d.ts.map +1 -0
  284. package/dist/visualizer/messaging/deserialization/video/h264.js +634 -0
  285. package/dist/visualizer/messaging/deserialization/video/h264.js.map +1 -0
  286. package/dist/visualizer/messaging/deserialization/video/h265.d.ts +16 -0
  287. package/dist/visualizer/messaging/deserialization/video/h265.d.ts.map +1 -0
  288. package/dist/visualizer/messaging/deserialization/video/h265.js +448 -0
  289. package/dist/visualizer/messaging/deserialization/video/h265.js.map +1 -0
  290. package/dist/visualizer/messaging/deserialization/video/mjpeg.d.ts +11 -0
  291. package/dist/visualizer/messaging/deserialization/video/mjpeg.d.ts.map +1 -0
  292. package/dist/visualizer/messaging/deserialization/video/mjpeg.js +89 -0
  293. package/dist/visualizer/messaging/deserialization/video/mjpeg.js.map +1 -0
  294. package/dist/visualizer/messaging/deserialization/video/mono.d.ts +8 -0
  295. package/dist/visualizer/messaging/deserialization/video/mono.d.ts.map +1 -0
  296. package/dist/visualizer/messaging/deserialization/video/mono.js +27 -0
  297. package/dist/visualizer/messaging/deserialization/video/mono.js.map +1 -0
  298. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.d.ts +18 -0
  299. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.d.ts.map +1 -0
  300. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.js +651 -0
  301. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.js.map +1 -0
  302. package/dist/visualizer/messaging/deserialization.worker.d.ts +15 -0
  303. package/dist/visualizer/messaging/deserialization.worker.d.ts.map +1 -0
  304. package/dist/visualizer/messaging/deserialization.worker.js +96 -0
  305. package/dist/visualizer/messaging/deserialization.worker.js.map +1 -0
  306. package/dist/visualizer/messaging/message-event.d.ts +114 -0
  307. package/dist/visualizer/messaging/message-event.d.ts.map +1 -0
  308. package/dist/visualizer/messaging/message-event.js +80 -0
  309. package/dist/visualizer/messaging/message-event.js.map +1 -0
  310. package/dist/visualizer/messaging/message-handler.d.ts +10 -0
  311. package/dist/visualizer/messaging/message-handler.d.ts.map +1 -0
  312. package/dist/visualizer/messaging/message-handler.js +436 -0
  313. package/dist/visualizer/messaging/message-handler.js.map +1 -0
  314. package/dist/visualizer/messaging/message.d.ts +32 -0
  315. package/dist/visualizer/messaging/message.d.ts.map +1 -0
  316. package/dist/visualizer/messaging/message.js +5 -0
  317. package/dist/visualizer/messaging/message.js.map +1 -0
  318. package/dist/visualizer/messaging/parse-utils.d.ts +23 -0
  319. package/dist/visualizer/messaging/parse-utils.d.ts.map +1 -0
  320. package/dist/visualizer/messaging/parse-utils.js +76 -0
  321. package/dist/visualizer/messaging/parse-utils.js.map +1 -0
  322. package/dist/visualizer/messaging/protobuf.d.ts +109 -0
  323. package/dist/visualizer/messaging/protobuf.d.ts.map +1 -0
  324. package/dist/visualizer/messaging/protobuf.js +81 -0
  325. package/dist/visualizer/messaging/protobuf.js.map +1 -0
  326. package/dist/visualizer/messaging/schema-constants.d.ts +21 -0
  327. package/dist/visualizer/messaging/schema-constants.d.ts.map +1 -0
  328. package/dist/visualizer/messaging/schema-constants.js +24 -0
  329. package/dist/visualizer/messaging/schema-constants.js.map +1 -0
  330. package/dist/visualizer/messaging/stream-diagnostics.d.ts +40 -0
  331. package/dist/visualizer/messaging/stream-diagnostics.d.ts.map +1 -0
  332. package/dist/visualizer/messaging/stream-diagnostics.js +257 -0
  333. package/dist/visualizer/messaging/stream-diagnostics.js.map +1 -0
  334. package/dist/visualizer/messaging/utils.d.ts +14 -0
  335. package/dist/visualizer/messaging/utils.d.ts.map +1 -0
  336. package/dist/visualizer/messaging/utils.js +109 -0
  337. package/dist/visualizer/messaging/utils.js.map +1 -0
  338. package/dist/visualizer/output.css +4337 -0
  339. package/dist/visualizer/panels/ImagePanel.d.ts +35 -0
  340. package/dist/visualizer/panels/ImagePanel.d.ts.map +1 -0
  341. package/dist/visualizer/panels/ImagePanel.js +26 -0
  342. package/dist/visualizer/panels/ImagePanel.js.map +1 -0
  343. package/dist/visualizer/panels/PointCloudPanel.d.ts +32 -0
  344. package/dist/visualizer/panels/PointCloudPanel.d.ts.map +1 -0
  345. package/dist/visualizer/panels/PointCloudPanel.js +62 -0
  346. package/dist/visualizer/panels/PointCloudPanel.js.map +1 -0
  347. package/dist/visualizer/panels/image/ImageCanvasRenderer.d.ts +27 -0
  348. package/dist/visualizer/panels/image/ImageCanvasRenderer.d.ts.map +1 -0
  349. package/dist/visualizer/panels/image/ImageCanvasRenderer.js +715 -0
  350. package/dist/visualizer/panels/image/ImageCanvasRenderer.js.map +1 -0
  351. package/dist/visualizer/panels/image/annotation-overlay.d.ts +10 -0
  352. package/dist/visualizer/panels/image/annotation-overlay.d.ts.map +1 -0
  353. package/dist/visualizer/panels/image/annotation-overlay.js +113 -0
  354. package/dist/visualizer/panels/image/annotation-overlay.js.map +1 -0
  355. package/dist/visualizer/panels/image/raw-image-decoder.d.ts +11 -0
  356. package/dist/visualizer/panels/image/raw-image-decoder.d.ts.map +1 -0
  357. package/dist/visualizer/panels/image/raw-image-decoder.js +184 -0
  358. package/dist/visualizer/panels/image/raw-image-decoder.js.map +1 -0
  359. package/dist/visualizer/panels/image/raw-image-decoder.worker.d.ts +2 -0
  360. package/dist/visualizer/panels/image/raw-image-decoder.worker.d.ts.map +1 -0
  361. package/dist/visualizer/panels/image/raw-image-decoder.worker.js +40 -0
  362. package/dist/visualizer/panels/image/raw-image-decoder.worker.js.map +1 -0
  363. package/dist/visualizer/panels/image/raw-image-pixel-decoders.d.ts +35 -0
  364. package/dist/visualizer/panels/image/raw-image-pixel-decoders.d.ts.map +1 -0
  365. package/dist/visualizer/panels/image/raw-image-pixel-decoders.js +352 -0
  366. package/dist/visualizer/panels/image/raw-image-pixel-decoders.js.map +1 -0
  367. package/dist/visualizer/panels/image/segmentation-mask-overlay.d.ts +10 -0
  368. package/dist/visualizer/panels/image/segmentation-mask-overlay.d.ts.map +1 -0
  369. package/dist/visualizer/panels/image/segmentation-mask-overlay.js +56 -0
  370. package/dist/visualizer/panels/image/segmentation-mask-overlay.js.map +1 -0
  371. package/dist/visualizer/panels/image/webgl-image-renderer.d.ts +48 -0
  372. package/dist/visualizer/panels/image/webgl-image-renderer.d.ts.map +1 -0
  373. package/dist/visualizer/panels/image/webgl-image-renderer.js +726 -0
  374. package/dist/visualizer/panels/image/webgl-image-renderer.js.map +1 -0
  375. package/dist/visualizer/panels/image/worker-image-decoder.d.ts +20 -0
  376. package/dist/visualizer/panels/image/worker-image-decoder.d.ts.map +1 -0
  377. package/dist/visualizer/panels/image/worker-image-decoder.js +134 -0
  378. package/dist/visualizer/panels/image/worker-image-decoder.js.map +1 -0
  379. package/dist/visualizer/panels/panel-renderer.d.ts +2 -0
  380. package/dist/visualizer/panels/panel-renderer.d.ts.map +1 -0
  381. package/dist/visualizer/panels/panel-renderer.js +5 -0
  382. package/dist/visualizer/panels/panel-renderer.js.map +1 -0
  383. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.d.ts +35 -0
  384. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.d.ts.map +1 -0
  385. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.js +882 -0
  386. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.js.map +1 -0
  387. package/dist/visualizer/panels/pointcloud-camera.d.ts +14 -0
  388. package/dist/visualizer/panels/pointcloud-camera.d.ts.map +1 -0
  389. package/dist/visualizer/panels/pointcloud-camera.js +16 -0
  390. package/dist/visualizer/panels/pointcloud-camera.js.map +1 -0
  391. package/dist/visualizer/protobuf.generated/EncodedFrame.d.ts +76 -0
  392. package/dist/visualizer/protobuf.generated/EncodedFrame.d.ts.map +1 -0
  393. package/dist/visualizer/protobuf.generated/EncodedFrame.js +448 -0
  394. package/dist/visualizer/protobuf.generated/EncodedFrame.js.map +1 -0
  395. package/dist/visualizer/protobuf.generated/Event.d.ts +171 -0
  396. package/dist/visualizer/protobuf.generated/Event.d.ts.map +1 -0
  397. package/dist/visualizer/protobuf.generated/Event.js +1805 -0
  398. package/dist/visualizer/protobuf.generated/Event.js.map +1 -0
  399. package/dist/visualizer/protobuf.generated/IMUData.d.ts +84 -0
  400. package/dist/visualizer/protobuf.generated/IMUData.d.ts.map +1 -0
  401. package/dist/visualizer/protobuf.generated/IMUData.js +745 -0
  402. package/dist/visualizer/protobuf.generated/IMUData.js.map +1 -0
  403. package/dist/visualizer/protobuf.generated/ImageAnnotations.d.ts +74 -0
  404. package/dist/visualizer/protobuf.generated/ImageAnnotations.d.ts.map +1 -0
  405. package/dist/visualizer/protobuf.generated/ImageAnnotations.js +675 -0
  406. package/dist/visualizer/protobuf.generated/ImageAnnotations.js.map +1 -0
  407. package/dist/visualizer/protobuf.generated/ImgDetections.d.ts +48 -0
  408. package/dist/visualizer/protobuf.generated/ImgDetections.d.ts.map +1 -0
  409. package/dist/visualizer/protobuf.generated/ImgDetections.js +429 -0
  410. package/dist/visualizer/protobuf.generated/ImgDetections.js.map +1 -0
  411. package/dist/visualizer/protobuf.generated/ImgFrame.d.ts +117 -0
  412. package/dist/visualizer/protobuf.generated/ImgFrame.d.ts.map +1 -0
  413. package/dist/visualizer/protobuf.generated/ImgFrame.js +699 -0
  414. package/dist/visualizer/protobuf.generated/ImgFrame.js.map +1 -0
  415. package/dist/visualizer/protobuf.generated/PointCloudData.d.ts +43 -0
  416. package/dist/visualizer/protobuf.generated/PointCloudData.d.ts.map +1 -0
  417. package/dist/visualizer/protobuf.generated/PointCloudData.js +348 -0
  418. package/dist/visualizer/protobuf.generated/PointCloudData.js.map +1 -0
  419. package/dist/visualizer/protobuf.generated/RGBDData.d.ts +37 -0
  420. package/dist/visualizer/protobuf.generated/RGBDData.d.ts.map +1 -0
  421. package/dist/visualizer/protobuf.generated/RGBDData.js +205 -0
  422. package/dist/visualizer/protobuf.generated/RGBDData.js.map +1 -0
  423. package/dist/visualizer/protobuf.generated/SegmentationMask.d.ts +36 -0
  424. package/dist/visualizer/protobuf.generated/SegmentationMask.d.ts.map +1 -0
  425. package/dist/visualizer/protobuf.generated/SegmentationMask.js +238 -0
  426. package/dist/visualizer/protobuf.generated/SegmentationMask.js.map +1 -0
  427. package/dist/visualizer/protobuf.generated/SpatialImgDetections.d.ts +88 -0
  428. package/dist/visualizer/protobuf.generated/SpatialImgDetections.d.ts.map +1 -0
  429. package/dist/visualizer/protobuf.generated/SpatialImgDetections.js +775 -0
  430. package/dist/visualizer/protobuf.generated/SpatialImgDetections.js.map +1 -0
  431. package/dist/visualizer/protobuf.generated/common.d.ts +175 -0
  432. package/dist/visualizer/protobuf.generated/common.d.ts.map +1 -0
  433. package/dist/visualizer/protobuf.generated/common.js +1796 -0
  434. package/dist/visualizer/protobuf.generated/common.js.map +1 -0
  435. package/dist/visualizer/runtime-config.d.ts +2 -0
  436. package/dist/visualizer/runtime-config.d.ts.map +1 -0
  437. package/dist/visualizer/runtime-config.js +5 -0
  438. package/dist/visualizer/runtime-config.js.map +1 -0
  439. package/dist/visualizer/utils/artificial-worker.d.ts +10 -0
  440. package/dist/visualizer/utils/artificial-worker.d.ts.map +1 -0
  441. package/dist/visualizer/utils/artificial-worker.js +31 -0
  442. package/dist/visualizer/utils/artificial-worker.js.map +1 -0
  443. package/dist/visualizer/utils/async.d.ts +3 -0
  444. package/dist/visualizer/utils/async.d.ts.map +1 -0
  445. package/dist/visualizer/utils/async.js +35 -0
  446. package/dist/visualizer/utils/async.js.map +1 -0
  447. package/dist/visualizer/utils/browser-storage.d.ts +3 -0
  448. package/dist/visualizer/utils/browser-storage.d.ts.map +1 -0
  449. package/dist/visualizer/utils/browser-storage.js +16 -0
  450. package/dist/visualizer/utils/browser-storage.js.map +1 -0
  451. package/dist/visualizer/utils/callback-manager.d.ts +7 -0
  452. package/dist/visualizer/utils/callback-manager.d.ts.map +1 -0
  453. package/dist/visualizer/utils/callback-manager.js +21 -0
  454. package/dist/visualizer/utils/callback-manager.js.map +1 -0
  455. package/dist/visualizer/utils/comlink-wrap.d.ts +7 -0
  456. package/dist/visualizer/utils/comlink-wrap.d.ts.map +1 -0
  457. package/dist/visualizer/utils/comlink-wrap.js +15 -0
  458. package/dist/visualizer/utils/comlink-wrap.js.map +1 -0
  459. package/dist/visualizer/utils/compatibility.d.ts +2 -0
  460. package/dist/visualizer/utils/compatibility.d.ts.map +1 -0
  461. package/dist/visualizer/utils/compatibility.js +19 -0
  462. package/dist/visualizer/utils/compatibility.js.map +1 -0
  463. package/dist/visualizer/utils/config-store.d.ts +10 -0
  464. package/dist/visualizer/utils/config-store.d.ts.map +1 -0
  465. package/dist/visualizer/utils/config-store.js +22 -0
  466. package/dist/visualizer/utils/config-store.js.map +1 -0
  467. package/dist/visualizer/utils/encoding.d.ts +4 -0
  468. package/dist/visualizer/utils/encoding.d.ts.map +1 -0
  469. package/dist/visualizer/utils/encoding.js +23 -0
  470. package/dist/visualizer/utils/encoding.js.map +1 -0
  471. package/dist/visualizer/utils/error.d.ts +20 -0
  472. package/dist/visualizer/utils/error.d.ts.map +1 -0
  473. package/dist/visualizer/utils/error.js +79 -0
  474. package/dist/visualizer/utils/error.js.map +1 -0
  475. package/dist/visualizer/utils/estimate-object-size.d.ts +2 -0
  476. package/dist/visualizer/utils/estimate-object-size.d.ts.map +1 -0
  477. package/dist/visualizer/utils/estimate-object-size.js +60 -0
  478. package/dist/visualizer/utils/estimate-object-size.js.map +1 -0
  479. package/dist/visualizer/utils/frame-store.d.ts +13 -0
  480. package/dist/visualizer/utils/frame-store.d.ts.map +1 -0
  481. package/dist/visualizer/utils/frame-store.js +43 -0
  482. package/dist/visualizer/utils/frame-store.js.map +1 -0
  483. package/dist/visualizer/utils/imu-manager.d.ts +13 -0
  484. package/dist/visualizer/utils/imu-manager.d.ts.map +1 -0
  485. package/dist/visualizer/utils/imu-manager.js +36 -0
  486. package/dist/visualizer/utils/imu-manager.js.map +1 -0
  487. package/dist/visualizer/utils/logger.d.ts +13 -0
  488. package/dist/visualizer/utils/logger.d.ts.map +1 -0
  489. package/dist/visualizer/utils/logger.js +47 -0
  490. package/dist/visualizer/utils/logger.js.map +1 -0
  491. package/dist/visualizer/utils/metrics-manager.d.ts +33 -0
  492. package/dist/visualizer/utils/metrics-manager.d.ts.map +1 -0
  493. package/dist/visualizer/utils/metrics-manager.js +113 -0
  494. package/dist/visualizer/utils/metrics-manager.js.map +1 -0
  495. package/dist/visualizer/utils/player-types.d.ts +65 -0
  496. package/dist/visualizer/utils/player-types.d.ts.map +1 -0
  497. package/dist/visualizer/utils/player-types.js +22 -0
  498. package/dist/visualizer/utils/player-types.js.map +1 -0
  499. package/dist/visualizer/utils/poitcloud-sync.d.ts +13 -0
  500. package/dist/visualizer/utils/poitcloud-sync.d.ts.map +1 -0
  501. package/dist/visualizer/utils/poitcloud-sync.js +95 -0
  502. package/dist/visualizer/utils/poitcloud-sync.js.map +1 -0
  503. package/dist/visualizer/utils/runtime-config.d.ts +23 -0
  504. package/dist/visualizer/utils/runtime-config.d.ts.map +1 -0
  505. package/dist/visualizer/utils/runtime-config.js +76 -0
  506. package/dist/visualizer/utils/runtime-config.js.map +1 -0
  507. package/dist/visualizer/utils/segmentation-colors.d.ts +9 -0
  508. package/dist/visualizer/utils/segmentation-colors.d.ts.map +1 -0
  509. package/dist/visualizer/utils/segmentation-colors.js +42 -0
  510. package/dist/visualizer/utils/segmentation-colors.js.map +1 -0
  511. package/dist/visualizer/utils/time.d.ts +7 -0
  512. package/dist/visualizer/utils/time.d.ts.map +1 -0
  513. package/dist/visualizer/utils/time.js +24 -0
  514. package/dist/visualizer/utils/time.js.map +1 -0
  515. package/dist/visualizer/utils/use-theme-mode.d.ts +3 -0
  516. package/dist/visualizer/utils/use-theme-mode.d.ts.map +1 -0
  517. package/dist/visualizer/utils/use-theme-mode.js +71 -0
  518. package/dist/visualizer/utils/use-theme-mode.js.map +1 -0
  519. package/package.json +33 -8
  520. package/protobuf-gen.sh +87 -0
  521. package/protobuf-gen.win.ps1 +130 -0
  522. package/scripts/browser-decoder-fixtures.html +54 -0
  523. package/scripts/fixtures.vite.config.mjs +30 -0
  524. package/scripts/run-decoder-fixtures.mjs +45 -0
@@ -0,0 +1,265 @@
1
+ # REFACTOR_PLAN.md
2
+
3
+ ## Goal
4
+
5
+ Refactor this repo-root package into a Luxonis-owned visualizer library that keeps message compatibility for currently supported inputs while removing Foxglove runtime/build coupling, improving throughput, and simplifying the codebase.
6
+
7
+ ## Non-Negotiable Constraints
8
+
9
+ - Supported incoming message types must remain compatible.
10
+ - Output semantics must stay the same unless a deliberate API break is documented and gated.
11
+ - Performance work must be measured, not guessed.
12
+ - Future agents must commit after each completed checkpoint and update `REFACTOR_HANDOFF.md`.
13
+ - The real runtime target is browser-only. Validation strategy must respect that.
14
+
15
+ ## Target End State
16
+
17
+ - One self-contained `src/` codebase with no dependency on the removed Foxglove workspace packages.
18
+ - Luxonis-owned transport, decode, render, and panel state layers.
19
+ - Bounded worker pools and explicit zero-copy or reduced-copy transfer paths.
20
+ - Modernized build/package metadata and newer dependencies.
21
+ - Compatibility fixtures and performance benchmarks that prevent regressions.
22
+
23
+ Current progress snapshot:
24
+
25
+ - `src/` no longer imports `@foxglove/studio-base`, `@foxglove/studio`, or `@foxglove/ws-protocol`.
26
+ - `ImagePanel` and `PointCloudPanel` now use local renderers.
27
+ - `tsconfig.json` and Rollup no longer depend on sibling-package source aliases or the old `packages/` monorepo layout.
28
+ - Package metadata has been partially normalized (`main`, `types`, `exports`, and dependency cleanup), but publishability and runtime-config cleanup are still open.
29
+
30
+ ## Phase 0: Baseline And Guardrails
31
+
32
+ ### Objectives
33
+
34
+ - Freeze current supported input/output behavior before refactoring internals.
35
+ - Establish a measurable baseline for performance and correctness.
36
+
37
+ ### Tasks
38
+
39
+ - Add representative browser-independent decoder fixtures for:
40
+ - raw color frames
41
+ - detections
42
+ - spatial detections
43
+ - IMU
44
+ - colored and uncolored point clouds
45
+ - Add browser-runtime validation coverage for:
46
+ - encoded H.264
47
+ - MJPEG
48
+ - H.265
49
+ - raw depth preview
50
+ - RGBD
51
+ - Add golden-output assertions for decoded event shape, schema name, timestamps, dimensions, and data-plane metadata.
52
+ - Add a small benchmark harness for decode throughput and point-cloud generation latency.
53
+ - Explicitly separate Node-safe checks from browser-only checks in docs and commands.
54
+ - Record current baseline problems separately from new regressions.
55
+
56
+ Current starting point:
57
+
58
+ - Node-safe decoder fixtures already cover raw color, detections, spatial detections, IMU, and colored/uncolored point clouds.
59
+ - Browser fixture scaffolding exists for worker-backed raw depth and RGBD validation via `scripts/browser-decoder-fixtures.html`.
60
+ - Encoded video browser fixtures still need real sample coverage.
61
+ - Real browser usage now shows periodic video hitching roughly every 5 seconds on encoded H.264/H.265 image streams. Treat this as a tracked regression candidate in the encoded-video decode path until disproven.
62
+
63
+ ### Exit Criteria
64
+
65
+ - Agents can prove compatibility before and after a refactor.
66
+ - Agents can identify which compatibility guarantees are covered in Node versus only in browser runtime.
67
+ - Agents can measure decode/render improvements with repeatable commands.
68
+
69
+ ## Phase 1: Internal Contracts And Baseline Cleanup
70
+
71
+ ### Objectives
72
+
73
+ - Define Luxonis-owned internal types and config flow.
74
+ - Remove easy Foxglove coupling that blocks later work.
75
+
76
+ ### Tasks
77
+
78
+ - Introduce internal equivalents for the minimal message-event and frame types used inside `lib/`.
79
+ - Centralize runtime configuration instead of scattered `localStorage` reads.
80
+ - Remove the legacy internal rate limiter if measurement continues to show it is inert or unused, instead of preserving dead throttling scaffolding in the runtime path.
81
+ - Fix branch-baseline config WIP cleanly:
82
+ - either complete `runtime-config-storage.ts`
83
+ - or remove/replace it in favor of the chosen config system
84
+ - Inline or replace small Foxglove helper dependencies where safe:
85
+ - time helpers
86
+ - point types
87
+ - RawImage extension types
88
+ - object-size policy, if retained at all
89
+ - Ensure no new imports are added from `@foxglove/studio-base`.
90
+
91
+ ### Exit Criteria
92
+
93
+ - `lib/` type-checks again.
94
+ - New internal contracts exist and are used by at least one subsystem.
95
+ - No change to decoded output behavior.
96
+
97
+ ## Phase 2: Decode And Worker Pipeline Refactor
98
+
99
+ ### Objectives
100
+
101
+ - Reduce copies, thread explosion, and duplicated pipelines.
102
+ - Make transport and decode architecture explicit and bounded.
103
+
104
+ ### Tasks
105
+
106
+ - Replace per-topic deserialization workers with a bounded pool by workload class.
107
+ - Prefer explicit `postMessage` transferables over opaque Comlink hops on hot paths.
108
+ - Merge or simplify transport and decode stages where it removes a full clone/copy boundary.
109
+ - Unify legacy depth+color point-cloud generation and RGBD point-cloud generation.
110
+ - Replace internal misuse of Foxglove schema names for sync-only artifacts.
111
+ - Fix compatibility helpers:
112
+ - WebCodecs detection
113
+ - encoded-stream capability gating
114
+ - supported-format declarations in one place
115
+ - Remove hot-path `estimateObjectSize()` calls where exact or carried-forward sizes are available.
116
+ - Preserve a browser-native validation path for any refactor touching `Worker`, `VideoDecoder`, or WebGPU-backed decoding.
117
+ - Investigate and measure the periodic encoded-video lag observed in browser runtime:
118
+ - reproduce on H.264 and H.265 streams
119
+ - determine whether the hitch is caused by WebCodecs decode cadence, worker/message transfer cadence, frame queueing, or buffer repacking
120
+ - record timing evidence before attempting optimizations
121
+
122
+ ### Exit Criteria
123
+
124
+ - Compatibility fixtures still pass.
125
+ - Worker count is bounded and documented.
126
+ - Decode latency and memory churn are measurably lower than baseline.
127
+ - Encoded video no longer exhibits the observed periodic hitching in browser validation, or the remaining cause is explicitly documented with measured evidence.
128
+
129
+ ## Phase 3: Rendering Replacement
130
+
131
+ ### Objectives
132
+
133
+ - Remove dependence on Foxglove `Image` and `ThreeDeeRender`.
134
+ - Keep the public panel API usable while replacing internals.
135
+
136
+ ### Tasks
137
+
138
+ - Build an internal image renderer first:
139
+ - stable mounted component
140
+ - image display
141
+ - annotation overlay
142
+ - click/cursor coordinate support
143
+ - render metrics hooks
144
+ - Build an internal point-cloud renderer second:
145
+ - evaluate WebGPU first
146
+ - fallback to optimized Three.js if rewrite cost is too high for required UX
147
+ - support colored point clouds, camera control, measurement, and picking as needed
148
+ - Remove remount-on-detection behavior.
149
+ - Replace per-panel polling with shared metrics and better resize handling.
150
+
151
+ ### Exit Criteria
152
+
153
+ - `src/panels/*` no longer lazy-load Foxglove renderer panels.
154
+ - Rendering performance is equal or better on benchmark scenes.
155
+ - Panel UX parity is documented.
156
+
157
+ Status:
158
+
159
+ - Largely complete on renderer ownership.
160
+ - Remaining work in this phase is parity documentation, browser-runtime confidence, and any renderer-specific follow-up tuning rather than Foxglove panel replacement itself.
161
+
162
+ ## Phase 4: Context And Pipeline Simplification
163
+
164
+ ### Objectives
165
+
166
+ - Remove Foxglove Studio runtime scaffolding that only exists to host reused panels.
167
+
168
+ ### Tasks
169
+
170
+ - Replace `VisualizerContext` Foxglove providers with Luxonis-owned context/store layers.
171
+ - Replace Foxglove `MessagePipeline` and `PanelAPI/useMessageReducer` usage with a simpler subscription model.
172
+ - Remove stubbed/no-op Foxglove contexts.
173
+ - Clarify supported connection model:
174
+ - either true multi-connection support
175
+ - or explicitly single-connection internal architecture
176
+
177
+ ### Exit Criteria
178
+
179
+ - No runtime dependency on Foxglove Studio contexts/providers/hooks remains in `lib/src`.
180
+ - Message subscription and render scheduling are simpler and documented.
181
+
182
+ Status:
183
+
184
+ - Mostly complete in `lib/src`.
185
+ - Remaining work is documentation cleanup and any final simplification opportunities around config flow rather than direct Foxglove context removal.
186
+
187
+ ## Phase 5: Monorepo And Build Cleanup
188
+
189
+ ### Objectives
190
+
191
+ - Make `lib/` self-contained and package-correct.
192
+
193
+ ### Tasks
194
+
195
+ - Move or rewrite any remaining code still sourced from `../packages`.
196
+ - Remove `tsconfig` and rollup aliases to `../packages/studio-base/src`.
197
+ - Simplify build tooling while preserving worker bundling requirements.
198
+ - Fix package metadata:
199
+ - exports
200
+ - `main`
201
+ - `types`
202
+ - worker assets
203
+ - Remove obsolete or duplicate dependencies.
204
+ - Bump dependency versions in a controlled pass after the architecture is stable.
205
+
206
+ ### Exit Criteria
207
+
208
+ - `lib/` builds without `../packages/studio-base`.
209
+ - Package metadata is correct and publishable.
210
+ - Dependency versions are consistent and intentional.
211
+
212
+ Status:
213
+
214
+ - The `../packages/studio-base` / `../packages/theme` / `../packages` source-tree coupling is removed.
215
+ - The remaining work is package-publish correctness, dependency/external reconciliation, and documentation alignment.
216
+
217
+ ## Phase 6: Release Prep
218
+
219
+ ### Objectives
220
+
221
+ - Make the rewrite safe to adopt.
222
+
223
+ ### Tasks
224
+
225
+ - Re-run compatibility fixtures and benchmarks.
226
+ - Document API differences, if any.
227
+ - Record migration notes for consuming apps.
228
+ - Produce a final comparison of:
229
+ - supported inputs
230
+ - output compatibility
231
+ - performance deltas
232
+ - removed Foxglove dependencies
233
+
234
+ ### Exit Criteria
235
+
236
+ - Refactor state is handoff-safe and release-ready.
237
+
238
+ ## Recommended Immediate Next Task
239
+
240
+ Continue Phase 5 from the current branch state.
241
+
242
+ Reason:
243
+
244
+ - The large Foxglove source-boundary removals are already done in `lib/src`.
245
+ - The highest-value remaining low-risk work is publishability/documentation correctness rather than another architectural rewrite by default.
246
+ - Browser-runtime benchmarking and compatibility validation are still important, but they should build on the current cleaner package/runtime boundary.
247
+
248
+ ## Commit And Handoff Protocol
249
+
250
+ For every completed checkpoint:
251
+
252
+ 1. Run the relevant validation commands.
253
+ 2. Update `REFACTOR_HANDOFF.md` with:
254
+ - what changed
255
+ - validation results
256
+ - open risks
257
+ - exact next task
258
+ 3. Commit the checkpoint.
259
+ 4. Record the commit hash in `REFACTOR_HANDOFF.md`.
260
+
261
+ Preferred commit shape:
262
+
263
+ - one logical checkpoint per commit
264
+ - no mixed unrelated cleanup
265
+ - no silent drive-by changes outside the current phase