wizard: when stdin and stdout are both TTYs, menus render inline and
are driven by keys: up/down/j/k/Home/End move the bold '>' highlight,
Enter accepts, Esc/Ctrl-C/q back out of cancellable menus while Ctrl-C
on fixed menus still aborts. Rows redraw with erase+CR across the
option block only and clear before returning so prompts stay aligned.
Non-TTY stdio keeps the original numbered prompt verbatim.
report: each configured source shows a transient "# Generating
report: pulling <name> data..." line that is erased on completion,
only when stdout is a TTY; piped output remains exactly the report.
tests: cover the numbered fallback, row rendering, status suppression
and show+clear parity; reformat stray test files to satisfy ruff.
New `bts` subcommand backed by python-debianbts (bugs.debian.org SOAP):
- Identify by email address: get_bugs(submitter=...) for bugs filed,
get_bugs(owner=...) for bugs owned
- Filed filtered on creation date, owned on log_modified; status
lookups capped at 500 bugs per collect
- Per-query failures degrade to warnings like other sources