Sprint 83: September 7 - 18, 2026
Accessibility
- Fixed VoiceOver footnote announcements in the iOS reader, which the Sprint 77 change had never actually applied to any book
Mobile App Releases (iOS & Android)
- Replaced Transifex with translations generated at build time using library terminology and shipped with the apps, removing a third-party runtime dependency and, on Android, a Transifex defect that crashed the app for some patrons (iOS and Android)
- Completed v3.3.0 release-candidate testing for TestFlight build 502, passing content, functionality, book details, academic, playback time tracking, and user-facing release ticket test cases; the eBook reader and audiobook player suites failed on table of contents navigation and offline listening (iOS)
- Fixed fully downloaded audiobooks not playing offline, found during v3.3.0 release-candidate testing: an LCP audiobook was marked downloaded when only its license file had arrived, and being offline was read as being signed out. The app now fetches the audio in the background after borrowing, safeguarded against mixing up a patron's libraries and against starting after a failed download (iOS)
- Fixed the catalog becoming extremely slow or failing to load after opening a few sublanes, found during v3.3.0 release-candidate testing; a deadlock in the cover image cache was blocking all background work, including feed loads (iOS)
- Fixed the EPUB table of contents appearing blank until the Bookmarks tab was opened, found during v3.3.0 release-candidate testing (iOS)
- Validated the fixes in replacement release-candidate build 505, which passed its fix checks and smoke tests but failed on a separate issue found in the build (iOS)
- Fixed Adobe DRM borrows failing with a misleading "sign out and sign in again" message, seen by about 4,000 patrons since 3.0.0 — following that advice used up another of the patron's limited Adobe device activations. The app now refreshes its Adobe credential before activating, reports the real error, and frees the activation at sign-out (iOS)
- Moved the library list, switching, adding, and removing off the Settings tab onto a dedicated libraries screen, matching the updated account switcher design shared with Android (iOS)
- Added the missing Testing menu switch for side-loading, which had shipped behind a feature flag with no way to turn it on (iOS; continued from Sprint 78)
- Pinned the app and its audiobook toolkit to a tagged release of the Palace Readium swift-toolkit fork instead of a bare commit, so the Readium baseline is easy to read and harder to drift from (iOS)
- Evaluated the upgrade to Readium 4.0 on a branch ahead of the 4.0.0 final release, porting the Palace swift-toolkit fork to 4.0.0-alpha.1 and migrating the app to its Swift 6 APIs; the upgrade proved viable, with Adobe DRM ebooks, LCP audiobook streaming, PDFs, EPUBs, bookmarks, table of contents navigation, and text-to-speech all working on device (iOS)
- Implemented the redesigned account switcher, with libraries managed on their own screen reached from Settings (Android; continued from Sprint 82)
- Fixed device logs not being rotated, which had let a log file grow to 200 MB on a device (Android)
- Assessed the app against Google Play's February 2027 memory and DEX optimization thresholds: memory use is well under the limit, but meeting the DEX requirement means turning on code shrinking and optimization, which first needs stronger on-device testing (Android)
- Assessed Google Play's April 2027 zero-tap sign-in requirement: library-issued credentials are a poor fit for the Restore Credentials API and SAML and OIDC sign-ins can't be restored by design, though stored credentials should already carry over through Android backups; Palace may need to apply for an exemption (Android)
- Worked through patron issues reported in support tickets