github marcoand75/cpr-vcodex-steroids 1.5.0.9-dev1-cpr-vcodex-steroids

CPR-vCodex Steroids v1.5.0.9-dev1

🔀 Upstream vCodex 1.5.0.9 Alignment

This release integrates all improvements and fixes from upstream vCodex 1.5.0.6 through 1.5.0.9:

  • WiFi fix: resolved crash when WiFi connection fails (back button on network selection screen)
  • EPUB pagination: improved handling of decomposed characters and basic table support
  • PNG sleep screen: increased PNG decoder buffer size to support wider images
  • JsonSettingsIO: hardened serialization with load-time validation, prevents settings corruption
  • CSS caching: stripping of unused CSS rules, cache destroyed when invalid
  • Font performance: optimized glyph lookup, faster font rendering, Bookerly auto-hinting
  • Image double refresh: double FAST_REFRESH technique with selective blanking for large grayscale images (pablohc)
  • Dangling pointer fix in GfxRenderer and EPUB sections

⚡ Performance & Stability (Steroids)

Sleep screen: no more 30-second wake delays on X3 🚀

Some Reddit users with X3 reported 30+ second sleep/wake times (compared to 4-5 seconds on standard vCodex). The culprit was a duplicate framebuffer write to SD card during sleep entry. We removed the redundant write, saving 300-800ms on slow SD cards. When "Cycle screensaver on tap" is disabled, zero SD writes occur during sleep — performance now matches standard vCodex.

Screensaver: no more crashes when waking back to the reader 🎨

Fixed a crash (OOM) that occurred when the screensaver displayed a PNG and then returned to the reader. The heap would become so fragmented that deserializing the next page section failed with std::bad_alloc. The PNG decoder and font caches are now released before the reader resumes, keeping the heap clean.

PNG screensaver: no more random white screens 🖼️

Some PNG images showed a blank white screen even though the file existed on disk. The PNGdec library was returning SUCCESS even when file opening failed — we now explicitly validate image dimensions after open, with clear error logging.

Exiting books: clean, instant transitions 📖

When exiting any book (EPUB, XTC, TXT, KOReader sync), returning to Home now uses a silent restart that:

  • ❌ Skips the "Loading..." popup
  • ❌ Skips the display white flash
  • ❌ Fully defragments the heap
  • ✅ Takes you back to Home in an instant

This same mechanism is used for post-reading statistics screens. No more slow reboots with a loading bar.

🐛 Bug Fixes (Steroids)

File Transfer: Back button no longer reboots your device 🔌

Opening "File Transfer" and pressing Back without starting any WiFi operation used to display "Rebooting device" and force a restart. Now you simply return to Home. The reboot is kept only when WiFi and the web server have actually been active (to clean up fragmented memory).

Text clippings: navigation and highlighting now work correctly ✂️

Fixed an inherited upstream bug where clipping navigation and text selection highlighting didn't work properly. The text search algorithm is now unified between positioning and highlighting, with case-insensitive matching and punctuation skipping.

🛠️ Technical Improvements (Steroids)

  • SleepScreenCache: removed unnecessary heap allocation in the cache path (uses stack buffer instead)
  • PNG decoding: the decoder survives between image changes without re-allocating
  • Removed incompatible upstream PNGdec patch that conflicted with the Steroids screensaver system
  • Data type and heap allocation alignment to prevent memory corruption and std::bad_alloc crashes
  • PngSleepRenderer: fixed memset and open() failure handling in the SS→SLP retry path

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

NewReleases is sending notifications on new releases.