v4.1.20rev495 — LATEST
July 28, 2026 · Patch Update
[ Compatibility ]
- Verified compatibility with Android 8–14 for the updated crash-reporting stack.
[ Warning ]
- A small number of Android 13 devices may experience a one‑time delay on first launch while crash‑reporting hooks reinitialize. This resolves after the first successful app open.
[ New Features ]
- Auto-Backup: optional toggle in Backup & Restore; silently creates backup on close/background. Auto-backups (tagged "auto", latest 3 kept) reuse the manual export pipeline and auto-clean older ones.
- Per-novel write lock: prevents concurrent saves (e.g. progress autosave during app resume) from colliding on the same file.
- Automatic cleanup of orphaned `.tmp` files from interrupted atomic writes.
- Low-storage warning before novel download: warns if <200 MB free, shows exact free space, allows cancel or continue.
- Update-available badge: a dot on the Settings tab icon when a newer version is available.
- Backup size estimate: the "Label this backup" step now shows estimated size (before compression).
- Automatic chapter download retry: failed chapters retry up to 3 times, then skip; all skipped chapters retried again (3 attempts each) at the end before finalizing.
- "Recently Added" tag on library cards: unread novels added in the last 24 hours show "Recently Added" instead of "Unread", reverting automatically after 24h.
- "Last Read: Xd" tag: novels with reading progress not opened in 2+ days show the days since last read, replacing the normal status badge.
[ Fixes ]
- Fixed a race condition where overlapping saves sharing the same temp filename caused a
moveAsync rejection.
- Fixed orphaned `.tmp` files left by failed atomic writes, which previously wasted storage over time.
- Fixed the library card "Continue" button: it now jumps directly to the reader at the last-read chapter. Novels without progress still show "Read" and open the detail page.
- Fixed the reader's close button returning to the library instead of the novel detail page when opened via "Continue". It now always returns to the detail screen.
- Fixed auto-scroll speed changes requiring pause/resume to apply. Adjusting speed while auto-scroll is running now takes effect immediately.
[ Changes ]
- Changed default library tab on app open from "All" to "Reading".
- The filter tab bar now auto-scrolls to keep the active tab centered, whether selected by tap or swipe.
[ Improvements ]
- Atomic file writes now serialized per destination path, queuing overlapping writes to avoid races.
- Failed library writes now clean up partial state automatically.
- Improved the chapter list empty state on the novel detail screen with an icon, clearer text, and a "Go to Updates" button.
- Minor internal cleanup across reader, settings, and library context files to reduce
any usage and tighten type coverage.
v3.7.55rev411
July 16, 2026 Update
⚙️ [ NEW ]
- ZIP‑only backups — New backups are now always created as a single
.zip file, built via a streaming, memory‑safe export.
- Dual‑format restore — The restore flow supports both ZIP (v5+) and legacy JSON (v4 and earlier).
- Share button restored — The backup completion alert now includes a "Share Backup" button.
- Native crash reporting (Sentry) — Native crash capture wired in at app launch, plus Session Replay.
- Novel Cover compression — Covers are resized/compressed via
expo-image-manipulator.
- Check for Updates — Added the button in Settings to manually check for new versions.
- Notif Bell Update — Bell icon appears when a new update is available.
- Chapter Deletion — Proper chapter deletion system added.
- Self Updater Implementation — In-app APK download and install with progress tracking.
- Chapter Limiter — Thresholds at 200/250/300 chapters with a shared hook and modal.
⚡ [ IMPROVEMENTS ]
- Consolidated code — Single
exportBackup() for streaming ZIP export.
- Silent skip guard — No more per‑chapter skip logging.
- Faster stuck-loop detection — Consecutive-skip counter breaks the loop at 5 skips.
- Battery drain fix — TTS highlight matching optimized with
useMemo.
- Update checker fix — Correctly recognizes installed version to avoid false update prompts.
🗑️ [ REMOVED / REPLACED ]
- Removed JSON backup path — Old
exportBackupJSON() is gone.
- Old single‑blob JSON export — Likely source of OOM crashes on large libraries.