Skip to content

V0.5.6

Choose a tag to compare

@Aatricks Aatricks released this 26 Apr 20:38

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