Clean scan output
August 7, 2026
dino scan now prints only your report. Every spinner, notice, and engine log moved to stderr, so piping and redirecting a scan finally do exactly what you expect.
`dino scan` got quiet. The report is the only thing on stdout now. Every spinner, product notice, and engine log moved to stderr, so piping and redirecting a scan finally do what you would expect.
A clean output contract
dino scan | jq and dino scan > report.md used to catch timestamped log lines and diagnostic chrome mixed into the report. Now stdout is the result and nothing else: your Markdown report, or valid JSON with --format json. Everything else, the spinner, product notices, and engine logs, goes to stderr where it belongs.
A verbosity ladder you control
One clear model. --quiet gives you the result only, the default adds a spinner and product notices, --verbose adds engine progress, and --debug adds full traces. An explicit DINO_LOG_LEVEL still wins for CI and power users.
Flat config for REST
A minimal .dino.yml with protocol: rest and a specUrl is now enough to point Dino at an OpenAPI spec. No nested tenant block required.
Also in this release
The scan report is titled API Quality Report, and the terminal summary reads its operation count and health verdict straight from the report, so the card can never disagree with the report it sits above. Errors always surface now, even under --quiet, because a silent failure is the one thing a quality layer should never do.
Upgrade with npm install -g @dino-hq/cli@1.0.1.