# Changelog All notable changes to Neura are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/); versions follow [Semantic Versioning](https://semver.org/). ## [0.2.0] — unreleased ### Security - **Security review across the library, shim, docs site, and delivery pipeline.** No exploitable defect was found in the components' default rendering paths - every text option was already inserted as text. The review hardened the edges around them: - `Neura.escapeHtml` is now part of the public API, so consumers have a supported escaper for the options that deliberately take raw HTML (`bodyHtml`, select `format*`, restful-table `readView`). It escapes quotes as well as angle brackets, making it safe in attribute contexts - the widespread `textContent`/`innerHTML` round-trip is not. - Date-picker labels drawn from `Neura.i18n` are escaped before being written into the calendar markup, so a translation pack from an untrusted source cannot inject markup or break out of an attribute. - Element ids are escaped with `CSS.escape` before being used in attribute selectors (dropdown, inline dialog, expander), and restful-table encodes row ids into request URLs. - Keyboard shortcuts refuse to navigate to non-fetchable URL schemes, and `AJS.whenIType.fromJSON` only invokes operations from a fixed allowlist. - `AJS.Cookie` validates cookie names and escapes them before use, restoring protection AUI's design provided implicitly; cookies are written with `SameSite=Lax`. - Docs examples no longer model unescaped interpolation of fetched data - the dropdown and inline-dialog lazy-load samples build nodes and set `textContent`. - **Docs site headers.** The site's security headers were defined but never sent: nginx drops inherited `add_header` directives in any location that sets one of its own, and every location did. They are now included in each location and verified in a test. The site also sends a Content-Security-Policy, and `Cross-Origin-Opener-Policy` was added. - **Published integrity hashes now work.** The SRI manifest was written to the site root while the CDN page fetched it from `/cdn/`, so the integrity table was empty in every built image. The hashes are verified to match the bytes the CDN actually serves. - **Zero known vulnerabilities in the dependency tree** (the library itself has no runtime dependencies). Build tooling was updated to clear three advisories in dev-only packages. - A [security policy](SECURITY.md) documents the escaping model, which options take raw HTML, and how to report a vulnerability privately. ### Added - **Responsive header fixed** (three bugs found by a docs-vs-source audit): the primary-nav lookup only matched a wrapper-div markup form, so the overflow-into-More behavior silently never activated on the canonical `