Releases: readest/readest
Releases · readest/readest
Readest 0.10.6
Release Highlight
- Library: Much faster browsing for large collections
- Reading: Added an option to keep the book's original paragraph layout
- Reading: Fixed page navigation for Arabic books
- PDF: Fixed TTS reading interruptions at line breaks in PDFs
- PDF: You can now apply your chosen theme colors to PDFs
- Sync: Added HTTP Basic auth support for CWA
- Sync: Improved progress sync with Hardcover.app
- OPDS: You can now edit your registered catalogs, with better handling of download filenames
- Speed Reading: Your reading position now syncs across devices
- Platform: Fixed window buttons on macOS, reduced crashes on iOS
What's Changed
- fix(ui): restore highlight options layout and clean up color name editing by @chrox in #3776
- feat(library): align grid hover highlight corner radius by @WhiteHades in #3774
- Updating Hardcover progress sync logic (Issue #3775) by @AnandakrishnanV in #3777
- fix(dictionary): add Chinese dictionary lookup with pinyin support by @pythontyphon in #3784
- fix(style): clamp oversized hardcoded pixel widths and fix browser test flakiness by @chrox in #3785
- docs: add threat model and incident response plan to SECURITY.md by @chrox in #3788
- Use key attrs to prevent form field issues by @zb140 in #3791
- Support HTTP Basic auth for kosync connections by @zb140 in #3792
- fix(security): prevent SSRF in kosync proxy by @chrox in #3793
- chore(security): update CodeQL workflow to remove languages by @chrox in #3794
- fix(pdf): add an option to apply theme colors to PDF, closes #3778 by @chrox in #3799
- refactor(sidebar): replace react-window and OverlayScrollbars with react-virtuoso and CSS scrollbars by @lexm2 in #3798
- Potential fix for code scanning alert no. 19: DOM text reinterpreted as HTML by @chrox in #3802
- Potential fix for code scanning alert no. 12: Use of externally-controlled format string by @chrox in #3803
- chore(deps): bump actions/checkout from 4 to 6 in the github-actions group by @dependabot[bot] in #3805
- Potential fix for code scanning alert no. 11: Incomplete multi-character sanitization by @chrox in #3804
- fix: complete multi-character sanitization for HTML comments in txt.ts by @chrox in #3806
- fix: add explicit permissions to GitHub Actions workflows by @chrox in #3807
- fix(annotator): fixed instant annotation in scrolled mode, closes #3769 by @chrox in #3808
- refactor(reader): priority-based touch interceptor for gesture handling by @chrox in #3809
- feat(rsvp): sync reading position to cloud via book_configs by @lexm2 in #3801
- fix(opds): handle spaces and quotes in Content-Disposition filename p… by @zeedif in #3812
- chore(scripts): add worktree management for isolated PR review and feature work by @chrox in #3810
- fix(layout): fix off-by-one page count on fractional DPR devices by @chrox in #3813
- fix(tts): skip br elements in PDF text layer to prevent TTS interruptions, closes #3771 by @chrox in #3811
- fix(opds): improve robustness of Content-Disposition filename parsing by @zeedif in #3816
- feat(opds): allow editing of registered catalogs by @zeedif in #3814
- fix(rtl): fix page navigation for Arabic books by @lexm2 in #3817
- fix: apply disable click to paginate also for non-iframe clicks by @chrox in #3818
- feat(tts): support edge tts on cloudflare worker by @chrox in #3819
- fix(eink): remove scroll animation in eink mode and optimize eink detection by @chrox in #3822
- fix(layout): fixed bleed layout of images by @chrox in #3823
- fix(library): restore breadcrumb 'All' navigation broken by next-view-transitions by @chrox in #3829
- perf: optimize library operations for large collections by @lexm2 in #3827
- fix(library): fixed the All button in groups breadcrumbs navigation bar, closes #3782 by @chrox in #3832
- feat(library): navigate to previous group with the Back button on Android, closes #2675 by @chrox in #3833
- perf(library): virtualize grid and list of book items when rendering library page by @chrox in #3835
- fix(deps): resolve 13 Dependabot security alerts by @chrox in #3840
- fix(deps): add pnpm override for qs >=6.14.2 by @chrox in #3841
- fix(ios): reduce GPU memory to prevent WebKit crash on library navigation by @chrox in #3842
- fix(macOS): don't show window button when traffic lights are on the header, closes #3831 by @chrox in #3843
- Update package installation for Linux-x64 by @Drsheppard01 in #3845
- chore(agent): use claude in chrome for web based qa by @chrox in #3847
- fix(ux): optimize scrolling UX for the bookshelf and sidebar content by @chrox in #3849
- feat(annotator): support instant copy operation for selected text, closes #3828 by @chrox in #3854
- refactor(settings): persist the apply-globally toggle per book by @chrox in #3856
- fix(settings): fixed color picker for custom highlight colors, closes #3796 by @chrox in #3857
- feat(settings): add an option to avoid overriding paragraph layout, closes #3824 by @chrox in #3858
- fix(android): use stable safe area insets to avoid unnecessary layout shift, closes #3670 by @chrox in #3859
- release: version 0.10.6 by @chrox in #3861
New Contributors
- @pythontyphon made their first contribution in #3784
- @zb140 made their first contribution in #3791
- @Drsheppard01 made their first contribution in #3845
Full Changelog: v0.10.4...v0.10.6
Readest 0.10.4
Release Highlight
- Annotations: You can now name your highlight colors, and your custom names sync across devices
- Annotations: Fixed highlights that stayed on the page after being deleted from the sidebar
- Speed Reading: Added an option to split long words, a faster countdown
- Text-to-Speech: Fixed double playback when tapping the play button in quick succession
- Accessibility: Dropdown menus now open reliably when activated with the keyboard
- Reading: Background textures now display correctly when you override the theme background color
- Translation: Temporarily disabled the Yandex provider while its service is unavailable
What's Changed
- fix(hardcover): use Tauri HTTP plugin to bypass CORS and coerce search IDs by @chrox in #3752
- feat(i18n): add Hungarian translation by @chrox in #3753
- feat: add named highlight colors with sync and picker ux fixes by @WhiteHades in #3741
- feat(rsvp): split words option, faster countdown, and skip pages RSVP cant open by @lexm2 in #3755
- chore(deps): bump Next.js to version 16.2.2 by @chrox in #3757
- fix: clear highlight overlay when deleting annotation from sidebar, closes #3756 by @chrox in #3758
- fix(layout): use mobile footer bar in portrait mode without regressing phone panel animation by @chrox in #3759
- fix(sync): show last push time as the last sync time by @chrox in #3760
- fix(style): let background texture take precedence over overridden background color by @chrox in #3761
- fix(a11y): fixed keyboard activation of dropdown menu by @chrox in #3762
- fix(tts): prevent double playback on rapid TTS icon clicks by @chrox in #3764
- fix(translate): disable yandex provider while upstream relay is down by @chrox in #3765
- release: version 0.10.4 by @chrox in #3767
Full Changelog: v0.10.2...v0.10.4
Readest 0.10.2
Release Highlight
- Reading: Added single section scroll option, keyboard shortcuts help dialog, and reading ruler improvements
- Reading: Fixed Adobe font deobfuscation and applied theme colors to PDFs
- Reading: Fixed paginator freeze, image sizing on resize, and vertical writing mode compatibility
- Annotations: Fixed annotations grouped under wrong chapter and added highlight opacity setting
- Text-to-Speech: Added dedicated TTS settings tab with highlight opacity and keyboard shortcuts for navigation
- Sync: Added Hardcover.app sync integration and improved KOSync progress accuracy
- KOReader Plugin: Added full annotation sync option and fixed sync-related crashes
- OPDS: Added custom catalog headers with web proxy consent and fixed feed display issues
- Speed Reading: Added per-chapter progress bar and speed selector dropdown
- Android: Added D-pad navigation for Android TV remote controller
- Theme: Added atmosphere Easter egg with video overlay and ambient audio
What's Changed
- fix(release): skip architecture check for 32-bit ARM by @chrox in #3589
- chore(release): disable linux-arm build for now as turso can't work on it for now by @chrox in #3590
- chore(release): generate changelog from release notes for google play by @chrox in #3591
- fix(koplugin): fixed koreader crash on logout, closes #3598 by @chrox in #3603
- fix(pdf): apply theme colors for PDFs, closes #3593 by @chrox in #3626
- fix(library): mixed sorting for group and ungroupped books, closes #3596 by @chrox in #3627
- compat(android): disable native long-click on the WebView to prevent the system image context menu, closes #3629 by @chrox in #3630
- chore(deps): bump android-actions/setup-android from 3 to 4 in the github-actions group by @dependabot[bot] in #3631
- fix(koplugin): prevent resurrecting deleted highlights and duplicate overlays on notes pull by @leekaize in #3639
- chore: bump next.js, opennextjs and wrangler to the latest versions by @chrox in #3642
- fix: show proper background images in continuous scrolled mode, closes #3638 by @chrox in #3645
- fix(android): never try to fight with the navigation bar on Android ever, closes #3618 by @chrox in #3646
- chore: bump turso to the latest version by @chrox in #3650
- feat(tts): add shortcuts to navigate and play/pause in TTS mode, closes #3620 by @chrox in #3651
- feat: add keyboard shortcuts help dialog by @chrox in #3653
- fix(eink): disable range editor loupe for annotations on Eink devices, closes #3655 by @chrox in #3656
- fix(opds): fixed image download from ODPS server on the web, closes #3649 by @chrox in #3658
- feat(android): add foss flavor build without gms services by @chrox in #3666
- feat(scroll): add single section scroll option, closes #3663 by @chrox in #3668
- chore(release): exclude turso wasm in app builds by @chrox in #3674
- chore(fdroid): get rid of wasm binaries in fdroid build by @chrox in #3677
- chore(fdroid): build qcms wasm for fdroid by @chrox in #3680
- css: add css selector for status badge, closes #3678 by @chrox in #3684
- layout: don't truncate remaining progress info without status info, closes #3678 by @chrox in #3685
- fix(layout): fixed infinite expand calls and freeze in the paginator, closes #3683 by @chrox in #3690
- fix(layout): fixed infinite expand calls and freeze in the paginator, closes #3683 by @chrox in #3692
- fix(shortcuts): change bookmark shortcut from Ctrl+D to Ctrl+B by @chrox in #3691
- chore(deps): bump vulnerable dependencies to address Dependabot alerts by @chrox in #3693
- chore: migrate from ESLint to Biome for linting by @chrox in #3694
- fix(fonts): fix Adobe font deobfuscation and CSS var fallbacks by @chrox in #3696
- i18n: update translations for aria label by @chrox in #3697
- fix(layout): fix primary view detection on fractional DPR devices, closes #3681 by @chrox in #3701
- fix(iOS): use correct system theme mode in auto mode on iOS, closes #3698 by @chrox in #3704
- fix(opds): fix Copyparty books showing as "Untitled" in mixed feeds, closes #3667 by @chrox in #3705
- fix(annotations): fix all annotations grouped under last chapter for fragment-href TOCs by @chrox in #3706
- feat(settings): add TTS settings tab and highlight opacity, closes #3661 by @chrox in #3712
- chore(test): add unit tests and enforce dash-case naming for test files by @chrox in #3715
- feat(i18n): add Romanian (ro) translation by @teodorcosma in #3708
- chore(bump): bump Tauri to the latest version by @chrox in #3716
- fix(library): always sort series books by index ascending, closes #3709 by @chrox in #3717
- feat(sync): add full sync option for annotations in koplugin by @chrox in #3718
- fix(storage): paginate stats query and align file size formatting by @chrox in #3720
- chore(agent): update agent skills and memories by @chrox in #3721
- feat: make reading ruler selection and step navigation coherent by @WhiteHades in #3722
- feat(rsvp): progress bar per chapter, speed selector dropdown, and UX improvements by @lexm2 in #3723
- feat(theme): add atmosphere easter egg with video overlay and ambient audio by @chrox in #3727
- fix(android): auto-shutdown native TTS engine after idle to save battery by @chrox in #3728
- fix(layout): fixed static image size and layout shift on window resize, closes #3634 by @chrox in #3729
- fix: preserve paragraph mode reading layouts and other UI/UX fixes by @WhiteHades in #3730
- feat: Hardcover.app Sync by @AnandakrishnanV in #3724
- fix(kosync): don't normalize xpointer for more accurate progress sync, closes #3672 and closes #3616 by @chrox in #3733
- fix(paginator): fixed paginator section preloading, closes #3600 and closes #3601 by @chrox in #3734
- fix: fixed status info layout in vertical mode, fixed Android build by @chrox in #3735
- feat(opds): support custom catalog headers with web proxy consent by @ShunnyBunny in #3740
- compat(vertical): check writing mode also for child element of body, closes #3583 by @chrox in #3743
- fix(android): get rid of the outline on the header and footer bar when using remote control to turn page by @chrox in #3744
- feat(android): add D-pad navigation for Android TV remote controller by @chrox in #3745
- fix(android): use mobile footer bar in portrait mode, closes #3742 by @chrox in #3746
- fix(tts): avoid race condition in preloadNextSSML causing wrong highlights by @chrox in #3748
- fix(layout): fixed layout of progress bar in vertical mode by @chrox in #3749
- release: version 0.10.2 by @chrox in #3750
New Contributors
- @leekaize made their first contribution in #3639
- @teodorcosma made their first contribution in #3708
- @lexm2 made their first contribution in #3723
- @AnandakrishnanV made their first contribution in #3724
- @ShunnyBunny made their first contribution in #3740
Full Changelog: v0.10.1...v0.10.2
Readest 0.10.1
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 #3415
- fix(linux): avoid transitions API on WebKitGTK on Linux by @chrox in #3417
- fix(layout): responsive layout for OPDS catalogs and download button by @chrox in #3418
- chore: bump dependencies to resolve Dependabot alerts by @chrox in #3421
- fix(translation): resolve DeepL translation failure with auto-detection by @bfcs in #3412
- fix(translation): reduce initial layout shift in the translation view, closes #3078 by @chrox in #3428
- fix(layout): respect grid insets for the zoom controller, closes #3426 by @chrox in #3430
- feat(footnote): add back navigation for footnote popup with link history, closes #3420 by @chrox in #3434
- fix(translation): handle missing Cloudflare context on non-Cloudflare deployments (e.g., Vercel) by @bfcs in #3433
- fix(gallery): support displaying svg image in image gallery mode, closes #3427 by @chrox in #3435
- Update translation.json by @StepanSad in #3423
- Fix: Non-ASCII characters break OPDS Catalog auth by @IGCFck in #3436
- feat(font): support loading custom font if embedded fonts in EPUBs are missing by @chrox in #3439
- compat(css): support duokan-page-fullscreen in spine to display cover image in fullscreen, closes #3424 by @chrox in #3443
- fix(css): properly constrain the max width and height of images, closes #3432 by @chrox in #3444
- fix(toc): correct TOC grouping to prevent unnecessary nested layers by @chrox in #3445
- fix(txt): more robust chapter extractor for TXT by @chrox in #3446
- fix(css): unset padding and margin in body, closes #3441 by @chrox in #3452
- feat(footnote): make popup window size more responsive for longer footnotes, closes #3425 by @chrox in #3454
- i18n: add translations for Slovenian(sl), closes #3453 by @chrox in #3455
- fix(tts): handle documents without lang attribute or XHTML namespace, closes #3291 by @chrox in #3456
- fix(css): unset hardcoded calibre color and background color, closes #3448 by @chrox in #3457
- feat(reader): adding current Time and Battery to Footer (#3306) by @scinac in #3402
- Added <0> and <1> tags to the Slovenian translation by @Blyrium in #3460
- chore: bump turso to 0.5.0 by @chrox in #3475
- chore(database): unit testing and feature detect for fts and vector search by @chrox in #3476
- fix(metadata): parse series info from epub only when book series info not available by @chrox in #3478
- fix(footnote): add overflow-wrap to footnote popup to prevent long words from overflowing by @chrox in #3479
- chore(testing): add Tauri integration tests and E2E test infrastructure by @chrox in #3483
- feat(database): support turso fts in tauri apps by @chrox in #3484
- feat(database): add platform-agnostic schema migration system by @chrox in #3485
- chore: experimental vinext build by @chrox in #3486
- feat(setting) impl settings option: hide Scrollbar of scroll mode (#3480) by @srsng in #3481
- fix(sidebar): use position fixed and transform for mobile sidebar by @chrox in #3490
- feat(pdf): support TTS and annotation on PDFs, closes #2149 & #3462 by @chrox in #3493
- fix(layout): update safe insets in reader page, closes #3469 by @chrox in #3497
- fix(css): apply Line Spacing to list elements, closes #3494 by @chrox in #3498
- fix(macOS): fix traffic light visibility in sidebar, closes #3488 by @chrox in #3499
- chore(ci): fix rust cache by @chrox in #3500
- compat(android): show button navigation bar on Android, closes #3466 by @chrox in #3501
- fix(txt): add stream() to RemoteFile to fix large TXT import on desktop by @chrox in #3502
- fix(layout): add top/bottom margin to container in scrolled mode, closes #3463 by @chrox in #3504
- fix(reader): apply alwaysOnTop to all windows and on reader init, closes #3482 by @chrox in #3505
- fix(a11y): improve TOC screen reader accessibility for NVDA, closes #3477 by @chrox in #3509
- feat(reader): tap notch area to scroll to top in scrolled mode, closes #3474 by @chrox in #3510
- feat(a11y): show prev/next section buttons for screen reader, closes #3290 by @chrox in #3511
- fix(layout): make horizontal scroll bar visible in fixed-layout EPUB, closes #3506 by @chrox in #3512
- fix(pdf): show search results when navigating to new page, closes #3148 by @chrox in #3513
- feat(pdf): support pitch to zoom and scroll mode for PDFs, closes #3461 by @chrox in #3520
- fix(i18n): handle POSIX locale values in getLocale(), closes #3518 by @chrox in #3522
- compat(footnote): support more footnote selectors, closes #3515 by @chrox in #3523
- fix(library): improve sorting and grouping interaction, closes #3517 by @chrox in #3524
- fix(link): prevent opening duplicate browser tabs on Tauri, closes #3514 by @chrox in #3525
- Update docker db schema to match FileRecords by @azeemba in #3527
- feat(rsvp): add persistent context, display settings, and layout improvements, closes #3333 by @chrox in #3528
- fix(opds): more accurate error message when downloading books, closes #2656 by @chrox in #3529
- feat(node): refactor appService into focused service modules and add app service for Node runtime by @chrox in #3530
- doc(agent): add rules files that are automatically loaded into context alongside CLAUDE.md by @chrox in #3532
- chore: bump dependencies for Dependabot alerts by @chrox in #3533
- feat(booshelf): dedupe books with the same meta hash by @chrox in #3535
- fix(export): apply block quote syntax to every line in annotation export, closes #3534 by @chrox in #3536
- feat(epub): support continuous scroll and spread layout for EPUBs, closes #3419 and closes #1745 by @chrox in #3546
- refactor(reader): extract shared panel drag hooks and add vertical drag to Notebook by @chrox in #3548
- fix(layout): fix parallel read layout on smaller screens by @chrox in #3549
- fix(progress): show remaining pages for current section instead of all loaded sections by @chrox in #3550
- fix(android): fix page navigation layer z-index, closes #3511 by @chrox in #3552
- fix(ios): decode percent-encoded file URIs in copy_uri_to_path by @chrox in #3553
- feat: scroll to the nearest search results or annotation lists by @chrox in #3555
- compat(css): fix table layout regression issue, closes #3551 by @chrox in #3556
- chore(agent): add gstack skills by @chrox in #3557
- fix(layout): more responsive layout for the transfer queue by @chrox in #3558
- fix(ios): resolve stale closure crash preventing highlight popup on iOS by @chrox in #3559
- fix(layout): fixed header background color on mobile devices by @chrox in https://github.com/readest/readest/pull/...
Readest 0.9.101
Release Highlight
- Text-to-Speech: Fixed an issue where TTS could not continue to the next chapter
- Reading: Fixed an issue importing very large TXT files on iOS
- Reading: Fixed the layout of the reading ruler in scrolled mode
- Reading: Smoother page-turn animations for a more fluid experience
- Reading: Added a gallery mode to zoom and browse images within books
- Annotations: Page numbers are now displayed and exported with highlights and notes
- Annotations: Added support for exporting highlights to Readwise
- OPDS: Fixed missing book descriptions in OPDS feeds
- Android: Improved compatibility with older WebView versions on Android
What's Changed
- fix: reader ruler disabled in scroll mode by @WhiteHades in #3288
- fix(annotator): update highlight style, color and range handlers when showing different annotations, closes #3286 by @chrox in #3289
- fix: highlight in dark mode eink by @WhiteHades in #3299
- fix(tts): fixed an issue where starting TTS from the annotation tool did not work, closes #3292 by @chrox in #3303
- feat: remaining time in TTS mode by @WhiteHades in #3300
- fix(layout): container layout for dimmed area of reading ruler, closes #3304 by @chrox in #3313
- fix(reader): clamp reading ruler within viewport by @WhiteHades in #3314
- feat(docker/podman): self-hosting with docker/podman compose by @aniketkotal in #3312
- feat(ui): image viewing mode support by @JustADeer in #3328
- feat: Readwise highlights sync by @8bitgentleman in #3311
- fix: case-insensitive handling in iframeEventHandlers by @JustADeer in #3349
- fix(epub): replace background also for scrolled mode, closes #3344 by @chrox in #3350
- fix: add classes for progress info labels, closes #3343 by @chrox in #3353
- fix(layout): consistent padding and radius for the dialog header, closes #3352 by @chrox in #3356
- compat(layout): fix insane block display for tables, closes #3351 by @chrox in #3358
- fix(layout): also scale table with parent width, closes #3284 by @chrox in #3359
- fix: empty paragraphs not skipped in paragraph mode by @WhiteHades in #3361
- feat: add directional view transitions with scroll preservation in library view, closes #3357 by @chrox in #3362
- compat(css): unset font-family for body when set to serif or sans-serif, closes #3334 by @chrox in #3363
- feat(translator): add Khmer in translator target languages, closes #3323 by @chrox in #3364
- fix(css): override inline image background color only when overriding book color, closes #3316 by @chrox in #3365
- compat(webview): compat with older webview for iterating gamepads by @chrox in #3366
- Allow CSS targeting of the "NUMBER pages left in chapter" label via
<Trans>component by @Blyrium in #3368 - chore: add husky pre-commit and pre-push hooks by @chrox in #3372
- compat(css): unset none user-select in some EPUBs, closes #3370 by @chrox in #3374
- fix: delay context menu to prevent broken input loop on macOS, closes #3324 by @chrox in #3378
- compat(css): only override img background when overriding book color, closes #3377 by @chrox in #3379
- compat: add target class to hide import icon in the bookshelf, closes #3376 by @chrox in #3380
- fix: more sensitive paging without snapping animation, closes #3310 by @chrox in #3381
- fix(notebook): close searchbar when adding or editing an annotation by @AlanSilvaaa in #3384
- perf: use GPU-accelerated scroll for smoother paging animation by @chrox in #3385
- fix(txt): stabilize iOS large TXT import and decode picker paths by @royisme in #3320
- fix(layout): float the annotation navigation bar, closes #3386 by @chrox in #3387
- fix(layout): enlarge hit area for slider input on iOS, closes #3382 by @chrox in #3389
- fix(ui): show progress 100% at the last page, closes #3383 by @chrox in #3390
- fix: fixed all progress at the last page of the book, closes #3383 by @chrox in #3391
- fix(tts): set document lang attribute when missing or invalid for TTS, closes #3291 by @chrox in #3393
- Fix generic font family keywords bypassing user font settings by @Blyrium in #3394
- fix(iOS): correct sidebar insets on iPad and resolve occasional stale safe area inset on iOS by @chrox in #3395
- fix(tts): also show highlight when navigating in paused mode and improve abbreviations processing by @chrox in #3396
- fix(toc): fix phantom subchapter TOC item by @chrox in #3397
- fix: make touchpad scrolling respect the system’s natural scrolling settings, closes #3127 by @chrox in #3398
- feat(annotator): add page number for annotations, closes #3082 by @chrox in #3405
- fix: respect fixed translation quota in UI stats and DeepL provider by @bfcs in #3404
- fix(tts): dispose of the TTS view when shutting down the TTS controller, closes #3400 by @chrox in #3406
- fix(opds): add missing book description in OPDS feed by @chrox in #3408
- fix(annotator): add page number in highlight export to Readwise by @chrox in #3409
- release: version 0.9.101 by @chrox in #3410
New Contributors
- @aniketkotal made their first contribution in #3312
- @JustADeer made their first contribution in #3328
- @8bitgentleman made their first contribution in #3311
- @AlanSilvaaa made their first contribution in #3384
- @royisme made their first contribution in #3320
Full Changelog: v0.9.100...v0.9.101
Readest 0.9.100
Release Highlight
- Text-to-Speech: Automatically moves to the next chapter when the current chapter finishes
- Reading: Fixed the reading ruler on Android
- Reading: Improved RSVP layout and stability
- Reading: Fixed an issue where some EPUB books could not adjust font size
- Annotations: Added a magnifier (loupe) when adjusting text selection
- Annotations: Text selection now snaps to word boundaries for better accuracy
- Annotations: Custom highlight colors now apply correctly in the sidebar
- Dictionary: Added a back button for easier navigation
- Dictionary: Fixed an issue where Dictionary and Wikipedia could not open on Android
- Metadata: Added collapsible sections in Book Details
- Metadata: Added support for parsing series information from Calibre-exported EPUB files
- Eink: Improved component layout and colors in E-ink mode
- Layout: Sidebar toggle button position is now persistent
What's Changed
- fix(layout): show navigation buttons with higher z-index, closes #3201 by @chrox in #3204
- fix: reader ruler unresponsive in android by @WhiteHades in #3210
- fix: para mode nav buttons issue in eink by @WhiteHades in #3212
- i18n: add support for Hebrew, closes #3216 by @chrox in #3218
- feat: back button dictionary by @WhiteHades in #3220
- fix: status button eink compatible by @WhiteHades in #3223
- fix(android): fixed some annotation tools not responsive to tap on Android, closes #3225 by @chrox in #3229
- feat(l10n): format sync date time with current locale, closes #3219 by @chrox in #3230
- fix(progress): show physical left pages instead of estimated ones, closes #3213 and closes #3200 by @chrox in #3231
- doc: update toubleshooting and features list, closes #3224 by @chrox in #3232
- fix: fixed docker build by including some dist files in docker image, closes #3233 by @chrox in #3241
- feat(metadata): collapsible sections in book details, closes #3217 by @chrox in #3243
- compat: compatibility with older webview on Android, closes #3245 by @chrox in #3249
- fix: don't cache section content when updating subitems, closes #3242 and closes #3206 by @chrox in #3250
- fix(layout): workaround for hardcoded table layout, closes #3205 by @chrox in #3251
- feat(annotator): rounded highlight style for horizontal and vertical layout, closes #3208 by @chrox in #3252
- fix(layout): fixed some layout issues for RSVP, closes #3199 by @chrox in #3254
- fix(tts): fix paused tts will still read to the end of the current paragraph, closes #3244 by @chrox in #3256
- feat(annotator): add a loupe when adjusting text selection range, closes #3001 by @chrox in #3261
- fix(eink): more legibility for the dictionary and wikipedia popups on Eink devices, closes #3258 by @chrox in #3262
- feat(annotator): snap text selection to word boundary, closes #3234 by @chrox in #3265
- fix: expose srcdoc also for html sections, closes #3264 by @chrox in #3266
- feat(metadata): support parsing series info from calibre exported EPUBs, closes #3259 by @chrox in #3267
- fix(layout): persistent location for the sidebar toggle, closes #3193 by @chrox in #3269
- doc: update sponsor link in README by @chrox in #3275
- fix(tts): navigate to follow the current TTS location for the next section, closes #3198 by @chrox in #3276
- fix(layout): respect image dimension attribute, closes #3274 by @chrox in #3277
- fix(annotator): apply custom highlight colors in sidebar, closes #3273 by @chrox in #3278
- release: version 0.9.100 by @chrox in #3279
Full Changelog: v0.9.99...v0.9.100
Readest 0.9.99
Release Highlight
- Reading: Added a reading ruler (line highlight) to help guide your eyes while reading
- Reading: Added paragraph-by-paragraph reading mode for more focused navigation
- Reading: Added a speed reading mode to support faster reading workflows
- Reading: Added support for gamepad input to turn pages
- Accessibility: Improved TalkBack support in dropdown menus for smoother navigation
- Accessibility: Page navigation buttons are now always visible to screen readers
- Accessibility: Reading progress is now updated correctly when navigating with screen readers
- Annotations: Expanded highlight customization with more color options
- Annotations: Added an option to export annotations as plain text
- Library: Added grouping by author and series for better library organization
- Library: Added support of marking books as finished
- Search: Added fuzzy search to quickly find settings even with partial keywords
- Table of Contents: Added page numbers for nested TOC entries
- Text-to-Speech: Added navigation controls to return to the current reading position
- Linux: Added an in-app updater for AppImage builds
- E-ink: Improved color support for color E-ink devices to display richer highlights
What's Changed
- fix(account): redirect to auth page if unauthed user is in user page by @chrox in #3008
- Prevent caching from blocking code updates in dev environment by @j-v in #3010
- feat(ui): switch typography to Inter by @Whitestar14 in #3009
- chore: enforce prettier, ignore submodules and vendor files by @Whitestar14 in #3018
- chore(opds): disable popular online opds catalogs in certain regions on App Store by @chrox in #3031
- fix(layout): correctly constrain the maximum width of fixed-layout tables, closes #3028 and closes #3017 by @chrox in #3032
- fix(shortcuts): prevent system search bar from showing with ctrl+f, closes #3013 by @chrox in #3033
- fix(layout): more responsive layout on smaller screens, closes #3029 by @chrox in #3034
- fix(sync): hotfix for the initial race condition for books sync by @chrox in #3038
- fix(sync): correctly update last sync timestamp when the bookshelf has no books yet by @chrox in #3039
- fix(tts): set playback rate after play only on Linux by @chrox in #3040
- fix(annotator): fix instant action on Android by @chrox in #3042
- fix(sanitizer): add XHTML11 doc type to recognize nbsp entity, closes #3024 by @chrox in #3043
- feat(ai): AI reading assistant phase 2 by @WhiteHades in #3023
- chore: fix patched dependencies by @chrox in #3053
- chore: refresh pnpm lockfile by @chrox in #3054
- chore: pin pnpm version for vercel and cloudflare deployment by @chrox in #3055
- chore: less build concurrency on cloudflare to get rid of build container OOM by @chrox in #3056
- chore: update wrangler and next config by @chrox in #3058
- feat(annotation): export annotations with style and color fields in annotation template, closes #1734 by @chrox in #3060
- feat(ai): AI reading assistant phase 2.1 (minor UI/UX updates) by @WhiteHades in #3059
- chore: fix nunjucks bundling by @chrox in #3061
- refactor: rename components/ui to components/primitives by @chrox in #3064
- feat: line highlight to guide reading (reading ruler) by @WhiteHades in #3063
- feat: more highlight colours by @WhiteHades in #3062
- chore: fix dockerfile by @chrox in #3067
- layout: don't show upload icon if auto upload is disabled for cleaner UI by @chrox in #3068
- doc: update donation link via Stripe by @chrox in #3071
- feat(updater): in-app updater for AppImage by @chrox in #3072
- feat(gamepad): support gamepad input to paginate, closes #2432 by @chrox in #3073
- feat(eink): support color E-ink mode to display more colors, closes #3037 by @chrox in #3074
- feat(ruler): support vertical ruler and transparent ruler by @chrox in #3076
- feat: auto position reader ruler to top of page and some fixes by @WhiteHades in #3075
- fix(bookshelf): fixed conflicts of group names with common prefix by @chrox in #3084
- feat: add fuzzy search for searching across all settings by @WhiteHades in #3085
- Add embedding model option to AIPanel by @lilozz2 in #3090
- chore: bump opennextjs and wrangler to the latest versions by @chrox in #3092
- fix(css): no default mix blend mode for hr, closes #3086 by @chrox in #3093
- feat: toggle finished manually by @WhiteHades in #3091
- fix(iOS): disable online catalogs on iOS from appstore channel by @chrox in #3102
- chore: bump next.js to the latest version by @chrox in #3106
- fix(bookshelf): don't show badge or progress for unread book, closes #3103 by @chrox in #3107
- fix(sync): more robust books sync for stale library, closes #3099 by @chrox in #3108
- fix(sync): escape unsafe character in filename by @chrox in #3109
- refactor: responsive SetStatusAlert on smaller screens by @chrox in #3110
- fix(css): mix blend only inline images, closes #3112 by @chrox in #3116
- feat: paragraph by paragraph reading mode by @WhiteHades in #3096
- fix(layout): fixed layout of book reading progress and reader footer bar by @chrox in #3117
- fix(layout): fixed layout of book reading progress and reader footer bar by @chrox in #3125
- fix(a11y): fix accessibility in dropdown menus for TalkBack, closes #3035 by @chrox in #3126
- fix(macOS): fix traffic lights position and visibility on macOS, closes #3129 by @chrox in #3130
- feat(sync): more intuitive pull down to sync gesture and toast info, closes #3128 by @chrox in #3131
- feat(gesture): support two finger swipe left/right to paginate on trackpad, closes #3127 by @chrox in #3132
- fix(layout): fix centered dropdown menu by @chrox in #3133
- fix(opds): more robust parsing for authors in metadata, closes #3120 by @chrox in #3134
- fix(layout): fix z index for dropdown by @chrox in #3135
- Feature/rsvp speed reading by @boludo00 in #3121
- Change setup command for vendors in CONTRIBUTING.md to reflect additional vendor files by @charrondev in #3139
- fix(toc): prevent unintentional scrolling in the TOC, closes #3124 by @chrox in #3144
- fix(progress): show correct progress info for subsections in FB2, closes #3136 by @chrox in #3145
- fix(a11y): add missing aria labels and fix iOS safe insets by @chrox in #3149
- Add enhanced grouping and sorting functionality to the library view by @charrondev in #3146
- fix(layout): fix aligment of options in settings menu, closes #3151 by @chrox in #3163
- fix(layout): responsive select mode actions on smaller screens by @chrox in #3164
- feat(export): add an option to export annotations as plain text, closes #3147 by @chrox in #3165
- fix(kosync): don't show conflict prompt when progress diff is less than 0.01% by @chrox in #3166
- feat(a11y): always show page navigation buttons in reader page for screen readers, closes #3036 by @chrox in #3167
- fix(bookshelf): merge groups and ungrouped books then sort them together by @chrox in #3169
- compat(iOS): disable native CompressionStream/DecompressionStream API in zip.js for iOS 15.x by @chrox in #3170
- feat(toc): add page number for nested TOC items, closes #2953 by @chrox in #3174
- feat(sync): add manual books sync in the main menu by @chrox in #3175
- fix(layout): move sync options inside of account section in settings menu by @c...
Readest 0.9.98
Release Highlight
- Bookshelf: Added the ability to export original book files directly from the book details dialog
- Bookshelf: Added a new sorting option to organize books by publish date
- Bookshelf: Improved performance for large library with faster and more stable imports
- OPDS: Improved download reliability by correctly detecting filenames for PDF and CBZ files
- Proofreading: Added support for whole-word replacement to make text corrections more precise
- Notes: Added the ability to export notes using a customizable template
- PDF: Added support for panning within PDF documents for easier navigation
- PDF: Improved performance by pre-rendering the next page for smoother page transitions
- Text-to-Speech: Added support for word replacement to improve pronunciation during playback
- Text-to-Speech: Fixed an issue where playback speed settings were not applied correctly on Linux
- E-ink: Improved reading stability by preventing unwanted scrolling when animations are disabled or on e-ink devices
- Discord: Added Discord Rich Presence to display your current reading status on Desktop platforms
- Android: Fixed an issue that could cause occasional crashes during app startup
- Fonts: Improved web font loading for faster and more stable text rendering
What's Changed
- fix(settings): avoid stale viewSettings after saving, closes #2912 by @chrox in #2916
- feat: add support for exporting book files in book details dialog, closes #2919 by @chrox in #2930
- fix(android): avoid occasional crash on start on Android by @chrox in #2931
- fix(opds): probe filename when downloading PDFs and CBZ files, closes #2921 by @chrox in #2932
- feat(proofread): add an option for whole word replacement, closes #2934 by @chrox in #2938
- fix(android): only dismiss unpinned sidebar and notebook with back key, closes #2920 by @chrox in #2939
- chore(unittest): test makeSafeFilename by @chrox in #2943
- fix(fonts): fix CORS access error 403 of deno.dev with Origin: tauri://localhost by @chrox in #2944
- perf(fonts): cache first for font cache by @chrox in #2945
- fix(android): fix annotator on Android, closes #2927 by @chrox in #2946
- fix(ios): fix wakelock on iOS, closes #2453 by @chrox in #2948
- feat(bookshelf): add an option to sort books by publish date, closes #2925 by @chrox in #2949
- feat(tts): replace words for TTS, closes #2057 by @chrox in #2952
- feat(sync): cloud deletion in transfer queue by @chrox in #2964
- fix(proofread): support replace text with space by @chrox in #2965
- fix(tts): fix setting playback rate on Linux, closes #2950 by @chrox in #2966
- fix(eink): avoid scrolling if animation is turned off or in eink mode, closes #2957 by @chrox in #2967
- fix(flathub): use custom dbus id for single instance on Linux by @chrox in #2971
- fix(import): read permissions of nested directories when importing books, closes #2954 by @chrox in #2972
- fix: remove non-breaking space in book title by @chrox in #2974
- chore: bump tauri to latest dev by @chrox in #2975
- compat(opds): parse attachment filename from download requests, closes #2969 by @chrox in #2976
- feat(pdf): support panning on PDFs by @chrox in #2981
- chore: bump pdf.js to the latest version by @chrox in #2982
- perf(pdf): pre-render next page for PDFs by @chrox in #2984
- fix(linux): use new AppImage format on Linux, closes #190 by @chrox in #2985
- fix(portable): in-app update the portable version app, closes #2983 by @chrox in #2988
- feat(notes): export notes with custom template, closes #1734 by @chrox in #2989
- feat(bookshelf): show one line of book description in list view of the bookshelf, closes #2955 by @chrox in #2990
- fix(eink): resolved an issue where the dropdown menu would occasionally fail to expand on some Eink devices by @chrox in #2991
- fix(a11y): add missing aria labels for some buttons on TTS panel by @chrox in #2994
- feat(account): support social login with Discord account by @chrox in #2995
- feat(discord): support show reading status with Discord Rich Presence, closes #1538 by @chrox in #2998
- fix(perf): replace JS recursion with native Rust walkdir for imports by @Whitestar14 in #2993
- chore(doc): update sponsors info by @chrox in #3002
- chore(doc): use png resources for sponsors logo by @chrox in #3003
- fix(fonts): host fonts in Readest CDN for more stable web fonts distribution by @chrox in #3005
- release: version 0.9.98 by @chrox in #3006
New Contributors
- @Whitestar14 made their first contribution in #2993
Full Changelog: v0.9.97...v0.9.98
Readest 0.9.97
Release Highlight
- Annotations: Added annotation bubble icons directly on text with instant note popups
- Annotations: Enabled quick highlighting when selecting text
- Annotations: Added the ability to edit the text range of existing highlights
- Annotations: Added an annotation navigation bar for easier browsing
- OPDS: Fixed an issue where CBZ files could not be downloaded from OPDS catalogs
- OPDS: Improved compatibility with Komga OPDS servers
- OPDS: Added support for OPDS servers using self-signed SSL certificates
- PDF: Fixed an issue where some PDF files failed to open
- E-ink: Optimized colors and layout for improved e-ink device readability
- Search: Added search term history for quicker repeated searches
- Text-to-Speech: Reduced excessive pauses between sentences for smoother playback
- File Transfer: Introduced a background transfer queue for uploading and downloading books
- Proofreading: Added a proofread tool that can replace text directly within books
What's Changed
- chore: update app metainfo by @chrox in #2744
- fix(tts): prompt users to log in to use Edge TTS on the web version by @chrox in #2749
- compat(layout): grid layout with fit covers on older browsers, closes #2745 by @chrox in #2756
- fix(pdf): avoid frequent eviction of chunk cache from worker thread, closes #2757 by @chrox in #2759
- refactor(file): avoid eviction race of chunks cache by @chrox in #2761
- chore(pwa): migrate from next-pwa to serwist by @chrox in #2762
- feat(font): support OpenType feature of vrt2 and vert for vertical replacement of some punctuations by @chrox in #2764
- fix(layout): tweak insets for vertical layout by @chrox in #2767
- fix(layout): workaround for hardcoded image container by @chrox in #2769
- fix(opds): correctly parse file extension for CBZ files from OPDS servers, closes #2765 by @chrox in #2771
- refactor(proofread): refactor UI and i18n for proofread tool by @chrox in #2783
- fix(sw): use NetworkFirst for navigation to prevent blank page on updates by @chrox in #2784
- fix(layout): fixed line clamp for config items on small screens by @chrox in #2792
- fix(annotator): adjust underline position to the center of two lines, closes #2772 by @chrox in #2793
- feat(annotator): show notes popup when annotation bubble icon is clicked, closes #1845 by @chrox in #2798
- fix(layout): dismiss annotation popup on mobile when navigating by @chrox in #2799
- feat(annotator): support rendering vertical annotation bubbles by @chrox in #2801
- fix(settings): override book text align of left by @chrox in #2802
- compat(epub): detect missing writing direction for some EPUBs by @chrox in #2803
- chore(ios): drop support for iOS below 15.0 by @chrox in #2804
- chore: bump tauri to latest dev by @chrox in #2805
- chore: bump opennext, wrangler and serwist to the latest versions by @chrox in #2807
- fix(css): only override background color of hr when it has background image by @chrox in #2808
- feat(annotator): support quick actions for text selection, closes #2505 by @chrox in #2813
- fix(annotator): delay highlight action to prevent immediate onShowAnnotation trigger by @chrox in #2820
- feat(transfer): add a background transfer queue system for book uploads/downloads by @chrox in #2821
- fix(settings): ensure global settings sync across all open panes by @aangelinsf in #2818
- fix(library): upload files also for open with import and opds import, closes #2826 by @chrox in #2827
- fix(metadata): fixed sometimes svg book cover is rendered blank by @chrox in #2829
- feat(css): support overriding link color by @chrox in #2830
- fix(ios): fixed error when importing file with urlencoded names by @chrox in #2831
- fix(layout): set image width for vertical inline images by @chrox in #2832
- fix(android): don't navigate back with the back button for more predictable navigation by @chrox in #2835
- feat(search): add search results navigation bar, closes #1183 by @chrox in #2842
- fix(tts): reduce the pause duration between sentences in Edge TTS, closes #2837 by @chrox in #2844
- feat(search): add annotations navigation bar, closes #2060 by @chrox in #2849
- compat(opds): support Komga OPDS v1.2 and v2, closes #2839 by @chrox in #2851
- compat(footnote): support alt footnote inside placeholder anchor by @chrox in #2858
- feat(search): support search terms history, closes #2836 by @chrox in #2859
- perf(search): use cache for search results by @chrox in #2861
- fix(search): should be able to terminate search when sidebar is invisible by @chrox in #2863
- refactor(annotatot): more cleaner text selector on Android by @chrox in #2867
- feat(annotator): support editing text range of highlights by @chrox in #2870
- fix(login): Fix login message field by @lcd1232 in #2879
- feat(annotator): instant highlighting with mouse, touch or pen by @chrox in #2881
- feat(annotator): support vertical layout for annotation editor by @chrox in #2882
- fix: avoid hydration mismatch for tauri app by @chrox in #2884
- feat(eink): optimize color and layout for e-ink mode by @chrox in #2887
- TTS: footnotes anchors and superscript filtering by @Hermotimus in #2890
- feat(config): add an option to toggle footbar by tapping on the footbar by @chrox in #2891
- perf(sync): persist partial library sync to prevent full retry on failure by @chrox in #2892
- fix(sanitizer): normalize non-breaking spaces for WebView compatibility by @chrox in #2893
- fix(proofread): support text replacement for text with no word boundaries, closes #2889 by @chrox in #2894
- fix(css): table and header layout, closes #2874 by @chrox in #2896
- fix(metadata): no need to download book to display book details, closes #2857 by @chrox in #2897
- fix(opds): temporary workaround for self-signed cert for OPDS server, closes #2871 by @chrox in #2900
- fix(windows): update shortcut to point to current installation, closes #2878 by @chrox in #2901
- fix(windows): update shortcut to point to current installation, closes #2878 by @chrox in #2902
- fix(css): respect css for page break and minimum font size, closes #2895 by @chrox in #2903
- fix(css): primary btn style for e-ink mode by @chrox in #2905
- fix(fonts): update font CDN links to use deno.dev for improved reliability by @KonghaYao in #2906
- fix(settings): correctly setting configs for selected book in parallel read, closes #2825 by @chrox in #2908
- release: version 0.9.97 by @chrox in #2909
New Contributors
- @aangelinsf made their first contribution in #2818
- @lcd1232 made their first contribution in #2879
- @Hermotimus made their first contribution in #2890
- @KonghaYao made their first contribution in #2906
Full Changelog: v0.9.96...v0.9.97
Readest 0.9.96
Release Highlight
- TTS: Resolved an issue where Edge TTS was blocked in certain regions
- OPDS: Improved compatibility with older versions of Calibre Web
- OPDS: Added an instant search bar for faster browsing in OPDS catalogs
- OPDS: Added a curated book catalog from Standard Ebooks
- Bookshelf: Added a “Group Books” action to the context menu
- Comics: Fixed layout issues to improve comic book reading
- Layout: Footnote popups now adapt correctly to different screen sizes
- Layout: Fixed an issue where the maximum inline width was not applied to EPUBs
- Sync: Improved file downloading by correctly handling special characters in filenames
- UI: Added an option to temporarily dismiss the reading progress bar
- Settings: Screen brightness adjustments now apply only to the reader view
- iOS: You can now open files directly in Readest from the Files app
- macOS: Added a global menu option to open files with Readest
What's Changed
- feat: refresh account info after managing cloud storage by @chrox in #2648
- fix(macOS): delay writing to clipboard to ensure it won't be overridden by system clipboard actions, closes #2647 by @chrox in #2649
- add rust and node deps to the nix devshell by @jpetrucciani in #2655
- fix(footnote): add custom attributes for footnote in sanitizer, closes #2651 by @chrox in #2657
- refactor(layout): refactor page margins for pixel precision, closes #2652 by @chrox in #2663
- compat(opds): fallback to Basic auth if no WWW-Authenticate challenge in the response headers, closes #2656 by @chrox in #2673
- chore: repackaging readest koplugin for updater, closes #2669 by @chrox in #2676
- fix(iap): don't initialize billing on Android without google play service, closes #2630 by @chrox in #2677
- fix(tts): avoid false default en language code for TTS by @chrox in #2678
- chore(koplugin): add version info in the meta file by @chrox in #2679
- fix(comic): fixed layout for comic books, closes #2672 by @chrox in #2680
- feat(opds): added books catalog from standardebooks.org by @chrox in #2681
- fix(opds): select proper opds search link by @chrox in #2683
- chore(pwa): more aggressive offline cache for the web version by @chrox in #2686
- fix(pwa): don't cache api requests and cache client-side navigation routes by @chrox in #2687
- fix(layout): fix responsive layout for footnote popup by @chrox in #2688
- chore: bump tauri to the latest dev branch by @chrox in #2690
- fix(sync): handle special characters in filenames when downloading by @chrox in #2694
- feat(ui): progress info with cycleable display modes by @mikepmiller in #2682
- fix(layout): fixed the layout of the selector of the translator providers by @chrox in #2701
- chore: bump next.js to version 16.0.10 by @chrox in #2702
- fix(web): fixed router glitches for library page after returned from reader by @chrox in #2703
- feat(iOS): support open file with Readest in Files App, closes #2334 by @chrox in #2705
- feat(macOS): add open file global menu for macOS, closes #2692 by @chrox in #2708
- fix(layout): fixed max inline width not applied for EPUBs, closes #2706 by @chrox in #2711
- fix(layout): make sure annotation popups can be accessible in some edge cases, closes #2704 by @chrox in #2713
- feat(opds): instant search bar for opds catalog, closes #2707 by @chrox in #2714
- fix(opds): expose X-Content-Length header for CORS requests by @chrox in #2715
- feat(bookshelf): add group books button in context menu, closes #2698 by @chrox in #2718
- chore(deps): bump actions/cache from 4 to 5 in the github-actions group by @dependabot[bot] in #2719
- fix(settings): screen brightness setting only applies to the reader page, closes #2717 by @chrox in #2720
- fix: add stats API and fix fd leak, closes #2323 by @chrox in #2723
- fix(layout): fix bleed layout for images by @chrox in #2729
- fix: make sidebar and notebook pin states persist after refresh by @chrox in #2730
- fix(layout): line clamp opds url, closes #2726 by @chrox in #2731
- feat(replacement): text replacement feature for EPUB books by @qianxuege in #2725
- fix(tts): resolve Edge TTS being blocked in certain regions by @chrox in #2741
- refactor: temporarily disable the proofreading feature for a hotfix release ahead of a major refactor by @chrox in #2742
- release: version 0.9.96 by @chrox in #2743
New Contributors
- @jpetrucciani made their first contribution in #2655
- @mikepmiller made their first contribution in #2682
- @qianxuege made their first contribution in #2725
Full Changelog: v0.9.95...v0.9.96