Critical Stability Fixes
- Fix system crash on Home (
xTaskPriorityDisinheritassert) — recent-covers loader was unconditionally allocating EPUBs for every shelf entry, fragmenting the heap and corrupting FreeRTOS mutex storage. Now skips EPUB load when the cover thumbnail is already cached. - Fix missing cover image when external font is enabled — JPEG decoder was starved of the ~33 KB free heap it needs while a CJK font (~34 KB) occupied RAM. Fonts are now temporarily unloaded around cover generation, then reloaded.
- Fix sleep-screen ghosting — the cached cover render now does a HALF_REFRESH wipe before drawing, so prior screen content is fully cleared.
- Fix sleep-screen blank/white panel after KOReader sync — bumped the post-render settle delay (100 → 250 ms) so the SSD1677 charge pump doesn't cut power before the panel's waveform finishes settling.
- Fix freeze on cafe Wi-Fi (captive portals) — KOReader sync now probes
cp.cloudflare.com/generate_204(HTTP, 4 s timeout) before NTP/TLS. Without this, captive portals caused ~45 s of mbedTLS retries that looked like a hang. - Fix BLE heap exhaustion when opening a book or settings while Bluetooth is on.
- Fix two small memory leaks.
- Fix BMPViewer ghosting on exit.
- Fix boot-loop on opening large XTC files.
- Fix wild-pointer crash in JPEGDEC
MCU_SKIPhandling. - Fix wild reader bugs (Reddit reports): stray apostrophes, wake-up rendering, clock display, cover recovery, and 6 more reader bugs reported on Reddit.
KOReader Sync
- New: power-button shortcut triggers KOReader sync directly from the reader.
- Switched paragraph-level syncing to xpath map for accurate position matching.
- Section cache now invalidates correctly on font change.
New Features
- Beta toggle: apply custom SD-card font to UI text (in addition to reader text).
- OPDS multi-server support — manage multiple OPDS catalogs.
- OPDS search + next/prev page navigation in browser.
- Show full path bar in the file browser.
- Display file extensions in the file browser.
- Show crash reason on boot for easier diagnosis.
- Manual screen refresh via short power-button press.
- Smooth battery percentage on X4.
- Show long branch names in OTA branch picker.
- Slovenian translation.
- Initial X3 hardware support (grayscale antialiasing, sleep screen sizing, RTC notes).
UX Polish
- Redesigned on-screen keyboard with proper feedback.
- Orientation-aware popups for reader activities.
- Page name now shown first in browser titles.
- Folder/file counts correctly pluralized in file list summary.
- Unified page headers across the web UI.
- Wallpaper recency buffer (16 entries) prevents clustering.
- Adjusted end-of-book navigation.
Performance & Reliability
- Replaced picojpeg with JPEGDEC for cover-art conversion (faster, lower RAM).
- External-font path: WDT feeds during SD reads, forced supplement mode for UI fonts.
- Flashcard: support large decks, text wrapping, fixed SdFat handle leak.
- drawArc / fillArc rewritten for faster execution.
- Web-server
/deleteAPI: backward compatibility restored. - Footnote link text correctly rendered; footnotes consider orientation for gutters.
- Combining-mark glyph positioning uses font metrics.
- Hyphenation: ISO 639-2 language codes now supported.
- Bookerly font replaced with Noto Serif for licensing reasons.
- Reverted
notosans_12UI font to tabular numerals.
Upstream Sync
- Merged upstream
crosspoint-readermaster through phase 2 + 3 batches. - Ported 4 upstream patches from
jpirnay/crosspoint-readerfork. - Upstream JPEGDEC fix replaces our local patch.
Assets
crosspet-1.8.4.bin— recommended (with serial log)crosspet-1.8.4-slim.bin— smaller build, no serial logcrosspet-1.8.4-ble.bin— Bluetooth-enabled build