Release Highlight
- Reading: Added Word Lens, which shows a quick translation above difficult words as you read
- Reading: Added real page numbers from the book's own page list, and the current page now appears under the active chapter in the table of contents
- Reading: Added Webtoon Mode for seamless, gap-free scrolling through comics and image books, and you can now tap an image or table to open it full-screen
- Reading Stats: Track your reading time and pages, now synced across your devices and with KOReader
- Library: Unlock the app with your fingerprint or Face ID, browse books by series in list view, search any title on Goodreads
- Integrations: Hardcover progress and notes sync automatically, OPDS catalogs gained search and richer descriptions
- Text-to-Speech: Words are highlighted one at a time as they're read aloud, with read-along following you through paragraph and speed reading modes
- Speed Reading: Added a start delay, word-by-word stepping, dictionary lookups, keyboard shortcuts, and your reading font now styles the focused word
- Dictionary: Word variations now resolve to their base forms, with more reliable system dictionary lookups on Android and iOS
- Annotations: Customize the highlight toolbar, share selected text to other apps, and highlights now render correctly over bulleted lists
- Platform: Added an opt-in nightly update channel for early access to new features, plus faster, smoother reading and many platform fixes
What's Changed
- release: version 0.11.4 by @chrox in https://github.com/readest/readest/pull/4431
- fix(eink): keep dropdown-toggle label legible under e-ink (#4435) by @chrox in https://github.com/readest/readest/pull/4441
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in https://github.com/readest/readest/pull/4450
- fix(reader): show KOReader progress-synced as a top-right hint (#4461) by @chrox in https://github.com/readest/readest/pull/4463
- fix(webdav): always sync book covers, not just when syncBooks is on by @loveheaven in https://github.com/readest/readest/pull/4445
- fix(eink): make Custom Fonts panel readable in e-ink mode (#4454) by @chrox in https://github.com/readest/readest/pull/4464
- fix(reader): stop zoomed image pan from flickering on desktop (#4451) by @chrox in https://github.com/readest/readest/pull/4465
- fix(opds): tolerate junk after document element in feeds (#4479) by @chrox in https://github.com/readest/readest/pull/4506
- fix(reader): correct RTL reading position restore on book reopen by @loveheaven in https://github.com/readest/readest/pull/4505
- fix(reader): Android long-press swallowed by hidden page-nav buttons by @loveheaven in https://github.com/readest/readest/pull/4501
- fix(reader): dismiss annotation popup when selection clears by @WantenMN in https://github.com/readest/readest/pull/4483
- fix(updater): disable in-app updater inside Flatpak sandbox by @chrox in https://github.com/readest/readest/pull/4507
- fix(opds): render HTML in publication descriptions by @chrox in https://github.com/readest/readest/pull/4510
- fix(opds): enable search for OPDS 2.0 JSON catalogs by @chrox in https://github.com/readest/readest/pull/4509
- feat(metadata): show file path for in-place imported books by @loveheaven in https://github.com/readest/readest/pull/4508
- fix(linux): resize cursor lost on window edges after hovering webview content by @WantenMN in https://github.com/readest/readest/pull/4512
- feat(opds): make subject and author links clickable in the book detail view by @chrox in https://github.com/readest/readest/pull/4515
- chore(memory): record OPDS HTML description and JSON search notes by @chrox in https://github.com/readest/readest/pull/4516
- perf(import+open): native Rust EPUB/MOBI parser, OPF prefetch, parallel TOC enrichment by @loveheaven in https://github.com/readest/readest/pull/4369
- chore(deps): bump shell-quote to 1.8.4 and qs to 6.15.2 for security by @chrox in https://github.com/readest/readest/pull/4523
- feat(toc): show current reading page under the active item by @chrox in https://github.com/readest/readest/pull/4525
- fix(paginator): guard scrollBy/snap against uninitialized scrollBounds by @loveheaven in https://github.com/readest/readest/pull/4526
- fix(android): deliver Open-with intents reliably on cold start and re-mount by @loveheaven in https://github.com/readest/readest/pull/4527
- feat(reader): random-access file reads on Android via rangefile scheme by @chrox in https://github.com/readest/readest/pull/4534
- chore(deps): bump github/codeql-action from 4.36.1 to 4.36.2 in the github-actions group by @dependabot[bot] in https://github.com/readest/readest/pull/4533
- fix(nav): bound section-scan concurrency to keep zip.js writers from ERRORED-ing by @loveheaven in https://github.com/readest/readest/pull/4528
- fix(sync): flush pending Readest cloud push when the reader closes by @chrox in https://github.com/readest/readest/pull/4535
- fix(reader): turn automatically when highlighting across pages by @justin-jiajia in https://github.com/readest/readest/pull/4487
- fix(reader): keep double-click-and-drag from turning the page (#4524) by @chrox in https://github.com/readest/readest/pull/4536
- feat(rsvp): apply reader font face/family settings to the RSVP word (#4519) by @chrox in https://github.com/readest/readest/pull/4537
- fix(reader): keep scrolled-mode scrollbar visible after opening a book (#4470) by @chrox in https://github.com/readest/readest/pull/4538
- fix(reader): prevent accidental paragraph-mode exit and center its bar (#4474) by @chrox in https://github.com/readest/readest/pull/4539
- fix(reader): hide footnote aside border again when custom fonts are loaded (#4438) by @chrox in https://github.com/readest/readest/pull/4540
- feat(rsvp): start-delay setting, manual word stepping, context dictionary lookup, and keyboard shortcut by @chrox in https://github.com/readest/readest/pull/4541
- fix(reader): Android text selection breaks on the first word of hyphenated paragraphs by @chrox in https://github.com/readest/readest/pull/4545
- feat(library): search a book on Goodreads from the library and reader (#4543) by @chrox in https://github.com/readest/readest/pull/4548
- feat(reader): reference page numbers from EPUB page-list with manual page count fallback by @chrox in https://github.com/readest/readest/pull/4549
- ci: pin android-emulator-runner by SHA + shard the slow PR test job by @chrox in https://github.com/readest/readest/pull/4547
- feat(css): override document layout also apply to hyphenation, closes [#4529] by @chrox in https://github.com/readest/readest/pull/4546
- ci: single, workspace-aware rust-cache for build_tauri_app by @chrox in https://github.com/readest/readest/pull/4550
- docs(readme): add a Documentation section linking to readest.com/docs by @chrox in https://github.com/readest/readest/pull/4551
- fix(reader): draw annotation highlights over bullet lists by @chrox in https://github.com/readest/readest/pull/4552
- fix(dict): resolve Android content-URI filenames via native basename (#4489, [#4472]) by @chrox in https://github.com/readest/readest/pull/4553
- perf(reader): reduce open-book TBT by batching layout-thrashing reads/writes and deferring annotation page back-fill by @loveheaven in https://github.com/readest/readest/pull/4554
- perf(reader): throttle library.json writes and cache known dirs to cut IPC by @loveheaven in https://github.com/readest/readest/pull/4556
- perf(reader): split progress into its own store to cut React commit storm by @loveheaven in https://github.com/readest/readest/pull/4557
- fix(reader): texture the scrolled-mode top inset mask by @chrox in https://github.com/readest/readest/pull/4563
- perf(reader): coalesce relocate events and memoize BookCell to stop per-swipe storm by @loveheaven in https://github.com/readest/readest/pull/4562
- perf(cfi): bucket booknotes per chapter and batch-collapse location matcher by @loveheaven in https://github.com/readest/readest/pull/4561
- fix(reader): keep dark-mode page body transparent so the bg texture shows by @chrox in https://github.com/readest/readest/pull/4564
- fix(tts): keep voice list stable across region variants of a language by @chrox in https://github.com/readest/readest/pull/4565
- fix(android): launch installed dictionary for system lookup, closes [#4559] by @chrox in https://github.com/readest/readest/pull/4568
- feat(tts): word-by-word highlighting for Edge TTS by @chrox in https://github.com/readest/readest/pull/4566
- agent: stage memories by @chrox in https://github.com/readest/readest/pull/4569
- feat(reader): Share intent + customizable annotation toolbar (#4014) by @chrox in https://github.com/readest/readest/pull/4570
- fix(reader): open TXT files shared via "Open with" by @chrox in https://github.com/readest/readest/pull/4571
- fix(library): refresh book cover after editing metadata by @chrox in https://github.com/readest/readest/pull/4572
- test(tts): browser e2e for TTS auto-advance across a chapter boundary by @chrox in https://github.com/readest/readest/pull/4573
- feat(reader): sync paragraph mode & speed reader with TTS read-along (#3235) by @chrox in https://github.com/readest/readest/pull/4576
- feat(updater): nightly update channel (Android/Windows/macOS/Linux) by @chrox in https://github.com/readest/readest/pull/4577
- perf(reader): fix page-turn lag from global (highlight-all) annotations (#4575) by @chrox in https://github.com/readest/readest/pull/4579
- fix(ci): correct nightly Linux AppImage collect path by @chrox in https://github.com/readest/readest/pull/4581
- feat(dictionary): lemmatize inflected words before lookup (#4574) by @chrox in https://github.com/readest/readest/pull/4582
- fix(nightly): publish latest.json via directory rclone copy by @chrox in https://github.com/readest/readest/pull/4588
- fix(rsvp): keep the audio toggle from overlapping transport on mobile by @chrox in https://github.com/readest/readest/pull/4585
- feat(reader): Word Wise inline vocabulary hints by @chrox in https://github.com/readest/readest/pull/4589
- feat(settings): move update & telemetry controls into Settings → Behavior by @chrox in https://github.com/readest/readest/pull/4592
- docs(readme): point donations to the unified donate.readest.com hub by @chrox in https://github.com/readest/readest/pull/4601
- perf(library): in-place re-import is a no-op on the same file path by @loveheaven in https://github.com/readest/readest/pull/4597
- feat(reader): open image gallery & table zoom on single tap by @chrox in https://github.com/readest/readest/pull/4600
- docs(readme): remove the Sponsors / TestMu AI section by @chrox in https://github.com/readest/readest/pull/4604
- docs(readme): make license badge static and modernize release badge by @chrox in https://github.com/readest/readest/pull/4603
- feat(statistics): KOReader-compatible reading stats with cross-device sync by @chrox in https://github.com/readest/readest/pull/4606
- chore(agent): update agent memories by @chrox in https://github.com/readest/readest/pull/4610
- fix(opds): handle entries with no downloadable format (#4599) by @chrox in https://github.com/readest/readest/pull/4611
- feat(library): show series and number in list view (#4593) by @chrox in https://github.com/readest/readest/pull/4612
- feat(hardcover): automatically sync progress and notes by @chrox in https://github.com/readest/readest/pull/4614
- feat(library): add Clear Pending action to transfer queue by @chrox in https://github.com/readest/readest/pull/4617
- chore(deps): bump esbuild to 0.28.1 and vitest to 4.1.x for security advisories by @chrox in https://github.com/readest/readest/pull/4618
- chore(deps): bump transitive deps for security advisories (batch) by @chrox in https://github.com/readest/readest/pull/4620
- build(web): standalone Docker image + drop Turbopack build cache by @chrox in https://github.com/readest/readest/pull/4619
- chore(config): add disableIncrementalCache to skip populating remote R2 incremental cache by @chrox in https://github.com/readest/readest/pull/4623
- feat(library): add Purge Data and fold detail actions into a More menu (#4615) by @chrox in https://github.com/readest/readest/pull/4626
- fix(library): never let a routine save shrink library.json (cold-start "Open with" wipe) by @chrox in https://github.com/readest/readest/pull/4627
- fix(android): move plugin @Command I/O off the main thread; fix WebView leak & [#3297] blank screen by @chrox in https://github.com/readest/readest/pull/4628
- fix(library): restore back button from series/author folders (#4437) by @chrox in https://github.com/readest/readest/pull/4629
- fix(search): show context for matches in italicized text (#4594) by @chrox in https://github.com/readest/readest/pull/4631
- fix(koplugin): sync note deletions to Readest via tombstones by @chrox in https://github.com/readest/readest/pull/4632
- refactor(wordlens): rename "Word Wise" to "Word Lens" by @chrox in https://github.com/readest/readest/pull/4633
- feat(wordlens): trim hints to first sense + suppress known derivations by @chrox in https://github.com/readest/readest/pull/4635
- fix(share): load cover under COEP, keep share links out of the clipper, fix in-app import by @chrox in https://github.com/readest/readest/pull/4636
- chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in https://github.com/readest/readest/pull/4637
- fix(security): harden OPDS proxy SSRF, storage key validation, Stripe check by @chrox in https://github.com/readest/readest/pull/4638
- fix(security): scope Tauri download_file/upload_file to fs_scope by @chrox in https://github.com/readest/readest/pull/4639
- fix(epub): import books whose OPF has an unescaped ampersand by @chrox in https://github.com/readest/readest/pull/4640
- fix(reader): paginate inline-block-wrapped chapters instead of clipping them by @chrox in https://github.com/readest/readest/pull/4641
- fix(reader): keep last paragraph's line spacing by making the section skip link a by @chrox in https://github.com/readest/readest/pull/4642
- fix(dict): stop iOS instant system dictionary popping multiple times by @chrox in https://github.com/readest/readest/pull/4644
- feat(annotations): unify highlights and annotations into one record (#3870, [#4511]) by @chrox in https://github.com/readest/readest/pull/4647
- fix(rsvp): render RTL words whole so Arabic shapes correctly (#4630) by @chrox in https://github.com/readest/readest/pull/4648
- fix(metadata): parse FB2 series from title-info sequence (#4646) by @chrox in https://github.com/readest/readest/pull/4649
- feat(applock): biometric unlock (fingerprint / Face ID) at startup on mobile by @chrox in https://github.com/readest/readest/pull/4650
- fix(security): unblock app-dir downloads broken by transfer_file fs-scope guard by @chrox in https://github.com/readest/readest/pull/4651
- fix(library): keep each series together when secondary-sorting by Series (#4652) by @chrox in https://github.com/readest/readest/pull/4653
- fix(library): count only uploaded, non-deleted books in synced toast by @chrox in https://github.com/readest/readest/pull/4654
- fix(settings): tidy Word Lens data pack and level rows on mobile by @chrox in https://github.com/readest/readest/pull/4655
- feat: sync reading status across devices and with KOReader (#4634) by @chrox in https://github.com/readest/readest/pull/4656
- feat(tts): reuse the speaking session across paragraph & RSVP modes by @chrox in https://github.com/readest/readest/pull/4657
- fix: bot-review robustness fixes (TTS sync, updater, nightly, a11y) by @chrox in https://github.com/readest/readest/pull/4659
- fix(txt): stop detecting measure-word prose as chapters in TXT import (#4658) by @chrox in https://github.com/readest/readest/pull/4660
- chore(send-to-readest): v0.2.1, zip packaging script, store submission doc by @chrox in https://github.com/readest/readest/pull/4661
- fix(send-to-readest): rephrase popup copy, remove em dashes from i18n strings by @chrox in https://github.com/readest/readest/pull/4663
- feat(reader): Webtoon Mode seamless continuous scroll for image books (#3647) by @chrox in https://github.com/readest/readest/pull/4662
- chore(send-to-readest): add Chrome Web Store screenshot generator by @chrox in https://github.com/readest/readest/pull/4664
- chore: only show the current position item in TOC and update agent memories by @chrox in https://github.com/readest/readest/pull/4665
- fix(koplugin): repair reading-stats sync push/pull by @chrox in https://github.com/readest/readest/pull/4666
- release: version 0.11.10 by @chrox in https://github.com/readest/readest/pull/4667
New Contributors
- @WantenMN made their first contribution in https://github.com/readest/readest/pull/4483
- @justin-jiajia made their first contribution in https://github.com/readest/readest/pull/4487
Full Changelog: https://github.com/readest/readest/compare/v0.11.4...v0.11.10