ruviz 0.3.3__tar.gz

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 (526) hide show
  1. ruviz-0.3.3/.clippy.toml +3 -0
  2. ruviz-0.3.3/.githooks/pre-commit +67 -0
  3. ruviz-0.3.3/.gitignore +89 -0
  4. ruviz-0.3.3/.oxfmtrc.json +1 -0
  5. ruviz-0.3.3/CHANGELOG.md +180 -0
  6. ruviz-0.3.3/CONTRIBUTING.md +30 -0
  7. ruviz-0.3.3/Cargo.lock +12766 -0
  8. ruviz-0.3.3/Cargo.toml +403 -0
  9. ruviz-0.3.3/LICENSE +50 -0
  10. ruviz-0.3.3/Makefile +242 -0
  11. ruviz-0.3.3/PKG-INFO +56 -0
  12. ruviz-0.3.3/README.md +538 -0
  13. ruviz-0.3.3/TESTING_GUIDE.md +58 -0
  14. ruviz-0.3.3/assets/NotoSans-Regular.ttf +0 -0
  15. ruviz-0.3.3/assets/readme_example.png +0 -0
  16. ruviz-0.3.3/bun.lock +467 -0
  17. ruviz-0.3.3/demo/web/index.html +276 -0
  18. ruviz-0.3.3/demo/web/package.json +21 -0
  19. ruviz-0.3.3/demo/web/playwright.config.js +37 -0
  20. ruviz-0.3.3/demo/web/src/main.js +529 -0
  21. ruviz-0.3.3/docs/ARCHITECTURE.md +300 -0
  22. ruviz-0.3.3/docs/BENCHMARK_RESULTS.md +167 -0
  23. ruviz-0.3.3/docs/MATPLOTLIB_STYLING_RESEARCH.md +357 -0
  24. ruviz-0.3.3/docs/OPTIMIZATION_FINDINGS.md +174 -0
  25. ruviz-0.3.3/docs/PERFORMANCE_GUIDE.md +493 -0
  26. ruviz-0.3.3/docs/PROPERTY_TEST_RESULTS.md +99 -0
  27. ruviz-0.3.3/docs/QUICKSTART.md +458 -0
  28. ruviz-0.3.3/docs/TROUBLESHOOTING.md +472 -0
  29. ruviz-0.3.3/docs/animation_api_improvements.md +352 -0
  30. ruviz-0.3.3/docs/animation_migration_guide.md +201 -0
  31. ruviz-0.3.3/docs/gpu_alignment_bug_fixes.md +351 -0
  32. ruviz-0.3.3/docs/guide/01_introduction.md +186 -0
  33. ruviz-0.3.3/docs/guide/02_installation.md +432 -0
  34. ruviz-0.3.3/docs/guide/03_first_plot.md +508 -0
  35. ruviz-0.3.3/docs/guide/04_plot_types.md +676 -0
  36. ruviz-0.3.3/docs/guide/05_styling.md +796 -0
  37. ruviz-0.3.3/docs/guide/06_subplots.md +698 -0
  38. ruviz-0.3.3/docs/guide/07_backends.md +358 -0
  39. ruviz-0.3.3/docs/guide/08_performance.md +189 -0
  40. ruviz-0.3.3/docs/guide/09_data_integration.md +735 -0
  41. ruviz-0.3.3/docs/guide/10_export.md +584 -0
  42. ruviz-0.3.3/docs/guide/11_advanced.md +608 -0
  43. ruviz-0.3.3/docs/guide/README.md +62 -0
  44. ruviz-0.3.3/docs/legend_api_design.md +200 -0
  45. ruviz-0.3.3/docs/migration/matplotlib.md +443 -0
  46. ruviz-0.3.3/docs/migration/seaborn.md +481 -0
  47. ruviz-0.3.3/docs/proposals/legend-redesign.md +381 -0
  48. ruviz-0.3.3/docs/releases/README.md +42 -0
  49. ruviz-0.3.3/docs/releases/v0.1.4.md +56 -0
  50. ruviz-0.3.3/docs/releases/v0.1.5.md +47 -0
  51. ruviz-0.3.3/docs/releases/v0.2.0.md +57 -0
  52. ruviz-0.3.3/docs/releases/v0.3.0.md +57 -0
  53. ruviz-0.3.3/docs/releases/v0.3.1.md +50 -0
  54. ruviz-0.3.3/docs/releases/v0.3.2.md +50 -0
  55. ruviz-0.3.3/docs/releases/v0.3.3.md +50 -0
  56. ruviz-0.3.3/examples/animation_basic.rs +83 -0
  57. ruviz-0.3.3/examples/animation_easing.rs +59 -0
  58. ruviz-0.3.3/examples/animation_reactive.rs +139 -0
  59. ruviz-0.3.3/examples/animation_simple.rs +119 -0
  60. ruviz-0.3.3/examples/animation_wave.rs +76 -0
  61. ruviz-0.3.3/examples/annotations_example.rs +58 -0
  62. ruviz-0.3.3/examples/axis_scales_example.rs +80 -0
  63. ruviz-0.3.3/examples/basic_interaction.rs +74 -0
  64. ruviz-0.3.3/examples/boxplot_example.rs +22 -0
  65. ruviz-0.3.3/examples/create_performance_plot.rs +106 -0
  66. ruviz-0.3.3/examples/data_brushing.rs +266 -0
  67. ruviz-0.3.3/examples/debug_bar_chart.rs +27 -0
  68. ruviz-0.3.3/examples/doc_bar_chart.rs +21 -0
  69. ruviz-0.3.3/examples/doc_boxplot.rs +26 -0
  70. ruviz-0.3.3/examples/doc_colors.rs +56 -0
  71. ruviz-0.3.3/examples/doc_contour.rs +62 -0
  72. ruviz-0.3.3/examples/doc_ecdf.rs +34 -0
  73. ruviz-0.3.3/examples/doc_errorbar.rs +115 -0
  74. ruviz-0.3.3/examples/doc_heatmap.rs +27 -0
  75. ruviz-0.3.3/examples/doc_histogram.rs +28 -0
  76. ruviz-0.3.3/examples/doc_international.rs +149 -0
  77. ruviz-0.3.3/examples/doc_kde.rs +44 -0
  78. ruviz-0.3.3/examples/doc_legend.rs +26 -0
  79. ruviz-0.3.3/examples/doc_legend_positions.rs +64 -0
  80. ruviz-0.3.3/examples/doc_line_plot.rs +21 -0
  81. ruviz-0.3.3/examples/doc_line_styles.rs +43 -0
  82. ruviz-0.3.3/examples/doc_marker_styles.rs +78 -0
  83. ruviz-0.3.3/examples/doc_pie.rs +35 -0
  84. ruviz-0.3.3/examples/doc_polar.rs +45 -0
  85. ruviz-0.3.3/examples/doc_radar.rs +47 -0
  86. ruviz-0.3.3/examples/doc_scatter_plot.rs +26 -0
  87. ruviz-0.3.3/examples/doc_subplots.rs +69 -0
  88. ruviz-0.3.3/examples/doc_themes.rs +56 -0
  89. ruviz-0.3.3/examples/doc_typst_text.rs +37 -0
  90. ruviz-0.3.3/examples/doc_violin.rs +65 -0
  91. ruviz-0.3.3/examples/ecosystem_data_integration_demo.rs +85 -0
  92. ruviz-0.3.3/examples/fixes_demo.rs +70 -0
  93. ruviz-0.3.3/examples/generate_animation_gallery.rs +312 -0
  94. ruviz-0.3.3/examples/generate_golden_images.rs +273 -0
  95. ruviz-0.3.3/examples/gpu_api_test.rs +68 -0
  96. ruviz-0.3.3/examples/gpu_benchmark.rs +69 -0
  97. ruviz-0.3.3/examples/gpu_debug_test.rs +116 -0
  98. ruviz-0.3.3/examples/gpu_integration_test.rs +188 -0
  99. ruviz-0.3.3/examples/gpu_memory_test.rs +117 -0
  100. ruviz-0.3.3/examples/gpu_performance_plot.rs +82 -0
  101. ruviz-0.3.3/examples/gpu_plot_example.rs +152 -0
  102. ruviz-0.3.3/examples/gpu_scaling_benchmark.rs +264 -0
  103. ruviz-0.3.3/examples/gpu_vs_cpu_benchmark.rs +332 -0
  104. ruviz-0.3.3/examples/heatmap_example.rs +135 -0
  105. ruviz-0.3.3/examples/histogram_example.rs +25 -0
  106. ruviz-0.3.3/examples/interactive_heatmap.rs +81 -0
  107. ruviz-0.3.3/examples/interactive_multi_series.rs +73 -0
  108. ruviz-0.3.3/examples/interactive_scatter_clusters.rs +97 -0
  109. ruviz-0.3.3/examples/memory_optimization_demo.rs +76 -0
  110. ruviz-0.3.3/examples/memory_pool_performance_test.rs +137 -0
  111. ruviz-0.3.3/examples/minimal_gpu_benchmark.rs +125 -0
  112. ruviz-0.3.3/examples/mixed_coordinate_insets.rs +119 -0
  113. ruviz-0.3.3/examples/output/.gitkeep +0 -0
  114. ruviz-0.3.3/examples/parallel_demo.rs +132 -0
  115. ruviz-0.3.3/examples/pdf_export_example.rs +97 -0
  116. ruviz-0.3.3/examples/performance/million_points.rs +121 -0
  117. ruviz-0.3.3/examples/performance/scaling_benchmark.rs +116 -0
  118. ruviz-0.3.3/examples/performance/streaming_demo.rs +114 -0
  119. ruviz-0.3.3/examples/performance_data_collector.rs +175 -0
  120. ruviz-0.3.3/examples/precise_centering_test.rs +49 -0
  121. ruviz-0.3.3/examples/profile_small_dataset.rs +74 -0
  122. ruviz-0.3.3/examples/reactive_example.rs +255 -0
  123. ruviz-0.3.3/examples/readme_quickstart.rs +22 -0
  124. ruviz-0.3.3/examples/real_time_performance.rs +170 -0
  125. ruviz-0.3.3/examples/scientific_showcase.rs +159 -0
  126. ruviz-0.3.3/examples/scientific_themes_showcase.rs +145 -0
  127. ruviz-0.3.3/examples/seaborn_style_example.rs +43 -0
  128. ruviz-0.3.3/examples/simple_scaling_test.rs +126 -0
  129. ruviz-0.3.3/examples/streaming_example.rs +185 -0
  130. ruviz-0.3.3/examples/subplot_example.rs +70 -0
  131. ruviz-0.3.3/examples/title_centering_test.rs +45 -0
  132. ruviz-0.3.3/examples/typst_check.rs +63 -0
  133. ruviz-0.3.3/examples/util/mod.rs +59 -0
  134. ruviz-0.3.3/examples/wgpu_test.rs +49 -0
  135. ruviz-0.3.3/gallery/README.md +219 -0
  136. ruviz-0.3.3/gallery/advanced/cosmic_text_rotation_demo.rs +44 -0
  137. ruviz-0.3.3/gallery/advanced/font_demo.rs +26 -0
  138. ruviz-0.3.3/gallery/advanced/test_font_alignment.rs +32 -0
  139. ruviz-0.3.3/gallery/advanced/test_font_families.rs +37 -0
  140. ruviz-0.3.3/gallery/advanced/test_plotters_style_fonts.rs +55 -0
  141. ruviz-0.3.3/gallery/advanced/test_text_rotation.rs +26 -0
  142. ruviz-0.3.3/gallery/basic/axis_legend_test.png +0 -0
  143. ruviz-0.3.3/gallery/basic/axis_legend_test.rs +32 -0
  144. ruviz-0.3.3/gallery/basic/basic_example.png +0 -0
  145. ruviz-0.3.3/gallery/basic/basic_example.rs +25 -0
  146. ruviz-0.3.3/gallery/basic/legend_handles_test.png +0 -0
  147. ruviz-0.3.3/gallery/basic/legend_handles_test.rs +38 -0
  148. ruviz-0.3.3/gallery/basic/legend_horizontal_test.png +0 -0
  149. ruviz-0.3.3/gallery/basic/legend_horizontal_test.rs +40 -0
  150. ruviz-0.3.3/gallery/basic/legend_rounded_test.png +0 -0
  151. ruviz-0.3.3/gallery/basic/legend_rounded_test.rs +39 -0
  152. ruviz-0.3.3/gallery/basic/legend_scatter_test.png +0 -0
  153. ruviz-0.3.3/gallery/basic/legend_scatter_test.rs +46 -0
  154. ruviz-0.3.3/gallery/basic/simple_visual_test.rs +40 -0
  155. ruviz-0.3.3/gallery/performance/memory_optimization_demo.rs +109 -0
  156. ruviz-0.3.3/gallery/performance/parallel_demo.rs +83 -0
  157. ruviz-0.3.3/gallery/performance/simd_demo.rs +124 -0
  158. ruviz-0.3.3/gallery/publication/legend_features_example.rs +132 -0
  159. ruviz-0.3.3/gallery/publication/legend_horizontal.png +0 -0
  160. ruviz-0.3.3/gallery/publication/legend_line_styles.png +0 -0
  161. ruviz-0.3.3/gallery/publication/legend_mixed.png +0 -0
  162. ruviz-0.3.3/gallery/publication/legend_scatter_markers.png +0 -0
  163. ruviz-0.3.3/gallery/publication/simple_publication_test.png +0 -0
  164. ruviz-0.3.3/gallery/publication/simple_publication_test.rs +37 -0
  165. ruviz-0.3.3/gallery/publication/simple_publication_test_theme.png +0 -0
  166. ruviz-0.3.3/gallery/publication/test_axis_labels.rs +29 -0
  167. ruviz-0.3.3/gallery/scientific/scientific_plotting.rs +191 -0
  168. ruviz-0.3.3/gallery/utility/generate_test_images.rs +102 -0
  169. ruviz-0.3.3/gallery/utility/image_gallery_generator.rs +378 -0
  170. ruviz-0.3.3/gallery/utility/save_image_example.rs +30 -0
  171. ruviz-0.3.3/gallery/utility/test_with_axes_and_grid.rs +70 -0
  172. ruviz-0.3.3/gallery/utility/verify_axes.rs +59 -0
  173. ruviz-0.3.3/package.json +36 -0
  174. ruviz-0.3.3/packages/ruviz-web/README.md +80 -0
  175. ruviz-0.3.3/packages/ruviz-web/docs/.vitepress/config.mts +38 -0
  176. ruviz-0.3.3/packages/ruviz-web/docs/.vitepress/theme/components/PlotGallery.vue +93 -0
  177. ruviz-0.3.3/packages/ruviz-web/docs/.vitepress/theme/index.ts +15 -0
  178. ruviz-0.3.3/packages/ruviz-web/docs/.vitepress/theme/style.css +23 -0
  179. ruviz-0.3.3/packages/ruviz-web/docs/api/index.md +12 -0
  180. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/README.md +10 -0
  181. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/README.md +176 -0
  182. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/classes/CanvasSession.md +339 -0
  183. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/classes/ObservableSeries.md +125 -0
  184. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/classes/PlotBuilder.md +709 -0
  185. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/classes/SineSignal.md +87 -0
  186. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/classes/WorkerSession.md +383 -0
  187. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createCanvasSession.md +25 -0
  188. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createObservable.md +23 -0
  189. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createPlot.md +17 -0
  190. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createPlotFromSnapshot.md +23 -0
  191. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createSineSignal.md +23 -0
  192. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/createWorkerSession.md +25 -0
  193. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/getRuntimeCapabilities.md +17 -0
  194. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/index/functions/registerFont.md +21 -0
  195. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/README.md +55 -0
  196. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/functions/clonePlotSnapshot.md +21 -0
  197. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/functions/cloneSourceSnapshot.md +27 -0
  198. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/functions/normalizeSineSignalOptions.md +21 -0
  199. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/functions/toNumberArray.md +21 -0
  200. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/BarSeriesSnapshot.md +33 -0
  201. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/BoxplotSeriesSnapshot.md +25 -0
  202. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/CanvasSessionOptions.md +45 -0
  203. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ContourSeriesSnapshot.md +41 -0
  204. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/EcdfSeriesSnapshot.md +25 -0
  205. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ErrorBarsSeriesSnapshot.md +41 -0
  206. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ErrorBarsXYSeriesSnapshot.md +49 -0
  207. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/HeatmapSeriesSnapshot.md +41 -0
  208. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/HistogramSeriesSnapshot.md +25 -0
  209. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/KdeSeriesSnapshot.md +25 -0
  210. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/LineSeriesSnapshot.md +33 -0
  211. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/NormalizedSineSignalOptions.md +73 -0
  212. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ObservableSourceSnapshot.md +25 -0
  213. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/PieSeriesSnapshot.md +33 -0
  214. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/PlotSaveOptions.md +25 -0
  215. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/PlotSnapshot.md +65 -0
  216. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/PolarLineSeriesSnapshot.md +33 -0
  217. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/RadarSeriesItemSnapshot.md +25 -0
  218. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/RadarSeriesSnapshot.md +33 -0
  219. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/RuntimeCapabilities.md +57 -0
  220. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ScatterSeriesSnapshot.md +33 -0
  221. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/SignalSourceSnapshot.md +25 -0
  222. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/SineSignalOptions.md +65 -0
  223. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/StaticSourceSnapshot.md +25 -0
  224. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/ViolinSeriesSnapshot.md +25 -0
  225. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/interfaces/WorkerSessionOptions.md +69 -0
  226. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/BackendPreference.md +11 -0
  227. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/NumericArray.md +11 -0
  228. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/NumericReactiveSourceSnapshot.md +11 -0
  229. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/PlotSaveFormat.md +11 -0
  230. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/PlotSeriesSnapshot.md +11 -0
  231. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/PlotTheme.md +11 -0
  232. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/SessionMode.md +11 -0
  233. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/XSourceSnapshot.md +11 -0
  234. ruviz-0.3.3/packages/ruviz-web/docs/api/reference/shared/type-aliases/YSourceSnapshot.md +11 -0
  235. ruviz-0.3.3/packages/ruviz-web/docs/guide/gallery.md +5 -0
  236. ruviz-0.3.3/packages/ruviz-web/docs/guide/getting-started.md +27 -0
  237. ruviz-0.3.3/packages/ruviz-web/docs/guide/interactivity.md +9 -0
  238. ruviz-0.3.3/packages/ruviz-web/docs/guide/plot-types.md +6 -0
  239. ruviz-0.3.3/packages/ruviz-web/docs/index.md +21 -0
  240. ruviz-0.3.3/packages/ruviz-web/examples/README.md +10 -0
  241. ruviz-0.3.3/packages/ruviz-web/examples/bar.ts +14 -0
  242. ruviz-0.3.3/packages/ruviz-web/examples/boxplot.ts +13 -0
  243. ruviz-0.3.3/packages/ruviz-web/examples/contour.ts +14 -0
  244. ruviz-0.3.3/packages/ruviz-web/examples/data.ts +95 -0
  245. ruviz-0.3.3/packages/ruviz-web/examples/ecdf.ts +18 -0
  246. ruviz-0.3.3/packages/ruviz-web/examples/error-bars-xy.ts +19 -0
  247. ruviz-0.3.3/packages/ruviz-web/examples/error-bars.ts +19 -0
  248. ruviz-0.3.3/packages/ruviz-web/examples/heatmap.ts +13 -0
  249. ruviz-0.3.3/packages/ruviz-web/examples/histogram.ts +17 -0
  250. ruviz-0.3.3/packages/ruviz-web/examples/index.ts +67 -0
  251. ruviz-0.3.3/packages/ruviz-web/examples/kde.ts +13 -0
  252. ruviz-0.3.3/packages/ruviz-web/examples/line.ts +14 -0
  253. ruviz-0.3.3/packages/ruviz-web/examples/observable-line.ts +33 -0
  254. ruviz-0.3.3/packages/ruviz-web/examples/pie.ts +12 -0
  255. ruviz-0.3.3/packages/ruviz-web/examples/polar-line.ts +14 -0
  256. ruviz-0.3.3/packages/ruviz-web/examples/radar.ts +13 -0
  257. ruviz-0.3.3/packages/ruviz-web/examples/scatter.ts +19 -0
  258. ruviz-0.3.3/packages/ruviz-web/examples/signal-playback.ts +42 -0
  259. ruviz-0.3.3/packages/ruviz-web/examples/types.ts +14 -0
  260. ruviz-0.3.3/packages/ruviz-web/examples/violin.ts +13 -0
  261. ruviz-0.3.3/packages/ruviz-web/examples/worker-session.ts +25 -0
  262. ruviz-0.3.3/packages/ruviz-web/package.json +69 -0
  263. ruviz-0.3.3/packages/ruviz-web/src/index.ts +1979 -0
  264. ruviz-0.3.3/packages/ruviz-web/src/plot-runtime.ts +249 -0
  265. ruviz-0.3.3/packages/ruviz-web/src/session-worker.ts +182 -0
  266. ruviz-0.3.3/packages/ruviz-web/src/shared.ts +331 -0
  267. ruviz-0.3.3/packages/ruviz-web/tsconfig.json +23 -0
  268. ruviz-0.3.3/packages/ruviz-web/typedoc.json +24 -0
  269. ruviz-0.3.3/pyproject.toml +40 -0
  270. ruviz-0.3.3/python/Cargo.toml +21 -0
  271. ruviz-0.3.3/python/README.md +41 -0
  272. ruviz-0.3.3/python/docs/api.md +3 -0
  273. ruviz-0.3.3/python/docs/assets/gallery/.gitkeep +1 -0
  274. ruviz-0.3.3/python/docs/assets/gallery/bar.png +0 -0
  275. ruviz-0.3.3/python/docs/assets/gallery/boxplot.png +0 -0
  276. ruviz-0.3.3/python/docs/assets/gallery/contour.png +0 -0
  277. ruviz-0.3.3/python/docs/assets/gallery/ecdf.png +0 -0
  278. ruviz-0.3.3/python/docs/assets/gallery/error-bars-xy.png +0 -0
  279. ruviz-0.3.3/python/docs/assets/gallery/error-bars.png +0 -0
  280. ruviz-0.3.3/python/docs/assets/gallery/heatmap.png +0 -0
  281. ruviz-0.3.3/python/docs/assets/gallery/histogram.png +0 -0
  282. ruviz-0.3.3/python/docs/assets/gallery/kde.png +0 -0
  283. ruviz-0.3.3/python/docs/assets/gallery/line.png +0 -0
  284. ruviz-0.3.3/python/docs/assets/gallery/pie.png +0 -0
  285. ruviz-0.3.3/python/docs/assets/gallery/polar-line.png +0 -0
  286. ruviz-0.3.3/python/docs/assets/gallery/radar.png +0 -0
  287. ruviz-0.3.3/python/docs/assets/gallery/scatter.png +0 -0
  288. ruviz-0.3.3/python/docs/assets/gallery/violin.png +0 -0
  289. ruviz-0.3.3/python/docs/gallery.md +630 -0
  290. ruviz-0.3.3/python/docs/getting-started.md +45 -0
  291. ruviz-0.3.3/python/docs/index.md +38 -0
  292. ruviz-0.3.3/python/docs/interactive.md +35 -0
  293. ruviz-0.3.3/python/docs/stylesheets/extra.css +10 -0
  294. ruviz-0.3.3/python/examples/README.md +18 -0
  295. ruviz-0.3.3/python/examples/_shared.py +111 -0
  296. ruviz-0.3.3/python/examples/bar.py +19 -0
  297. ruviz-0.3.3/python/examples/boxplot.py +18 -0
  298. ruviz-0.3.3/python/examples/console_interactive.py +25 -0
  299. ruviz-0.3.3/python/examples/contour.py +19 -0
  300. ruviz-0.3.3/python/examples/dataframe_line.py +26 -0
  301. ruviz-0.3.3/python/examples/ecdf.py +18 -0
  302. ruviz-0.3.3/python/examples/error_bars.py +24 -0
  303. ruviz-0.3.3/python/examples/error_bars_xy.py +24 -0
  304. ruviz-0.3.3/python/examples/heatmap.py +18 -0
  305. ruviz-0.3.3/python/examples/histogram.py +18 -0
  306. ruviz-0.3.3/python/examples/kde.py +18 -0
  307. ruviz-0.3.3/python/examples/line.py +24 -0
  308. ruviz-0.3.3/python/examples/notebook_export.py +31 -0
  309. ruviz-0.3.3/python/examples/notebook_observable.py +30 -0
  310. ruviz-0.3.3/python/examples/output/.gitkeep +1 -0
  311. ruviz-0.3.3/python/examples/pie.py +20 -0
  312. ruviz-0.3.3/python/examples/polar_line.py +19 -0
  313. ruviz-0.3.3/python/examples/radar.py +19 -0
  314. ruviz-0.3.3/python/examples/scatter.py +24 -0
  315. ruviz-0.3.3/python/examples/violin.py +18 -0
  316. ruviz-0.3.3/python/mkdocs.yml +34 -0
  317. ruviz-0.3.3/python/ruviz/__init__.py +6 -0
  318. ruviz-0.3.3/python/ruviz/_api.py +424 -0
  319. ruviz-0.3.3/python/ruviz/_widget.py +25 -0
  320. ruviz-0.3.3/python/ruviz/web/dist/index.d.ts +226 -0
  321. ruviz-0.3.3/python/ruviz/web/dist/index.js +1369 -0
  322. ruviz-0.3.3/python/ruviz/web/dist/index.js.map +1 -0
  323. ruviz-0.3.3/python/ruviz/web/dist/plot-runtime.d.ts +8 -0
  324. ruviz-0.3.3/python/ruviz/web/dist/plot-runtime.js +184 -0
  325. ruviz-0.3.3/python/ruviz/web/dist/plot-runtime.js.map +1 -0
  326. ruviz-0.3.3/python/ruviz/web/dist/session-worker.d.ts +1 -0
  327. ruviz-0.3.3/python/ruviz/web/dist/session-worker.js +133 -0
  328. ruviz-0.3.3/python/ruviz/web/dist/session-worker.js.map +1 -0
  329. ruviz-0.3.3/python/ruviz/web/dist/shared.d.ts +153 -0
  330. ruviz-0.3.3/python/ruviz/web/dist/shared.js +130 -0
  331. ruviz-0.3.3/python/ruviz/web/dist/shared.js.map +1 -0
  332. ruviz-0.3.3/python/ruviz/widget.js +73 -0
  333. ruviz-0.3.3/python/scripts/generate_gallery.py +88 -0
  334. ruviz-0.3.3/python/src/lib.rs +689 -0
  335. ruviz-0.3.3/python/tests/test_api.py +44 -0
  336. ruviz-0.3.3/python/tests/test_examples.py +31 -0
  337. ruviz-0.3.3/python/uv.lock +1821 -0
  338. ruviz-0.3.3/rust-toolchain.toml +3 -0
  339. ruviz-0.3.3/rustfmt.toml +10 -0
  340. ruviz-0.3.3/scripts/check-task-prerequisites.sh +62 -0
  341. ruviz-0.3.3/scripts/clean-outputs.sh +38 -0
  342. ruviz-0.3.3/scripts/common.sh +77 -0
  343. ruviz-0.3.3/scripts/create-new-feature.sh +96 -0
  344. ruviz-0.3.3/scripts/generate-doc-images.sh +77 -0
  345. ruviz-0.3.3/scripts/generate_gallery.rs +303 -0
  346. ruviz-0.3.3/scripts/generate_reference.py +424 -0
  347. ruviz-0.3.3/scripts/get-feature-paths.sh +23 -0
  348. ruviz-0.3.3/scripts/setup-plan.sh +44 -0
  349. ruviz-0.3.3/scripts/update-agent-context.sh +234 -0
  350. ruviz-0.3.3/src/animation/builder.rs +534 -0
  351. ruviz-0.3.3/src/animation/encoders/gif.rs +307 -0
  352. ruviz-0.3.3/src/animation/encoders/mod.rs +221 -0
  353. ruviz-0.3.3/src/animation/interpolation.rs +456 -0
  354. ruviz-0.3.3/src/animation/macros.rs +148 -0
  355. ruviz-0.3.3/src/animation/mod.rs +122 -0
  356. ruviz-0.3.3/src/animation/observable_ext.rs +515 -0
  357. ruviz-0.3.3/src/animation/recorder.rs +1249 -0
  358. ruviz-0.3.3/src/animation/stream.rs +407 -0
  359. ruviz-0.3.3/src/animation/tick.rs +498 -0
  360. ruviz-0.3.3/src/axes/inset.rs +255 -0
  361. ruviz-0.3.3/src/axes/mod.rs +20 -0
  362. ruviz-0.3.3/src/axes/polar.rs +284 -0
  363. ruviz-0.3.3/src/axes/scale.rs +364 -0
  364. ruviz-0.3.3/src/axes/secondary.rs +279 -0
  365. ruviz-0.3.3/src/axes/tick_layout.rs +316 -0
  366. ruviz-0.3.3/src/axes/ticks.rs +389 -0
  367. ruviz-0.3.3/src/core/annotation.rs +774 -0
  368. ruviz-0.3.3/src/core/config.rs +1173 -0
  369. ruviz-0.3.3/src/core/constants.rs +216 -0
  370. ruviz-0.3.3/src/core/error.rs +629 -0
  371. ruviz-0.3.3/src/core/grid_style.rs +254 -0
  372. ruviz-0.3.3/src/core/layout.rs +819 -0
  373. ruviz-0.3.3/src/core/legend.rs +1032 -0
  374. ruviz-0.3.3/src/core/mod.rs +62 -0
  375. ruviz-0.3.3/src/core/plot/annotations.rs +686 -0
  376. ruviz-0.3.3/src/core/plot/builder/tests.rs +165 -0
  377. ruviz-0.3.3/src/core/plot/builder.rs +2364 -0
  378. ruviz-0.3.3/src/core/plot/config.rs +114 -0
  379. ruviz-0.3.3/src/core/plot/configuration.rs +402 -0
  380. ruviz-0.3.3/src/core/plot/construction.rs +1113 -0
  381. ruviz-0.3.3/src/core/plot/data.rs +549 -0
  382. ruviz-0.3.3/src/core/plot/image.rs +42 -0
  383. ruviz-0.3.3/src/core/plot/interactive_session/helpers.rs +718 -0
  384. ruviz-0.3.3/src/core/plot/interactive_session/tests.rs +1210 -0
  385. ruviz-0.3.3/src/core/plot/interactive_session.rs +2069 -0
  386. ruviz-0.3.3/src/core/plot/layout_manager.rs +243 -0
  387. ruviz-0.3.3/src/core/plot/mixed_render.rs +986 -0
  388. ruviz-0.3.3/src/core/plot/mod.rs +428 -0
  389. ruviz-0.3.3/src/core/plot/parallel_render.rs +1556 -0
  390. ruviz-0.3.3/src/core/plot/prepared.rs +319 -0
  391. ruviz-0.3.3/src/core/plot/render.rs +2331 -0
  392. ruviz-0.3.3/src/core/plot/render_pipeline.rs +176 -0
  393. ruviz-0.3.3/src/core/plot/series_api.rs +1222 -0
  394. ruviz-0.3.3/src/core/plot/series_builders.rs +1213 -0
  395. ruviz-0.3.3/src/core/plot/series_internal.rs +1550 -0
  396. ruviz-0.3.3/src/core/plot/series_manager.rs +188 -0
  397. ruviz-0.3.3/src/core/plot/tests.rs +2458 -0
  398. ruviz-0.3.3/src/core/plot/types.rs +1251 -0
  399. ruviz-0.3.3/src/core/position.rs +261 -0
  400. ruviz-0.3.3/src/core/style.rs +477 -0
  401. ruviz-0.3.3/src/core/style_utils.rs +411 -0
  402. ruviz-0.3.3/src/core/subplot.rs +691 -0
  403. ruviz-0.3.3/src/core/tick_formatter.rs +469 -0
  404. ruviz-0.3.3/src/core/transform.rs +424 -0
  405. ruviz-0.3.3/src/core/types.rs +166 -0
  406. ruviz-0.3.3/src/core/units.rs +484 -0
  407. ruviz-0.3.3/src/core/validation_test.rs +236 -0
  408. ruviz-0.3.3/src/data/datashader_simple.rs +529 -0
  409. ruviz-0.3.3/src/data/elements.rs +574 -0
  410. ruviz-0.3.3/src/data/impls.rs +92 -0
  411. ruviz-0.3.3/src/data/memory.rs +823 -0
  412. ruviz-0.3.3/src/data/memory_pool.rs +425 -0
  413. ruviz-0.3.3/src/data/mod.rs +43 -0
  414. ruviz-0.3.3/src/data/observable/tests.rs +936 -0
  415. ruviz-0.3.3/src/data/observable.rs +1623 -0
  416. ruviz-0.3.3/src/data/platform/freebsd.rs +347 -0
  417. ruviz-0.3.3/src/data/platform/linux.rs +324 -0
  418. ruviz-0.3.3/src/data/platform/macos.rs +498 -0
  419. ruviz-0.3.3/src/data/platform/mod.rs +282 -0
  420. ruviz-0.3.3/src/data/platform/windows.rs +491 -0
  421. ruviz-0.3.3/src/data/pooled_vec.rs +506 -0
  422. ruviz-0.3.3/src/data/signal.rs +407 -0
  423. ruviz-0.3.3/src/data/traits.rs +852 -0
  424. ruviz-0.3.3/src/data/transform.rs +1 -0
  425. ruviz-0.3.3/src/data/validation.rs +134 -0
  426. ruviz-0.3.3/src/data/zero_copy.rs +367 -0
  427. ruviz-0.3.3/src/dejavu-sans.ttf +2132 -0
  428. ruviz-0.3.3/src/export/mod.rs +373 -0
  429. ruviz-0.3.3/src/export/pdf.rs +373 -0
  430. ruviz-0.3.3/src/export/svg/tests.rs +409 -0
  431. ruviz-0.3.3/src/export/svg.rs +1426 -0
  432. ruviz-0.3.3/src/export/svg_to_pdf.rs +101 -0
  433. ruviz-0.3.3/src/interactive/event.rs +476 -0
  434. ruviz-0.3.3/src/interactive/mod.rs +22 -0
  435. ruviz-0.3.3/src/interactive/renderer.rs +1207 -0
  436. ruviz-0.3.3/src/interactive/state.rs +605 -0
  437. ruviz-0.3.3/src/interactive/test_utils.rs +379 -0
  438. ruviz-0.3.3/src/interactive/window/tests.rs +570 -0
  439. ruviz-0.3.3/src/interactive/window.rs +2130 -0
  440. ruviz-0.3.3/src/layout/mod.rs +4 -0
  441. ruviz-0.3.3/src/lib.rs +975 -0
  442. ruviz-0.3.3/src/plots/basic/bar.rs +209 -0
  443. ruviz-0.3.3/src/plots/basic/line.rs +196 -0
  444. ruviz-0.3.3/src/plots/basic/mod.rs +37 -0
  445. ruviz-0.3.3/src/plots/basic/scatter.rs +186 -0
  446. ruviz-0.3.3/src/plots/boxplot.rs +970 -0
  447. ruviz-0.3.3/src/plots/categorical/bar.rs +782 -0
  448. ruviz-0.3.3/src/plots/categorical/mod.rs +26 -0
  449. ruviz-0.3.3/src/plots/categorical/strip.rs +473 -0
  450. ruviz-0.3.3/src/plots/categorical/swarm.rs +485 -0
  451. ruviz-0.3.3/src/plots/composite/jointplot.rs +219 -0
  452. ruviz-0.3.3/src/plots/composite/mod.rs +18 -0
  453. ruviz-0.3.3/src/plots/composite/pairplot.rs +261 -0
  454. ruviz-0.3.3/src/plots/composition/mod.rs +16 -0
  455. ruviz-0.3.3/src/plots/composition/pie.rs +624 -0
  456. ruviz-0.3.3/src/plots/continuous/area.rs +784 -0
  457. ruviz-0.3.3/src/plots/continuous/contour.rs +886 -0
  458. ruviz-0.3.3/src/plots/continuous/hexbin.rs +580 -0
  459. ruviz-0.3.3/src/plots/continuous/mod.rs +31 -0
  460. ruviz-0.3.3/src/plots/discrete/mod.rs +23 -0
  461. ruviz-0.3.3/src/plots/discrete/stem.rs +495 -0
  462. ruviz-0.3.3/src/plots/discrete/step.rs +471 -0
  463. ruviz-0.3.3/src/plots/distribution/boxen.rs +507 -0
  464. ruviz-0.3.3/src/plots/distribution/ecdf.rs +493 -0
  465. ruviz-0.3.3/src/plots/distribution/kde.rs +691 -0
  466. ruviz-0.3.3/src/plots/distribution/mod.rs +42 -0
  467. ruviz-0.3.3/src/plots/distribution/rug.rs +354 -0
  468. ruviz-0.3.3/src/plots/distribution/violin.rs +792 -0
  469. ruviz-0.3.3/src/plots/error/errorbar.rs +678 -0
  470. ruviz-0.3.3/src/plots/error/mod.rs +19 -0
  471. ruviz-0.3.3/src/plots/flow/mod.rs +5 -0
  472. ruviz-0.3.3/src/plots/heatmap.rs +565 -0
  473. ruviz-0.3.3/src/plots/hierarchical/dendrogram.rs +305 -0
  474. ruviz-0.3.3/src/plots/hierarchical/mod.rs +12 -0
  475. ruviz-0.3.3/src/plots/histogram.rs +629 -0
  476. ruviz-0.3.3/src/plots/mod.rs +82 -0
  477. ruviz-0.3.3/src/plots/polar/mod.rs +48 -0
  478. ruviz-0.3.3/src/plots/polar/polar_plot.rs +599 -0
  479. ruviz-0.3.3/src/plots/polar/radar.rs +798 -0
  480. ruviz-0.3.3/src/plots/regression/mod.rs +12 -0
  481. ruviz-0.3.3/src/plots/regression/regplot.rs +370 -0
  482. ruviz-0.3.3/src/plots/statistics.rs +94 -0
  483. ruviz-0.3.3/src/plots/three_d/mod.rs +5 -0
  484. ruviz-0.3.3/src/plots/traits.rs +568 -0
  485. ruviz-0.3.3/src/plots/vector/mod.rs +11 -0
  486. ruviz-0.3.3/src/plots/vector/quiver.rs +507 -0
  487. ruviz-0.3.3/src/render/backend.rs +7 -0
  488. ruviz-0.3.3/src/render/color.rs +1074 -0
  489. ruviz-0.3.3/src/render/cosmic_text_renderer.rs +181 -0
  490. ruviz-0.3.3/src/render/gpu/buffer.rs +502 -0
  491. ruviz-0.3.3/src/render/gpu/compute.rs +383 -0
  492. ruviz-0.3.3/src/render/gpu/device.rs +413 -0
  493. ruviz-0.3.3/src/render/gpu/memory.rs +571 -0
  494. ruviz-0.3.3/src/render/gpu/mod.rs +533 -0
  495. ruviz-0.3.3/src/render/gpu/pipeline.rs +465 -0
  496. ruviz-0.3.3/src/render/gpu/renderer.rs +368 -0
  497. ruviz-0.3.3/src/render/gpu/shaders/aggregate.wgsl +60 -0
  498. ruviz-0.3.3/src/render/gpu/shaders/transform.wgsl +46 -0
  499. ruviz-0.3.3/src/render/mod.rs +238 -0
  500. ruviz-0.3.3/src/render/parallel.rs +719 -0
  501. ruviz-0.3.3/src/render/pooled.rs +502 -0
  502. ruviz-0.3.3/src/render/primitives/arc.rs +303 -0
  503. ruviz-0.3.3/src/render/primitives/arrow.rs +263 -0
  504. ruviz-0.3.3/src/render/primitives/mod.rs +14 -0
  505. ruviz-0.3.3/src/render/primitives/polygon.rs +257 -0
  506. ruviz-0.3.3/src/render/simd.rs +740 -0
  507. ruviz-0.3.3/src/render/skia/annotations.rs +541 -0
  508. ruviz-0.3.3/src/render/skia/primitives.rs +926 -0
  509. ruviz-0.3.3/src/render/skia/tests.rs +321 -0
  510. ruviz-0.3.3/src/render/skia/utils.rs +355 -0
  511. ruviz-0.3.3/src/render/skia.rs +2297 -0
  512. ruviz-0.3.3/src/render/style.rs +396 -0
  513. ruviz-0.3.3/src/render/text.rs +999 -0
  514. ruviz-0.3.3/src/render/text_anchor.rs +62 -0
  515. ruviz-0.3.3/src/render/theme.rs +839 -0
  516. ruviz-0.3.3/src/render/typst_text.rs +774 -0
  517. ruviz-0.3.3/src/simple.rs +210 -0
  518. ruviz-0.3.3/src/stats/beeswarm.rs +200 -0
  519. ruviz-0.3.3/src/stats/clustering.rs +273 -0
  520. ruviz-0.3.3/src/stats/contour.rs +255 -0
  521. ruviz-0.3.3/src/stats/kde.rs +203 -0
  522. ruviz-0.3.3/src/stats/mod.rs +23 -0
  523. ruviz-0.3.3/src/stats/quantile.rs +178 -0
  524. ruviz-0.3.3/src/stats/regression.rs +297 -0
  525. ruviz-0.3.3/src/style/mod.rs +126 -0
  526. ruviz-0.3.3/src/text/mod.rs +4 -0
