Duet v0.1.0-alpha.6

Duet’s first public tester release is a cleanly versioned early alpha for the Xteink X3 and X4. It combines the latest shared device code with the reviewed public documentation, attribution, privacy checks, deterministic packaging, and recovery guidance. Internal development suffixes such as wpm2 and indexing2 are intentionally absent from the public version and filenames.

Downloads

  • Xteink X3: Duet-X3-v0.1.0-alpha.6.bin
  • Xteink X4: Duet-X4-v0.1.0-alpha.6.bin
  • Complete package: Duet-v0.1.0-alpha.6-firmware.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.

Highlights

  • Eight customizable Home themes, including Dashboard and Dashboard Extended.
  • Six book-browser layouts: one-line list, two-line list, 2x2, 3x3, 4x4, and five-cover carousel.
  • Smart title-word, author, and series search; More Info; Favorites; reading-state filters; Library Overview; Reading Taste; and Series Progress.
  • Thirty-three top-level reading-statistics pages, exact session logging, per-date book attribution, complete .cstats archives, and direct X3/X4 Nearby Reading Stats Sync.
  • Explicit Nearby Position Sync inherited from CrossInk plus KOReader Sync inherited from CrossPoint.
  • Categorized SD-card fonts with A/B comparison and synthetic bold/italic fallbacks, StarDict dictionaries, bookmarks, clippings, 108 achievements, Tetris, If Found, Screen Clean, and customizable Home/Apps launchers.
  • Twelve sleep modes, configurable locked-device sleep-image cycling, configurable Power actions, and shared X3/X4 feature behavior with device-specific memory and refresh tuning.

The complete source-verified feature and lineage inventory is in FEATURES.md, and the public-facing walkthrough is in Duet: the complete feature tour.

Clean Alpha.6 Changes

Canonical Duet Storage

New writes use /.duet:

/.duet/
├── state/
├── books/
├── cache/
│   ├── thumbs/
│   ├── layouts/
│   └── fileindex/
├── backups/
│   └── reading-stats/
└── migration/

Inherited /.crossink, /.crosspoint, and /.crossink-stats-backup data remains untouched as a migration and recovery source. Bounded global state imports on first boot; large per-book records migrate lazily as their books are opened. Canonical files always win, interrupted imports retry, and the completion marker is written only after the bounded import succeeds.

Reader And Chapter Indexing

  • The temporary first-pages chapter preview now starts full completion immediately when the reader reaches its boundary instead of repainting the same page indefinitely.
  • New-chapter completion begins sooner while typography relayout remains cooperatively guarded.
  • EPUB extraction, HTML parsing, and page layout use smaller interruptible chunks and safe cancellation checkpoints.
  • Chapter-index timing records completion, cancellation, low-memory deferral, failure, last duration, and worst duration under /.duet/state/reader_timing.txt.
  • Current-book and Home speed fields show estimated WPM after at least ten seconds of reading and measurable progress. Historical aggregate trend records retain relative screen-page pace internally because old journals do not include per-book word totals.

Covers And Library Responsiveness

  • Exact high-quality 1-bit thumbnails persist in sharded /.duet/cache/thumbs paths.
  • The five-cover carousel keeps the visible window plus one hidden lookahead cover in each direction and reuses overlapping artwork during ordinary movement.
  • Cover grids can prefetch the immediately previous and next pages inside a guarded memory budget.
  • Picker input remains on the storage-owning input task; cover generation is cooperatively cancellable instead of moving open SD file handles across tasks.
  • The desktop cover-prefill script creates every X3/X4 grid and carousel size in one incremental computer-side pass while the firmware still handles genuinely new books.
  • Clean Library Cache moves confirmed orphaned per-book records into recoverable /.duet/books/.attic batches and refuses cleanup after an incomplete scan.

Reading Statistics And Sync

  • Nearby Reading Stats Sync exchanges global totals, per-book summaries and detail, journal, attribution ledger, Stats Date, device identity, and retained peer snapshots.
  • Duplicate tail acknowledgements, progress reporting, idle timeouts, and repeated bidirectional convergence are hardened.
  • Started Books uses merged records, dates are library-wide and scrollable, redundant summary navigation is removed, and chart spacing is corrected.
  • All active reading time is retained, while a counted session requires at least one page turn.
  • Complete .cstats export and guarded restore use canonical paths, map recognized legacy records, validate structure and CRCs, and create a safety export before replacement.

Public Release Engineering

  • Public X3/X4 build profiles retain all ten bundled hyphenation languages and use deterministic Duet artifact names.
  • The release audit blocks local home paths, phone-number-shaped text, private device state, unapproved ebooks, version drift, and missing release records.
  • The firmware ZIP now includes the feature catalog, user guide, current tester documents, cover-prefill scripts, font source ledger, bundled third-party notices, and every redistributed built-in font license it references.
  • The project is presented as an independent one-person project created and maintained by Lauren Landau, with AI-assisted implementation identified separately and every upstream code or design lineage credited.

Known Alpha Risks

  • On-device cover generation can still be slow in a very large unprefilled library. Run the included desktop prefill after loading a large or multiply organized card.
  • A complex or image-heavy EPUB chapter can still require visible indexing when guarded background work cannot finish safely.
  • X3 and X4 can behave differently under the same card and library load.
  • Nearby sync is designed to converge idempotently, but repeated real-device sync in both directions remains a high-value tester target.
  • The locked three-click sleep-image gesture can feel like one wake press followed by three deliberate taps on current hardware.
  • The achievement unlock ledger is not included in .cstats, although restored reading history can re-derive many milestones.

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.6.

Follow Alpha Testing and the short Alpha.6 Device Acceptance route. Keep the complete SD-card backup and previous known-good firmware until the exact X3 or X4 artifact has passed your own open, read, Home, sleep, wake, library, and recovery checks.

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.