Releases: Aatricks/EasyReader
Releases · Aatricks/EasyReader
V0.5.6
Changes
- Build Flavors: Added separate
standardandaiapp flavors so the default build works without AI-specific dependencies. - AI Summaries: Reworked summarization behind a
SummaryEngineabstraction with a disabled fallback for standard builds and an AI-backed implementation for theaiflavor. - AI Initialization: Fixed concurrent initialization in
LlmEdgeSummaryEngineso 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, andassembleAiDebug. - 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.connectfallback 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
ImageCacheandImageDownloadercomponents. - 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
llmedgedependency. - 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.aarfrom 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
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
TextFormattingPipelineand refactoredHtmlParserfor 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
WebContentLoaderandChapterListSheet. - Chapter Management: Improved unread chapter selection, auto-delete logic, and chapter normalization.
- Content Resolution: Refactored
ContentRepositoryto 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.aarand added R8 dontwarn rules for llmedge/Ktor dependencies. - Fixes: Corrected PDF loading state handling, fixed
AbstractITextEventerrors, fixedBottomNavigationBarslider thumb size, and enforced minimum height inReaderImageView.
Full Changelog: V0.5.4...V0.5.5
V0.5.4
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
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
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
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
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
V0.4.6
V0.4.5
What's Changed
- Make 'New' badge clickable and clear updates when reading by @google-labs-jules[bot] in #20
- Refactor by @Aatricks in #21
Full Changelog: V0.4.4...V0.4.5