CPR-vCodex Steroids — First Release
Built on CPR-vCodex 1.3.0.30 (fork of franssjz/cpr-vcodex), inheriting all upstream features: reading analytics, heatmaps, achievements, dictionaries, flashcards, bookmarks, SD-card fonts, KOReader Sync, Bionic Reading, dark mode, and more.
What's New in Steroids
📚 Full E-Book Library
A complete grid-based library browser — the largest addition in this release.
- Configurable grid layout: 3×3, 4×3, 6×3, or 8×3 columns
- Per-page thumbnail generation at exact cell size with progress bar
- Binary metadata cache (
LibraryCache) on SD for instant re-open - EPUB, XTC, TXT, and Markdown support
- Accent-insensitive sorting
- Content filters: All Books, Favourites, Latest Read with live header indicator
- Search and incremental indexing with render deduplication
- Cover placeholders for books with missing covers
- Incremental startup sync — detects new/removed books on boot without full rescan
- Configurable library root directory (editable on-device)
- Cover management: delete individual, page, or all covers; auto-regeneration
📖 Book Context Menu & Metadata Viewer
Long-press on any book (Home Carousel or Library grid) opens a 9–12 item menu:
- Open book, Reading Stats, View Metadata
- Add/Remove Favorites, Mark as finished/unfinished
- Delete Book Cache (EPUB), Delete cover thumbnail, Delete page covers, Delete all covers
- Reindex Library, Clear theme cache, Filter switching (All / Favourites / Latest Read)
Metadata viewer parses EPUB OPF fields: dc:publisher, dc:description, dc:date, dc:identifier, dc:subject, dc:rights, dc:contributor.
🎨 Lyra Carousel & Theme Enhancements
Cyber-style Data Panel — replaces simple title/author text with a detailed two-column panel:
- Book: Time, Sessions, Progress, ETA
- Stats: Today, Goal, Streak, Finished
- Segment progress bar or COMPLETED label
- All labels i18n-ready (EN + IT, 21 languages fall back to English)
- Shows ALL books on homepage
Estimated Reading Time — appended to progress badges on all Lyra themes (e.g. "35% ~2h 15m"). Uses reading stats logic, requires ≥10 min reading and ≥5% progress, rounds to 5-minute increments.
Priority Ribbon Badges on covers:
- Completed ✓ (black triangle top-right with white checkmark)
- Favorite ♥ (black triangle top-left with white heart)
- Opened indicator (black bottom band with two white dots)
- Scaled for e-ink visibility (22→36px triangles, 8→12px band)
LyraMarcoand75 Custom Theme — distinct theme variant with per-theme cover caching. Separate carousel cache per theme prevents cross-theme corruption.
Theme Cache Clearing — context menu item to delete all *.bin files from carousel cache, with immediate frame regeneration.
🛡️ E-Ink Screensaver
Low-power screensaver app with battery protection:
- Automatic sleep bypass — keeps display refreshed without full sleep cycles
- Battery-protection deep sleep after configurable timeout
- Wake-on-any-button or single custom button
- Sleep screen rotation with short power button press (inspired by CrumBLE firmware)
- 4-gray-level BMP cycling fix — respects refresh settings correctly
🎯 Custom App Icons
Hand-crafted monochrome icons for e-ink clarity:
- Library (bookshelf), Sleep (Zzz), Screen Clean (monitor), Reading Heatmap (calendar)
- Visibility fixes across all themes (Base, Lyra, LyraCarousel, LyraMarcoand75)
- Resized corner ribbons on library covers
⚙️ STRING-Type Setting Support
On-device STRING setting editing added to SettingsActivity. Previously web-only; now editable via KeyboardEntryActivity. Enables "Library root directory" configuration directly from the device.
⚡ Performance & Memory Optimizations
- Inventory caching — avoids repeated SD traversal
- System directory exclusion (
.,crosspoint,sleep*,font*,dictionaries,exports) - Zero-size thumbnail cleanup (once/day)
- Redundant
Storage.exists()removed from scan hot loop - Heap exhaustion fix — cover generation respects memory budget
- Corrupted favorite heart icon fix — drawn at native 32×32 size
Feature Summary
| Category | Features |
|---|---|
| 📚 Library | Grid browser, metadata cache, content filters, incremental sync, configurable root, cover management |
| 📖 Navigation | 9–12 item context menu, EPUB OPF metadata viewer |
| 🎨 Theme | Cyber data panel, reading time ETA, priority ribbons, LyraMarcoand75 theme, per-theme cache |
| 🛡️ Tools | E-ink screensaver, sleep screen rotation, 4-gray BMP fix |
| 🎯 UI | Custom app icons (bookshelf, Zzz, monitor, calendar), theme-wide visibility fixes |
| ⚙️ System | On-device STRING setting support |
| ⚡ Performance | Inventory caching, directory exclusion, heap fixes, icon sizing fix |
All CPR-vCodex upstream features are fully included. This release only adds the features above without removing or degrading any upstream functionality.
Built and tested on Xteink X4 (ESP32-C3, ~380 KB usable RAM).