Duet v0.1.0-alpha.8
Duet Alpha.8 is the matched X3/X4 promotion of the physically verified WPM and detailed-statistics synchronization repair, together with achievement sync, safer EPUB preparation, clearer statistics charts, optional spice metadata, faster direct return to Home, and the corrected X3 side-button font-size direction.
Downloads
- Xteink X3:
Duet-X3-v0.1.0-alpha.8.bin - Xteink X4:
Duet-X4-v0.1.0-alpha.8.bin - Complete package:
Duet-v0.1.0-alpha.8-firmware.zip - Optional 123-family font pack:
Duet-Open-Font-Pack-v1.zip - Optional WordNet 3.0 dictionary:
Duet-WordNet-3.0-StarDict.zip - Checksums:
SHA256SUMS.txt
Verify the checksum, back up the complete SD card, keep a known-good recovery BIN, and flash only the artifact that names your device.
WPM And Reading Statistics
- Enriched EPUB word counts are now persisted in each book’s
stats_v8.binstate. Home, Current Book, Pace Trend, Reader DNA Details, Reading Signature, and Signature Details can reuse that count without reopening the EPUB while drawing a statistics page. - Nearby Reading Stats Sync carries the persisted word count in its detailed per-book snapshot, allowing physically tested WPM and current-book statistics to converge across an X3 and X4.
- WPM still requires compatible
META-INF/x-locations.jsonmetadata, measurable progress, and attributable reading time. Duet never relabels Xteink screen pages per minute as words per minute. - Pace Trend now uses a labeled, smoothed WPM line. Other statistics charts reserve consistent space for their scale labels.
- Spice/heat metadata is optional. If a catalog omits it, Duet hides the field, removes the spice card from Reading Taste, and leaves spice achievements inactive.
Run python3 scripts/enrich_epub_locations.py --dry-run "/path/to/epub-or-folder" first, then apply with python3 scripts/enrich_epub_locations.py --backup --backup-dir "/path/to/backup-folder" "/path/to/epub-or-folder". The tool skips existing metadata and macOS ._*.epub sidecars. Use --force only when intentionally regenerating a manifest, and keep backups outside Ready to Load and SD-card book folders.
Two-Reader State
- Nearby Reading Stats Sync protocol v6 exchanges achievement progress and retains peer ledgers under
/.duet/state/synced_achievements/. - Achievement milestones merge by strongest unlocked progress without replaying old popup notifications.
- Complete
.cstatsbackups include achievement ledgers. Importing an older archive preserves achievement data that the older format did not contain.
Both readers must run a protocol-v6-capable release. Alpha.8 does not pair for Nearby Reading Stats Sync with Alpha.7’s protocol-v5 implementation.
Reader And Controls
- Returning directly from a book to Home skips a nonessential timing-file write after committing reading state.
- On X3, holding the physical right side button increases font size and holding the physical left side button decreases it. On X4, holding Up increases font size and holding Down decreases it.
- Font-size changes preserve the visible reading position on both devices. A relayout started from the first page of a chapter remains on the true chapter start instead of drifting forward, and explicit chapter selection discards stale pending jumps.
- The complete public font gallery shows all 123 packaged families in the same type categories used by the device picker, with a separate collection for all 37 e-reader-optimized families.
Verification
- All 117 host tests pass.
- All seven desktop-helper tests pass.
- X3 public firmware: 5,944,672 bytes, with 608,928 bytes free in the OTA app partition; SHA-256
843c2f96ce11aa564d19877e1b9572e5a52a6e2613134da2255090ebbdb77b13. - X4 public firmware: 5,807,600 bytes, with 746,000 bytes free in the OTA app partition; SHA-256
a54fe20fa7e8b65afd1a5fa45f7be5448f07c707cf68a7e7e9a6d7659eef6e4e. - Matched private Alpha.7.1 builds physically passed current-book WPM and detailed-statistics convergence on Lauren’s X3 and X4 before the accepted changes were promoted into this public release.
- High-priority exact-artifact checks remain: X3 right must increase and left must decrease, X4 Up must increase and Down must decrease, and neither device may advance the visible text during relayout. The final relayout-anchor guard in this release was built after the last private physical pass and is included for broader alpha testing.
Build and simulator success do not prove physical e-ink refresh, SD-card timing, radio sync, sleep/wake, or long-session stability. Follow the Alpha.8 Device Acceptance route on the actual reader and keep the previous known-good BIN until the new build passes.
Installation And Recovery
For a first Duet installation or recovery, use the CrossPoint web installer’s Custom .bin option. For a Duet-to-Duet update, place exactly one device-matched BIN at the SD-card root and choose Settings > System > SD Firmware Update. After flashing, confirm Settings > System reports Duet 0.1.0-alpha.8.
Read Alpha Testing, Installation, and Troubleshooting before flashing.
Credits
Duet descends from CrossPoint Reader through CrossInk and directly credits CrossInk Carousel, CrumBLE, CPR-vCodex, CrossPet, Biscuit, SEEK Reader, aalu’s reading-statistics work, CrossPoint Flow, and the bundled font projects. Exact revisions, direct adaptations, design lineage, transitive credit, and licenses are recorded in THIRD_PARTY_NOTICES.md and FONT_SOURCES.md.
Duet is released under the MIT License. Copyright in Duet’s original modifications and additions is held by Lauren Landau; upstream copyrights remain with their respective authors.