Skip to content

Releases: dannote/live_render

v0.5.0

14 Mar 10:36

Choose a tag to compare

YAML wire format and merge edit mode

Features

  • LiveRender.Format.YAML — YAML wire format with progressive streaming. The LLM outputs YAML inside a ```spec or ```yaml fence, and the streaming parser incrementally re-parses on each newline. Requires {:yaml_elixir, "~> 2.12"} (optional dep).
  • Merge edit mode — multi-turn spec refinement via RFC 7396 JSON Merge Patch. Pass :current_spec to Generate.stream_spec/3 and the LLM outputs only changed keys, deep-merged into the existing spec. Works with JSONPatch, JSONObject, and YAML.
  • LiveRender.SpecMerge — RFC 7396 deep merge (nil deletes, arrays replace, maps recurse).
  • Shared fence extractionShared.extract_fence/2 replaces duplicated regex across all five formats with String.split.

Fixes

  • YAML streaming validation — only emit specs with valid structure (string root, map elements with string types and map props)
  • Renderer defensive guards — non-map elements, non-list children, non-map props all handled gracefully
  • List prop sanitization — filters non-map items from {:list, :map} schema props (Tabs, Timeline, Accordion, Table)
  • Component nil guards for all list props during streaming
  • Both ```spec and ```yaml fence detection

Full changelog: https://github.com/dannote/live_render/blob/master/CHANGELOG.md