Reads your keystrokes in raw mode and runs them through the real
Vtex.Input.Stream -> Vtex.Input pipeline, printing the events Vtex produces.
It uses the same pending?/flush + timer pattern documented in
Vtex.Input.Stream, so the Escape key resolves via the timeout exactly as it would
in a server.
dev/smokePress keys; watch the events. Ctrl-C to quit.
The dev/smoke wrapper runs the task with -noinput, which disables the
Erlang shell's own stdin reader. That matters: without it the BEAM and this
task's reader both read the terminal and split keystrokes between them,
silently dropping some. Running mix vtex.smoke directly (without -noinput)
is refused for that reason — use the wrapper, or set the flag yourself
(ELIXIR_ERL_OPTIONS="-noinput" mix vtex.smoke).
All terminal I/O goes straight to the controlling tty device (discovered via
ps): input is streamed by cat -u <device> as a port, output is written to
the device directly. This sidesteps Erlang's standard IO, so it works under
-noinput and restores the terminal on exit. If a hard kill ever leaves it
raw, run reset.
This task is development-only: it lives under dev/, is compiled only in the
:dev environment, and is never included in the published package.