Skip to content

kida-templates 0.10.0

Choose a tag to compare

@lbliii lbliii released this 30 May 13:33
· 108 commits to main since this release
23d1cd4

v0.10.0

Released 2026-05-30.

Kida 0.10.0 is a focused diagnostics release. It gives framework debug pages a
structured error payload for undefined values, tightens source attribution across
optimized and streaming render paths, and keeps the broader large-app roadmap out
of this release until its public contracts are ready.

Added

  • Structured undefined diagnostics - UndefinedError.to_diagnostic() returns
    a surface-neutral payload with code, kind, location, source snippet, ordered
    hints, docs URL, metadata, template stack, and component stack.
  • HTML and Markdown diagnostic renderers - The diagnostic payload can render
    escaped HTML fragments/pages or GitHub-flavored Markdown without downstream
    frameworks parsing terminal-formatted exception strings.

Fixed

  • Optimized templates keep source locations - F-string coalescing preserves
    the template line marker used by undefined diagnostics, so optimized output
    still points at the source line users can edit.
  • Imported component slot failures point at caller source - Errors raised
    inside slot bodies passed to imported components now report the caller template
    as the primary diagnostic location while retaining component-stack context.
  • Streaming runtime errors match full render diagnostics - Generic Python
    exceptions raised during streaming are wrapped with template name and line
    information consistently with full render.

Upgrade Notes

  1. Framework debug pages should prefer UndefinedError.to_diagnostic() over
    parsing str(exc) or format_compact().
  2. If a test expected raw exceptions from async streaming, update it to assert
    TemplateRuntimeError and inspect __cause__ for the original exception.
  3. If you maintain compiler AST snapshots, regenerate them for the coalescing
    line-marker contract.

Why this change

Kida's diagnostic strings are optimized for terminal output. Frameworks need the
same facts as plain data so they can render their own debug UI safely. This
release makes undefined errors inspectable without scraping styled terminal
text, and it closes a few attribution gaps that made optimized or streaming
renders harder to debug than full renders.