Kida 0.3.1
Safe pipeline, optional filter, nullish assignment, markdown rendering, GitHub Action, CI report parsers
Released 2026-04-02.
Kida 0.3.1 adds null-safe operators for ergonomic template authoring, a markdown rendering mode, and a GitHub Action for rendering CI reports as step summaries or PR comments.
Highlights
- Null-safe operators —
?|>safe pipeline,?|optional filter, and??=nullish assignment eliminate common null-handling footguns. - Markdown rendering —
autoescape="markdown"with markdown-safe escaping. - GitHub Action — Render pytest, coverage, ruff, ty, jest, gotest, and SARIF reports in CI.
- CI report parsers — SARIF, LCOV, and JUnit XML parsers for structured data ingestion.
Added
Operators
- Safe pipeline (
?|>) — None-propagating filter chain. If the value is None, all subsequent filters are skipped:{{ user?.name ?|> upper ?|> trim ?? "Anonymous" }}. - Optional filter (
?|) — Skip a single filter when the value is None:{{ value ?| upper ?? "N/A" }}. Preserves falsy values like0and"". - Nullish assignment (
??=) — Assign only if the variable is undefined or None. Works withlet,set,export, andpromote:{% let title ??= "Untitled" %}. promotekeyword — Alias forexport. Reads more naturally for scope promotion:{% promote result = value %}.
Markdown & CI
- Markdown rendering mode —
autoescape="markdown"with markdown-safe escaping and CI report filters. - GitHub Action —
lbliii/kida@v0.3.1renders CI reports as step summaries or PR comments. Built-in templates for pytest, coverage, ruff, ty, jest, gotest, and SARIF. - SARIF parser — Parse SARIF static analysis output for template rendering.
- LCOV parser — Parse LCOV coverage data for template rendering.
- JUnit XML parser — Parse JUnit XML test results for template rendering.
- Built-in CI report templates — Seven templates with snapshot tests for regression safety.
Changed
- Jinja2 migration docs — Documented sharp edges and behavioral differences for migrators.
- Benchmark regression gate — Excluded Jinja2 tests from benchmark regression checks (CI noise).
Upgrade Notes
- No breaking changes. Drop-in upgrade from 0.3.0.
- New operators are additive — existing templates work unchanged.
- GitHub Action version tag updated to
@v0.3.1.