v0.5.1 (2026-09-11)
Values passed to
template_data()are no longerConst().When you define a literal value in a template, Citry knows it's a literal and wraps it in
Const(...)to optimize the template rendering:<c-MyCard text="Hello">-><c-MyCard c-text="Const('Hello')">Const()is a wrapt proxy - it copies the methods and behavior of the underlying value, so you rarely notice the difference.When such value is passed to a component, component's
template_data()may receiveConst()instead of the underlying value.We discovered critical problems: -
iskeyword does NOT respect the proxying. - Python'spathlibdoes NOT accept a string wrapped in a proxy. - and more...Because of this, values passed to
template_data()are now always unwrapped. So that you don't have to deal with flaky behavior.The tradeoff is ~10% slower render time.
Fixes (#107).
The linter (
citry check) now reports error for State bindings (:c-*HTML attributes) when:- Placed on unsupported elements and or
<input>with unsupported type. Unknown State key or unknown event handler is set.
citry checkvalidates$componentcallback data members against declared or inferred JavaScript data schemas (#113).