Changes
- Fixed EPUB images being replaced by
[Image: …]alt text when fragmented heap failed an obsolete decoder-sized preflight. Image dimensions now use the lightweight streaming probe first, decoder allocation guards remain in place, and section cache v48 forces previously affected books to rebuild (#194). - Removed redundant SD
exists()directory scans before EPUB/TXT/XTC read-open operations and made HAL file-wrapper allocations fail cleanly instead of terminating under low heap, addressing books returning to the file list without opening (#196). - Restored the X3 sensor bus after boot-time hardware fingerprinting so the RTC clock and tilt page-turn features can initialize and appear again (#197).
- Stopped persisting X4 as the result of a negative X3 peripheral probe and automatically discard legacy cached-X4 classifications, allowing misidentified X3 devices to recover their X3-only features after updating (#199).
- Reworked reading-stat persistence to stream JSON through an atomic temporary file instead of constructing the entire document in RAM, with checked writes/copy fallback and allocation-safe HAL opens to prevent the reported low-memory crash and data rollback (#200).
- Made Auto Flash identify the X4 Pro partition layout and stop before writing with an explicit unsupported-device explanation; X4 Pro uses ESP32-S3 and still requires a separate firmware target (#198).
- Passed all 44 host regressions plus
defaultandgh_releaseESP32-C3 builds. Physical X3/X4 validation remains requested for the hardware-specific fixes.