What's Changed
- Update READMEmd with list of popular projects using eboolib by @Kiranpatil02 in #353
- Fix #347 by @GreenCake3 in #352
- EpubWriter: use the mtime option as the date_time value of zip metadata by @Arwalk in #340
- Remove Python 2.x support, add support for the Typing and move code i… by @aerkalov in #365
- Write dcterms:modified as UTC time by @aerkalov in #367
- fix: generate unique ids for multiple authors by @lowbyteguy in #366
- Security: Path traversal in Directory.read() via crafted epub manifes… by @aerkalov in #368
- Do not use the content encoding as a media type by @dylanpulver in #372
- Document spine-first reading order and stable resource tail by @radixun in #373
- Fix ty typecheck failure in sourcecode plugin (unblocks CI test job) by @scks1 in #384
- Fix automatic page-list extraction to require pagebreak semantics by @sunxiuguo in #374
- Fix chapter loss for Unicode XHTML with encoding declarations by @sunxiuguo in #376
- fix: select EPUB 3 nav by namespaced epub:type tokens, with lone-nav fallback by @aerkalov in #386
- Fix semantic navigation selection during EPUB import by @sunxiuguo in #375
- Return an empty list for missing metadata namespaces by @Aminark in #377
- fix: preserve leading body text but ignore whitespace-only text by @aerkalov in #387
- Preserve text directly inside chapter body elements by @Aminark in #379
- Preserve cover page IDs and filenames from the manifest by @Aminark in #380
- fix: avoid duplicate generated item IDs, with docs by @aerkalov in #388
- Avoid collisions when assigning automatic item IDs by @Aminark in #381
- fix: read empty or malformed NCX as an empty TOC list, with docs by @aerkalov in #389
- Read an empty NCX map as an empty table of contents by @Aminark in #382
- fix: respect package unique-identifier when reading metadata, with legacy fallback by @aerkalov in #390
- Respect the package unique-identifier when reading metadata by @Aminark in #378
- release: prepare version 0.21 by @aerkalov in #391
- ci: test against Python 3.15 by @aerkalov in #392
New Contributors
- @Kiranpatil02 made their first contribution in #353
- @GreenCake3 made their first contribution in #352
- @Arwalk made their first contribution in #340
- @lowbyteguy made their first contribution in #366
- @dylanpulver made their first contribution in #372
- @radixun made their first contribution in #373
- @scks1 made their first contribution in #384
- @sunxiuguo made their first contribution in #374
- @Aminark made their first contribution in #377
Full Changelog: v0.20...v0.21