visualifyjs 2.5.3-2.dev → 3.0.0

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 (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -241
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -298
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -44
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -121
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -9
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -124
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -587
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -147
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
@@ -0,0 +1,217 @@
1
+ # Phase 4: Advanced Optimizations
2
+
3
+ ## Overview
4
+
5
+ Implement advanced performance optimizations and modern web technologies to handle large-scale data, improve caching, enable real-time streaming, and provide offline capabilities.
6
+
7
+ ## Goals
8
+
9
+ - Handle datasets with 1M+ rows efficiently
10
+ - Enable offline data visualization with caching
11
+ - Support real-time data streaming
12
+ - Provide native app-like experience via PWA
13
+ - Leverage WebAssembly for compute-intensive operations
14
+
15
+ ## Tasks
16
+
17
+ ### 1. Web Workers for Data Processing
18
+
19
+ **Objective**: Move heavy data processing off the main thread
20
+
21
+ - [ ] Create Web Worker infrastructure
22
+ - [ ] Worker pool manager for concurrent processing
23
+ - [ ] Message passing protocol between main thread and workers
24
+ - [ ] Error handling and fallback to main thread
25
+
26
+ - [ ] Implement data transformations in workers
27
+ - [ ] Aggregation (sum, avg, min, max, count)
28
+ - [ ] Filtering and sorting
29
+ - [ ] Data format conversion (CSV/JSON/Arrow)
30
+ - [ ] Statistical calculations
31
+
32
+ - [ ] Add worker-based chart computations
33
+ - [ ] Large dataset sampling for preview
34
+ - [ ] Progressive data loading
35
+ - [ ] Background data preparation
36
+
37
+ **Files to modify/create**:
38
+ - `src/core/workers/data-worker.js` - Main data processing worker
39
+ - `src/core/workers/worker-pool.js` - Worker pool management
40
+ - `src/core/data-processor.js` - Worker communication layer
41
+ - `src/core/components/LargeDatasetChart.js` - Component using workers
42
+
43
+ **Dependencies**: None (native Web Workers API)
44
+
45
+ ---
46
+
47
+ ### 2. IndexedDB Caching Layer
48
+
49
+ **Objective**: Cache data and configurations for faster reloads and offline support
50
+
51
+ - [ ] Set up IndexedDB infrastructure
52
+ - [ ] Database schema design (versioning, stores)
53
+ - [ ] Connection management and error handling
54
+ - [ ] Migration strategy for schema updates
55
+
56
+ - [ ] Implement data caching
57
+ - [ ] Cache loaded datasets with metadata
58
+ - [ ] Cache processed/transformed data
59
+ - [ ] Cache chart images/renderings
60
+ - [ ] LRU eviction policy
61
+
62
+ - [ ] Add configuration caching
63
+ - [ ] Cache user preferences
64
+ - [ ] Cache chart configurations
65
+ - [ ] Cache theme settings
66
+
67
+ - [ ] Create cache management API
68
+ - [ ] `cache.get(key)`, `cache.set(key, value)`
69
+ - [ ] `cache.clear()`, `cache.invalidate(pattern)`
70
+ - [ ] Cache size limits and quotas
71
+
72
+ **Files to modify/create**:
73
+ - `src/core/cache/indexeddb.js` - IndexedDB wrapper
74
+ - `src/core/cache/manager.js` - Cache management API
75
+ - `src/core/cache/strategies.js` - Caching strategies (LRU, TTL)
76
+
77
+ **Dependencies**: `idb` (IndexedDB promise wrapper)
78
+
79
+ ---
80
+
81
+ ### 3. Streaming Data Support (WebSocket)
82
+
83
+ **Objective**: Support real-time data visualization with WebSocket connections
84
+
85
+ - [ ] Create WebSocket client infrastructure
86
+ - [ ] Connection management (connect, reconnect, disconnect)
87
+ - [ ] Message protocol (subscribe, unsubscribe, data)
88
+ - [ ] Authentication handling
89
+
90
+ - [ ] Implement streaming data components
91
+ - [ ] Real-time line chart with sliding window
92
+ - [ ] Live updating metrics/dashboards
93
+ - [ ] Data buffering and throttling
94
+
95
+ - [ ] Add data flow management
96
+ - [ ] Backpressure handling
97
+ - [ ] Data aggregation for high-frequency updates
98
+ - [ ] Pause/resume streaming
99
+
100
+ - [ ] Create streaming hooks
101
+ - [ ] `useWebSocket(url, options)`
102
+ - [ ] `useStreamingData(config)`
103
+ - [ ] `useLiveChart(config)`
104
+
105
+ **Files to modify/create**:
106
+ - `src/core/streaming/websocket-client.js` - WebSocket management
107
+ - `src/core/streaming/data-buffer.js` - Data buffering
108
+ - `src/core/hooks/useWebSocket.js` - React hook
109
+ - `src/core/components/StreamingChart.js` - Streaming chart component
110
+
111
+ **Dependencies**: Native WebSocket API
112
+
113
+ ---
114
+
115
+ ### 4. Progressive Web App (PWA) Support
116
+
117
+ **Objective**: Enable installation as native app and offline functionality
118
+
119
+ - [ ] Create service worker
120
+ - [ ] Static asset caching
121
+ - [ ] Data caching strategies
122
+ - [ ] Background sync for offline changes
123
+
124
+ - [ ] Add PWA manifest
125
+ - [ ] App icons (multiple sizes)
126
+ - [ ] Theme colors
127
+ - [ ] Display mode (standalone)
128
+ - [ ] Shortcuts for common actions
129
+
130
+ - [ ] Implement offline capabilities
131
+ - [ ] Offline indicator UI
132
+ - [ ] Queue changes for sync when online
133
+ - [ ] Fallback content for offline mode
134
+
135
+ - [ ] Add installation prompt
136
+ - [ ] Custom install button
137
+ - [ ] Installation guidance
138
+
139
+ **Files to modify/create**:
140
+ - `public/manifest.json` - PWA manifest
141
+ - `public/sw.js` - Service worker
142
+ - `src/core/pwa/register.js` - Service worker registration
143
+ - `src/core/pwa/offline-indicator.js` - Offline UI component
144
+
145
+ **Dependencies**: Workbox (optional, for service worker generation)
146
+
147
+ ---
148
+
149
+ ### 5. WebAssembly Integration
150
+
151
+ **Objective**: Use WASM for compute-intensive data operations
152
+
153
+ - [ ] Set up WebAssembly build pipeline
154
+ - [ ] Rust/C++ toolchain setup
155
+ - [ ] WASM compilation and bundling
156
+ - [ ] JS/WASM interface layer
157
+
158
+ - [ ] Implement WASM data operations
159
+ - [ ] Fast statistical calculations
160
+ - [ ] Large array operations
161
+ - [ ] Geospatial calculations (R-tree queries)
162
+ - [ ] Data compression/decompression
163
+
164
+ - [ ] Create WASM fallback
165
+ - [ ] Feature detection
166
+ - [ ] JS fallback for unsupported browsers
167
+ - [ ] Performance comparison/benchmarking
168
+
169
+ - [ ] Add WASM-powered features
170
+ - [ ] Fast CSV parsing
171
+ - [ ] Real-time data filtering
172
+ - [ ] Complex mathematical functions
173
+
174
+ **Files to modify/create**:
175
+ - `wasm/` - WebAssembly source directory
176
+ - `wasm/Cargo.toml` - Rust project config
177
+ - `wasm/src/lib.rs` - Rust implementation
178
+ - `src/core/wasm/loader.js` - WASM loading utilities
179
+ - `src/core/wasm/operations.js` - WASM operation wrappers
180
+
181
+ **Dependencies**:
182
+ - Rust toolchain (`wasm-pack`)
183
+ - `wasm-bindgen` for JS bindings
184
+
185
+ ---
186
+
187
+ ## Implementation Order
188
+
189
+ 1. **Week 1-2**: Web Workers (foundational for other features)
190
+ 2. **Week 3**: IndexedDB Caching (builds on workers)
191
+ 3. **Week 4**: WebSocket Streaming (independent)
192
+ 4. **Week 5**: PWA Support (independent, good for demos)
193
+ 5. **Week 6-7**: WebAssembly (most complex, optional for MVP)
194
+
195
+ ## Success Criteria
196
+
197
+ - [ ] Process 1M row dataset without UI freezing
198
+ - [ ] Load cached data 10x faster than network
199
+ - [ ] Display real-time updates at 30fps
200
+ - [ ] Pass Lighthouse PWA audit (90+ score)
201
+ - [ ] WASM operations 5x faster than JS equivalents
202
+
203
+ ## Documentation Tasks
204
+
205
+ - [ ] Update performance guide with Web Workers
206
+ - [ ] Add caching best practices
207
+ - [ ] Create streaming data tutorial
208
+ - [ ] Document PWA installation
209
+ - [ ] Write WASM integration guide
210
+
211
+ ## Testing Strategy
212
+
213
+ - [ ] Performance benchmarks for large datasets
214
+ - [ ] Offline functionality tests
215
+ - [ ] WebSocket reconnection tests
216
+ - [ ] Cross-browser WASM support tests
217
+ - [ ] Memory leak detection for long-running streams