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.bin state. 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.json metadata, 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 .cstats backups 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.


This site uses Just the Docs, a documentation theme for Jekyll.