4.0.0-alpha.1
Pre-release
Pre-release
·
1 commit
to develop
since this release
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
Shared
- Content elements now expose
accessibleName,accessibleDescriptionandextendedDescriptionattributes, computed following a subset of the W3C accessible name computation and Best Practices for Implementing Extended Descriptions in EPUB. - The HTML content iterator now emits inline
<svg>elements asSVGContentElement, with a caption from the enclosing figure'sfigcaption. AudioContentElementandVideoContentElementnow expose acaptionproperty, filled from the enclosing figure'sfigcaptionlike images and SVGs already were.
Changed
- The toolkit is migrated to Swift 6 with strict concurrency checking. All packages compile in the Swift 6 language mode. See the migration guide.
- The toolkit adopts the
NonisolatedNonsendingByDefault(SE-0461),InferIsolatedConformancesandMemberImportVisibilityupcoming Swift features.
- The toolkit adopts the
Shared
- OPDS models (
Feed,Group,Facet,OpdsMetadata) are now structs with value semantics. Publication,Resource,Containerand related types are nowSendable. Custom implementations ofResource,Container,HTTPClientorPublicationServicemust beSendabletoo.Resource.stream()now cooperates with task cancellation: the built-in resources fail withReadError.cancelledwhen the surrounding task is cancelled, and custom implementations are expected to do the same.ImageContentElement.captionandSVGContentElement.captionare now strictly the text of the enclosing figure'sfigcaption. Other sources (such asalt) contribute toaccessibleNameinstead.- Audio and video content elements now expose accessibility attributes, so the text-to-speech may start speaking their labels.
Navigator
- The
NavigatorandVisualNavigatorprotocols and their delegates are now isolated to the main actor.
LCP
LCPService.initnow requires an explicitdeviceNameparameter. We recommend passingUIDevice.current.name. See the migration guide.LCPDialogAuthenticationno longer takes asenderview controller. It now presents its passphrase dialog through a newLCPDialogAuthenticationDelegatethat you implement and retain for the lifetime of the authentication. See the Readium LCP guide and the migration guide.
Removed
- The deprecated
ReadiumAdapterGCDWebServerandReadiumAdapterLCPSQLiteadapter packages have been removed. - The
ReadiumInternalpackage has been removed. Its utilities were internal helpers and are now folded intoReadiumSharedwithpackagevisibility. If you importedReadiumInternaldirectly, remove the import.
What's Changed
- Replace DifferenceKit and CryptoSwift with native Swift code by @stevenzeck in #875
- Add missing
Sendableconformances by @mickael-menu in #881 - Generate the Playground project with XcodeGen and unify the dev workflow by @stevenzeck in #849
- Add accessible name and description to content elements by @mickael-menu in #882
- Add extended descriptions to content elements by @mickael-menu in #885
- Emit SVG elements wrapping a single image as image elements by @mickael-menu in #887
- Explicitly define os and arch for xcodebuild by @stevenzeck in #888
- Fix delayed playback info updates in the audio navigator by @stevenzeck in #848
- 4.0.0-alpha.1 by @mickael-menu in #889
Full Changelog: 3.11.0...4.0.0-alpha.1