Changelog
Generated from CHANGELOG.md in the project repository. Never maintained twice.
Unreleased
- added
assertion.elements.img-missing-alt: animgwithoutaltis now an error outsidefigure, with vnu's exemptions (aria-label,aria-labelledby, a non-emptytitle;roleand otheraria-*attributes keep their more specific accessible-name rules). Previously only thefigure-without-figcaptioncase was checked. - added
assertion.elements.*-in-a: interactive content insidea(button,select,textarea,label,details,dialog,embed,iframe,a, non-hiddeninput,video/audiowithcontrols,img/objectwithusemap, any element withtabindexor an interactiverole), matching vnu's list. - changedBumped
html5-parserto 0.4.0.parser.html5now also reports stray end tags with no matching element in scope (</div>,</li>,</h2>, …), start tags the parser ignores (a second<body>,<td>outside a table, …) and misnested formatting elements (<b><i>…</b></i>), all of which 0.3.0 dropped silently. Documents containing them get additionalparser.html5errors. The differential corpus result is unchanged (0 false positives). - changedREADME and docs no longer imply complete tree-construction error coverage; "What's not covered" lists the parse errors
html5-parser0.4.0 still does not record (e.g.<div><span></div>). - changedMSRV raised from 1.85 to 1.88 (
rust-version = "1.88.0"). 1.85 was never actually buildable:html5-parser0.4.0,csp-parse0.1.0 andxpath-evaluseletchains (stable since 1.88), andurl→idna→idna_adapter1.2.2 pulls in theicu_*2.3 crates, which require 1.88. The CI MSRV job now builds with 1.88.0.
0.2.1
4 September 2026
- addedFuzzing:
fuzz/(cargo-fuzz), a whole-pipeline fuzz target oncheck(). Local dev tool, not run in CI. - addedBenchmarks:
benches/check.rs(criterion), timingcheck()against a small typical page and a large table-heavy page fromtests/corpus/. CI only compiles them (cargo bench --no-run). - changedPrecision claim in the README narrowed to what the differential test suite actually measures (0 false positives, 99.98 % accuracy across 4,655 fixtures), instead of implying finding-level (rule-ID/message/position) parity with vnu.
- changedCI now runs the full
cargo-deny check(licenses, bans, sources, advisories) instead of justcheck licenses, and adds a dedicated MSRV job pinned torust-version = "1.85.0". - fixedREADME install example and CHANGELOG were still on 0.1.0 despite the 0.2.0 release.
0.2.0
1 September 2026
- added**Table Cell Grid (
tables.integrity):** 2D grid layout ofcolspan/rowspanvalues to detect overlapping cells, cells spanning past the end of their row group, and columns no cell ever begins in (src/table_integrity.rs). - addedReal-World Sanity Tooling:
xtask/fetch-real-world.shandxtask/compare-real-world.shto comparehtml-conformagainst a locally-run vnu jar on live websites (supplementary, not part of the pinned corpus baseline). - changedBumped
html5-parserto 0.3.0, closing the tree-construction-error false-negative bucket. - changedDropped "pure" from the crate description/README wording.
- fixedRecognize RDFa Lite
<meta property>(Open Graph) in the RELAX NG schema layer. - fixedCorrected
dlduplicate-dt,rb/rtc, and activerole=tabSchematron rules. - fixedImplemented the missing-
langwarning (elements-html-missing-lang) and corrected the differential test's harness-artifact comparison for it. - fixedFixed an invalid crates.io category slug (
development-tools::validationdoesn't exist).
0.1.0
29 August 2026
- addedCore Engine: HTML5 conformance checking library combining 5 validation layers (Parser, RELAX NG Schema, Datatype Microsyntaxes, Schematron Co-constraints, JSON/CSP validators).
- addedSchema Layer: Full vendored W3C RELAX NG schemas for HTML5, SVG 1.1, and MathML 3 via
relax-ng. - addedDatatype Library: 50 custom W3C attribute datatype checkers (
w:image-candidate-stringsforsrcset,w:content-security-policy,w:media-query,w:datetime,w:iri-ref, BCP 47 language tags). - addedAssertions: Schematron rule engine with 100+ co-constraint rules across ARIA 1.2, HTML structural restrictions, element nesting, heading hierarchy, and link/script attribute combinations.
- addedDedicated Script/CSP Validators: Spec-compliant JSON checkers for
<script type="importmap">and<script type="speculationrules">, plus Content Security Policy enforcement for<meta http-equiv="Content-Security-Policy">. - addedDifferential Test Suite: 4,655 W3C/vnu corpus test fixtures with 98.8% accuracy and 0 False Positives.
- addedCompliance & Tooling: REUSE compliance,
deny.tomlforcargo-deny, andTHIRD-PARTY-NOTICES.md.