Changelog

All notable changes to Micra.js will be documented in this file. Format follows Keep a Changelog, versioning follows SemVer.

[2.5.2] — 2026-06-15

Security hardening. No API changes; behaviour changes only for clearly-unsafe inputs, so upgrading from 2.5.2 is recommended and should be transparent.

Security

Changed

Note — the expression sandbox is defense-in-depth, not a boundary

The CSP-safe evaluator stops a directive expression from reaching window/eval/Function, and CSP blocks injected inline scripts — but neither protects against template/markup injection (client-side template injection). Never interpolate untrusted input into directive attributes or expressions; render user data via data-text / state only. Treat directive markup as trusted code.

[2.5.2] — 2026-06-14

Ergonomics & safety release — three things the audience kept reaching for.

Added — key & system modifiers on events

Added — dot-paths for nested state

Added — data-html sanitizer hook

Changed

Migration

[2.4.0] — 2026-06-14

Added — CSP-safe expression evaluator (works under strict CSP)

Added — call expressions in @event

Changed

Fixed

Migration

[2.3.2] — 2026-06-10

Fixed — data-each row root detection

Internal — LLM-benchmark harness hardening (no library impact)

Post-review fixes to bench-llm/ so published numbers are trustworthy: windows now close even when an assertion fails (stray timers no longer misattribute errors to the next generation); errors aggregate across all pages of multi-scenario tasks; quoted > inside template attributes no longer mangles pages; ESM micra imports are rewritten to UMD bindings instead of being dropped; the injected bundle is marked with data-harness-bundle (single source of truth for loader and lint); Object.groupBy replaced for Node 20 compatibility; --only no longer overwrites aggregate results; the @next publish guard distinguishes “version not published” from registry/network failures.

[2.3.1] — 2026-05-30

Performance

Internal — dead-code removal

Docs

Bundle

[2.3.0] — 2026-05-30

TypeScript — type-safe event bus

Breaking — types only

Performance — non-keyed data-each now reuses DOM nodes

Breaking — non-keyed multi-root rows now wrap in <micra-each-item>

[2.2.1] — 2026-05-28

Performance — batched first list render

[2.2.0] — 2026-05-27

Performance — single-pass DOM scan

TypeScript — full inference from your component literal

Breaking — internal only

[2.1.0] — 2026-05-25

Added

Tests

[2.0.0] — 2026-05-24

Breaking

Fixed

Added

Docs


[1.1.0] — 2026-05-24

Security

Fixed

Added

Changed

Docs

Bundle size

Migration notes


[1.0.0] — initial release

Reactive shallow Proxy state, batched microtask rendering, DOM directives (data-text, data-html, data-if, data-show, data-bind, data-model, data-class, data-on, @event), keyed data-each list rendering, event bus, SSR prop(), fetch() helper, idempotent start().