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 renderingautoescape="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 like 0 and "".
  • Nullish assignment (??=) — Assign only if the variable is undefined or None. Works with let, set, export, and promote: {% let title ??= "Untitled" %}.
  • promote keyword — Alias for export. Reads more naturally for scope promotion: {% promote result = value %}.

Markdown & CI

  • Markdown rendering modeautoescape="markdown"with markdown-safe escaping and CI report filters.
  • GitHub Actionlbliii/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

  1. No breaking changes. Drop-in upgrade from 0.3.0.
  2. New operators are additive — existing templates work unchanged.
  3. GitHub Action version tag updated to@v0.3.1.