What's Changed
- Shrink README image by @Alek99 in #283
- Autogenerate comprehensive docs llms.txt by @Alek99 in #282
- Allow data: fonts in the standalone HTML CSP by @Alek99 in #285
- Link AGENTS.md to CLAUDE.md by @Alek99 in #289
- Cut 9 ms of cold start from static export at 10M points by @Alek99 in #284
- Lead the README with a themed light/dark recording of the example by @Alek99 in #297
- Let charts wear the host's colors: custom colormaps, a chart palette, and axis switches by @Alek99 in #298
- Add six real-world large-data notebooks by @Alek99 in #296
- Correct the palette rule in the dossier and finish a half-edited sentence by @Alek99 in #299
- Open the README with a hello-world and add a chart roadmap by @Alek99 in #300
- Route categorical factorization on repetition, not category count by @Alek99 in #301
- Cut peak memory across the encode and payload paths by @Alek99 in #309
- Mark style capabilities: stroke-linecap, marker-shape, mark plugins, and a support inventory by @Alek99 in #310
- Improve tooltip and chart chrome customizability by @Alek99 in #311
- Set XY's competitive product north star by @Alek99 in #313
- Remove shallow nonfunctional tests by @Alek99 in #317
- Make customization survive the trip to a file by @Alek99 in #315
- Carry JPEG tokens and WebP bits at their natural width by @Alek99 in #320
- Stop keeping a second framebuffer, and a second count grid by @Alek99 in #322
- Improve box plot customizability by @Alek99 in #326
- Move animation key encoding to Rust by @Alek99 in #319
- Route DataFrame key columns through the native animation-key encoder by @Alek99 in #327
- Ship animation identity planes only when the client can key-match by @Alek99 in #330
- Scan selection candidates in place (ABI 42 -> 43) by @Alek99 in #323
- Release the legend-visible row cache, and put it in the report by @Alek99 in #324
- Cap, share and narrow: four more peak-memory cuts in the Python paths by @Alek99 in #321
- Cascade mark-level animation over the chart policy instead of replacing it by @Alek99 in #331
- Consolidate Matplotlib gallery rendering repairs [mpl compatibility] by @sselvakumaran in #280
- Finish Matplotlib gallery acceptance repairs [mpl compatibility] by @sselvakumaran in #281
- Rerun the launch scatter benchmark and refresh every published number by @Alek99 in #332
- Harden Tailwind customization across Reflex charts by @Alek99 in #328
- Let chart chrome keep its styling all the way into a file by @Alek99 in #325
- Polish real-world example gallery by @carlosabadia in #342
- Fix statistical gallery semantics and defaults [mpl compatibility] by @sselvakumaran in #335
- Fix gallery image and legend option compatibility [mpl compatibility] by @sselvakumaran in #334
- Keep wheel zoom and double-click reset alive under the box-zoom tool by @FarhanAliRaza in #344
- Fix contour labels and colorbar semantics [mpl compatibility] by @sselvakumaran in #341
- Delete five unreachable Python helpers by @FarhanAliRaza in #345
- Fix artist state and marker compatibility [mpl compatibility] by @sselvakumaran in #338
- Deploy docs on semver release tags instead of CalVer by @Kastier1 in #276
- Record why the raster payload omits the density overlay by @Alek99 in #295
- Fix log scale ticks, grids, and nonpositive handling [mpl compatibility] by @sselvakumaran in #336
- Ship the Rust core with fat LTO and stripped symbols by @FarhanAliRaza in #343
- Tighten the README and cut marketing filler by @Alek99 in #346
- ci: dual-push images to Harbor (apps) + ACR alongside ECR by @Kastier1 in #349
- Fall back to standalone-HTML display on WASM notebook kernels by @masenf in #347
- Give every capture-owning gesture the same capture-loss policy by @FarhanAliRaza in #348
- Fix Matplotlib gallery, styling, axes, and label compatibility [mpl compatibility] by @sselvakumaran in #340
- update CHANGELOG.md for xy and reflex-xy by @masenf in #359
Full Changelog: v0.0.3...v0.0.4