Kida 0.6.0

minor release evolving Kida into a component framework with def introspection, typed prop validation, kida readme CLI, and comprehensive sharp-edge fixes

Released 2026-04-13.

Kida 0.6.0 evolves Kida from a template engine into a component framework with full def introspection, typed prop validation, and thekida components CLI. This release also adds the kida readmeauto-generator and closes dozens of silent-failure and missing-validation sharp edges.

Added

  • Component framework — Def introspection API (DefMetadata, DefParamInfo, list_defs, def_metadata), component call stack in error reporting, kida componentsCLI command, type-aware prop validation withTypeMismatchdiagnostics, Components Guide and Jinja2-vs-Kida comparison docs. (#90)
  • kida readmeCLI — Auto-generates README.md from project metadata (pyproject.toml, filesystem, git). Ships 4 preset templates (default, minimal, library, cli) with--set overrides and --json debug mode. (#89)

Fixed

  • Sandboxmax_output_sizeenforcement — Was declared but never checked; now enforced. (#91)
  • Block capture rejection{% set x %}...{% endset %}block capture rejected at parse time. (#91)
  • Error codes for all SecurityError raises — K-SEC-001 through K-SEC-005. (#91)
  • Autoescape validation at construction — Invalid mode rejected atEnvironment()creation. (#91)
  • Structured errors — All bareRuntimeError raises replaced with TemplateRuntimeError. (#91)
  • Optional chaining display?. renders "" instead of "None"in display context. (#91)
  • Brokenexcept clauses — Fixed 32 except X, Y:clauses (Python 2 syntax). (#92)
  • render_with_blocks()validation — Unknown block names raise with did-you-mean suggestions. (#92)
  • Unknown compiler node types — Now raises instead of silently ignoring. (#92)
  • CLI check error reporting — Errors no longer swallowed silently. (#92)
  • _Undefined.get()API — Fixed to match expected semantics. (#92)

Changed

  • New warningsPrecedenceWarning (K-WARN-001), CoercionWarning, and MigrationWarning (K-WARN-002) for common migration traps and silent coercion. (#91)
  • strict_undefined mode — Opt-in Environment(strict_undefined=True)for catching attribute typos at render time. (#92)
  • UndefinedErrorcontext — Attribute/key lookups now say "Undefined attribute/key" instead of "Undefined variable". (#92)
  • ErrorCode coverage — Pushed from 21 to 73+ raise sites with docs for all 38 ErrorCode values. (#91)

Upgrade Notes

  1. No breaking changes. Drop-in upgrade from 0.5.x.
  2. New warnings (PrecedenceWarning, CoercionWarning, MigrationWarning) may surface in code that previously ran silently. These are Python warnings and can be filtered with warnings.filterwarnings.
  3. GitHub Action version tag updated to@v0.6.0.