v1.1.0
What's Changed
- ✨ feat(bench): name why each empty benchmark cell is blank by @gaborbernat in #526
- ✨ feat(convert): expose CSS selector specificity by @gaborbernat in #556
- ✨ feat(sanitize): add SAFE_FOR_TEMPLATES marker stripping by @gaborbernat in #555
- ✨ feat(clean): report what the sanitizer dropped by @gaborbernat in #557
- ✨ feat(query): add XPath 2.0 string functions by @gaborbernat in #558
- ✨ feat(detect): add Unicode normalization (UAX #15) by @gaborbernat in #560
- ✨ feat(extract): parse RSS and Atom feeds by @gaborbernat in #562
- ✨ feat(clean): per-property inline-style value allowlist by @gaborbernat in #561
- ✨ feat(parse): add scripting flag for noscript by @gaborbernat in #559
- ✨ feat(sanitize): rename tags during sanitize by @gaborbernat in #563
- ✨ feat(serialize): add XML/XHTML output syntax by @gaborbernat in #564
- ✨ feat(parser): per-attribute and tag source locations by @gaborbernat in #566
- ✨ feat(dom): add TreeWalker and NodeIterator by @gaborbernat in #567
- ✨ feat(sanitize): add DOM-clobbering isolation by @gaborbernat in #568
- ✨ feat(parser): add strict XML parsing mode by @gaborbernat in #569
- ✨ feat(dom): add DOM Range and StaticRange by @gaborbernat in #570
- ✨ feat(cssom): add CSSOM cascade and computed style by @gaborbernat in #571
- ✨ feat(sanitize): custom elements + content profiles by @gaborbernat in #572
- ✨ feat(serialize): add XML canonicalization (c14n) by @gaborbernat in #574
- ✨ feat(dom): add Shadow DOM tree model by @gaborbernat in #573
- ✨ feat(parser): add DOM-less SAX event parsing by @gaborbernat in #575
- ✨ feat(transform): add XSLT 1.0 processor by @gaborbernat in #576
- ✨ feat(parser): declarative Shadow DOM (
<template shadowrootmode>) by @gaborbernat in #577 - ✨ feat(dom): add synchronous MutationObserver by @gaborbernat in #578
- ✅ test(cssom): validate cascade against jsdom by @gaborbernat in #582
- 👷 ci: add dedicated conformance job by @gaborbernat in #585
- ✅ test: error on missing submodule instead of silent skip by @gaborbernat in #586
- ✅ test(detect): validate normalize against NormalizationTest.txt by @gaborbernat in #579
- 🔧 chore: drop stray conformance changelog by @gaborbernat in #592
- ✅ test(dom): validate DOM APIs against jsdom by @gaborbernat in #581
- ✅ test(xslt): validate XSLT 1.0 against libxslt REC suite by @gaborbernat in #590
- ✨ feat(cssom): expand border and outline shorthands by @gaborbernat in #593
- ✨ feat(validate): XSD and RELAX NG schema validation by @gaborbernat in #589
- ✅ test(xml): validate parse_xml against the W3C XML Conformance Suite by @gaborbernat in #588
- ✅ test(c14n): validate canonicalize against libxml2's c14n corpus by @gaborbernat in #580
- 👷 fix(tools): route HTTP through httpx2 with tenacity retry by @gaborbernat in #596
- ✨ feat(rewrite): DOM-less streaming HTML rewriter (lol-html style) by @gaborbernat in #591
- ✅ test(xpath): validate fn:* functions against W3C QT3 suite by @gaborbernat in #587
- ✅ test(clean): validate sanitizer against DOMPurify suite by @gaborbernat in #583
- ✨ feat(xslt): complete the XSLT 1.0 feature set by @gaborbernat in #595
- ✨ feat(xml): enforce Namespaces 1.0 well-formedness by @gaborbernat in #594
- ✅ test(dom): validate source locations against parse5 by @gaborbernat in #584
- 📝 docs(migration): order guides by downloads, add npm/crates shields by @gaborbernat in #597
- ✨ feat(serialize): lossless byte-preserving to_source by @gaborbernat in #600
- ✨ feat(validate): HTML5 conformance checker with a severity model by @gaborbernat in #599
- ✨ feat(treebuild): retarget the parser at a custom tree by @gaborbernat in #601
- ✨ feat(clean): add XML/XHTML output to the sanitizer by @gaborbernat in #598
- 📝 docs(migration): slot html5validator by download rank by @gaborbernat in #602
- ⚡ perf(c14n): drop redundant xlink ancestor walk by @gaborbernat in #603
- ⚡ perf(cssom): binary-search the property table by @gaborbernat in #604
- ⚡ perf(xslt): classify instructions once per node by @gaborbernat in #605
- 📊 feat(bench): stress the perf-optimized paths by @gaborbernat in #607
- ♻️ refactor(c): split serialize headers, tidy layout by @gaborbernat in #606
- ♻️ refactor(_c): dissolve features into clean + extract by @gaborbernat in #608
- ♻️ refactor(_c): consolidate CSS under css/ by @gaborbernat in #609
- ♻️ refactor(_c): lift JS minifier to js/ by @gaborbernat in #610
- 📝 docs: re-taxonomize reference by task by @gaborbernat in #611
- ✨ feat(bench): in-process rewrite peer with peak memory by @gaborbernat in #612
- ♻️ refactor: group private modules under public packages by @gaborbernat in #613
- 📝 docs: generate CLI reference from the argparse parser by @gaborbernat in #614
- 📝 docs: nest nav, add tutorials & workflows, generate llms.txt by @gaborbernat in #615
Full Changelog: 1.0.0...1.1.0