Experimental bilingual typing trainer built with Zig.
- Zig 0.13.x toolchain installed and available on
PATH
. - UTF-8 capable terminal with ANSI control support (tested with GNOME Terminal, iTerm2, and Windows Terminal).
- Keyboard input device that supports Thai and English layouts for lesson entry.
Build the default targets:
zig build
Run the interactive trainer:
zig build run
You can pass scripted commands when running in non-interactive shells (CI, automated smoke tests):
zig build run -- "lang th" "list" "quit"
The trainer remembers your last language selection by storing en
or th
in the config directory.
Execute tests:
zig build test
Assets live under assets/lessons/
and use metadata headers described in assets/lessons/README.md
.
list
— show lessons for the active languagelang en|th
— switch catalogs (persisted across runs)start <slug|number>
— begin an interactive lesson attempthistory [lang]
— render session history (optionally filtered by language)reset history
— truncate stats after confirmationhelp
— print command usagequit
/exit
— close the trainer
Each completed session appends a JSON Lines entry to the user config directory ($XDG_DATA_HOME/zig-typist/history.jsonl
by default). History resets and lesson completions emit structured logs via Zig’s standard logger for traceability.