This release focuses on practical e-ink R&D rather than feature volume. Its main visible improvement is a new adaptive
grayscale path that preserves substantially more detail in images displayed on the reader.
Highlights
Better e-ink image rendering
YACP now uses adaptive tonal analysis for grayscale BMP sleep images. The previous path could push too much useful
image detail into white or black, especially on images with narrow or uneven tonal ranges. The new path analyzes the
image before dithering and maps tones more effectively onto the four e-ink grayscale levels.
This is easiest to see on sleep screens, but the implementation is a rendering improvement first, not just a cosmetic
sleep-screen feature.
Per-book sleep-image galleries
Images can now be associated with a specific book. When the reader sleeps from that book, YACP can use a prepared BMP
from that book's gallery before falling back to the normal cover/custom sleep-screen behavior.
The selection is randomized and avoids immediately repeating the previous image when several prepared BMPs are
available.
Browser-side image preparation
The File Transfer page can prepare images before upload:
- crop visually in the browser;
- target X3/X4 dimensions;
- preview four-level grayscale output;
- tune grayscale thresholds;
- generate a reader-ready BMP before upload.
This keeps expensive image preparation mostly off the ESP32-C3 and makes the feature usable without a separate desktop
conversion tool.
YACP-sleep-images-overview-inline-reader-first.mp4
Complete phone-to-reader demonstration. Download the original-quality video.
Cleaner sleep and wake behavior
YACP now restores the pre-sleep framebuffer after image-based sleep screens, avoiding the normal boot splash on wake.
On X3, the no-flash wake indicator remains reserved for true Quick Resume sleep screens, while image-based sleep
screens use a conservative half refresh.
The Waking up label is shown only when it helps avoid a confusing Home-screen state. Direct resumes into the reader
stay visually quiet.
More reliable reading history
Finished-book tracking is more robust:
- crossing the real EPUB/XTC end completes the book automatically;
- leaving from the final page or rounded 100 percent asks for confirmation;
- first completion dates remain stable across rereads;
- pending achievement screens survive reader replacement or restart;
- Finished Books groups titles by finish month and includes authors when known.
Reader ergonomics
Side-button long press can now be mapped to Previous Page in EPUB, TXT, and XTC readers. It triggers once when the
hold threshold is reached, while short presses keep their configured page-turn direction.
Remote firmware installation API
For developer workflows, a firmware uploaded through File Transfer can now be installed with
POST /api/firmware/install. The endpoint requires explicit confirmation, validates the ESP image structure, checksum,
optional SHA trailer, and OTA partition size, then writes the inactive OTA partition and restarts the reader.
Notes
YACP remains a reading-first firmware. The goal is not to accumulate menu items, but to reduce incidental work, improve
comfort, and use the Xteink hardware more effectively.
Major technical findings and broadly useful improvements are submitted back to CrossPoint as focused PRs when practical.
CrossPoint remains the reference project, and adoption is up to its maintainers. The cleaner image-sleep wake path in
this release was inspired by CrossPoint PR #2731 by Marek Vesely (notmarek).
GitHub Issues are open for reproducible bug reports and hardware feedback:
https://github.com/Sichroteph/YACP/issues
Validation
- X3 Tiny: tested on hardware during development by the project author.
- X4 Tiny: release build validated; hardware validation pending.
- XLarge: release build validated; hardware validation pending.
- X3 simulator: not rebuilt locally for this release because SDL2 tooling is unavailable in the Windows build
environment; the failure occurred during environment setup, before native compilation.
