v0.3.0 — structured rule/params on diagnostics
Added
- Every diagnostic can now carry a stable, semantic sub-code (
rule) and the values interpolated into its message (params), alongside the existing epubcheck-compatibleid. This exists because a singleid— especiallyRSC-005, epubcheck's generic RelaxNG/Schematron catch-all — covers many structurally unrelated conditions with only the rendered English sentence to tell them apart.Messagegainedrule: Option<&'static str>(e.g."opf.spine.duplicate_itemref") andparams: Vec<String>.ruleis populated at everyRSC-005call site in the crate except a handful where no stable sub-code is derivable yet (schematron-derived output, and a few "input didn't parse as XML at all" cases) — other message IDs don't haverulepopulated yet and are a candidate for the same treatment later. - Additive:
Report::push_full(with position) andReport::push_at_rule(without) sit alongside the existingpush/push_at/push_at_pos, which are unchanged. The WASM bindings expose the same fields.
Full changelog: see CHANGELOG.md