Ground-up Rust implementation of the algorithms behind Textream's three
guidance modes. Nothing here touches the OS, so it is testable without a
microphone and a future Linux build needs only a new shell.
Offsets are grapheme clusters rather than chars, matching how the macOS app
counts Characters. A char-based index would drift on emoji cues and combining
marks and pull the highlight off the word the reader is looking at.
- text: CJK-aware tokenisation, RTL inference that ignores [cue] contents
- alignment: cue ranges, skip-ahead, and the commit policy that rejects a
large unconfirmed jump from a single dead estimate
- script: parsed script with word table and progress/offset conversions
- matcher: character- and word-level passes reconciled per update
- vad: RMS metering plus a two-threshold gate with hangover
- scroll: constant-pace driver shared by Classic and Voice-Activated
75 unit tests and a doctest cover cue skipping, filler words, misrecognition,
CJK, RTL, and the degenerate empty-script and non-finite-sample paths.