Warning
Minor releases (a.B.c) of the Readium toolkit may now include minor breaking changes, such as dependency upgrades or small API modifications. Major version numbers are reserved for significant architectural changes.
Documentation
- Versioned Documentation – Complete API reference on readium.org.
- Migration Guide – Instructions for upgrading from previous versions.
Changelog
Added
Navigator
- Added the
AudioSessionManagingprotocol, letting apps provide their own audio session manager instead of the built-inAudioSession(contributed by @svenmeyers89).
LCP
LCPServicehas a newaddPassphrase(_:isHashed:userID:provider:)method to store a passphrase candidate in the repository without opening a license first. Useful to preload a passphrase ahead of time (e.g. from a catalog).LCPClienthas a newgetSupportedLCPProfileURIs()requirement, letting the toolkit reportLCPError.licenseProfileNotSupportedbased on the profiles the embedded liblcp actually supports. Update yourLCPClientfacade to forwardR2LCPClient.getSupportedLCPProfileURIs()(a default implementation is provided for backward compatibility).
Changed
LCP
- The auto-generated LCP device ID is now stored in the Keychain instead of
UserDefaults, so it survives an app delete/reinstall and no longer needlessly consumes a license's device-registration slots. Existing IDs are automatically migrated fromUserDefaults.
Fixed
Shared
- EPUB HREFs that are not percent-encoded but carry a fragment or query (e.g.
chapter one.xhtml#section, with a space in the filename) now keep their#fragment/?queryinstead of encoding the separators into the path. This fixes table of contents and Media Overlays links failing to resolve and navigate in poorly-authored EPUBs.
Navigator
- Fixed custom
EditingActions sometimes missing from the text-selection menu for double-tap (single word) selections (contributed by @raphi011). - Fixed memory leak in the
AudioNavigator. - #802 Fixed fonts declared with
fontFamilyDeclarationsnever loading in the EPUB navigator. Font fetches were CORS-gated by WebKit (contributed by @atani).
What's Changed
- Replace drafts.opds.io with specs.opds.io by @mickael-menu with @Copilot in #834
- Fix docs workflow root path resolution in
generate-docs.shby @mickael-menu with @Copilot in #835 - Fix Authentication for OPDS URL incorrectly pointing to specs.opds.io by @mickael-menu with @Copilot in #836
- Fix custom editing actions missing on double-tap selections (iOS 16+ buildMenu) by @raphi011 in #822
- Add
LCPService.addPassphrase()to preload passphrases by @mickael-menu in #840 - Fix memory leak in the
AudioNavigatorby @mickael-menu in #842 - Improve CI and release tooling by @mickael-menu in #843
- Fix fonts declared with fontFamilyDeclarations never loading by @atani in #845
- Fix poorly-authored EPUB links not navigating by @mickael-menu in #847
- Improve LCP profiles detection by @mickael-menu in #857
- Enable external Audio Session handling by @svenmeyers89 in #856
- Store the auto-generated LCP device ID in the Keychain by @mickael-menu in #858
- 3.11.0 by @mickael-menu in #862
New Contributors
- @mickael-menu with @Copilot made their first contribution in #834
- @atani made their first contribution in #845
- @svenmeyers89 made their first contribution in #856
Full Changelog: 3.10.0...3.11.0