Fixed
- Test shelf, 562 books,
repair -ythen upgrade: 394 → 427 come out valid
(cli-v4.2.0 → cli-v4.3.0), and no book has more errors than before. The
changes below add up to that. - Upgrading an EPUB 2 book no longer makes it invalid over layout attributes
that EPUB 2 allowed and EPUB 3 does not: an image sized in percent
(<img width="40%">), a table'scellspacing,cellpadding,border,
widthandheight,width,heightandvalignon its cells, and a
line break'sclear(<br clear="all">). Each
is written as the CSS the HTML Standard maps it to, as a class rule in
epublift-presentational.css, wherever the book's own CSS doesn't already
set that property and none of its selectors reads the attribute; the rest
are left as written and counted in the report. See docs/usage.md. - The upgrade renames the elements HTML made obsolete to their HTML
counterparts, under the same checks:<strike>→<s>,<big>→span
atfont-size: larger,<center>around inline content →divat
text-align: center,<font face size>→spanwithfont-familyand
the legacy size keyword.<font color>andsize="7"are left as they are.
Test shelf: all 14 books holding these elements lose 162 → 67 findings, and
4 come out valid. - The upgrade's closing epubsana pass also points the package's
unique-identifierat the book's one real identifier when the element it
names is empty (fix.package_identifier; declined when the book holds two
candidates, a UUID and an ISBN say). Eight books on the test shelf that
stayed invalid afterrepairnow come out of the upgrade valid. - The upgrade's closing pass also renames an
idthe upgrade itself made
invalid, with every link to it (fix.content_document_invalid_id). XHTML
1.x trimmed the spaces from anidthrough its DTD, HTML does not, so a
valid EPUB 2 book withid="k10 "came out invalid. One book on the test
shelf; 426 → 427 valid, none worse. repair(CLI and web) fixes two more defects, from epubsana 0.34.0: a
list placed directly inside another list instead of inside its item
(<ul><li>…</li><ul>…</ul>— common in tables of contents) moves into
the item before it, and an image declared as one standard type but holding
another (a PNG declaredimage/jpeg) gets its declaration corrected.
Test shelf,repairthen upgrade: 418 → 426 valid books, none worse.
Changed
- veripublica conventions v0.7 (a long option name means one thing in
every family tool). Threemetaspellings change; the old ones still
work in 4.x, print a warning on stderr, and go in the next major:meta enrich --lang→--assume-language(--languagewrites
dc:language; this one only steers the lookup);meta enrich --cover→--include-cover(meta set --covertakes an
image path);meta show --json→meta show --format metadata(--jsonis the
shared envelope incheck).
- The
checkandrepairJSON envelopes now say"convention": "0.7". - Optimize writes out the named characters an XHTML 1.x DOCTYPE declared
( ,’, …) when it replaces that DOCTYPE with EPUB 3's,
instead of leaving them undeclared for the final repair pass. Same output,
much faster on books with many documents: an 805-document book took 11
minutes on the command line and timed out on the web; it now takes 5
seconds. - epubveri 0.31.0, epubsana 0.34.0 and kepubverto 0.2.3 (crates and the
web's Validate and Repair modules together), on styloria 0.15.
Security
- HTTPS (metadata lookup, OCR model download, Smart Import): rustls-webpki
0.103.16 and webpki-roots 1.0.10 (RUSTSEC-2026-0382, RUSTSEC-2026-0381:
distrusted intermediates could be accepted).
Full Changelog: cli-v4.2.0...cli-v4.3.0