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--setoverrides and--jsondebug mode. (#89)
Fixed
- Sandbox
max_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 at
Environment()creation. (#91) - Structured errors — All bare
RuntimeErrorraises replaced withTemplateRuntimeError. (#91) - Optional chaining display —
?.renders""instead of"None"in display context. (#91) - Broken
exceptclauses — Fixed 32except 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 warnings —
PrecedenceWarning(K-WARN-001),CoercionWarning, andMigrationWarning(K-WARN-002) for common migration traps and silent coercion. (#91) strict_undefinedmode — Opt-inEnvironment(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
- No breaking changes. Drop-in upgrade from 0.5.x.
- New warnings (
PrecedenceWarning,CoercionWarning,MigrationWarning) may surface in code that previously ran silently. These are Python warnings and can be filtered withwarnings.filterwarnings. - GitHub Action version tag updated to
@v0.6.0.