All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[0.9.0] - 2026-06-15

Changed

  • Replaced the deprecated and unmaintained Viz.js library with the modern, actively maintained @hpcc-js/wasm (WebAssembly-based Graphviz engine) via CDN for faster, more compliant, and robust Graphviz layouts in browsers.
  • Updated ex_doc to ~> 0.35 in mix.exs.

[0.8.0] - 2026-04-18

Added

  • Integrated svg-pan-zoom for pan-and-zoom support on rendered graphs.
  • Added :height and :width options to Kino.VizJS.render/2. Accepts integers (pixels) or strings (e.g., "100%").
  • Redesigned the Smart Cell editor with a dark theme and layout settings for height/width.
  • Smart Cell dimensions now update the rendered graph reactively without requiring re-evaluation.
  • Added a toolbar overlay on rendered graphs with Download DOT, Download SVG, and Copy DOT buttons.
  • Added @spec to Kino.VizJS.render/2.
  • render/2 now validates the engine name at the Elixir level, raising ArgumentError for unrecognized engines.
  • render/2 now enforces is_binary(dot_string) via a guard clause.
  • Smart Cell to_source/1 omits options that match their defaults.
  • CI now runs mix compile --warnings-as-errors and mix dialyzer. Added _build caching.

Fixed

  • Removed sfdp and patchwork engines, which are not supported by Viz.js 2.x.
  • Error messages from Viz.js are now rendered via textContent instead of innerHTML to prevent XSS.

[0.5.0] - 2026-04-12

Added

  • Initial Hex release.
  • Kino.VizJS component for rendering GraphViz DOT strings via Viz.js.
  • Kino.VizJS.SmartCell for Livebook.
  • Theme-aware rendering (adapts to Livebook light/dark mode).