1.5.0.22-dev1-cpr-vcodex-steroids
π CPR-vCodex Steroids β Upstream Alignment + Status Bar Enhancements
This release consolidates the full upstream 1.5.0.20β1.5.0.22 alignment into Steroids, plus expands the status bar time display with two new reading-time modes.
π Status Bar Time-Left: 2 New Modes (5 total)
The reader status bar now offers 5 options instead of 3 for what to display:
| Mode | Shows | What it means |
|---|---|---|
| Hide | β | Nothing (as before) |
| Chapter | Est. time to finish the chapter | Per-book pace from page turns (as before) |
| Book | Est. time to finish the book | Per-book pace + progress extrapolation (as before) |
| π Session Duration | Time read since you opened this book | Resets every time you open/close a book. Shows how long you've been reading this session. |
| π Today Total | Total time read today | Sum of all reading today across all books, including the current session. |
The label in settings was renamed from "Time Left" β "Display Time" (EN) / "Tempo rimanente" β "Tempo visualizzato" (IT) since it now also shows elapsed time, not just remaining estimates.
How it works (simplified):
- Session Duration uses the internal reading session timer β it starts counting when you open a book and resets when you close it.
- Today Total reads from the existing daily summary file (
summary.json), which already tracks everything you've read today. It includes the current session automatically β no double counting.
Settings β Customize Status Bar β Display Time β cycle through all 5 options. Also configurable from the web interface (/steroids-settings page).
π οΈ What Was Ported from Upstream 1.5.0.20β1.5.0.22
All deferred items from the previous alignment are now resolved:
π HAL Crash Detection
- Ported the panic capture mechanism (
PANIC_CAPTURE_MAGIC) that distinguishes genuine crashes (watchdog resets with the magic marker set) from normal deep-sleep wake cycles. False-positive crash reports after sleep are now suppressed. CrashActivityno longer redundantly clears the panic marker β the HAL handles it automatically after verifying the capture was written completely.
π SdCardFont Fragmentation-Resistant Storage (1.5.0.20)
The single biggest technical port β 16 files changed, 800+ lines. The font system no longer allocates one large contiguous buffer for glyphs. Instead:
- 4 KiB chunked storage (24 chunks Γ 4 KiB = 96 KiB virtual space) β each chunk allocated independently, so only one 4 KiB contiguous block is needed at a time instead of a large buffer. Eliminates render failures caused by heap fragmentation on the 380 KB ESP32-C3.
- CJK fallback font resolution β new
hasCodepoint()+coverageHandleron font families automatically picks a font that can render Chinese/Japanese/Korean characters. - TextGetter prewarm β pre-warms font data before rendering without re-allocating.
- FrameBufferLoan β loans the framebuffer during EPUB section builds, giving the inflate stream a guaranteed ~43 KB contiguous window. Prevents "Failed to init inflate stream" errors.
- FontDecompressor refactor β raw
uint8_t*+reallocinstead ofstd::vector, removing lazy-init complexity.
πΌοΈ Grayscale Image Pipeline (Steroids-specific, unchanged)
- Shared gamma LUT (1.5) + empiric thresholds (50/120/200) + error-diffusion dithering. Already in place.
π Web Server Serial + FirmwareFlasher Chip Validation
- Web server serial number endpoint and FirmwareFlasher now validate the chip target before flashing. Ported from upstream.
π Carousel Recents Panel Fix
- The "Carousel Recents (N)" panel was appearing in the wrong theme. Fixed the guard so it only shows in Lyra Marcoand75, not Lyra Carousel.
- App icon menu slots increased from 5 β 7 (matching Marcoand75).
- Recent books count increased from 3 β 20 (clamped to 10 by the home activity).
π¦ Files Changed
| Area | Files |
|---|---|
| Status bar time-left | CrossPointSettings.h, ReadingStatsStore.h/.cpp, EpubReaderActivity.cpp, StatusBarSettingsActivity.cpp, SettingsList.cpp, CrossPointWebServer.cpp, I18nKeys.h, english.yaml, italian.yaml |
| HAL crash detection | lib/hal/HalSystem.cpp, CrashActivity.cpp |
| SdCardFont (font system) | SdCardFont.h/.cpp, SdCardFontManager.h/.cpp, EpdFont.h/.cpp, EpdfFamily.h/.cpp, EpdFontData.h, FontDecompressor.h/.cpp, GfxRenderer.h/.cpp, FontCacheManager.h/.cpp, main.cpp |
| Carousel fix | HomeActivity.cpp, LyraCarouselTheme.h/.cpp |
| FirmwareFlasher | FirmwareFlasher.cpp/.h |
| Docs | STEROIDS-ADDICTIONS.md, STEROIDS-ALIGN-TO-UPSTREAM.md, README.md, CHANGELOG.md |
π Build Verification
- RAM: 16.0% (52,276 / 327,680 bytes)
- Flash: 98.5% (6,456,613 / 6,553,600 bytes)
- Warnings: 0