github marcoand75/cpr-vcodex-steroids 1.3.0.30-dev9-cpr-vcodex-steroids

Quick Screensaver While Reading You can now launch the screensaver without closing your book. While reading, press Select to open the reader menu and choose the new "Screensaver" option at the bottom. The screensaver runs with your configured images and settings. When you press any button to exit, you return directly to the exact page you were reading — no menu, no delay, just pick up where you left off.

Screenshot 2026-07-06 104517

Reading Time Left in the Status Bar
You can now see how much time you'll need to finish the current chapter or the whole book, right in the status bar at the bottom of the screen.

The estimate is based on your own reading pace: every time you turn a page forward, the device learns how fast you read and refines the prediction over time. It only counts natural page turns — if you pause for more than three minutes, it won't skew your pace.

How to turn it on
Go to Settings → Reader → Customise Status Bar → Time Left and choose:

Hide – nothing is shown (default)
Chapter – shows the estimated time left to finish the current chapter
Book – shows the estimated time left to finish the entire book
The time appears on the left side of the status bar, next to the battery icon, in a clean short format like 45 min or 2h 10m. The chapter or book title stays centered as usual.

If you switch between books, each one keeps its own reading pace, so the estimate stays accurate whenever you come back.
Screenshot 2026-07-06 131436
Screenshot 2026-07-06 131445

Changes in src/components/LibraryCache.cpp

  1. extractBookMetadata() — scope-limited Epub destruction + heap guard

Epub object now lives in an explicit { ... } block so it's destroyed before processing the next book, releasing ZIP buffers and page data immediately.
Before calling epub.load(true, true), checks ESP.getFreeHeap() >= 45000. If heap is critically low, the EPUB load is skipped and the function returns false. The book title falls back to the filename.
Function signature changed from void to bool (return value currently unused but available for future callers).
2. scan() — yield/WDT between books

Every book processed, calls yield() + esp_task_wdt_reset() to prevent the ESP32-C3 watchdog from triggering during long scans.

Don't miss a new cpr-vcodex-steroids release

NewReleases is sending notifications on new releases.