# Kida 0.10.0

URL: /kida/releases/0.10.0/
Section: releases
Description: Structured diagnostics, source attribution hardening, and release-readiness cleanup

---

> For a complete page index, fetch /kida/llms.txt.

# 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.
