Skip to content

Releases: Aatricks/EasyReader

V0.5.6

26 Apr 20:38

Choose a tag to compare

Changes

  • Build Flavors: Added separate standard and ai app flavors so the default build works without AI-specific dependencies.
  • AI Summaries: Reworked summarization behind a SummaryEngine abstraction with a disabled fallback for standard builds and an AI-backed implementation for the ai flavor.
  • AI Initialization: Fixed concurrent initialization in LlmEdgeSummaryEngine so multiple requests share one initialization instead of racing or loading the model multiple times.
  • CI Updates: Split GitHub Actions validation into standard debug, AI debug, and release-specific workflows to avoid requiring signing secrets during normal validation.
  • Release Builds: Updated CI and documentation to use explicit flavor-specific Gradle tasks such as assembleStandardDebug, testStandardDebugUnitTest, and assembleAiDebug.
  • Security: Added safer DNS resolution for network requests to block localhost, private networks, link-local addresses, metadata IPs, and DNS rebinding-style redirects.
  • Web Fetching: Removed unsafe Jsoup.connect fallback paths so HTML fetching goes through the shared OkHttp client and security policy.
  • Cloudflare WebView: Hardened WebView navigation and settings, blocked unsafe schemes/hosts, and ensured the WebView is destroyed when dismissed.
  • Reading Progress: Refactored reading progress into ReaderProgressController, added explicit progress update semantics, and improved lifecycle-safe progress persistence.
  • Database Safety: Enabled Room schema export, added migration coverage across supported schema versions, removed persisted transient selection state, and removed destructive migration fallback.
  • Library State: Moved item selection out of persisted database state and kept it as transient UI/ViewModel state.
  • PDF Support: Added a bounded PDF document handle pool, document-scoped PDF image caching, deterministic image filenames, and cache cleanup for extracted PDF images.
  • Image Loading: Refactored image caching and downloading into dedicated ImageCache and ImageDownloader components.
  • Image Downloads: Streamed large web images to disk with byte limits and temp-file handling instead of buffering entire images in memory.
  • Image Prefetching: Added priority-aware image downloads so speculative prefetches no longer poison user-requested image loads.
  • Prefetching: Replaced unbounded prefetch retry behavior with explicit, bounded retry limits.
  • EPUB Images: Added Coil-based EPUB image loading through a custom fetcher, reducing manual bitmap lifecycle management.
  • Testing: Added and reorganized tests for migrations, AI initialization, URL security, progress persistence, image downloading, WebView navigation, and reader state.
  • Benchmarks: Moved benchmark-style tests out of the normal unit-test path so PR tests stay deterministic.
  • Dependencies: Centralized dependency declarations through the Gradle version catalog and updated AI integration to use the Maven-published llmedge dependency.
  • Project Cleanup: Renamed the Gradle root project to EasyReader, updated package namespace references, removed stale UI dump artifacts, and cleaned up documentation.

Fixes

  • Fixed clean-clone builds by removing the required local llmedge-release.aar from the default build path.
  • Fixed PR CI incorrectly depending on AI flavor and release signing.
  • Fixed possible duplicate AI model initialization under concurrent summary requests.
  • Fixed possible data loss risk from Room destructive migration fallback.
  • Fixed stale nullable reading progress fields that could not previously be cleared.
  • Fixed PDF handle pooling so active and idle handles are bounded together.
  • Fixed leaking randomly named PDF image cache files.
  • Fixed full-image response buffering that could cause memory spikes on large images.
  • Fixed speculative image requests causing visible image loads to fail.
  • Fixed WebView URL validation false positives caused by substring-based scheme checks.
  • Fixed image dimension sniffing to handle partial reads correctly.
  • Fixed duplicate or misplaced AI unit test source sets.
  • Fixed misleading README build commands after adding product flavors.

Full Changelog: V0.5.5...V0.5.6

V0.5.5

22 Apr 15:50

Choose a tag to compare

Changes :

  • PDF Support: Added resume page support, preloading, and optimized content extraction.
  • Image Viewer: Added image subsampling, optimized bitmap decoding, enhanced zoom, and animated loading UI.
  • Long-Strip & Webtoons: Improved rendering and capped strip group sizes to maximize scroll performance.
  • Text & HTML: Implemented TextFormattingPipeline and refactored HtmlParser for better sentence merging and selection.
  • Gestures & Navigation: Added scroll gesture handling, simplified scroll boundary checks, and prevented false edge navigation triggers.
  • Caching Strategy: Overhauled caching and request handling in WebContentLoader and ChapterListSheet.
  • Chapter Management: Improved unread chapter selection, auto-delete logic, and chapter normalization.
  • Content Resolution: Refactored ContentRepository to improve content type resolution.
  • UI Updates: Debounced searches, updated navigation to select the latest chapter via UI snapshots, and hid finished novels in drawers.
  • Performance: Optimized build times, network, memory, and CPU usage.
  • Testing: Added unit tests for reading lifecycle, UI logic, library view models, and ContentRepository.
  • Dependencies: Updated llmedge-release.aar and added R8 dontwarn rules for llmedge/Ktor dependencies.
  • Fixes: Corrected PDF loading state handling, fixed AbstractITextEvent errors, fixed BottomNavigationBar slider thumb size, and enforced minimum height in ReaderImageView.

