Rich Terminal UI
April 12, 2026
An Ink-powered terminal UI with a real design system, an ESM bundle a quarter of the size, and a tag-based release pipeline. Node 22 required.
Dino grew a face. v0.3.0 rebuilds the CLI's output on Ink, React for the terminal, with a real design system, an ASCII dino header, and structured cards for every command. Under the hood, the bundle moved to ESM and shrank by 75%.
A terminal design system
The CLI now renders through twelve Ink components (#1013, #1014, #1015): DinoHeader, SummaryCard, HealthBadge, StatusIcon, DinoSpinner, ErrorPanel, Divider, ProgressBar, NextStep, FindingsTable, and DiffBadge, with per-command views for scan, watch, diff, validate, lint, changelog, and init. There are spinners on every async call, colored health scores, and a CliError.hint field that tells you what to do when something breaks. --debug prints stack traces; --no-color and NO_COLOR are respected.
A quarter of the size
The bundle switched from CommonJS to ESM (type: module) and dropped from 14 MB to 3.5 MB by excluding the TypeScript compiler and shipping production React builds. Node 22 is now required.
Coverage scoring and tag-based releases
This release also landed a coverage-scoring module with miss-rate and Wilson intervals (#985), OIDC Trusted Publishing for npm (#983), and a move to tag-based releases that dispatch the changelog draft straight to this site (#1009, #1010, #1011).
Upgrade and try it: npx @dino-hq/cli@0.3.0 validate shows the new Ink-rendered output.