The command line as a product
The first release aimed at someone who did not write it. Nothing here changes
a card or asks anything of an existing collection. It changes what you type,
what the run tells you while it works, and what a failure says when it stops.
A real command, with subcommands
tango run <video-id> --deck "French"
tango review --deck "French"
tango doctor
tango languages
Plus backlog, setup, install-model, install-translation,
build-dictionary and build-antonyms. The old surface put every mode
behind a boolean flag on one parser, so --help listed sixteen options
without indicating that --review and --video-id are different programs,
and nothing stopped you passing both.
There is also a console entry point for the first time. The project had no
[project.scripts] at all, so even an editable install gave you
python -m pipeline rather than a verb.
This is a breaking CLI change, made deliberately now, while the interface
has no installed users, rather than after v0.8.0 publishes it.
A long run says what it is doing
Pacing Merriam-Webster turned the definition phase into minutes of silence on
a large English video, and silence is indistinguishable from a hang. Every
phase now reports its own elapsed time, and the definition phase carries a
progress line with a completion estimate.
The line redraws in place on a terminal, so a thousand-word run stays one line
rather than a thousand. Redirected anywhere else it prints one line per decile
instead: carriage returns in a log file are noise, and tango run ... > run.log
is a normal thing to do here.
Failures name the fix
Seven messages stopped the run while stating only the outcome, leaving you to
find the flag in --help or guess that one exists. Now an already-processed
video names --force and shows the exact command; a missing translation model
names --install-translation de:en and the alternative of dropping
--def-lang; an AnkiConnect error carries the action that failed; an
AnkiConnect timeout names the modal dialog that causes it nearly every time;
and an empty transcript says the video's captions are empty instead of naming
a private function and a private dict key.
Upgrading
Nothing to do to your collection. The notetype is unchanged. If you have
scripts calling the old flag surface, they need rewriting to the subcommands
above; tango --help lists all ten.
Full detail in CHANGELOG.md.