Release Highlight
- Dictionaries: You can now import your own StarDict and MDict dictionaries
- Sync: Your custom dictionaries, custom fonts, background textures and OPDS catalogs now sync across devices
- KOReader Sync: Browse your full Readest Library from inside KOReader, with improved sync diagnostics
- OPDS: Stream books over OPDS-PSE and optionally auto-download new titles from feeds
- Sharing: Create share links for books, jump directly to book via deep links in exported annotations
- Library: Added an optional 4-digit PIN lock at app launch to keep your library private
- Library: You can now drag entire folders to import books
- Reading: Added support for inline CJK ruby annotations (warichu/Gezhu), improved footnote detection
- Speed Reading: Reading position now resumes correctly across devices and inside long sections
- Fixes: Many fixes across PDFs, MOBIs, EPUBs, TTS, scrolling, and accessibility
What's Changed
- fix(i18n): fix translations in RU by @chrox in https://github.com/readest/readest/pull/3866
- fix(toc): fix page number of some TOC items from section fragments by @chrox in https://github.com/readest/readest/pull/3867
- feat(windows): use overlay scrollbar by @tongyuantongyu in https://github.com/readest/readest/pull/3868
- refactor(toc): cache navigable structure per book by @chrox in https://github.com/readest/readest/pull/3869
- refactor(nav): refactor book nav service with TOC enrichment by @chrox in https://github.com/readest/readest/pull/3874
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in https://github.com/readest/readest/pull/3880
- refactor: fixed typo in module name by @chrox in https://github.com/readest/readest/pull/3881
- fix(library): fixed opening shared books from other apps by @chrox in https://github.com/readest/readest/pull/3884
- fix(a11y): fixed saving reading progress with screen readers, closes [#3864] by @chrox in https://github.com/readest/readest/pull/3891
- feat(kosync): defer push after resume by @zb140 in https://github.com/readest/readest/pull/3892
- feat(footnotes): detect more formats of footnote by @chrox in https://github.com/readest/readest/pull/3894
- fix(kosync): CWA sometimes sends 400 for auth failure by @zb140 in https://github.com/readest/readest/pull/3893
- fix(toc): prevent auto-scroll snap-back on sidebar open by @chrox in https://github.com/readest/readest/pull/3900
- fix(kosync): send valid progress to kosync server when closing book, closes [#3899] by @chrox in https://github.com/readest/readest/pull/3901
- fix: fixed crash on app start when there is no main window but a reader window running, closes [#3897] by @chrox in https://github.com/readest/readest/pull/3902
- compat(css): remove no-op css that might break column layout, closes [#3895] by @chrox in https://github.com/readest/readest/pull/3903
- perf(rsvp): fixed performance issue when the context window is large, closes [#3877] by @chrox in https://github.com/readest/readest/pull/3904
- fix(tts): fixed race condition on pause/resume, closes [#3825] by @chrox in https://github.com/readest/readest/pull/3905
- fix(pdf): fixed annotations not displayed properly in two-page spread for PDFs, closes [#3862] by @chrox in https://github.com/readest/readest/pull/3906
- fix(pdf): don't apply theme colors where canvas filter is unsupported, closes [#3912] by @chrox in https://github.com/readest/readest/pull/3915
- fix(theme): fixed texture background in scrolled mode, closes [#3913] by @chrox in https://github.com/readest/readest/pull/3918
- fix(macos): don't quit app on Cmd+W, only on Cmd+Q by @chrox in https://github.com/readest/readest/pull/3928
- fix(layout): properly display full screen page, closes [#3914] by @chrox in https://github.com/readest/readest/pull/3930
- chore(deps): bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 in the github-actions group by @dependabot[bot] in https://github.com/readest/readest/pull/3937
- chore: update Dependabot dependencies by @chrox in https://github.com/readest/readest/pull/3938
- fix(android): avoid rsproperties panic on startup, closes [#3922] by @chrox in https://github.com/readest/readest/pull/3942
- fix(layout): don't dismiss notebook on navigate to annotations when notebook is pinned, closes [#3923] by @chrox in https://github.com/readest/readest/pull/3948
- fix(seo): fixed the title and description of the user page by @chrox in https://github.com/readest/readest/pull/3952
- Add VCS browser URL to appdata.xml by @archisman-panigrahi in https://github.com/readest/readest/pull/3962
- feat: rearchitect OPDS auto-download with two-phase sync by @chrox in https://github.com/readest/readest/pull/3844
- Fix: ImageViewer zoom implementation by @JustADeer in https://github.com/readest/readest/pull/3957
- fix(rsvp): unicode-aware ORP calculation for non-Latin scripts by @chrox in https://github.com/readest/readest/pull/3964
- chore(deps): update stripe by @FabrisNick in https://github.com/readest/readest/pull/3941
- chore: bump opennext and wrangler to the latest versions by @chrox in https://github.com/readest/readest/pull/3971
- fix: restore main library window when going to library from reader by @chrox in https://github.com/readest/readest/pull/3973
- fix(reader): smooth mouse wheel scrolling in scroll mode by @chrox in https://github.com/readest/readest/pull/3974
- fix(toc): fix auto scroll on book open with pinned sidebar, closes [#3945] by @chrox in https://github.com/readest/readest/pull/3975
- fix(layout): fixed dropdown menu layout for the delete button in details, closes [#3940] by @chrox in https://github.com/readest/readest/pull/3976
- feat(kosync): add metadata hash info dialog to diagnose sync failures by @chrox in https://github.com/readest/readest/pull/3978
- fix(annotator): defer Android quick action until touchend, closes [#3935] by @chrox in https://github.com/readest/readest/pull/3979
- fix(reader): close stuck reader window on book load failure by @chrox in https://github.com/readest/readest/pull/3980
- fix(rsvp): resume at stop word, prevent section replay, restore full context by @lexm2 in https://github.com/readest/readest/pull/3960
- feat(opds): add OPDS-PSE streaming support and custom OPDS 2.0 parser by @zeedif in https://github.com/readest/readest/pull/3951
- fix(layout): fixed layout for catalog title by @chrox in https://github.com/readest/readest/pull/3982
- fix(txt): more robust txt parsing, closes [#3970] by @chrox in https://github.com/readest/readest/pull/3983
- perf(rsvp): windowed context, extraction caching and lazy CFI for sections with thousands of words, closes [#3953] by @chrox in https://github.com/readest/readest/pull/3984
- feat(rsvp): use jieba tokenizer to segment words for Chinese books by @chrox in https://github.com/readest/readest/pull/3985
- fix(annotation): preserve line breaks in selected text, closes [#3981] by @chrox in https://github.com/readest/readest/pull/3986
- fix(tts): preserve state on AbortError to keep rate changes effective on iOS by @chrox in https://github.com/readest/readest/pull/3988
- fix(pdf): prevent continuous scroll kickback by @chrox in https://github.com/readest/readest/pull/3990
- fix(epub): fall back to case-insensitive zip lookups by @chrox in https://github.com/readest/readest/pull/3991
- fix(sync): defers updateLibrary until libraryLoaded to avoid occasional losing books by @chrox in https://github.com/readest/readest/pull/3995
- fix(reader): preserve position when toggling scrolled mode by @chrox in https://github.com/readest/readest/pull/3996
- fix(footnote): ignore background image in footnotes by @chrox in https://github.com/readest/readest/pull/3998
- fix(layout): symmetric margins and gap in 2-column layout, closes [#3909] by @chrox in https://github.com/readest/readest/pull/4002
- chore(deps): bump amondnet/vercel-action from 25 to 42 in the github-actions group by @dependabot[bot] in https://github.com/readest/readest/pull/4008
- feat(reader): custom dictionaries (StarDict + MDict) by @chrox in https://github.com/readest/readest/pull/4012
- feat(annotations): deep links for highlight exports by @chrox in https://github.com/readest/readest/pull/4018
- feat(annotations): preview mode for deep-link landings by @chrox in https://github.com/readest/readest/pull/4019
- fix(rsvp): cross-device resume seeding + mobile slider drag by @lexm2 in https://github.com/readest/readest/pull/4004
- fix(reader): pure black/white footer in eink mode by @chrox in https://github.com/readest/readest/pull/4024
- fix(txt): recognize 番外/外传 chapter prefixes, closes [#4016] by @chrox in https://github.com/readest/readest/pull/4025
- fix(rsvp): split em-dash and en-dash compound words by @chrox in https://github.com/readest/readest/pull/4026
- refactor(settings): move Keep Screen Awake to Behavior > Device by @chrox in https://github.com/readest/readest/pull/4027
- feat(share): time-limited share links with cfi-aware imports by @chrox in https://github.com/readest/readest/pull/4037
- fix(share): make /s landing build under Next 16 layout-prop validation by @chrox in https://github.com/readest/readest/pull/4040
- fix(share): hide download link on share landing page by @chrox in https://github.com/readest/readest/pull/4041
- fix(share): import flow + share-landing & user-header polish by @chrox in https://github.com/readest/readest/pull/4043
- feat(koplugin): support deletePluginSettings hook by @chrox in https://github.com/readest/readest/pull/4045
- fix(docker): correct Kong gateway port for client build arg by @chrox in https://github.com/readest/readest/pull/4046
- fix(reader): dismiss annotation popup on section info / progress bar tap by @chrox in https://github.com/readest/readest/pull/4047
- feat(dictionaries): add DICT/Slob formats and Web Search providers by @chrox in https://github.com/readest/readest/pull/4048
- feat(koplugin): add i18n catalog and sync info dialog by @chrox in https://github.com/readest/readest/pull/4050
- compat(css): fixed table layout and style in dark mode by @chrox in https://github.com/readest/readest/pull/4055
- feat(koplugin): Readest Library view in KOReader by @chrox in https://github.com/readest/readest/pull/4056
- chore(koplugin): refresh i18n catalogs by @chrox in https://github.com/readest/readest/pull/4058
- feat(i18n): add Uzbek and Brazilian Portuguese translations by @chrox in https://github.com/readest/readest/pull/4061
- feat(reader): manage rules shortcut in proofread popup by @chrox in https://github.com/readest/readest/pull/4062
- fix(koplugin): render group cover previews in Library by @chrox in https://github.com/readest/readest/pull/4064
- fix(reader): revert footer visibility when tap-to-toggle disabled by @chrox in https://github.com/readest/readest/pull/4065
- feat(metadata): parse Calibre series info from PDF and CBZ by @chrox in https://github.com/readest/readest/pull/4066
- feat(reader): support deeplink and web link in annotation export by @chrox in https://github.com/readest/readest/pull/4067
- fix(library): support dropping directories to import books by @chrox in https://github.com/readest/readest/pull/4068
- fix(layout): resolve layout issues with mixed writing modes in adjacent sections by @chrox in https://github.com/readest/readest/pull/4069
- feat(reader): replace dictionary tabs with stacked result cards by @chrox in https://github.com/readest/readest/pull/4071
- feat(dict): improve MDict rendering and dictionary management by @chrox in https://github.com/readest/readest/pull/4072
- chore(agent): bump gstack by @chrox in https://github.com/readest/readest/pull/4073
- feat(sync): CRDT replica sync foundation by @chrox in https://github.com/readest/readest/pull/4075
- feat(sync): wire dictionary store through replica sync (follow-up to [#4075]) by @chrox in https://github.com/readest/readest/pull/4076
- feat(sync): cross-device custom font sync by @chrox in https://github.com/readest/readest/pull/4077
- chore(agent): update project memory by @chrox in https://github.com/readest/readest/pull/4078
- feat(sync): cross-device background texture sync by @chrox in https://github.com/readest/readest/pull/4079
- chore(i18n): translate replica-sync File-toast strings by @chrox in https://github.com/readest/readest/pull/4080
- feat(account): show daily reset countdown under translation quota bar by @chrox in https://github.com/readest/readest/pull/4082
- refactor(sync): extract shared replica primitives across kinds by @chrox in https://github.com/readest/readest/pull/4081
- refactor(hardcover): move note mappings to SQLite on web and native by @chrox in https://github.com/readest/readest/pull/4083
- feat(sync): wire crypto session for encrypted-field sync by @chrox in https://github.com/readest/readest/pull/4084
- chore: bump turso to the latest version by @chrox in https://github.com/readest/readest/pull/4086
- feat(sync): add opds_catalog replica kind (plaintext fields) by @chrox in https://github.com/readest/readest/pull/4087
- feat(sync): encrypted OPDS credentials + Tauri keychain (PR 4c + 4d) by @chrox in https://github.com/readest/readest/pull/4090
- fix(layout): center fixed modals above the on-screen keyboard on Android by @chrox in https://github.com/readest/readest/pull/4091
- feat(applock): 4-digit PIN gate at app launch by @chrox in https://github.com/readest/readest/pull/4093
- feat(sync): bundled
settingsreplica kind for cross-device prefs and credentials by @chrox in https://github.com/readest/readest/pull/4094 - feat(sync): bundle dictionary settings into the
settingsreplica kind by @chrox in https://github.com/readest/readest/pull/4096 - fix(layout): silence viewport meta warning on non-Android browsers by @chrox in https://github.com/readest/readest/pull/4097
- feat(sync): per-category sync gates + Manage Sync UI by @chrox in https://github.com/readest/readest/pull/4099
- fix(txt): parse author from filename and use edited metadata on fallback cover by @chrox in https://github.com/readest/readest/pull/4102
- fix(epub): accept EPUBs with malformed first ZIP local file header by @chrox in https://github.com/readest/readest/pull/4103
- fix(i18n): localize quota reset countdown time units by @chrox in https://github.com/readest/readest/pull/4104
- fix(sync): keep dictionarySettings consistent across devices by @chrox in https://github.com/readest/readest/pull/4105
- feat(share): route annotation exports through the system share sheet by @chrox in https://github.com/readest/readest/pull/4107
- feat(sync): batch replica sync into one /api/sync/replicas request by @chrox in https://github.com/readest/readest/pull/4109
- feat(applock): blinking PIN cursor + misc UI polish by @chrox in https://github.com/readest/readest/pull/4110
- feat(sync): opt-in Credentials toggle + keyring v4 migration by @chrox in https://github.com/readest/readest/pull/4111
- ui/ux: codify design system and migrate settings to shared primitives by @chrox in https://github.com/readest/readest/pull/4116
- i18n: update translations by @chrox in https://github.com/readest/readest/pull/4118
- fix(mobile): iOS PIN keyboard UX + Safari font line-height by @chrox in https://github.com/readest/readest/pull/4120
- fix: hide popup triangle when inside popup + image-only paragraph rendering by @chrox in https://github.com/readest/readest/pull/4121
- feat(library): redesign empty-library onboarding by @chrox in https://github.com/readest/readest/pull/4122
- release: version 0.11.1 by @chrox in https://github.com/readest/readest/pull/4123
New Contributors
- @tongyuantongyu made their first contribution in https://github.com/readest/readest/pull/3868
- @archisman-panigrahi made their first contribution in https://github.com/readest/readest/pull/3962
- @FabrisNick made their first contribution in https://github.com/readest/readest/pull/3941
Full Changelog: https://github.com/readest/readest/compare/v0.10.6...v0.11.1