Release Highlight
- Text-to-Speech: Books that come with recorded narration now play their own audio in step with the text, and you can set the sleep timer to stop at the end of a chapter
- Library: Added full text search across your books with fuzzy and nearby-word matching, importing web novels from a link, bulk downloading from the shelf, and page counts in book details
- Annotations: Your notes and highlights now live in one hub, where you can export and import them as a file, copy a link back to any highlight, and write math formulas in your notes
- Reading: You can now pull down to add a bookmark, tap the page label to jump to any page, tap the footer to bring up the progress bar, and turn pages with an Apple Pencil double tap or squeeze
- Reading: Fixed layout books can now scroll horizontally, image descriptions show in the image viewer, search results group by chapter, and the mouse cursor gets out of the way while you read
- Sync: Added iCloud sync on iPhone, iPad and Mac, plus a BookOrbit integration that keeps your annotations, bookmarks, stats and reading status in step
- Translation: Translated text now keeps its bold, italic and other inline formatting, and the Azure and Yandex translators work again
- Styling: Added Ambient Mode on Android, a refreshed theme and background picker with separate looks for your library and reader, and cleaner popups throughout
- PDF: Sharper text on desktop and a readable footer in scrolled mode
- More: Markdown books now pick up their title and author automatically and show every heading in the contents, plus fixes for some crashes
What's Changed
- fix(reader): resolve high-priority Sentry crashes by @chrox in https://github.com/readest/readest/pull/5231
- fix(android): drop the Sentry NDK integration that destabilizes the WebView (#5227) by @chrox in https://github.com/readest/readest/pull/5234
- fix(android): withdraw Android Auto opt-in to pass Play review by @chrox in https://github.com/readest/readest/pull/5235
- Contain updater and native auth rejections by @chrox in https://github.com/readest/readest/pull/5237
- Fix high-priority reader runtime errors by @chrox in https://github.com/readest/readest/pull/5236
- refactor: remove the auto upload books option in the main menu in favor of the settings in Readest manage sync settings by @chrox in https://github.com/readest/readest/pull/5243
- feat: style checked toggle by @dastarruer in https://github.com/readest/readest/pull/5242
- fix: set
GDK_BACKENDtox11to fix rendering issues by @dastarruer in https://github.com/readest/readest/pull/5248 - feat: add setting to enable skeuomorphic book covers by @dastarruer in https://github.com/readest/readest/pull/5245
- chore: migrate away from numtide devshell by @dastarruer in https://github.com/readest/readest/pull/5131
- chore(deps): bump the github-actions group with 5 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5276
- docs: fix typo in README by @dastarruer in https://github.com/readest/readest/pull/5298
- fix(windows): enforce LF line endings and normalize test path separators by @LukashevychAndrii in https://github.com/readest/readest/pull/5302
- feat(theme): unify theme selector and bg texture selector styling by @dastarruer in https://github.com/readest/readest/pull/5305
- fix(reader): invalidate stale nav cache for encoded TOC hrefs (#5308) by @chrox in https://github.com/readest/readest/pull/5311
- fix(rss): sync feed subscriptions across devices (#5307) by @chrox in https://github.com/readest/readest/pull/5314
- feat(settings): rename "Column Gap" to "Additional Margin" by @chrox in https://github.com/readest/readest/pull/5315
- fix(library): disable skeuomorphic book covers by default by @chrox in https://github.com/readest/readest/pull/5316
- feat(reader): add collapsible chapter sections to search results by @WantenMN in https://github.com/readest/readest/pull/5282
- Load OPDS catalogs when opening the Integrations panel by @chloeroform in https://github.com/readest/readest/pull/5283
- perf(reader): improve Slide/Curl gesture responsiveness by @chihumyum in https://github.com/readest/readest/pull/5291
- fix(opds): keep same-host links on https when the feed is https (#5300) by @chrox in https://github.com/readest/readest/pull/5324
- fix(calibre): verify the cloud blob exists before a row-only push by @chrox in https://github.com/readest/readest/pull/5325
- feat(calibre): Check Readest status action, with faster cloud lookups by @chrox in https://github.com/readest/readest/pull/5332
- fix(macos): restore close-to-hide behavior on Tahoe by @liyafly in https://github.com/readest/readest/pull/5333
- fix(reader): keep system brightness on after swipe by @alexander-pecheny in https://github.com/readest/readest/pull/5292
- feat: calculate TTS gap based on rate by @dastarruer in https://github.com/readest/readest/pull/5326
- Show import options when clicking the bookshelf add button by @bcrave in https://github.com/readest/readest/pull/5247
- chore(deps): bump dependencies for open Dependabot advisories by @chrox in https://github.com/readest/readest/pull/5335
- fix(auth): move ProviderLogin out of the auth page module by @chrox in https://github.com/readest/readest/pull/5336
- fix(library): stop re-importing duplicate files from watched folders by @chrox in https://github.com/readest/readest/pull/5337
- fix(reader): align paragraph mode chrome with the TTS player (#5275) by @chrox in https://github.com/readest/readest/pull/5338
- feat(markdown): parse YAML frontmatter into book metadata by @chrox in https://github.com/readest/readest/pull/5344
- fix(reader): keep book fonts when proofread rules change (#5277) by @chrox in https://github.com/readest/readest/pull/5345
- fix(epub): fall back to cover-named zip entries by @chrox in https://github.com/readest/readest/pull/5339
- fix(metadata): make "Change cover image" work on iOS by @chrox in https://github.com/readest/readest/pull/5346
- fix(reader): keep the PDF footer readable in scrolled mode (#5342) by @chrox in https://github.com/readest/readest/pull/5347
- fix(pdf): keep desktop PDF text sharp (#5251) by @chrox in https://github.com/readest/readest/pull/5348
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5358
- fix(translate): restore Yandex Translate provider by @Columpio in https://github.com/readest/readest/pull/5256
- feat(markdown): support full heading depth in the TOC (#5357) by @chrox in https://github.com/readest/readest/pull/5363
- fix(reader): report image zoom against the image resolution, closes [#5362] by @chrox in https://github.com/readest/readest/pull/5365
- fix(sync): pull the books delta in bounded pages for large libraries by @chrox in https://github.com/readest/readest/pull/5364
- fix: preserve U+200F/U+200E BiDi marks in Persian/Arabic ebooks (#5216) by @shahram7 in https://github.com/readest/readest/pull/5361
- feat(tts): add End of Chapter option to sleep timer by @nurumubu in https://github.com/readest/readest/pull/5355
- fix: disable hardcoded debug flag in AI logger by @fix2015 in https://github.com/readest/readest/pull/5370
- fix(translate): restore Yandex auto-detection and translated TTS by @Columpio in https://github.com/readest/readest/pull/5374
- fix(sync): stop a local-only delete from wiping the Drive copy (#5265) by @chrox in https://github.com/readest/readest/pull/5376
- fix(android): keep All Files Access on the Play build (#5372) (#2862) by @chrox in https://github.com/readest/readest/pull/5378
- feat(clip): capture login-walled articles with an in-app sign-in by @chrox in https://github.com/readest/readest/pull/5377
- fix(ios): unbreak the share extension build after the clip capture change by @chrox in https://github.com/readest/readest/pull/5379
- fix(window): cover the taskbar when entering fullscreen while maximized on Windows by @chrox in https://github.com/readest/readest/pull/5380
- fix(discord): keep the rich presence cover URL stable (#5352) by @chrox in https://github.com/readest/readest/pull/5382
- feat(library): import web novels from a URL (#5294) by @chrox in https://github.com/readest/readest/pull/5381
- fix(css): keep image invert effective in dark mode with color override by @chrox in https://github.com/readest/readest/pull/5383
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5384
- chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5396
- feat(reader): add font size setting and honor custom fonts in paragraph mode by @chrox in https://github.com/readest/readest/pull/5403
- feat(reader): auto-hide the mouse cursor while reading (#5178) by @chrox in https://github.com/readest/readest/pull/5404
- fix(ios): declare NSPhotoLibraryAddUsageDescription so saving images works (#5397) by @chrox in https://github.com/readest/readest/pull/5405
- fix(layout): keep dropdown menus within viewport by @ChuwuYo in https://github.com/readest/readest/pull/5392
- fix(library): do not dedupe distinct PDFs with identical metadata by @chrox in https://github.com/readest/readest/pull/5412
- fix(reader): exclude trailing whitespace from double-click selection by @ChuwuYo in https://github.com/readest/readest/pull/5413
- feat(theme): add Ambient Mode on Android by @Jesusm1229 in https://github.com/readest/readest/pull/5394
- fix(ios): declare txt and md in fileAssociations so Files offers Readest again by @chrox in https://github.com/readest/readest/pull/5415
- fix(tts): read TTS section documents through the display transform pipeline (#5406) by @chrox in https://github.com/readest/readest/pull/5416
- fix(tts): cut Edge trailing silence on iOS playout so sentence pauses are honored (#5414) by @chrox in https://github.com/readest/readest/pull/5417
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5418
- feat(library): add scoped full text search with fuzzy and nearby modes by @WhiteHades in https://github.com/readest/readest/pull/5389
- fix(proofread): match Unicode punctuation next to letters by @ChuwuYo in https://github.com/readest/readest/pull/5421
- feat(dictionaries): add Babylon BGL dictionary format by @chrox in https://github.com/readest/readest/pull/5428
- fix(reader): normalize body text size in reflowable books by @ChuwuYo in https://github.com/readest/readest/pull/5422
- fix(reader): suppress the Android system selection menu natively (#5427) by @chrox in https://github.com/readest/readest/pull/5430
- fix(reader): eink popup pointer triangle rendered solid black above selections by @chrox in https://github.com/readest/readest/pull/5431
- fix(reader): let long press reach the first line on mobile (#5429) by @chrox in https://github.com/readest/readest/pull/5432
- fix(ci): pin the AppImage tauri-cli fork to a known-good rev by @chrox in https://github.com/readest/readest/pull/5433
- fix(search): keep search options on one line at any text scale by @chrox in https://github.com/readest/readest/pull/5434
- feat(reader): include book cover in annotation exports and Readwise sync (#5424) by @chrox in https://github.com/readest/readest/pull/5435
- fix(reader): give the toolbar controls a 44px touch target (#5401) by @chrox in https://github.com/readest/readest/pull/5437
- fix(library): keep subfolder groups for auto-imported books (#5423) by @chrox in https://github.com/readest/readest/pull/5436
- fix(library): release parsed book documents after import, closes [#5387] by @chrox in https://github.com/readest/readest/pull/5439
- fix(sync): merge book metadata on its own clock so page turns cannot clobber edits by @chrox in https://github.com/readest/readest/pull/5442
- feat(annotations): export and import annotations as JSON, closes [#5400] by @chrox in https://github.com/readest/readest/pull/5440
- fix(web): make CORS preflight responses cacheable for authenticated requests by @chrox in https://github.com/readest/readest/pull/5444
- feat(settings): add library/reader scope switcher to background image picker by @chrox in https://github.com/readest/readest/pull/5443
- feat(library): add bulk Download to the select-mode action bar (#5244) by @chrox in https://github.com/readest/readest/pull/5445
- feat(tts): fine-tune the mini player time info and transport (#5310) by @chrox in https://github.com/readest/readest/pull/5446
- fix(reader): lift the header into the notch on negative top margins by @chrox in https://github.com/readest/readest/pull/5447
- feat(popup): restyle popups by @dastarruer in https://github.com/readest/readest/pull/5351
- feat(reader): centralize notes and highlights in the annotations hub, closes [#5398], [#3870] by @chrox in https://github.com/readest/readest/pull/5448
- feat(stats): count TTS listening as reading time by @chrox in https://github.com/readest/readest/pull/5450
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5449
- fix(popup): center the marker glyph and compact the highlight style buttons by @chrox in https://github.com/readest/readest/pull/5451
- fix(android): stabilize the nightly e2e lane and the top-inset touch overlays by @chrox in https://github.com/readest/readest/pull/5453
- fix: install playwright browsers in nix flake by @dastarruer in https://github.com/readest/readest/pull/5454
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5458
- feat(about): copy the version label to the clipboard on click by @chrox in https://github.com/readest/readest/pull/5461
- fix(epub): parse OPF items and meta written with explicit closing tags by @chrox in https://github.com/readest/readest/pull/5463
- feat(annotator): add an opt-in Copy Link tool to the selection toolbar by @chrox in https://github.com/readest/readest/pull/5464
- feat(reader): tap the footer to show and dismiss the progress bar by @chrox in https://github.com/readest/readest/pull/5466
- fix(settings): drop the "Show" prefix from the footer widget labels by @chrox in https://github.com/readest/readest/pull/5469
- fix(library): render the book context menu in-app on Linux desktop by @chrox in https://github.com/readest/readest/pull/5467
- fix(sync): gate dictionary preferences on the Dictionaries toggle by @chrox in https://github.com/readest/readest/pull/5470
- fix(opds): use the cover advertised by the feed entry by @chrox in https://github.com/readest/readest/pull/5471
- feat(reader): show the image description in the image viewer by @chrox in https://github.com/readest/readest/pull/5472
- feat(library): give the "Then by" sort its own order, closes [#5119] by @chrox in https://github.com/readest/readest/pull/5474
- fix(linux): explain the missing file picker in SteamOS Gaming Mode by @chrox in https://github.com/readest/readest/pull/5475
- fix(opds): apply the metadata advertised by the feed entry by @chrox in https://github.com/readest/readest/pull/5477
- fix(reader): stop the header hover strip from covering the page text by @chrox in https://github.com/readest/readest/pull/5478
- fix(reader): keep the aspect ratio of duokan fullscreen covers by @chrox in https://github.com/readest/readest/pull/5473
- fix(sync): handle OneDrive OAuth callbacks by @ChuwuYo in https://github.com/readest/readest/pull/5479
- feat(tts): play a book's own recorded narration (EPUB 3 Media Overlays) by @cubicruler in https://github.com/readest/readest/pull/5480
- fix(android): correct the package name in the native-tts unit test by @chrox in https://github.com/readest/readest/pull/5484
- feat(reader): horizontal scrolling mode for fixed layout books by @chrox in https://github.com/readest/readest/pull/5485
- feat(bookorbit): add BookOrbit integration with annotations, bookmarks, stats, and status sync by @chrox in https://github.com/readest/readest/pull/5487
- fix(library): select books in the recently read shelf and pull it with the grid by @chrox in https://github.com/readest/readest/pull/5486
- fix(library): make search history chips translucent like the search input by @chrox in https://github.com/readest/readest/pull/5488
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5489
- fix(reader): correct reading ruler transitions and line bounds by @ChuwuYo in https://github.com/readest/readest/pull/5490
- feat(reader): support adding bookmarks with a pull-down gesture by @chrox in https://github.com/readest/readest/pull/5493
- fix(opds): invalidate cached covers when the entry's updated value changes by @chrox in https://github.com/readest/readest/pull/5495
- fix(db): close only the target connection when closing a native database by @chrox in https://github.com/readest/readest/pull/5497
- fix(build): strip dangling sourceMappingURL comments from Tauri builds by @chrox in https://github.com/readest/readest/pull/5498
- fix(reader): style annotation toolbar customizer and flatten popup chrome by @dastarruer in https://github.com/readest/readest/pull/5496
- fix(opds): substitute percent-encoded {searchTerms} in OpenSearch templates (#5500) by @chrox in https://github.com/readest/readest/pull/5504
- fix(reader): render fixed layout documents edge to edge in scrolled mode by @chrox in https://github.com/readest/readest/pull/5503
- fix(auth): make the password sign-in form work with Android password managers by @chrox in https://github.com/readest/readest/pull/5505
- fix(koplugin): keep book metadata hash consistent with Readest by @chrox in https://github.com/readest/readest/pull/5508
- fix(koplugin): guard nil response on login/OTP failure by @jemyzhang in https://github.com/readest/readest/pull/5507
- feat(reader): support Apple Pencil double tap and squeeze as page turners by @chrox in https://github.com/readest/readest/pull/5511
- feat(send): clip locally opened html and xhtml pages with the browser extension by @chrox in https://github.com/readest/readest/pull/5512
- chore(deps): bump transitive dependencies for security advisories by @chrox in https://github.com/readest/readest/pull/5518
- fix(library): stop watched-folder scans from blocking the main thread by @chrox in https://github.com/readest/readest/pull/5517
- fix(reader): keep the reading ruler anchored to its text across repagination by @chrox in https://github.com/readest/readest/pull/5519
- test(reader): deflake DictionarySheet expand/collapse toggle test by @chrox in https://github.com/readest/readest/pull/5521
- feat(library): show the page count in book details (#5516) by @chrox in https://github.com/readest/readest/pull/5523
- feat(reader): jump to an entered page number from the progress label by @chrox in https://github.com/readest/readest/pull/5524
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5525
- fix(annotator): return to the selection toolbar after closing a lookup popup (#5213) by @ChuwuYo in https://github.com/readest/readest/pull/5526
- fix(kosync): stop re-prompting resolved sync conflicts on window re-activation (#5527) by @chrox in https://github.com/readest/readest/pull/5528
- fix(annotator): fall back to the selection toolbar when the dictionary quick action gets a multi-word selection by @chrox in https://github.com/readest/readest/pull/5529
- fix(android): deliver file picker results via a replayable plugin event by @chrox in https://github.com/readest/readest/pull/5531
- chore(deps): bump the github-actions group with 5 updates by @dependabot[bot] in https://github.com/readest/readest/pull/5530
- feat(sync): support iCloud as a cloud sync provider on iOS and macOS by @chrox in https://github.com/readest/readest/pull/5532
- fix(reader): discard booknotes without a CFI to prevent an app crash by @chrox in https://github.com/readest/readest/pull/5533
- fix(tts): settle Edge TTS synthesis when the Tauri WebSocket dies before turn.end by @chrox in https://github.com/readest/readest/pull/5534
- fix(ios): restore Open With file associations by @chrox in https://github.com/readest/readest/pull/5535
- feat(macos): enable iCloud sync in direct-distribution builds by @chrox in https://github.com/readest/readest/pull/5537
- fix(window): avoid unavailable title-bar APIs on mobile by @chrox in https://github.com/readest/readest/pull/5536
- fix(annotator): re-anchor the note bubble when a highlight is resized (#5538) by @chrox in https://github.com/readest/readest/pull/5541
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5543
- feat(user): add a Danger Zone with Delete All Books by @chrox in https://github.com/readest/readest/pull/5542
- fix(iap): consume Google Play one-time purchases so storage add-ons can be repurchased by @chrox in https://github.com/readest/readest/pull/5545
- feat(tts): speak Japanese ruby readings instead of the base kanji by @chrox in https://github.com/readest/readest/pull/5546
- feat(a11y): name the open book in the window title by @chrox in https://github.com/readest/readest/pull/5547
- fix(rsvp): respect safe area insets in landscape by @chrox in https://github.com/readest/readest/pull/5548
- fix(layout): keep code block indentation when overriding book layout by @chrox in https://github.com/readest/readest/pull/5549
- fix(docker): apply db migrations on first boot and let the font CDN be overridden (#5550) by @chrox in https://github.com/readest/readest/pull/5551
- fix(reader): scrolled-mode toggle fallout, proofread and footer chrome by @chrox in https://github.com/readest/readest/pull/5552
- fix(translate): restore Azure Translator, keep paragraph layout, preserve inline formatting by @chrox in https://github.com/readest/readest/pull/5555
- fix(reader): keep the cursor visible while text is selected by @chrox in https://github.com/readest/readest/pull/5557
- feat(translate): preserve inline formatting with Google too by @chrox in https://github.com/readest/readest/pull/5556
- fix(annotator): draw the highlight color check in the content color by @chrox in https://github.com/readest/readest/pull/5564
- fix(tts): keep the WebView alive while paused so Bluetooth Play resumes (#5561) by @chrox in https://github.com/readest/readest/pull/5567
- chore(store): rebuild store listings and manage them from fastlane by @chrox in https://github.com/readest/readest/pull/5573
- chore(store): replace Play listing images instead of appending by @chrox in https://github.com/readest/readest/pull/5574
- feat(reader): render math in annotation notes by @PolybiusPro in https://github.com/readest/readest/pull/5571
- feat(reader): summarize annotation counts in the sidebar toolbar by @chrox in https://github.com/readest/readest/pull/5576
- Add support for Custom HTTP Headers in Kosync/BookOrbit integrations by @heckler1 in https://github.com/readest/readest/pull/5570
- docs: update screenshots, closes [#5368] by @chrox in https://github.com/readest/readest/pull/5577
- fix(tts): play Media Overlay narration via native AVPlayer on iOS by @Juansero29 in https://github.com/readest/readest/pull/5562
- fix: highlight swatch colors, window set-title ACL, and debug-build Sentry DSN by @chrox in https://github.com/readest/readest/pull/5578
- chore: update agent memories by @chrox in https://github.com/readest/readest/pull/5579
- fix: fix occasional stuck when dismissing bookshelf menu by @chrox in https://github.com/readest/readest/pull/5580
- release: version 0.12.1 by @chrox in https://github.com/readest/readest/pull/5581
New Contributors
- @LukashevychAndrii made their first contribution in https://github.com/readest/readest/pull/5302
- @liyafly made their first contribution in https://github.com/readest/readest/pull/5333
- @alexander-pecheny made their first contribution in https://github.com/readest/readest/pull/5292
- @bcrave made their first contribution in https://github.com/readest/readest/pull/5247
- @shahram7 made their first contribution in https://github.com/readest/readest/pull/5361
- @nurumubu made their first contribution in https://github.com/readest/readest/pull/5355
- @fix2015 made their first contribution in https://github.com/readest/readest/pull/5370
- @cubicruler made their first contribution in https://github.com/readest/readest/pull/5480
- @jemyzhang made their first contribution in https://github.com/readest/readest/pull/5507
- @PolybiusPro made their first contribution in https://github.com/readest/readest/pull/5571
- @heckler1 made their first contribution in https://github.com/readest/readest/pull/5570
- @Juansero29 made their first contribution in https://github.com/readest/readest/pull/5562
Full Changelog: https://github.com/readest/readest/compare/v0.11.20...v0.12.1