Release Highlights
- Text-to-Speech: You can now listen sentence by sentence and loop a passage with A-B repeat, control playback from your desktop's Now Playing controls
- Reading: Added dialogue highlighting for quoted speech, a Column Gap setting for two-page spreads
- Sync: Added a Readest plugin for CrossPoint e-readers for reading progress sync
- Sync: You can now sync reading progress to Pagebound, sign in to Hardcover more easily, and note edits are no longer overwritten by older synced copies
- PDF: PDFs now blend smoothly with your reading theme with smart image inversion, show page thumbnails in the table of contents
- PDF: Highlighting and text selection on scanned PDFs is smoother and more accurate, and very large scanned pages no longer crash the reader on iOS
- Translation: You can now add your own translation providers with a reusable prompt library, look up words with an AI context dictionary
- Annotations: A global note now appears on every occurrence of its text, exports can include the sentence around each highlight
- Android: Added home screen widgets for your current book and bookshelf, automatic e-ink full refresh every few page turns
- More: Images now have a long-press and right-click menu to copy or save them, Windows shows PDF thumbnails in Explorer
What's Changed
- fix(koplugin): fix sync on Android, library pull ANR, and Rescan library by @chrox in https://github.com/readest/readest/pull/6364
- chore(agent): add koreader-e2e skill for on-device plugin testing by @chrox in https://github.com/readest/readest/pull/6366
- fix(reader): fall back to saving a file when the gallery save fails by @chrox in https://github.com/readest/readest/pull/6367
- fix(windows): drop the broken native shadow on Windows 10 by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6362
- perf(android): cut the arm64 apk from 90MB to 57MB by @chrox in https://github.com/readest/readest/pull/6368
- fix(build): repair the Docker and Nix builds after [#6368] by @chrox in https://github.com/readest/readest/pull/6379
- fix(settings): reset update preferences with behavior settings by @hulkbig in https://github.com/readest/readest/pull/6369
- fix(android): open Readest from TTS media controls by @kelvinalfaro in https://github.com/readest/readest/pull/6370
- fix(reader): handle footnote links in paragraph mode by @hulkbig in https://github.com/readest/readest/pull/6365
- feat(reader): add dialogue highlighting for quoted speech by @WantenMN in https://github.com/readest/readest/pull/6376
- chore(deps): bump the github-actions group with 7 updates by @dependabot[bot] in https://github.com/readest/readest/pull/6387
- fix(annotator): clear the pre-drag range when a highlight is resized by @hulkbig in https://github.com/readest/readest/pull/6357
- fix(reader): keep the sidebar toggler in place when the sidebar opens by @chrox in https://github.com/readest/readest/pull/6435
- fix(payment): revoke one-time Stripe purchases on refund by @chrox in https://github.com/readest/readest/pull/6436
- fix(android): detect e-ink readers whose manufacturer prop reports the SoC vendor by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6392
- refactor(settings): organize the font panel around the role each font plays by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6325
- fix(settings): restore scroll position on reopen by @WantenMN in https://github.com/readest/readest/pull/6389
- fix(web): decode binary files read as text by @WestXu in https://github.com/readest/readest/pull/6402
- fix(library): skip copying a book file onto itself on import by @WestXu in https://github.com/readest/readest/pull/6403
- fix(backup): restore orphan books whose library row was deleted by @WestXu in https://github.com/readest/readest/pull/6405
- fix(sync): push existing notes on the first open of a book by @WestXu in https://github.com/readest/readest/pull/6404
- fix(reader): keep the footer clear of rounded screen corners on Android by @davidfvaquero in https://github.com/readest/readest/pull/6429
- perf(reader): parallelize the EPUB open path by @shiningsprk-arch in https://github.com/readest/readest/pull/6406
- fix(telemetry): stop PostHog traffic when the setting is off by @itsmunzir in https://github.com/readest/readest/pull/6434
- feat(widget): configurable Android bookshelf widget by @RedHatter in https://github.com/readest/readest/pull/6430
- fix(windows): draw the missing window frame on Windows 10 by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6399
- fix(koplugin): prompt to log in again when the session has expired by @chrox in https://github.com/readest/readest/pull/6445
- fix(koplugin): avoid crash when synced position can't be resolved by @stantonb in https://github.com/readest/readest/pull/6441
- fix(sync): refuse Readest Cloud book uploads while Books sync is off by @chrox in https://github.com/readest/readest/pull/6446
- feat(widget): improve bookshelf widget configuration by @RedHatter in https://github.com/readest/readest/pull/6440
- feat(settings): reverse mouse wheel paging and hide e-ink bookshelf buttons by @chrox in https://github.com/readest/readest/pull/6448
- fix(reader): update chapter pages left on every page turn by @chrox in https://github.com/readest/readest/pull/6447
- fix(tts): let the play/pause media key resume TTS on desktop by @chrox in https://github.com/readest/readest/pull/6452
- fix(sync): stop creating OneDrive folders that Graph now rejects by @chrox in https://github.com/readest/readest/pull/6451
- fix(library): skip hidden subdirectories when scanning folders to import by @chrox in https://github.com/readest/readest/pull/6453
- docs(sync): make the write-parent precondition provider-neutral by @chrox in https://github.com/readest/readest/pull/6455
- fix(library): page the e-ink library with volume keys by @chrox in https://github.com/readest/readest/pull/6456
- feat(tts): native desktop Now Playing for macOS, Windows and Linux by @chrox in https://github.com/readest/readest/pull/6457
- fix(nix): add the desktop Now Playing crates to Cargo.cef.lock by @chrox in https://github.com/readest/readest/pull/6459
- fix(reader): turn the page when tapping a page-filling image by @chrox in https://github.com/readest/readest/pull/6458
- fix(library): skip per-book toasts for bulk downloads by @chrox in https://github.com/readest/readest/pull/6463
- feat(annotator): make keeping the selection after an instant lookup optional by @chrox in https://github.com/readest/readest/pull/6460
- fix(koplugin): remove sync response files left behind by exit-time syncs by @chrox in https://github.com/readest/readest/pull/6461
- fix(ios): resume audiobook natively after a CarPlay interruption ends by @chrox in https://github.com/readest/readest/pull/6462
- feat(reader): import MHTML web archives, closes [#6413] by @chrox in https://github.com/readest/readest/pull/6464
- fix(annotator): close selection popup after choosing a highlight color by @kelvinalfaro in https://github.com/readest/readest/pull/6465
- fix(reader): close lookup popups when their selection is cleared by @chrox in https://github.com/readest/readest/pull/6467
- fix(sidebar): keep the annotations list still when the clicked note is visible by @chrox in https://github.com/readest/readest/pull/6468
- feat(tts): pause longer after questions, exclamations and ellipses, closes [#6412] by @chrox in https://github.com/readest/readest/pull/6469
- fix(library): keep Date Read order when grouping, tagging or editing metadata by @chrox in https://github.com/readest/readest/pull/6470
- test(player): fix flaky podcast session-end tests by @chrox in https://github.com/readest/readest/pull/6472
- fix(reader): keep the footer clear of rounded screen corners on iPhone by @chrox in https://github.com/readest/readest/pull/6474
- fix(reader): hold the horizontal pan lock through momentum swipes on iOS by @chrox in https://github.com/readest/readest/pull/6475
- fix(reader): keep note editor and highlight toolbar open in footnote popups, closes [#6395] by @chrox in https://github.com/readest/readest/pull/6477
- fix(transfer): allow uploads and downloads under a custom data location, closes [#6383] by @chrox in https://github.com/readest/readest/pull/6478
- chore(agent): update agent memories by @chrox in https://github.com/readest/readest/pull/6479
- fix(library): center the empty library state again by @chrox in https://github.com/readest/readest/pull/6482
- ci(android): give the Android build step 90 minutes by @chrox in https://github.com/readest/readest/pull/6483
- fix: empty library state over a lingering search, and a dropped dictionary card tap by @chrox in https://github.com/readest/readest/pull/6485
- fix(backup): save iOS backups through the share sheet instead of hanging at 0%, closes [#6375] by @chrox in https://github.com/readest/readest/pull/6486
- chore(linux): catch up the CEF runtime with upstream feat/cef, closes [#6397] by @chrox in https://github.com/readest/readest/pull/6487
- fix(library): download selected Audiobookshelf items for offline from select mode by @chrox in https://github.com/readest/readest/pull/6489
- feat(backup): include reading statistics in library backups, closes [#6488] by @chrox in https://github.com/readest/readest/pull/6490
- fix(reader): remove the line between zoomed images in Webtoon Mode, closes [#6484] by @chrox in https://github.com/readest/readest/pull/6491
- test(paginator): rest before release so the drag test commits on distance alone by @chrox in https://github.com/readest/readest/pull/6493
- fix(desktop): open books in a new window after closing another reader, closes [#6363] by @chrox in https://github.com/readest/readest/pull/6496
- fix(desktop): reopen the library when Readest is relaunched with only reader windows open, closes [#6394] by @chrox in https://github.com/readest/readest/pull/6495
- fix(search): ignore soft hyphens when searching book text, closes [#6384] by @chrox in https://github.com/readest/readest/pull/6494
- fix(ui): stop iOS 16 reloading to the library when a toggle or slider renders, closes [#6355] by @chrox in https://github.com/readest/readest/pull/6497
- feat(annotations): optionally export the sentence around each highlight, closes [#6352] by @chrox in https://github.com/readest/readest/pull/6498
- feat(tts): skip Hanja glosses after Hangul in Korean text by @chrox in https://github.com/readest/readest/pull/6500
- feat(annotator): show a global note on every occurrence of its text, closes [#6186] by @chrox in https://github.com/readest/readest/pull/6501
- feat(settings): give Nearby BookDrop its own section in Integrations, closes [#6360] by @chrox in https://github.com/readest/readest/pull/6499
- fix(ios): keep swipe brightness in sync with the system brightness, closes [#6374] by @chrox in https://github.com/readest/readest/pull/6502
- feat(android): probe Hanvon eink service for full refresh by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6505
- fix(reader): animate page turns for PDF and comics on Windows and Linux, closes [#6380] by @chrox in https://github.com/readest/readest/pull/6506
- fix(reader): stop the sidebar-width flash on Windows and Linux page turns by @chrox in https://github.com/readest/readest/pull/6509
- feat(annotator): edit highlight ranges and notes inside footnote popups, closes [#6504] by @chrox in https://github.com/readest/readest/pull/6510
- fix(reader): keep the selected word readable in dark mode, closes [#6503] by @chrox in https://github.com/readest/readest/pull/6512
- fix(annotator): open imported highlights on tap, closes [#6160] by @chrox in https://github.com/readest/readest/pull/6515
- fix(annotator): keep the highlight toolbar off the footnote popup, closes [#6390] by @chrox in https://github.com/readest/readest/pull/6514
- feat(reader): show Duokan slim covers on tall mobile screens, closes [#6513] by @chrox in https://github.com/readest/readest/pull/6516
- feat(reader): optionally mark italic text in dialogue highlighting, closes [#6517] by @chrox in https://github.com/readest/readest/pull/6522
- fix(ios): keep chrome and page content clear of iPhone Duo's side status strip by @kad-air in https://github.com/readest/readest/pull/6312
- chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in https://github.com/readest/readest/pull/6523
- feat(layout): Column Gap setting for two-column spreads by @kad-air in https://github.com/readest/readest/pull/6507
- fix(ios): hide the status bar through the view controller for Xcode 27 builds by @kad-air in https://github.com/readest/readest/pull/6508
- fix(android): focus the WebView on cold start so the first page-turn key isn't lost by @RedHatter in https://github.com/readest/readest/pull/6519
- feat(widget): currently reading Android widget and widget options by @RedHatter in https://github.com/readest/readest/pull/6518
- fix(pdf): stop huge scanned pages crashing or blanking the reader on iOS, closes [#6521] by @chrox in https://github.com/readest/readest/pull/6526
- feat(android): automatic e-ink full refresh every N page turns by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6525
- feat(sync): sync reading progress to Pagebound, closes [#6511] by @chrox in https://github.com/readest/readest/pull/6528
- fix(reader): show Hardcover status on the sync row and push on tap by @RedHatter in https://github.com/readest/readest/pull/6527
- feat(windows): PDF thumbnails and Explorer preview pane, closes [#6524] by @chrox in https://github.com/readest/readest/pull/6533
- feat(dictionary): look up Wiktionary in the book language's own edition, closes [#6529] by @chrox in https://github.com/readest/readest/pull/6534
- fix(settings): align the BookOrbit sync rows with the rest of the card by @chrox in https://github.com/readest/readest/pull/6535
- fix(library): erase cloud progress and notes when purging reading data, closes [#6532] by @chrox in https://github.com/readest/readest/pull/6536
- fix(epub): show whole pages of comics with unsized SVG page images by @chrox in https://github.com/readest/readest/pull/6537
- fix(bookorbit): list unmatched books for linking when only progress or stats sync is on by @chrox in https://github.com/readest/readest/pull/6539
- fix(calibre): push custom columns in the shape bookshelf filters read by @chrox in https://github.com/readest/readest/pull/6538
- fix(reader): remove note bubbles when deleting highlights by @kelvinalfaro in https://github.com/readest/readest/pull/6545
- fix(windows): stop the main window from growing on every launch by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6546
- feat(pdf): smooth theme colors and smart invert for PDFs by @chrox in https://github.com/readest/readest/pull/6550
- fix(notes): keep note edits from losing to the synced copy they change, closes [#6544] by @chrox in https://github.com/readest/readest/pull/6551
- feat(crosspoint): Readest plugin for CrossPoint e-readers by @chrox in https://github.com/readest/readest/pull/6547
- chore(agent): update agent memories by @chrox in https://github.com/readest/readest/pull/6554
- feat(reader): turn PDF pages with the mouse wheel in Fit Width mode by @chrox in https://github.com/readest/readest/pull/6555
- feat(reader): show PDF page thumbnails in the TOC, closes [#6177] by @chrox in https://github.com/readest/readest/pull/6553
- fix(reader): keep PDF selections from jumping across text gaps, closes [#5599], closes [#4945] by @chrox in https://github.com/readest/readest/pull/6559
- feat(crosspoint): web-only sign-in, in-app linking, and recently read books first by @chrox in https://github.com/readest/readest/pull/6561
- fix(reader): drop the horizontal scrollbar from fit-width PDFs by @chrox in https://github.com/readest/readest/pull/6560
- fix(reader): stop the page container's fade on e-ink panels by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6565
- fix(audiobookshelf): fetch a synced audiobook's cover before shelving it by @chrox in https://github.com/readest/readest/pull/6564
- feat(reader): copy and save book images from one right-click menu by @chrox in https://github.com/readest/readest/pull/6567
- fix(reader): keep a selection from jumping next to a footnote marker, closes [#6566] by @chrox in https://github.com/readest/readest/pull/6569
- fix(crosspoint): paint /link in the user's theme by @chrox in https://github.com/readest/readest/pull/6570
- fix(reader): stop annotation cards expanding while scrolling on iOS, closes [#6568] by @chrox in https://github.com/readest/readest/pull/6571
- fix(utils): treat Korean as CJK in getLanguageInfo by @sx4im in https://github.com/readest/readest/pull/6572
- fix(deps): resolve open Dependabot alerts by @chrox in https://github.com/readest/readest/pull/6573
- fix(reader): set plain-text footnotes in the reader font by @kelvinalfaro in https://github.com/readest/readest/pull/6575
- fix(reader): keep a linked footnote's font in its popup, closes [#3602] by @chrox in https://github.com/readest/readest/pull/6580
- docs(readme): serve the Ask DeepWiki badge from shields.io by @chrox in https://github.com/readest/readest/pull/6585
- fix(reader): smooth highlights on scanned PDFs and keep ones dragged past a page's end, closes [#6578] by @chrox in https://github.com/readest/readest/pull/6581
- fix(reader): keep the e-ink battery percentage readable at any charge by @chrox in https://github.com/readest/readest/pull/6588
- feat(reader): edit a book's metadata from Book Details in the reader, closes [#6584] by @chrox in https://github.com/readest/readest/pull/6587
- fix(reader): select and deselect in the clicked chapter at scroll-mode boundaries, closes [#6583] by @chrox in https://github.com/readest/readest/pull/6591
- fix(reader): keep the dragged range when a PDF instant highlight runs past the page by @chrox in https://github.com/readest/readest/pull/6597
- fix(windows): stop the PDF preview pane from freezing Explorer, closes [#6590] by @chrox in https://github.com/readest/readest/pull/6594
- feat(crosspoint): plugin updates, version display, and sync for optimized EPUBs by @chrox in https://github.com/readest/readest/pull/6592
- feat(translation): custom translation providers with a prompt library by @chrox in https://github.com/readest/readest/pull/6582
- fix(reader): remember where a locked, zoomed PDF page is panned across reopening by @chrox in https://github.com/readest/readest/pull/6595
- feat(shortcuts): bind several keys to one action, closes [#6600] by @chrox in https://github.com/readest/readest/pull/6603
- feat(reader): open the image menu with a long press on iOS and Android, closes [#6574] by @chrox in https://github.com/readest/readest/pull/6601
- fix(koplugin): stop BookDrop start errors popping up on every launch by @chrox in https://github.com/readest/readest/pull/6604
- feat(reader): show a PDF's header and footer only at the page's own edges, closes [#6596] by @chrox in https://github.com/readest/readest/pull/6605
- fix(reader): keep pull-to-bookmark off the top screen edge, enable it on e-ink, and size the ribbon consistently, closes [#6599] by @chrox in https://github.com/readest/readest/pull/6606
- fix(reader): return to the open book when leaving the account page, closes [#6607] by @chrox in https://github.com/readest/readest/pull/6609
- fix(reader): reject backslash redirects and retry failed books on return by @chrox in https://github.com/readest/readest/pull/6610
- feat(dictionary): context dictionary, closes [#5544] by @nphng15 in https://github.com/readest/readest/pull/5881
- fix(crosspoint): link an optimized copy to the book being read when duplicates tie by @chrox in https://github.com/readest/readest/pull/6614
- fix(sync): don't let a deleted copy's position pull a new copy forward by @chrox in https://github.com/readest/readest/pull/6615
- fix(reader): apply scroll overlap to fixed-layout books only; tidy the fixed-layout view menu by @chrox in https://github.com/readest/readest/pull/6621
- fix(windows): show the main window only after the themed page is painted by @k6G52m4Dz75W in https://github.com/readest/readest/pull/6611
- fix(library): carousel cover spine, Rename Group, Import Books placement, reader return transition by @chrox in https://github.com/readest/readest/pull/6624
- fix(library): keep nested groups when renaming a group by @chrox in https://github.com/readest/readest/pull/6625
- feat(library): badge the series index on covers inside a series group by @kelvinalfaro in https://github.com/readest/readest/pull/6579
- fix(reader): keep scrolled PDFs smooth on iOS: virtualize the strip, hide PDF chrome by layout by @chrox in https://github.com/readest/readest/pull/6626
- feat(tts): sentence-by-sentence mode and A-B repeat by @chrox in https://github.com/readest/readest/pull/6627
- feat(hardcover): sign in with OAuth using the device authorization flow by @RedHatter in https://github.com/readest/readest/pull/6612
- fix(hardcover): follow API rate limits and batch journal writes by @RedHatter in https://github.com/readest/readest/pull/6617
- fix(dictionary): lift dark text colors in dark mode by @itsmunzir in https://github.com/readest/readest/pull/6622
- fix(widget): keep E-ink reading widget text legible in dark mode by @chrox in https://github.com/readest/readest/pull/6628
- feat(library): hide the bookshelf page buttons by default on e-ink by @chrox in https://github.com/readest/readest/pull/6631
- fix(reader): save library progress before the app quits (#6623) by @chrox in https://github.com/readest/readest/pull/6633
- chore(agent): update agent memories by @chrox in https://github.com/readest/readest/pull/6634
- fix(import): pick the declared cover when <meta name="cover"> holds an href by @chrox in https://github.com/readest/readest/pull/6635
- feat(hardcover): use the account's default visibility for new journal entries by @RedHatter in https://github.com/readest/readest/pull/6638
- fix(opds): load plain-http covers natively on iOS/macOS (#6637) by @chrox in https://github.com/readest/readest/pull/6639
- fix(library): keep the bookshelf column count while dragging a file in by @chrox in https://github.com/readest/readest/pull/6640
- fix(library): search book contents only within the opened group by @chrox in https://github.com/readest/readest/pull/6641
- fix(library): keep the shelf scroll position after opening a book by @chrox in https://github.com/readest/readest/pull/6642
- release: version 0.12.12 by @chrox in https://github.com/readest/readest/pull/6644
New Contributors
- @hulkbig made their first contribution in https://github.com/readest/readest/pull/6369
- @WestXu made their first contribution in https://github.com/readest/readest/pull/6402
- @davidfvaquero made their first contribution in https://github.com/readest/readest/pull/6429
- @shiningsprk-arch made their first contribution in https://github.com/readest/readest/pull/6406
- @itsmunzir made their first contribution in https://github.com/readest/readest/pull/6434
- @RedHatter made their first contribution in https://github.com/readest/readest/pull/6430
- @stantonb made their first contribution in https://github.com/readest/readest/pull/6441
- @sx4im made their first contribution in https://github.com/readest/readest/pull/6572
- @nphng15 made their first contribution in https://github.com/readest/readest/pull/5881
Full Changelog: https://github.com/readest/readest/compare/v0.12.10...v0.12.12