Release Highlight
- Reading: Added continuous scroll and spread layout support for EPUBs
- Reading: Added current time and battery display in footer
- Reading: Added TTS, annotation support, pinch-to-zoom, and scroll mode for PDFs
- Library: Added backup/restore to a zip file and batch metadata refresh
- KOReader: Added bookmark and annotation sync between KOReader and Readest devices
- Footnotes: Added back navigation with link history and more responsive popup sizing
- Annotations: Added loupe display when selecting text in instant annotation mode
- Text-to-Speech: Fixed TTS reading position tracking in scrolled mode
What's Changed
- chore(agents): add AGENTS.md for readest-app by @chrox in https://github.com/readest/readest/pull/3415
- fix(linux): avoid transitions API on WebKitGTK on Linux by @chrox in https://github.com/readest/readest/pull/3417
- fix(layout): responsive layout for OPDS catalogs and download button by @chrox in https://github.com/readest/readest/pull/3418
- chore: bump dependencies to resolve Dependabot alerts by @chrox in https://github.com/readest/readest/pull/3421
- fix(translation): resolve DeepL translation failure with auto-detection by @bfcs in https://github.com/readest/readest/pull/3412
- fix(translation): reduce initial layout shift in the translation view, closes [#3078] by @chrox in https://github.com/readest/readest/pull/3428
- fix(layout): respect grid insets for the zoom controller, closes [#3426] by @chrox in https://github.com/readest/readest/pull/3430
- feat(footnote): add back navigation for footnote popup with link history, closes [#3420] by @chrox in https://github.com/readest/readest/pull/3434
- fix(translation): handle missing Cloudflare context on non-Cloudflare deployments (e.g., Vercel) by @bfcs in https://github.com/readest/readest/pull/3433
- fix(gallery): support displaying svg image in image gallery mode, closes [#3427] by @chrox in https://github.com/readest/readest/pull/3435
- Update translation.json by @StepanSad in https://github.com/readest/readest/pull/3423
- Fix: Non-ASCII characters break OPDS Catalog auth by @IGCFck in https://github.com/readest/readest/pull/3436
- feat(font): support loading custom font if embedded fonts in EPUBs are missing by @chrox in https://github.com/readest/readest/pull/3439
- compat(css): support duokan-page-fullscreen in spine to display cover image in fullscreen, closes [#3424] by @chrox in https://github.com/readest/readest/pull/3443
- fix(css): properly constrain the max width and height of images, closes [#3432] by @chrox in https://github.com/readest/readest/pull/3444
- fix(toc): correct TOC grouping to prevent unnecessary nested layers by @chrox in https://github.com/readest/readest/pull/3445
- fix(txt): more robust chapter extractor for TXT by @chrox in https://github.com/readest/readest/pull/3446
- fix(css): unset padding and margin in body, closes [#3441] by @chrox in https://github.com/readest/readest/pull/3452
- feat(footnote): make popup window size more responsive for longer footnotes, closes [#3425] by @chrox in https://github.com/readest/readest/pull/3454
- i18n: add translations for Slovenian(sl), closes [#3453] by @chrox in https://github.com/readest/readest/pull/3455
- fix(tts): handle documents without lang attribute or XHTML namespace, closes [#3291] by @chrox in https://github.com/readest/readest/pull/3456
- fix(css): unset hardcoded calibre color and background color, closes [#3448] by @chrox in https://github.com/readest/readest/pull/3457
- feat(reader): adding current Time and Battery to Footer (#3306) by @scinac in https://github.com/readest/readest/pull/3402
- Added <0> and <1> tags to the Slovenian translation by @Blyrium in https://github.com/readest/readest/pull/3460
- chore: bump turso to 0.5.0 by @chrox in https://github.com/readest/readest/pull/3475
- chore(database): unit testing and feature detect for fts and vector search by @chrox in https://github.com/readest/readest/pull/3476
- fix(metadata): parse series info from epub only when book series info not available by @chrox in https://github.com/readest/readest/pull/3478
- fix(footnote): add overflow-wrap to footnote popup to prevent long words from overflowing by @chrox in https://github.com/readest/readest/pull/3479
- chore(testing): add Tauri integration tests and E2E test infrastructure by @chrox in https://github.com/readest/readest/pull/3483
- feat(database): support turso fts in tauri apps by @chrox in https://github.com/readest/readest/pull/3484
- feat(database): add platform-agnostic schema migration system by @chrox in https://github.com/readest/readest/pull/3485
- chore: experimental vinext build by @chrox in https://github.com/readest/readest/pull/3486
- feat(setting) impl settings option: hide Scrollbar of scroll mode (#3480) by @srsng in https://github.com/readest/readest/pull/3481
- fix(sidebar): use position fixed and transform for mobile sidebar by @chrox in https://github.com/readest/readest/pull/3490
- feat(pdf): support TTS and annotation on PDFs, closes [#2149] & [#3462] by @chrox in https://github.com/readest/readest/pull/3493
- fix(layout): update safe insets in reader page, closes [#3469] by @chrox in https://github.com/readest/readest/pull/3497
- fix(css): apply Line Spacing to list elements, closes [#3494] by @chrox in https://github.com/readest/readest/pull/3498
- fix(macOS): fix traffic light visibility in sidebar, closes [#3488] by @chrox in https://github.com/readest/readest/pull/3499
- chore(ci): fix rust cache by @chrox in https://github.com/readest/readest/pull/3500
- compat(android): show button navigation bar on Android, closes [#3466] by @chrox in https://github.com/readest/readest/pull/3501
- fix(txt): add stream() to RemoteFile to fix large TXT import on desktop by @chrox in https://github.com/readest/readest/pull/3502
- fix(layout): add top/bottom margin to container in scrolled mode, closes [#3463] by @chrox in https://github.com/readest/readest/pull/3504
- fix(reader): apply alwaysOnTop to all windows and on reader init, closes [#3482] by @chrox in https://github.com/readest/readest/pull/3505
- fix(a11y): improve TOC screen reader accessibility for NVDA, closes [#3477] by @chrox in https://github.com/readest/readest/pull/3509
- feat(reader): tap notch area to scroll to top in scrolled mode, closes [#3474] by @chrox in https://github.com/readest/readest/pull/3510
- feat(a11y): show prev/next section buttons for screen reader, closes [#3290] by @chrox in https://github.com/readest/readest/pull/3511
- fix(layout): make horizontal scroll bar visible in fixed-layout EPUB, closes [#3506] by @chrox in https://github.com/readest/readest/pull/3512
- fix(pdf): show search results when navigating to new page, closes [#3148] by @chrox in https://github.com/readest/readest/pull/3513
- feat(pdf): support pitch to zoom and scroll mode for PDFs, closes [#3461] by @chrox in https://github.com/readest/readest/pull/3520
- fix(i18n): handle POSIX locale values in getLocale(), closes [#3518] by @chrox in https://github.com/readest/readest/pull/3522
- compat(footnote): support more footnote selectors, closes [#3515] by @chrox in https://github.com/readest/readest/pull/3523
- fix(library): improve sorting and grouping interaction, closes [#3517] by @chrox in https://github.com/readest/readest/pull/3524
- fix(link): prevent opening duplicate browser tabs on Tauri, closes [#3514] by @chrox in https://github.com/readest/readest/pull/3525
- Update docker db schema to match FileRecords by @azeemba in https://github.com/readest/readest/pull/3527
- feat(rsvp): add persistent context, display settings, and layout improvements, closes [#3333] by @chrox in https://github.com/readest/readest/pull/3528
- fix(opds): more accurate error message when downloading books, closes [#2656] by @chrox in https://github.com/readest/readest/pull/3529
- feat(node): refactor appService into focused service modules and add app service for Node runtime by @chrox in https://github.com/readest/readest/pull/3530
- doc(agent): add rules files that are automatically loaded into context alongside CLAUDE.md by @chrox in https://github.com/readest/readest/pull/3532
- chore: bump dependencies for Dependabot alerts by @chrox in https://github.com/readest/readest/pull/3533
- feat(booshelf): dedupe books with the same meta hash by @chrox in https://github.com/readest/readest/pull/3535
- fix(export): apply block quote syntax to every line in annotation export, closes [#3534] by @chrox in https://github.com/readest/readest/pull/3536
- feat(epub): support continuous scroll and spread layout for EPUBs, closes [#3419] and closes [#1745] by @chrox in https://github.com/readest/readest/pull/3546
- refactor(reader): extract shared panel drag hooks and add vertical drag to Notebook by @chrox in https://github.com/readest/readest/pull/3548
- fix(layout): fix parallel read layout on smaller screens by @chrox in https://github.com/readest/readest/pull/3549
- fix(progress): show remaining pages for current section instead of all loaded sections by @chrox in https://github.com/readest/readest/pull/3550
- fix(android): fix page navigation layer z-index, closes [#3511] by @chrox in https://github.com/readest/readest/pull/3552
- fix(ios): decode percent-encoded file URIs in copy_uri_to_path by @chrox in https://github.com/readest/readest/pull/3553
- feat: scroll to the nearest search results or annotation lists by @chrox in https://github.com/readest/readest/pull/3555
- compat(css): fix table layout regression issue, closes [#3551] by @chrox in https://github.com/readest/readest/pull/3556
- chore(agent): add gstack skills by @chrox in https://github.com/readest/readest/pull/3557
- fix(layout): more responsive layout for the transfer queue by @chrox in https://github.com/readest/readest/pull/3558
- fix(ios): resolve stale closure crash preventing highlight popup on iOS by @chrox in https://github.com/readest/readest/pull/3559
- fix(layout): fixed header background color on mobile devices by @chrox in https://github.com/readest/readest/pull/3561
- fix(perf): revert back next/image with lazying loading for much better perf by @chrox in https://github.com/readest/readest/pull/3562
- fix(footnote): don't preload other sections in footnotes by @chrox in https://github.com/readest/readest/pull/3563
- chore(deps): bump pnpm/action-setup from 4 to 5 in the github-actions group by @dependabot[bot] in https://github.com/readest/readest/pull/3564
- feat(annotator): show the loupe when selecting text in instant annotation, closes [#3539] by @chrox in https://github.com/readest/readest/pull/3565
- chore(agent): add project memory by @chrox in https://github.com/readest/readest/pull/3567
- feat(annotator): responsive layout for the loupe by @chrox in https://github.com/readest/readest/pull/3568
- chore: bump next.js from 16.1.6 to 16.1.7 by @chrox in https://github.com/readest/readest/pull/3569
- feat(library): backup to and restore from a zip file by @chrox in https://github.com/readest/readest/pull/3571
- fix(txt): fix chapter detection for bare numbered headings, closes [#3570] by @chrox in https://github.com/readest/readest/pull/3572
- feat(library): add batch refresh metadata option, closes [#3294] by @chrox in https://github.com/readest/readest/pull/3573
- feat(reader): import Foliate annotations on book open (Linux only), closes [#2180] by @chrox in https://github.com/readest/readest/pull/3574
- feat(koplugin): add self-update check and install from menu by @chrox in https://github.com/readest/readest/pull/3575
- feat(koplugin): add support for annotation sync by @chrox in https://github.com/readest/readest/pull/3579
- feat(koplugin): support sync bookmarks between Koreader and Readest devices by @chrox in https://github.com/readest/readest/pull/3580
- fix(tts): properly follow tts reading position in scrolled mode by @chrox in https://github.com/readest/readest/pull/3581
- fix: handle number input value clip in settings on mobile devices by @chrox in https://github.com/readest/readest/pull/3582
- fix: resolve various tracked exceptions in ph by @chrox in https://github.com/readest/readest/pull/3584
- fix(layout): fixed total scrollable width in vertical scrolled mode by @chrox in https://github.com/readest/readest/pull/3586
- compat(footnote): support footnote text in alt attribute of the image, closes [#3576] by @chrox in https://github.com/readest/readest/pull/3587
- release: version 0.10.1 by @chrox in https://github.com/readest/readest/pull/3588
New Contributors
- @IGCFck made their first contribution in https://github.com/readest/readest/pull/3436
- @scinac made their first contribution in https://github.com/readest/readest/pull/3402
- @srsng made their first contribution in https://github.com/readest/readest/pull/3481
- @azeemba made their first contribution in https://github.com/readest/readest/pull/3527
Full Changelog: https://github.com/readest/readest/compare/v0.9.101...v0.10.1