Releases: readium/swift-toolkit
Releases · readium/swift-toolkit
3.0.0-alpha.3
Take a look at the migration guide
Changelog
Fixed
Navigator
- #459 Fixed the stack overflow issue that occurred when running the text-to-speech on an EPUB file with many empty resources.
- #490 Fixed issue loading fixed-layout EPUBs.
What's Changed
- Remove
Resources
declaration fromReadiumShared
by @mickael-menu in #481 - Fix stack overflow when searching in a book with a large TOC by @vitaliynester in #473
- Fix stack overflow with TTS by @mickael-menu in #482
- Fix build on Xcode 16 by @mickael-menu in #484
- 2.7.3 by @mickael-menu in #485
- Fix issue loading fixed-layout EPUBs by @mickael-menu in #493
- 3.0.0-alpha.3 by @mickael-menu in #496
New Contributors
- @vitaliynester made their first contribution in #473
Full Changelog: 3.0.0-alpha.2...3.0.0-alpha.3
2.7.3
Take a look at the migration guide
Changelog
- #483 Fix build on Xcode 16.
What's Changed
- Fix build on Xcode 16 by @mickael-menu in #484
- 2.7.3 by @mickael-menu in #485
Full Changelog: 2.7.2...2.7.3
3.0.0-alpha.2
Take a look at the migration guide
Changelog
Added
Streamer
- Support for standalone audio files and their metadata (contributed by @domkm).
Changed
- The Readium Swift toolkit now requires a minimum of iOS 13.
- Plenty of completion-based APIs were changed to use
async
functions instead.
Shared
- A new
Format
type was introduced to augmentMediaType
with more precise information about the format specifications of anAsset
. Fetcher
was replaced with a simplerContainer
type.PublicationAsset
was replaced byAsset
, which contains aFormat
and access to the underlyingContainer
orResource
.- The
ResourceError
hierarchy was revamped and simplified (seeReadError
). Now it is your responsibility to provide a localized user message for each error case. - The
Link
property key for archive-based publication assets (e.g. an EPUB/ZIP) is nowhttps://readium.org/webpub-manifest/properties#archive
instead ofarchive
. - The API of
HTTPServer
slightly changed to be more future-proof.
Streamer
- The
Streamer
object was deprecated in favor of smaller segregated APIs:AssetRetriever
andPublicationOpener
.
Navigator
- EPUB: The
scroll
preference is now forced totrue
when rendering vertical text (e.g. CJK vertical). See this discussion for the rationale.
LCP
- The Readium LCP persistence layer was extracted to allow applications to provide their own implementations. Take a look at the migration guide for guidance.
Fixed
Navigator
- Optimized scrolling to an EPUB text-based locator if it contains a CSS selector.
- The first resource of a fixed-layout EPUB is now displayed on its own when spreads are enabled and the author has not set a
page-spread-*
property. This is the default behavior in major reading apps like Apple Books. - #471 EPUB: Fixed reporting the current location when submitting new preferences.
What's Changed
- Rename
archive
Link property by @mickael-menu in #422 - Disable EPUB pagination with vertical text by @mickael-menu in #423
- Bump the minimum iOS version to 13 by @mickael-menu in #427
- Update
HTTPServer
API by @mickael-menu in #424 - Enhance
AudioParser
by @domkm in #414 - Remove
/
prefix for exploded archive HREFs by @mickael-menu in #432 - Optimize scrolling to an EPUB locator with a CSS selector by @mickael-menu in #435
- Allow to customize the LCP device name by @mickael-menu in #437
- Async
HTTPClient
and LCP APIs by @mickael-menu in #438 - Fix Test App using CocoaPods by @mickael-menu in #439
- Extract the LCP persistence layer by @mickael-menu in #442
- Handle URLs with aliases in
ExplodedArchive
by @domkm in #441 - Fix resolving search results title by @mickael-menu in #446
- Fixed editing actions on iOS 17 by @mickael-menu in #447
- 2.7.2 by @mickael-menu in #448
- First pass at marking types as Sendable by @domkm in #450
- Change
localizedCaseInsensitiveCompare
tolocalizedStandardCompare
by @domkm in #451 - Improve URL equality by @mickael-menu in #453
- Normalize URLs on-the-fly when comparing by @mickael-menu in #454
- Fix first spread of FXL EPUBs by @mickael-menu in #470
- Fix reporting the current locator when submitting new preferences by @mickael-menu in #474
- Documentation for the v3 by @mickael-menu in #475
- Fix iOS 13 warnings by @mickael-menu in #476
- Extract localized error messages from the toolkit by @mickael-menu in #477
Full Changelog: 3.0.0-alpha.1...3.0.0-alpha.2
2.7.2
Take a look at the migration guide
Changelog
Fixed
Shared
- #444 Fixed resolving titles of search results when the table of contents items contain fragment identifiers.
Navigator
- #428 Fixed crash with the
share
editing action on iOS 17. - #428 Fixed showing look up and translate editing actions on iOS 17.
What's Changed
- Fix resolving search results title by @mickael-menu in #446
- Fixed editing actions on iOS 17 by @mickael-menu in #447
- 2.7.2 by @mickael-menu in #448
Full Changelog: 2.7.1...2.7.2
3.0.0-alpha.1
Take a look at the migration guide
Changelog
Changed
- The
R2Shared
,R2Streamer
andR2Navigator
packages are now calledReadiumShared
,ReadiumStreamer
andReadiumNavigator
. - Many APIs now expect one of the new URL types (
RelativeURL
,AbsoluteURL
,HTTPURL
andFileURL
). This is helpful because:- It validates at compile time that we provide a URL that is supported.
- The API's capabilities are better documented, e.g. a download API could look like this :
download(url: HTTPURL) -> FileURL
.
Shared
Link
andLocator
'shref
are normalized as valid URLs to improve interoperability with the Readium Web toolkits.- You MUST migrate your database if you were persisting HREFs and Locators. Take a look at the migration guide for guidance.
- Links are not resolved to the
self
URL of a manifest anymore. However, you can still normalize the HREFs yourselves by callingManifest.normalizeHREFsToSelf()
. Publication.localizedTitle
is now optional, as we cannot guarantee a publication will always have a title.
What's Changed
- Refactor HREF normalization and models by @mickael-menu in #358
- Validate
Link
'shref
when creating aURL
by @mickael-menu in #379 - Fix audiobook regression by @mickael-menu in #380
- Prevent crash when reporting the currently spoken word by @mickael-menu in #381
- Validate Link HREFs only when they are not templated by @mickael-menu in #387
- Fix audiobook regression by @mickael-menu in #393
- Drop
R2
prefix by @mickael-menu in #412 - Don't require a
self
link to enable HTTP requests in a RWPM by @mickael-menu in #415 - Documentation by @mickael-menu in #384
- 3.0.0-alpha.1 by @mickael-menu in #420
Full Changelog: 2.7.1...3.0.0-alpha.1
2.7.1
Take a look at the migration guide
Changelog
Added
LCP
- #417 Support for the new 2.x LCP Profiles.
What's Changed
- Support for the new 2.x LCP Profiles by @mickael-menu in #418
- 2.7.1 by @mickael-menu in #419
Full Changelog: 2.7.0...2.7.1
2.7.0
Take a look at the migration guide
Changelog
Added
Shared
- You can now use
DefaultHTTPClientDelegate.httpClient(_:request:didReceive:completion:)
to handle authentication challenges (e.g. Basic) withDefaultHTTPClient
.
Navigator
- The
AudioNavigator
API has been promoted to stable and ships with a new Preferences API. - The new
NavigatorDelegate.didFailToLoadResourceAt(_:didFailToLoadResourceAt:withError:)
delegate API notifies when an error occurs while loading a publication resource (contributed by @ettore).
Fixed
Navigator
- From iOS 13 to 15, PDF text selection is disabled on protected publications disabling the Copy editing action.
- The Share editing action is disabled for any protected publication.
- Fixed starting the TTS from the current EPUB position.
- #396 Ensure we stop the activity indicator when an EPUB resource fails to load correctly (contributed by @ettore).
Streamer
- #399 Zipped Audio Books and standalone audio files are now recognized.
Commits
- Adjust the audio session strategy for the
AudioNavigator
by @mickael-menu in #357 - Fix Copy and Share editing actions by @mickael-menu in #364
- Fix 367: Fix initial location when in landscape landscape by @chrfalch in #368
- Fix TTS issue by @mickael-menu in #369
- Add a new form-based bug report issue template by @mickael-menu in #374
- Update file headers by @mickael-menu in #378
- Initial pass at
Locator.Locations.time
by @domkm in #382 - Preferences API for
AudioNavigator
by @mickael-menu in #389 - Compare loggable SeverityLevel by its numeric (not string) value by @ettore in #391
- Switch to pnpm by @mickael-menu in #392
- Turn off spinner if spread doesn't begin loading by @ettore in #397
- Sniff audio clips by @mickael-menu in #403
- Use ReadiumGCDWebServer* symbols by @ettore in #404
- Bubble up errors while loading Resources by @ettore in #400
- Fix ReadiumGCDWebServer integration for CocoaPods and Carthage by @mickael-menu in #406
- Handle authentication challenges with
DefaultHTTPClient
by @mickael-menu in #409 - 2.7.0 by @mickael-menu in #410
New Contributors
Full Changelog: 2.6.1...2.7.0
2.6.1
Take a look at the migration guide
Added
Navigator
- You can now customize the playback refresh rate of
_AudiobookNavigator
in its configuration. - The EPUB navigator automatically moves to the next resource when VoiceOver reaches the end of the current one.
Changed
Navigator
- You should not subclass
PDFNavigatorViewController
anymore. If you need to overridesetupPDFView
, you can do so by implementing thePDFNavigatorDelegate
protocol.
Fixed
Shared
- Zipped Audio Book archives are now detected even if they contain bitmap entries.
Navigator
2.6.0
Take a look at the migration guide
- Support for Xcode 15.
Added
Navigator
- The
PublicationSpeechSynthesizer
(TTS) now supports background playback by default.- You will need to enable the Audio Background Mode in your app's build info.
- Support for non-linear EPUB resources with an opt-in in reading apps (contributed by @chrfalch in #332 and #331).
- Override loading non-linear resources with
VisualNavigatorDelegate.navigator(_:shouldNavigateToLink:)
. - Present a new
EPUBNavigatorViewController
by providing a customreadingOrder
with only this resource to the constructor.
- Override loading non-linear resources with
Fixed
Navigator
- Improved performance when adding hundreds of HTML decorations at once.
- Fixed broadcasting the
PublicationSpeechSynthesizer
with AirPlay when the screen is locked.
Changed
Navigator
AudioSession
andNowPlayingInfo
are now stable!- You need to provide the configuration of the Audio Session to the constructor of
PublicationSpeechSynthesizer
, instead ofAVTTSEngine
.
2.5.1
Take a look at the migration guide
- The Readium toolkit now requires iOS 11.0+.
Added
Navigator
- The
auto
spread setting is now available for fixed-layout EPUBs. It will display two pages in landscape and a single one in portrait.
Streamer
- The EPUB content iterator now returns
audio
andvideo
elements and fill in theprogression
andtotalProgression
locator properties.
Changed
Navigator
EPUBNavigatorViewController.firstVisibleElementLocator()
now returns the first block element that is visible on the screen, even if it starts on previous pages.- This is used to make sure the user will not miss any context when restoring a TTS session in the middle of a resource.
Fixed
Navigator
- Fixed the PDF
auto
spread setting and scaling pages when rotating the screen. - Fixed navigating to the first chapter of an audiobook with a single resource (contributed by @grighakobian).
- Prevent auto-playing videos in EPUB publications.
- Fixed various memory leaks and data races.
- The
WKWebView
is now inspectable again with Safari starting from iOS 16.4. - Fixed crash in the
PublicationSpeechSynthesizer
when closing the navigator without stopping it first. - Fixed pausing the
PublicationSpeechSynthesizer
right before starting the utterance. - Fixed the audio session kept opened while the app is in the background and paused.
- Fixed the Attribute dir redefined error when the EPUB resource already has a
dir
attribute. - #309 Fixed restoring the EPUB location when the application was killed in the background (contributed by @triin-ko).
Streamer
- Fix issue with the TTS starting from the beginning of the chapter instead of the current position.