Skip to content

Releases: veripublica/epubveri

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 08 Jul 07:05

Added

  • CSS findings now report an exact line:column, closing epubveri's last position gap — every CSS finding (CSS-001/CSS-002/CSS-008/CSS-019 and the in-stylesheet RSC-001/RSC-007/RSC-008/RSC-030 references) now points at the offending token, e.g. [OEBPS/style.css:3:3]. Built on styloria 0.2 source spans. (#1)

Fixed

  • OPF-096 non-linear reachability now matches epubcheck's self-link rule. A linear="no" item is reachable if any hyperlink points at it — including a link it makes to itself (a nav landmarks self-link, or a fragment-only href="#…"). The categorical toc-nav exemption from 0.4.2 is removed, so a nav nothing links to is correctly flagged, exactly as epubcheck does. (#1)

Full notes: CHANGELOG.md. Also on crates.io.

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 07 Jul 22:45
v0.4.3 — fix CSS-008 flood on @media/@supports stylesheets (issue #5)…

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 07 Jul 21:30
v0.4.2 — fix dc:date timestamps (OPF-054) & non-linear nav reachabili…

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 07 Jul 06:34
v0.4.1 — fix opf-meta-property-not-empty Schematron rule wrongly firi…

v0.4.0 — rule/params for every multi-site message ID

Choose a tag to compare

@bariskayadelen bariskayadelen released this 06 Jul 19:27

Added

  • The rule/params sub-code introduced in 0.3.0 (for RSC-005 only) is now populated at every message ID with 2 or more call sites across the crate — 36 additional IDs (RSC-006 through RSC-033, OPF-001 through OPF-092, CSS-008/CSS-015, HTM-004/HTM-057/HTM-060, PKG-007/008/009/012), on top of the RSC-005 sites already done. IDs used at exactly one call site are left as-is — id alone is already unambiguous there.
  • New Report::push_rule method (alongside the existing push/push_at/push_at_pos/push_at_rule/push_full) for the handful of sites with a rule/params pair but no location at all — a whole-container failure (corrupt/empty ZIP) detected before any file is identified.

Full changelog: see CHANGELOG.md

v0.3.0 — structured rule/params on diagnostics

Choose a tag to compare

@bariskayadelen bariskayadelen released this 06 Jul 17:17

Added

  • Every diagnostic can now carry a stable, semantic sub-code (rule) and the values interpolated into its message (params), alongside the existing epubcheck-compatible id. This exists because a single id — especially RSC-005, epubcheck's generic RelaxNG/Schematron catch-all — covers many structurally unrelated conditions with only the rendered English sentence to tell them apart. Message gained rule: Option<&'static str> (e.g. "opf.spine.duplicate_itemref") and params: Vec<String>. rule is populated at every RSC-005 call 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 have rule populated yet and are a candidate for the same treatment later.
  • Additive: Report::push_full (with position) and Report::push_at_rule (without) sit alongside the existing push/push_at/push_at_pos, which are unchanged. The WASM bindings expose the same fields.

Full changelog: see CHANGELOG.md

v0.2.1 — OPF-096b usage downgrade

Choose a tag to compare

@bariskayadelen bariskayadelen released this 06 Jul 15:55

Fixed

  • OPF-096 ("non-linear spine content isn't reachable from the reading order") is now downgraded to a usage-level OPF-096b when the book uses scripting anywhere — matching real epubcheck, which allows for script adding navigation/hyperlinks dynamically that static analysis can't see. Previously always reported as a hard error, which could misfire on a legitimate pattern such as a nav.xhtml placed in the spine as linear="no" in a scripted book.

Thanks to forum user DNSB (MobileRead thread) for finding this. See issue #3.

Full changelog: see CHANGELOG.md

v0.2.0 — exact source position on diagnostics

Choose a tag to compare

@bariskayadelen bariskayadelen released this 06 Jul 15:12

Added

  • Every diagnostic can now carry an exact source position (line and column), not just a bare file path. Message gained a new position: Option<Position> field; the CLI's human-readable output now shows path:line:col when a position is available (--format ids is unaffected). The WASM bindings expose the same Position type.
  • Additive only: Report::push_at_pos sits alongside the existing push/push_at methods, which are unchanged. Position is populated at the large majority of check sites; a documented minority (schematron-generated findings, CSS-based checks, ZIP-archive-entry-level checks, and a few "input didn't parse at all" cases) have no coherent position to report and correctly stay None.

Fixed

  • frontmatter is a valid EPUB 3 Structural Semantics vocabulary term (sibling to bodymatter/backmatter) but was incorrectly flagged as unknown vocabulary.

Thanks to Kevin Hendricks (author of the Sigil EPUB editor) for the detailed bug report that prompted both of these fixes.

Full changelog: see CHANGELOG.md