@@ -0,0 +1,3 @@
1
+ # Clippy configuration
2
+ avoid-breaking-exported-api = false
3
+ msrv = "1.87"
@@ -0,0 +1,67 @@
1
+ #!/bin/bash
2
+ # Pre-commit hook for ruviz
3
+ # Runs Rust and JS/TS checks before allowing commits
4
+ #
5
+ # Setup: make setup-hooks
6
+
7
+ set -e
8
+
9
+ echo "Running pre-commit checks..."
10
+
11
+ # Check formatting
12
+ echo "Checking formatting with cargo fmt..."
13
+ if ! cargo fmt --all -- --check; then
14
+ echo ""
15
+ echo "❌ Formatting check failed!"
16
+ echo "Run 'cargo fmt' to fix formatting issues."
17
+ exit 1
18
+ fi
19
+ echo "✓ Formatting OK"
20
+
21
+ # Run clippy with strict warnings on library code
22
+ echo "Running clippy..."
23
+ if ! cargo clippy --all-features -- -D warnings 2>/dev/null; then
24
+ echo ""
25
+ echo "❌ Clippy check failed!"
26
+ echo "Fix the warnings above before committing."
27
+ exit 1
28
+ fi
29
+ echo "✓ Clippy OK"
30
+
31
+ staged_web_files=()
32
+ while IFS= read -r file; do
33
+ staged_web_files+=("$file")
34
+ done < <(
35
+ git diff --cached --name-only --diff-filter=ACMR | grep -E \
36
+ '^(packages/ruviz-web/src/.*\.(js|ts)|demo/web/src/.*\.(js|ts)|demo/web/tests/.*\.(js|ts)|demo/web/playwright\.config\.js)$' || true
37
+ )
38
+
39
+ if [ ${#staged_web_files[@]} -gt 0 ]; then
40
+ if ! command -v bun >/dev/null 2>&1; then
41
+ echo ""
42
+ echo "❌ Bun is required for JS/TS pre-commit checks."
43
+ echo "Install Bun and run 'bun install' before committing."
44
+ exit 1
45
+ fi
46
+
47
+ echo "Checking JS/TS formatting with oxfmt..."
48
+ if ! bunx oxfmt --check "${staged_web_files[@]}"; then
49
+ echo ""
50
+ echo "❌ JS/TS formatting check failed!"
51
+ echo "Run 'bun run format:web:write' to fix formatting issues."
52
+ exit 1
53
+ fi
54
+ echo "✓ oxfmt OK"
55
+
56
+ echo "Running JS/TS lint checks with oxlint..."
57
+ if ! bunx oxlint --deny-warnings "${staged_web_files[@]}"; then
58
+ echo ""
59
+ echo "❌ JS/TS lint check failed!"
60
+ echo "Run 'bun run lint:web' to inspect the reported issues."
61
+ exit 1
62
+ fi
63
+ echo "✓ oxlint OK"
64
+ fi
65
+
66
+ echo ""
67
+ echo "✓ All pre-commit checks passed!"
ruviz-0.3.3/.gitignore ADDED
@@ -0,0 +1,89 @@
1
+ # Rust
2
+ target/
3
+ Cargo.lock
4
+
5
+ # IDE
6
+ .vscode/
7
+ .idea/
8
+ *.swp
9
+ *.swo
10
+
11
+ # OS
12
+ .DS_Store
13
+ Thumbs.db
14
+
15
+ # Test outputs
16
+ test_output/*
17
+ export_test_output/*
18
+ tests/output/*.png
19
+ tests/output/*.pdf
20
+ tests/output/*.svg
21
+ tests/output/**/*.png
22
+ tests/output/**/*.pdf
23
+ tests/output/**/*.svg
24
+ !tests/output/.gitkeep
25
+
26
+ # Example outputs
27
+ examples/output/*.png
28
+ examples/output/*.pdf
29
+ examples/output/*.svg
30
+ examples/output/**/*.png
31
+ examples/output/**/*.pdf
32
+ examples/output/**/*.svg
33
+ examples/output/performance/*.txt
34
+ examples/output/performance/*.csv
35
+ !examples/output/.gitkeep
36
+
37
+ # Scattered outputs in root (legacy - to be removed)
38
+ /*.png
39
+ /*.pdf
40
+ /*.svg
41
+ /performance_data.csv
42
+
43
+ # Temporary files
44
+ *.tmp
45
+ *.temp
46
+ *.rej
47
+ *.orig
48
+
49
+ # Web demo outputs
50
+ node_modules/
51
+ demo/web/node_modules/
52
+ demo/web/pkg/
53
+ demo/web/dist/
54
+ demo/web/playwright-report/
55
+ demo/web/test-results/
56
+ crates/ruviz-web/pkg/
57
+ packages/ruviz-web/node_modules/
58
+ packages/ruviz-web/dist/
59
+ packages/ruviz-web/generated/
60
+ packages/ruviz-web/docs/.vitepress/cache/
61
+ packages/ruviz-web/docs/.vitepress/dist/
62
+ python/.venv/
63
+ python/.pytest_cache/
64
+ python/.ruff_cache/
65
+ python/site/
66
+ python/**/__pycache__/
67
+ python/**/*.pyc
68
+ python/**/*.pyo
69
+ python/python/ruviz/_native*.so
70
+ python/python/ruviz/*.dSYM/
71
+ python/examples/output/*.png
72
+ python/examples/output/*.pdf
73
+ python/examples/output/*.svg
74
+ !python/examples/output/.gitkeep
75
+
76
+ # AI/Assistant artifacts
77
+ .serena/
78
+ .claude/
79
+ .codex/
80
+ openspec/
81
+ memory/
82
+ plans/
83
+ claudedocs/
84
+ AGENTS.md
85
+ CLAUDE.md
86
+ export_output/
87
+ .playwright-mcp
88
+ .playwright-mcp/
89
+ review/
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,180 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ - _None yet._
8
+
9
+ ## [0.3.3] - 2026-04-01
10
+
11
+ ### Fixed
12
+
13
+ - Stopped publishing the plain `linux_x86_64` Python wheel to PyPI, since PyPI rejects that host-native Linux platform tag for public uploads.
14
+ - Kept the Python release path on PyPI by publishing the source distribution plus macOS Intel, macOS Apple Silicon, and Windows wheels while Linux falls back to source installs for now.
15
+
16
+ ## [0.3.2] - 2026-04-01
17
+
18
+ ### Fixed
19
+
20
+ - Updated the Python release packaging lane to use `maturin` `1.12.6`, fixing the duplicate-README source distribution failure seen in the `0.3.1` CI/CD release.
21
+ - Switched the macOS Intel Python wheel lane to the supported `macos-15-intel` GitHub-hosted runner so the unified release workflow can produce Intel macOS wheels again.
22
+
23
+ ## [0.3.1] - 2026-04-01
24
+
25
+ ### Added
26
+
27
+ - Added the first tag-driven PyPI publishing path for the `ruviz` Python package, including trusted publishing from GitHub Actions and multi-platform wheel builds.
28
+ - Added dedicated Python CI coverage so `uv sync`, the native extension tests, package tests, and Ruff linting run on every PR and release tag.
29
+ - Added published Python examples, docs, and notebook widget support alongside the browser runtime bridge bundled into the Python package.
30
+
31
+ ### Changed
32
+
33
+ - Aligned the unified release workflow across crates.io, npm, and PyPI with shared version validation and release-note handling.
34
+
35
+ ### Fixed
36
+
37
+ - Fixed mixed named and unnamed radar-series handling in the browser/web bridge so partial labels no longer fail render or mount.
38
+ - Fixed Python observable listener cleanup so discarded plots do not stay strongly referenced by long-lived observables.
39
+
40
+ ## [0.3.0] - 2026-04-01
41
+
42
+ ### Breaking Changes
43
+
44
+ - Raised the repository MSRV to Rust `1.92`. Builds on older toolchains now fail earlier instead of drifting behind CI and release validation.
45
+
46
+ ### Added
47
+
48
+ - Added Linux and Windows desktop bootstrap support for `ruviz-gpui` examples and integrations, alongside the existing macOS path.
49
+ - Added explicit `ruviz-gpui` example compilation checks to CI and release validation so desktop integration regressions surface before publishing.
50
+
51
+ ### Changed
52
+
53
+ - Switched the workspace GPUI patching flow to an upstream `zed-industries/zed` revision while keeping the required macOS right-drag fix pinned consistently across the workspace.
54
+ - Split oversized plotting, rendering, and observable modules into focused internal submodules while preserving the public module paths and re-exports.
55
+ - Defaulted contributor toolchains to the latest stable Rust via `rust-toolchain.toml`, while retaining a dedicated CI lane that enforces the `1.92` MSRV floor.
56
+
57
+ ### Fixed
58
+
59
+ - Made GPUI examples fail cleanly in headless desktop environments, with session-specific hints for Linux (`DISPLAY` / `WAYLAND_DISPLAY`) and Windows desktop sessions.
60
+ - Refreshed the committed README quickstart image so the top-level documentation matches current rendering output again.
61
+
62
+ ## [0.2.0] - 2026-03-31
63
+
64
+ ### Breaking Changes
65
+
66
+ - Typst selection is now compile-time gated behind `typst-math`. `Plot::typst(true)`, builder forwarding to `.typst(true)`, and `TextEngineMode::Typst` are unavailable unless the feature is enabled. If your crate makes Typst optional, guard those calls with `#[cfg(feature = "typst-math")]` instead of expecting a runtime `FeatureNotEnabled` error. Without the feature, `.typst(true)` now fails with a compile error such as `no method named 'typst' found`.
67
+
68
+ ### Added
69
+
70
+ - Added experimental browser and `wasm32` support via the `ruviz-web` crate and the public npm `ruviz` SDK.
71
+ - Added mixed-coordinate inset rendering so Cartesian plots can embed polar, pie, and radar series with configurable inset layout.
72
+ - Added builder chaining parity for common continuation flows and styled annotations, removing explicit `end_series()` workarounds in the supported cases.
73
+
74
+ ### Changed
75
+
76
+ - Unified browser package naming on `ruviz` and made the JS workspace Bun-first for build, lint, and packaging flows.
77
+ - Aligned raster and SVG mixed-inset rendering behavior, including clipping, DPI-scaled strokes, and auto-placement spacing.
78
+ - Restored and committed golden-image visual fixtures so release validation has stable baseline artifacts again.
79
+
80
+ ### Fixed
81
+
82
+ - Stabilized interactive zoom/pan, wheel direction, context menu, and save/copy shortcuts across the interactive and GPUI paths.
83
+ - Fixed ndarray view recursion and several export-path DPI, validation, and overwrite edge cases in PNG/SVG rendering.
84
+ - Fixed browser session timing and destroy races, and kept wasm/browser builds continuously checked in CI.
85
+
86
+ ## [0.1.5] - 2026-03-23
87
+
88
+ ### Breaking Changes
89
+
90
+ - Default tick marks now render on all four sides of the plot frame instead of only the bottom and left axes. To preserve the previous look, call `.ticks_bottom_left()`.
91
+
92
+ ### Added
93
+
94
+ - Added `ruviz-gpui`, a GPUI component adapter crate for interactive and reactive plotting integrations.
95
+ - Added GPUI interactive session support and reactive plotting hooks for embedded and streaming use cases.
96
+
97
+ ### Changed
98
+
99
+ - Preserved the public `SubscriberCallback` API while moving runtime subscription dispatch to internal shared callbacks.
100
+ - Raster DPI now changes output density without intentionally enlarging fonts, line widths, marker sizes, or layout spacing. If you tuned visuals around the old DPI-coupled output, re-check explicit `.line_width(...)`, `.marker_size(...)`, and font-size settings.
101
+
102
+ ### Fixed
103
+
104
+ - Fixed GPUI reactive rendering issues around interactive invalidation, streaming redraws, overlay refresh, and source setter updates.
105
+ - Fixed manual axis-limit handling in the GPUI/reactive plotting path.
106
+ - Eagerly release `lift2` cross-source subscriptions when either source is dropped.
107
+ - Prevent `lift2` source-drop cleanup hooks from accumulating on long-lived source observables.
108
+ - Validate floating-point DPI values directly before rendering, including negative and fractional out-of-range inputs.
109
+ - Keep `set_output_pixels` geometry consistent with the actual configured DPI, even on invalid pre-validation states.
110
+ - Retry atomic temp-file creation on stale collisions and document why stale-temp cleanup is safe.
111
+ - Reuse the same per-series validation for saved snapshots so reactive saves keep NaN and error-bar checks aligned with render validation.
112
+ - Validate rendered reactive snapshots after capture so render, SVG export, and external renderer paths stop re-reading live series for validation.
113
+ - Preserve existing Windows export targets on overwrite failures by using native replace semantics and keeping the temporary file for recovery.
114
+ - Evict stale Typst cache entries when a replacement grows beyond the cache byte limit, including oversized render results that skip recaching.
115
+ - Restore snapshot-based bounds calculation for heatmap, density, polar, radar, contour, and other non-Cartesian series.
116
+ - Restore series validation before DataShader and parallel render fast paths, and preserve POSIX symlink destinations during atomic export overwrites.
117
+ - Make DataShader renders consume the same validated snapshot as the main render path, and keep invalid zero-DPI pixel sizing from surfacing misleading dimension errors.
118
+ - Tighten DataShader bounds handling for the reactive/interactive rendering path.
119
+ - Apply tick-side and tick-direction settings consistently in `render()`-based outputs, keep SVG frame strokes DPI-aware when ticks are disabled, and preserve exact framebuffer sizes on fractional HiDPI interactive surfaces.
120
+
121
+ ## [0.1.4] - 2026-02-11
122
+
123
+ ### Added
124
+
125
+ - Added grouped series API via `Plot::group(|g| ...)` for shared styling across line/scatter/bar series.
126
+ - Added grouped legend collapse with `group_label(...)` so grouped series render as a single legend entry.
127
+
128
+ ### Changed
129
+
130
+ - Group auto-color behavior now reuses one palette-generated color for all group members when no fixed group color is set.
131
+ - Updated release documentation workflow to support versioned release notes under `docs/releases/`.
132
+
133
+ ### Fixed
134
+
135
+ - Made dashed line spacing DPI-independent for consistent appearance across output resolutions.
136
+
137
+ ## [0.1.3] - 2026-02-10
138
+
139
+ ### Breaking Changes
140
+
141
+ - Removed `Plot::latex(...)` API. Use `Plot::typst(true)` for Typst text rendering.
142
+
143
+ ### Added
144
+
145
+ - Added global Typst text mode via `Plot::typst(bool)` and builder forwarding.
146
+ - Added optional `typst-math` feature for Typst-backed text rendering across PNG/SVG/PDF export.
147
+ - Added strict Typst error behavior: invalid Typst now fails render/export with `TypstError`.
148
+ - Added ecosystem data ingestion support for `polars`, `ndarray`, and `nalgebra`.
149
+
150
+ ### Changed
151
+
152
+ - Improved Typst text layout fidelity by aligning baseline/anchor semantics across layout, raster, and SVG paths.
153
+ - Fixed Typst title/label clipping and spacing drift in visual outputs (no public API changes).
154
+ - Removed Typst raster text oversampling and simplified native-scale raster handling.
155
+ - Stabilized the test suite and split CI into focused lanes for more reliable export and visual checks.
156
+
157
+ ## [0.1.2] - 2026-01-30
158
+
159
+ ### Platform Fixes
160
+
161
+ - Fixed macOS and Windows platform build errors (#4)
162
+ - Added FreeBSD support (#1)
163
+ - Added cross-platform CI build checks for Linux, macOS, Windows, and FreeBSD
164
+ - Pinned cross to v0.2.5 with `--locked` for reproducible CI builds
165
+
166
+ ### Contributors
167
+
168
+ - [@yonas](https://github.com/yonas) - FreeBSD support (#1)
169
+ - [@Ameyanagi](https://github.com/Ameyanagi) - Cross-platform build fixes (#4)
170
+
171
+ [Unreleased]: https://github.com/Ameyanagi/ruviz/compare/v0.3.3...HEAD
172
+ [0.3.3]: https://github.com/Ameyanagi/ruviz/compare/v0.3.2...v0.3.3
173
+ [0.3.2]: https://github.com/Ameyanagi/ruviz/compare/v0.3.1...v0.3.2
174
+ [0.3.1]: https://github.com/Ameyanagi/ruviz/compare/v0.3.0...v0.3.1
175
+ [0.3.0]: https://github.com/Ameyanagi/ruviz/compare/v0.2.0...v0.3.0
176
+ [0.2.0]: https://github.com/Ameyanagi/ruviz/compare/v0.1.5...v0.2.0
177
+ [0.1.5]: https://github.com/Ameyanagi/ruviz/compare/v0.1.4...v0.1.5
178
+ [0.1.4]: https://github.com/Ameyanagi/ruviz/compare/v0.1.3...v0.1.4
179
+ [0.1.3]: https://github.com/Ameyanagi/ruviz/compare/v0.1.2...v0.1.3
180
+ [0.1.2]: https://github.com/Ameyanagi/ruviz/compare/v0.1.1...v0.1.2
@@ -0,0 +1,30 @@
1
+ # Contributing
2
+
3
+ ## Workflow
4
+
5
+ - Open an issue or discussion first for non-trivial changes.
6
+ - Keep pull requests focused and small enough to review.
7
+ - Update docs and examples when public behavior changes.
8
+ - Add or update tests when fixing bugs or changing APIs.
9
+
10
+ ## Setup
11
+
12
+ ```bash
13
+ cargo fmt --all
14
+ cargo clippy --all-targets --all-features
15
+ cargo test --all-features
16
+ cargo test --doc
17
+ ```
18
+
19
+ Run the relevant examples or targeted tests when you touch rendering, export, or interactive behavior.
20
+
21
+ ## Pull Requests
22
+
23
+ - Describe the user-visible change clearly.
24
+ - Call out any feature flags required to exercise the change.
25
+ - Include screenshots or generated output when a visual behavior changes.
26
+
27
+ ## Documentation
28
+
29
+ - Keep [README.md](README.md) and the files under [docs](docs) consistent with the current API.
30
+ - Prefer examples that compile against the current public surface.