1.5.0.2-dev2-cpr-vcodex-steroids
·
422 commits
to master
since this release
CPR-vCodex Steroids — Quick Fixes
⚡ Library Performance
- 🚀 Instant open — incremental scan skips all e-ink refreshes and DFS counting pass. Library opens immediately when no books changed
- 📊 Dynamic progress bar — ~10 updates total regardless of library size (230 books → every 23, 50 books → every 5)
- 🔍 Binary search scan — O(log n) file matching via sorted array +
std::lower_bound, zero extra RAM vs old hash map - 📁 No per-file I/O — file sizes read from directory entries, eliminating hundreds of
Storage.open()calls
📖 Collections Fixes
- 📑 Proper pagination —
collectionBookCount()reads exact count from index, works correctly with 47+ books per collection - 🔄 Cover generation — works inside collections just like normal browsing mode
- ↩️ Back navigation — collection books → collection list → library exit
🧭 Navigation
- 🔄 First↔last page wrap —
lastPage_properly updated on every wrap-around transition - 📄 Page cache refresh — called on all page changes (Up/Down/Left/Right) for correct display
- 🎯 Selector never empty — clamped to valid positions on incomplete last pages
🔧 Stability
- ✅ Library always in sync — incremental
LibraryIndex::scan()on every entry detects added/removed/modified books - 🛡️ Renders suppressed during scan — no unrelated Activity renders during
walkDirs()processing pass - 🗑️ index rebuild skipped —
buildIndices()only runs when books actually changed (added > 0 || removed > 0)