Full Changelog: V0.5.4...V0.5.5

V0.5.4

01 Mar 19:31

Choose a tag to compare

What's Changed

  • Performance Optimization: Eliminate Repeated Regex Compilation in TextUtils by @Aatricks in #59
  • Optimize repeated Regex compilation in string replacement utilities by @Aatricks in #60
  • Optimize O(N^2) Lookup in NovelFireSource Search Fallback by @Aatricks in #61
  • Optimize Library Updates Concurrency by @Aatricks in #62
  • Optimize Regex Compilation in SummaryService by @Aatricks in #63
  • Optimize O(N^2) list lookup in NovelFireSource with HashSet by @Aatricks in #64
  • Refactor TextUtils to use static Regex instances by @Aatricks in #65
  • Optimize text formatting string allocations in formatText by @Aatricks in #66
  • Added support for image parsing in pdfs by @Aatricks

Full Changelog: V0.5.3...V0.5.4

V0.5.2

20 Feb 23:10

Choose a tag to compare

What's Changed

  • Secure Backup Configuration by Whitelisting Safe Domains by @Aatricks in #46
  • Fix Arbitrary Local File Access via Intent by @Aatricks in #47
  • Optimize background image caching with bounded worker pool by @Aatricks in #50
  • Fix Zip Bomb vulnerability in EPUB processing by @Aatricks in #51
  • Optimize library updates by skipping inactive novels by @Aatricks in #52
  • Optimize PDF page loading by caching PdfDocument by @Aatricks in #53
  • Fix SSRF via Redirects in NetworkModule by @Aatricks in #54
  • Optimize EPUB loading with ZipFile and caching by @Aatricks in #55

Full Changelog: V0.5.1...V0.5.2

V0.5.1

13 Feb 18:18

Choose a tag to compare

What's Changed

  • Limit concurrency in NovelFireSource to prevent rate limiting by @Aatricks in #40
  • Limit concurrent background image downloads in ContentRepository by @Aatricks in #35
  • Optimize PDF text extraction by using constant Regex patterns by @Aatricks in #36
  • Optimize cache size calculation using NIO walkFileTree by @Aatricks in #37
  • Optimize adjustChapterUrl with static Regex patterns by @Aatricks in #38
  • Optimize LibraryRepository.updateReadingMode by @Aatricks in #41
  • Optimize LibraryRepository.updateNovelInfo with direct SQL update by @Aatricks in #42
  • Optimize ReaderViewModel auto-deletion concurrency by @Aatricks in #43
  • Optimize library updates with batch processing by @Aatricks in #44

Full Changelog: V0.5...V0.5.1

V0.5

06 Feb 21:03

Choose a tag to compare

What's Changed

  • Optimize EPUB image extraction using ZipFile random access by @Aatricks in #33
  • Add pinch-to-zoom and double-tap zoom support for Reader images by @Aatricks in #24
  • Include database in data extraction rules for backup by @Aatricks in #25
  • Disable Cleartext Traffic to Enforce HTTPS by @Aatricks in #26
  • Prevent redundant image request enqueueing in ReaderScreen by @Aatricks in #27
  • Security Fix: Remove insecure 'Ignore SSL Errors' option by @Aatricks in #28
  • Implement lazy loading for PDF content to improve performance by @Aatricks in #29
  • Fix global hostname verification vulnerability by @Aatricks in #30
  • Fix WebView Mixed Content Vulnerability by @Aatricks in #31
  • Fix Intent URL Validation & SSRF Vulnerability by @Aatricks in #32
  • Optimize library update performance with parallel requests by @Aatricks in #34

Full Changelog: V0.4.8...V0.5

V0.4.8

18 Jan 12:10

Choose a tag to compare

Changes :

  • Add selection buttons, auto deletion and decimal chapter numbers by @Aatricks
  • Add chapter count to ExploreItem and display in ExploreScreen by @Aatricks
  • Fixed an issue leading to mangabat novel not being set on the first chapter but on the welcome page by @Aatricks

Full Changelog: V0.4.7...V0.4.8

V0.4.7

16 Jan 10:07

Choose a tag to compare

What's Changed

Full Changelog: V0.4.6...V0.4.7

V0.4.6

13 Jan 16:50
8312995

Choose a tag to compare

What's Changed

  • fix: improve EPUB image parsing and path resolution by @Aatricks in #22

Full Changelog: V0.4.5...V0.4.6

V0.4.5

12 Jan 19:41
b5b7154

Choose a tag to compare

What's Changed

Full Changelog: V0.4.4...V0.4.5