Release Highlights
- Audiobooks: Added Audiobookshelf support for streaming audiobooks and podcasts, and you can now pair an audiobook with its ebook to read along as it plays
- Text-to-Speech: Added a lyric-style view that shows the sentences around the one being read, plus per-book offline voice downloads and steadier pauses between sentences
- Library: You can now browse the web inside Readest to add books, choose which chapters to import from a web novel, hide covers for privacy, and watch download progress right on the shelf
- Sharing: Added Nearby BookDrop to send and receive books between nearby devices over your local network, including KOReader devices
- Reading: Added customizable keyboard and mouse shortcuts, Yomitan dictionary support, a full-screen book cover view, and right-to-left page order for comics and fixed-layout books
- Reading: The Notebook is now a full writing workspace, where your notes save as you type, sync across devices, and link back to the passage they came from
- Footnotes: Footnote popups no longer get cut off, let you select and look up text, and can jump straight to the note's place in the book
- PDF: You can now select text across page boundaries, copy paragraphs without broken line breaks, and see the printed page numbers as reference pages
- Sync: Your book groups and shelves now sync, file sync between devices settles reliably, highlights you delete in KOReader come across, and your progress survives an OPDS re-download
- More: Fixed crashes on launch, garbled AZW3 books, the reading position drifting after rotating the screen, and unreadable highlights on e-ink screens
What's Changed
- fix(ios): App Review launch crash, CarPlay crash on connect, and main thread hangs by @chrox in https://github.com/readest/readest/pull/5590
- fix(opds): make the title bar draggable in the online library view by @chrox in https://github.com/readest/readest/pull/5592
- fix(opds): filter incompatible download formats and offer one-click EPUB by @chrox in https://github.com/readest/readest/pull/5593
- fix(sync): drop the Origin header from OAuth token requests by @chrox in https://github.com/readest/readest/pull/5604
- fix(android): stop claiming APKs and other downloads as openable books by @chrox in https://github.com/readest/readest/pull/5610
- feat(localsend): send and receive books over the local network by @chrox in https://github.com/readest/readest/pull/5611
- fix(library): release TXT sources and chapter HTML during import by @ChuwuYo in https://github.com/readest/readest/pull/5607
- fix(library): checkpoint, serialize, and pool folder imports by @chrox in https://github.com/readest/readest/pull/5615
- fix(translation): gate Enable Translation on book availability by @chrox in https://github.com/readest/readest/pull/5617
- docs(readme): restore the Sponsors / TestMu AI section by @chrox in https://github.com/readest/readest/pull/5619
- fix(translate): send Bing language codes in the Azure provider by @chrox in https://github.com/readest/readest/pull/5620
- fix(library): stop a long press from selecting and then deselecting a book by @chrox in https://github.com/readest/readest/pull/5621
- fix(ci): stop cargo pulling the flutter SDK for the localsend dep by @chrox in https://github.com/readest/readest/pull/5622
- fix(reader): isolate the book cell to drop the Linux black corner by @PolybiusPro in https://github.com/readest/readest/pull/5618
- fix(popup): stop mounting the filtered pointer triangle at rest by @chrox in https://github.com/readest/readest/pull/5628
- fix(localsend): let Readest devices discover each other by @chrox in https://github.com/readest/readest/pull/5626
- fix(sync): recover KOReader progress when a chapter is not well-formed XML by @chrox in https://github.com/readest/readest/pull/5630
- fix(ci): gate build_tauri_app on tauri paths and give webdriver its own timeout by @chrox in https://github.com/readest/readest/pull/5644
- feat(ci): Added new step to release workflow to send release notes to a Discord channel by @sloaner in https://github.com/readest/readest/pull/5637
- fix(reader): commit settled image zoom into the layout size, closes [#5633] by @chrox in https://github.com/readest/readest/pull/5639
- fix(novel): retry transient fetch failures and backfill work metadata by @chrox in https://github.com/readest/readest/pull/5650
- fix(markdown): title imported books after the file, not the first heading by @chrox in https://github.com/readest/readest/pull/5653
- fix(sanitizer): render Persian/Arabic half-space by converting misused RLM to ZWNJ by @shahram7 in https://github.com/readest/readest/pull/5651
- fix(reader): stop iOS 16 WebContent crash when opening a book by @chrox in https://github.com/readest/readest/pull/5654
- feat(reader): flash the target of in-page footnote jumps, closes [#5647] by @chrox in https://github.com/readest/readest/pull/5655
- fix(koplugin): extract self-update with ffi/archiver on KOReader 2026.07+ by @chrox in https://github.com/readest/readest/pull/5656
- fix(reader): render fixed-layout pages as authored in dark mode, closes [#5649] by @chrox in https://github.com/readest/readest/pull/5657
- fix(reader): disable text autosizing in fixed-layout books, closes [#5641] by @chrox in https://github.com/readest/readest/pull/5659
- ci: raise nightly and release build timeouts to 90 minutes by @chrox in https://github.com/readest/readest/pull/5664
- fix(opds): stop auto-downloaded books from vanishing on restart by @chrox in https://github.com/readest/readest/pull/5665
- fix(iap): re-verify restored iOS one-time purchases with the server by @chrox in https://github.com/readest/readest/pull/5669
- chore(deps): bump the github-actions group with 6 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5668
- fix(ui): size the alert surface off its container, not its content by @WantenMN in https://github.com/readest/readest/pull/5662
- fix(koplugin): push reading stats in bounded chunks, closes [#5666] by @chrox in https://github.com/readest/readest/pull/5670
- feat(reader): jump to the start or end of the book with Home/End by @chrox in https://github.com/readest/readest/pull/5673
- fix(sync): never show a future Last Synced time from a clock-skewed peer by @chrox in https://github.com/readest/readest/pull/5674
- fix(reader): update progress during Auto Scroll and put slider overlay values on top by @chrox in https://github.com/readest/readest/pull/5676
- fix(reader): reach the last page of the book on iOS by @chrox in https://github.com/readest/readest/pull/5678
- feat(reader): scroll Auto Scroll smoothly at low speeds by @chrox in https://github.com/readest/readest/pull/5679
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5682
- fix(library): allow unchecking Read books in place for registered folders, closes [#5680] by @chrox in https://github.com/readest/readest/pull/5685
- fix(reader): keep table label columns from collapsing by @chrox in https://github.com/readest/readest/pull/5686
- feat(tts): scroll to the current chapter when opening Offline Audio by @gfreitash in https://github.com/readest/readest/pull/5684
- feat(koplugin): LocalSend receive and send for KOReader devices by @chrox in https://github.com/readest/readest/pull/5687
- fix(sync): create the replica bundle dir before downloading, closes [#5675] by @chrox in https://github.com/readest/readest/pull/5700
- chore(koplugin): build nightly plugin zip and default to device targets by @chrox in https://github.com/readest/readest/pull/5699
- feat(sync): add cloud shelves and safe provider deletion by @chrox in https://github.com/readest/readest/pull/5701
- fix(android): gate gamepad polling on controller connection by @chrox in https://github.com/readest/readest/pull/5702
- fix(dictionary): recover StarDict searches after an empty result by @chrox in https://github.com/readest/readest/pull/5705
- feat(tts): symmetric minimal mini-player with centered play button by @chrox in https://github.com/readest/readest/pull/5707
- fix(reader): remove header controls duplicated by the mobile footer bar by @chrox in https://github.com/readest/readest/pull/5708
- feat(sync): optional document metadata on KOSync progress uploads by @chrisbutler in https://github.com/readest/readest/pull/5704
- feat(reader): resume Auto Scroll when reopening a book by @chrox in https://github.com/readest/readest/pull/5710
- fix(reader): support page turner key combinations by @chrox in https://github.com/readest/readest/pull/5709
- feat(reader): right-to-left page order for fixed-layout books by @chrox in https://github.com/readest/readest/pull/5712
- fix(reader): avoid wide word gaps from authored text-wrap pretty, closes [#5582] by @chrox in https://github.com/readest/readest/pull/5718
- fix(reader): restore scrolled PDF highlights by @chrox in https://github.com/readest/readest/pull/5719
- fix(sync): remove the mixed-fleet info toast, closes [#5720] by @chrox in https://github.com/readest/readest/pull/5726
- fix(sync): sync the reference page count and stop import wiping configs, closes [#5716] by @chrox in https://github.com/readest/readest/pull/5727
- fix(reader): highlight search results visible across chapter boundary by @WantenMN in https://github.com/readest/readest/pull/5725
- fix(reader): drop the 500-result cap from in-book search by @chrox in https://github.com/readest/readest/pull/5728
- fix(annotator): drop the selection when the instant dictionary opens, closes [#5585] by @chrox in https://github.com/readest/readest/pull/5730
- fix(reader): neutralize fixed backgrounds and drop negative margins by @chrox in https://github.com/readest/readest/pull/5729
- fix(library): optimize bookshelf covers in background, closes [#5632] by @chrox in https://github.com/readest/readest/pull/5731
- fix(eink): make e-ink highlights and chips visible, closes [#5667] by @chrox in https://github.com/readest/readest/pull/5735
- feat(wordlens): add the en-vi gloss pack, sync incrementally by @chrox in https://github.com/readest/readest/pull/5737
- feat(wordlens): add the en-hu gloss pack by @chrox in https://github.com/readest/readest/pull/5738
- fix(wordlens): key the manifest diff on pack routing fields too by @chrox in https://github.com/readest/readest/pull/5739
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5740
- feat(library): add hide-covers privacy option for the bookshelf by @WantenMN in https://github.com/readest/readest/pull/5733
- feat(tts): queue chapter downloads with per-book persistence by @gfreitash in https://github.com/readest/readest/pull/5690
- feat(library): show download progress overlay on book covers by @WantenMN in https://github.com/readest/readest/pull/5736
- feat(annotator): support text selection tools in footnote popups by @chrox in https://github.com/readest/readest/pull/5744
- feat(reader): pair local audiobooks with ebooks by @chrox in https://github.com/readest/readest/pull/5754
- fix(tts): make sentence and paragraph pauses consistent by @chrox in https://github.com/readest/readest/pull/5753
- fix(reader): keep chapter images openable after repeated footnote popups by @chrox in https://github.com/readest/readest/pull/5756
- docs: add contributor code of conduct by @chrox in https://github.com/readest/readest/pull/5758
- fix(opds): honor the Manage Sync Books toggle for automatic cloud uploads by @chrox in https://github.com/readest/readest/pull/5759
- feat(opds): confirm auto-download toggles and allow catalog reordering by @chrox in https://github.com/readest/readest/pull/5760
- feat(i18n): add Georgian translations by @chrox in https://github.com/readest/readest/pull/5763
- fix(cbz): order split chapter folders base-first by @chrox in https://github.com/readest/readest/pull/5762
- fix(opds): drop the webview Origin header on native requests by @NoaHimesaka1873 in https://github.com/readest/readest/pull/5765
- feat(dictionaries): add bundled plugin and Yomitan support by @chrox in https://github.com/readest/readest/pull/5764
- feat: package for nix by @dastarruer in https://github.com/readest/readest/pull/5605
- fix(reader): translate iframe text without duplicating TTS by @Columpio in https://github.com/readest/readest/pull/5772
- fix(tts): allow chapters sharing sentences with earlier packs to download by @gfreitash in https://github.com/readest/readest/pull/5768
- fix(deps): resolve open Dependabot alerts by @chrox in https://github.com/readest/readest/pull/5778
- fix(nix): update pnpmDeps hash and verify dep hashes on PRs by @chrox in https://github.com/readest/readest/pull/5779
- fix(library): recover from a failed startup instead of rendering a blank window by @chrox in https://github.com/readest/readest/pull/5789
- chore(deps): bump the github-actions group with 7 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5796
- docs: use git input instead of github input by @dastarruer in https://github.com/readest/readest/pull/5791
- feat: Audiobookshelf integration with audiobook streaming and podcasts by @chrox in https://github.com/readest/readest/pull/5801
- fix(reader): extend pull-to-bookmark to fixed layout and yield to late selection by @chrox in https://github.com/readest/readest/pull/5802
- feat(reader): expose data-eink on the book document for per-device custom CSS by @chrox in https://github.com/readest/readest/pull/5803
- fix(android): keep the reader alive when a Bluetooth controller connects (#5799) by @chrox in https://github.com/readest/readest/pull/5804
- fix(reader): render markdown in the note bubble popup, closes [#5785] by @chrox in https://github.com/readest/readest/pull/5805
- feat(reader): add inline note editing by @libbybar in https://github.com/readest/readest/pull/5780
- feat(reader): expose book title and series as data attributes for custom UI CSS, closes [#5776] by @chrox in https://github.com/readest/readest/pull/5806
- feat(reader): show PDF page labels as reference pages, closes [#5822] by @chrox in https://github.com/readest/readest/pull/5824
- feat(rsvp): add exact WPM entry and 10 WPM nudge to the speed dropdown, closes [#5820] by @chrox in https://github.com/readest/readest/pull/5825
- fix(translate): follow Bing regional host and show why a translation failed by @chrox in https://github.com/readest/readest/pull/5826
- feat(reader): join PDF line wraps into paragraphs when copying, closes [#5814] by @chrox in https://github.com/readest/readest/pull/5828
- fix(annotator): hide the range editor handles while a lookup popup is open, closes [#5815] by @chrox in https://github.com/readest/readest/pull/5829
- feat(reader): show the book cover full screen from the sidebar and book details, closes [#5813] by @chrox in https://github.com/readest/readest/pull/5827
- perf(sync): merge stat_pages pushes in one upsert_stat_pages RPC by @chrox in https://github.com/readest/readest/pull/5832
- feat(reader): select text across PDF pages as one selection, closes [#5809] by @chrox in https://github.com/readest/readest/pull/5831
- fix(koplugin): pull reading stats in bounded pages by @chrox in https://github.com/readest/readest/pull/5833
- feat(stats): tier stat_pages history into R2 segments behind a 7-day hot window by @chrox in https://github.com/readest/readest/pull/5835
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5840
- fix(audiobookshelf): hide ABS books without a server row and backfill covers unauthenticated by @chrox in https://github.com/readest/readest/pull/5841
- fix(stats): survive PostgREST's row cap when building archive segments by @chrox in https://github.com/readest/readest/pull/5844
- chore(stats): enable the archive compaction cron by @chrox in https://github.com/readest/readest/pull/5845
- fix(sync): send S3 object keys in SigV4 canonical form by @chrox in https://github.com/readest/readest/pull/5849
- fix(nix): match the Android AVD ABI to the host architecture (#5732) by @chrox in https://github.com/readest/readest/pull/5850
- fix(koplugin): stop auto sync from prompting for Wi-Fi on book open and wake by @chrox in https://github.com/readest/readest/pull/5848
- fix(backup): export only live library books and reclaim orphaned book files by @chrox in https://github.com/readest/readest/pull/5851
- fix(reader): keep the reading position across screen rotations by @chrox in https://github.com/readest/readest/pull/5855
- fix(sync): sync highlight deletions from KOReader to Readest by @chrox in https://github.com/readest/readest/pull/5853
- feat(reader): pair an Audiobookshelf audiobook and read along (#5807) by @chrox in https://github.com/readest/readest/pull/5856
- feat(reader): let users pick the Hardcover book a file syncs to, closes [#5846] by @chrox in https://github.com/readest/readest/pull/5857
- feat(toc): wrap long headings onto multiple lines instead of truncating by @chrox in https://github.com/readest/readest/pull/5858
- fix(bookorbit): list the open book under Unmatched KOReader Books for manual linking by @chrox in https://github.com/readest/readest/pull/5860
- fix(wordlens): build kaikki packs from the raw wiktextract dump by @chrox in https://github.com/readest/readest/pull/5861
- fix(reader): move a paired audiobook by audio and decode WebP covers (#5863) by @chrox in https://github.com/readest/readest/pull/5865
- fix(sync): stop OPDS re-downloads from losing reading progress (#5859) by @chrox in https://github.com/readest/readest/pull/5866
- fix(reader): resolve media that book scripts add after the section loads, closes [#1812] by @chrox in https://github.com/readest/readest/pull/5868
- fix(sync): shelve an imported book on other devices without opening it first by @chrox in https://github.com/readest/readest/pull/5869
- feat(library): add From Web Browser import with an in-app browser (#5775) by @chrox in https://github.com/readest/readest/pull/5870
- fix(reader): render the IDPF EPUB 3 samples correctly (#480) by @chrox in https://github.com/readest/readest/pull/5872
- fix(windows): match the main window's scroll bar style in clip and browser windows by @chrox in https://github.com/readest/readest/pull/5873
- fix(library): rubber-band the bookshelf at both edges and keep the reader from overscrolling by @jadhavgaurav in https://github.com/readest/readest/pull/5867
- fix(android): stop the launch crash on covers that decode 1px tall by @chrox in https://github.com/readest/readest/pull/5874
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5875
- feat(ui): migrate to daisyUI 5 and Tailwind CSS 4 by @chrox in https://github.com/readest/readest/pull/5884
- fix(library): save the new data location when migrating an empty library by @jadhavgaurav in https://github.com/readest/readest/pull/5878
- fix(sync): apply pulled file-sync progress to the live reader by @chrox in https://github.com/readest/readest/pull/5886
- feat(reader): jump from a footnote popup to the location in the book by @chrox in https://github.com/readest/readest/pull/5889
- feat(library): select chapters when importing web novels by @chrox in https://github.com/readest/readest/pull/5892
- chore(deps): upgrade to TypeScript 7 by @chrox in https://github.com/readest/readest/pull/5893
- fix(ui): size toasts to their message and fade dialogs out whole by @chrox in https://github.com/readest/readest/pull/5894
- fix(library): refresh PDF metadata on re-import by @chrox in https://github.com/readest/readest/pull/5895
- fix(reader): do not truncate footnote popups by @alexander-pecheny in https://github.com/readest/readest/pull/5887
- fix(reader): make cross-page selection actually work by @alexander-pecheny in https://github.com/readest/readest/pull/5888
- chore(deps): bump the github-actions group with 6 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5902
- fix(android): migrate Google Play Billing to v9 by @chrox in https://github.com/readest/readest/pull/5896
- fix: folder import of Markdown, widget opens, comic zoom, selection handle and TTS word highlight by @chrox in https://github.com/readest/readest/pull/5903
- fix(ui): restore the daisyUI 4 loading dots animation by @chrox in https://github.com/readest/readest/pull/5906
- fix(sync): converge multi-device file sync (#5900) by @jadhavgaurav in https://github.com/readest/readest/pull/5905
- feat(tts): lyric-style sentence view in the Read Aloud player (#5755) by @chrox in https://github.com/readest/readest/pull/5908
- fix(tts): queue a lyric reload requested during an in-flight fetch by @chrox in https://github.com/readest/readest/pull/5909
- feat(shortcuts): add customizable keyboard and mouse bindings by @WhiteHades in https://github.com/readest/readest/pull/5907
- fix(translate): Chinese targets, provider rate limits, and translator popup layout by @chrox in https://github.com/readest/readest/pull/5913
- fix(android): avoid full PDF parsing during import by @chrox in https://github.com/readest/readest/pull/5914
- feat(localsend): brand the LAN transfer feature as Nearby BookDrop by @chrox in https://github.com/readest/readest/pull/5915
- fix(ui): paint modal boxes that sit outside an open daisyUI modal by @chrox in https://github.com/readest/readest/pull/5916
- fix(mobi): keep AZW3 text and TOC intact when section loads overlap by @chrox in https://github.com/readest/readest/pull/5920
- fix(sync): report third-party sync status in the reader menu (#5910) by @chrox in https://github.com/readest/readest/pull/5922
- fix(sync): resolve book groups and metadata on their own clock (#5911, [#5912]) by @chrox in https://github.com/readest/readest/pull/5921
- fix(ui): search cloud storage files on demand instead of while typing (#5923) by @chrox in https://github.com/readest/readest/pull/5925
- fix(reader): stop the a11y skip link from padding RTL sections with blank pages (#5924) by @chrox in https://github.com/readest/readest/pull/5926
- fix(ui): align the keyboard shortcuts header with its group titles by @chrox in https://github.com/readest/readest/pull/5927
- feat(reader): Notebook as a linked writing workspace by @chrox in https://github.com/readest/readest/pull/5928
- release: version 0.12.6 by @chrox in https://github.com/readest/readest/pull/5929
New Contributors
- @sloaner made their first contribution in https://github.com/readest/readest/pull/5637
- @gfreitash made their first contribution in https://github.com/readest/readest/pull/5684
- @chrisbutler made their first contribution in https://github.com/readest/readest/pull/5704
- @NoaHimesaka1873 made their first contribution in https://github.com/readest/readest/pull/5765
- @libbybar made their first contribution in https://github.com/readest/readest/pull/5780
- @jadhavgaurav made their first contribution in https://github.com/readest/readest/pull/5867
Full Changelog: https://github.com/readest/readest/compare/v0.12.1...v0.12.6