@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.2.1] - 2026-07-30
11+
12+ ### Added
13+ - ** highlight.js SRI pins** for script and theme (#145 )
14+ - ** Content-Security-Policy** on all served HTML pages: per-response nonce for
15+ inline bootstrap; ` frame-ancestors 'none' ` blocks iframe embedding,
16+ ` img-src 'self' data: ` blocks remote images (relax in
17+ ` build_content_security_policy ` ) (#147 )
18+ - ** Playwright XSS tests** for ` renderMarkdownSafe ` (#151 )
19+
20+ ### Changed
21+ - ** Structured ` {error, code} ` bodies** on workspaces, composers, search, export,
22+ PDF, and config routes (#146 )
23+ - CI regression gate excludes ` composers-50 ` export benchmark (#148 )
24+
25+ ### Fixed
26+ - ** highlight.js CDN miss** : workspace view skips ` hljs.highlightElement ` when
27+ the script did not load (#145 )
28+ - ** Multi-worker set-workspace** : ` /api/set-workspace ` returns HTTP 409; set
29+ ` WORKSPACE_PATH ` or pass ` --base-dir ` at startup (#150 )
30+ - ** Summary-cache fingerprint lock** : read-compare-write serialised under a
31+ module lock (#158 )
32+
1033## [ 0.2.0] - 2026-07-17
1134
1235### Added
@@ -110,6 +133,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
110133- Replace silent ` except Exception: pass ` with structured logging in workspace and bubble load paths (#66 , #76 )
111134- Decouple API handlers from private ` _ ` -prefixed service internals (#73 )
112135
113- [ Unreleased ] : https://github.com/cppalliance/cppa-cursor-browser/compare/v0.2.0...HEAD
136+ [ Unreleased ] : https://github.com/cppalliance/cppa-cursor-browser/compare/v0.2.1...HEAD
137+ [ 0.2.1 ] : https://github.com/cppalliance/cppa-cursor-browser/compare/v0.2.0...v0.2.1
114138[ 0.2.0 ] : https://github.com/cppalliance/cppa-cursor-browser/compare/v0.1.0...v0.2.0
115139[ 0.1.0 ] : https://github.com/cppalliance/cppa-cursor-browser/releases/tag/v0.1.0
0 commit comments