v0.2.0 — Production & Trust
24 October 2026
Version 0.2.0 makes Writer safe for untrusted Markdown and adds what production needs: real PDF, framework wrappers, server examples and editor localisation.
In one line. Safe sanitisation in JS, PHP and Python, real PDF, wrappers, server examples, i18n/RTL and 32 fixtures. No DOCX/EPUB or CRDT.
Security
- Raw HTML is sanitised at the IR boundary by default (
html: 'sanitize') in JS, PHP and Python. -
html: 'allow'is an explicit opt-out;html: 'escape'converts raw HTML into text nodes. - URLs pass through one shared allowlist:
javascript:,vbscript:,file:and other unsafe schemes are rejected. data:URLs are allowed for raster images only. Control characters and backslash-prefixed URLs cannot hide a scheme.- The same sanitised IR feeds HTML and PDF, so no format can bypass the policy.
Added
@writer/pdf: a first-party IR → PDF renderer with embedded DejaVu Sans/Mono fonts for Greek and Cyrillic.- Wrappers
@writer/react,@writer/vueand@writer/sveltearound the same Web Component. - Server examples for Express, Laravel and Django with validation and a 1 MB limit.
- Editor chrome localisation and RTL direction. Document content is never translated.
- A bilingual changelog on writer.gr.
Changed
- The conformance corpus grew from 22 to 32 fixtures. JS, PHP and Python pass 32/32.
- README, API reference, architecture notes and the integration guide describe the security model, PDF, wrappers and server examples.
- Package, SDK, documentation and download versions are unified at
0.2.0. - The download bundle is now
writer-0.2.0.zip.
Fixed
- PHP
html: 'escape'produces text nodes, matching JS and Python. - PHP
html: 'allow'is a true no-op and no longer rewrites raw HTML. - URL handling no longer accepts backslash-prefixed or control-character-obfuscated schemes.
-
asPDF()returnsNO_PDF_ENGINEwhen no engine exists, instead of HTML with a.pdfextension.
Not included. DOCX/EPUB export and collaborative editing / CRDT do not exist in this release.
v0.1.0 — Initial release
20 October 2026
The first public release set the contract and the three SDKs.
@writer/core: Markdown → Writer IR, plugins, renderers, typography, tables, media and commands.@writer/editor: a Web Components editor with WYSIWYG, source, split, preview and readonly modes.- PHP and Python SDKs that produce the same canonical IR and the same outputs.
- A conformance corpus and a bilingual site with offline demos.