Skip to content

CLI 0.0.9 / art 0.0.7 preparation notes

Published 2026-09-22 together with core 0.0.5 and ext 0.0.7; see the expanded release notes for the workflow runs and evidence.

Independent package versions

Package Version Release role
rs-rich-cli 0.0.9 Themes, batch progress/cancellation, selected demos, doctor and image flags
rs-rich-art 0.0.7 Public colour-mode and dithering builders
rs-rich-ext 0.0.7 Expanded scope: targets, layout, events, diagnostics, Live regions
rs-rich 0.0.5 Expanded scope: optional rendering-environment seam only

The expanded scope (#192) moved core and ext into the cohort. See the expanded release notes for its evidence and release test.

The previous CLI 0.0.8 / art 0.0.6 release is published, with successful independent workflows and exact-version registry consumers. Its completion does not establish publication readiness for these new versions.

Prepared scope

  • Named [themes.NAME] TOML definitions map validated style names to Rich style strings. Defaults/profile/--theme NAME select a theme; repeated --theme-style NAME=STYLE bindings override configured styles. All definitions and references are validated, including inactive profiles. Workers receive the resolved theme snapshot. Rendering and HTML/SVG exports use public theme APIs.
  • Batch progress reports completed, failed and total counts on human-report stderr terminals only. --no-progress suppresses it; neither redirected stderr nor JSON reports contain progress. Ctrl+C stops scheduling, terminates and reaps started workers, returns 130 and produces one interrupted machine report when requested. Completed exports may remain; cancellation is not a transaction or rollback.
  • --demo-list lists core, workflows, art without playback. --demo --demo-section NAME selects a group. The full tour remains the default, redirected output stays finite and cleanup remains interruptible. Lean builds explain unavailable art support.
  • rich doctor provides read-only human diagnostics; --report json writes a diagnostics document to stdout. It reports build features, terminal and colour policy, inferred Sixel support, image mode, selected config/profile and pager choice. It never probes a terminal, fetches a URL, launches a pager or dumps the environment. Invalid config retains actionable usage/error reporting.
  • Art exposes ImageColorMode::{TrueColor,Ansi256}, Dither::{None,FloydSteinberg}, and ImageArt::color_mode / ImageArt::dither builders, preserving the public ImageOptions struct shape. CLI flags are --image-color truecolor|ansi256 and --image-dither none|floyd-steinberg.

Image-quality boundaries

ANSI256 and optional Floyd–Steinberg diffusion apply to ASCII/half-block still images after fitting, compositing and sampling, before glyph selection. Dithering requires ANSI256. Unsupported combinations are errors; GIF, diff, Braille and Sixel are outside this bounded #125 slice. The default remains truecolor with no dithering.

Quantisation chooses fixed palette entries 16–255 using squared encoded-RGB distance, breaking ties toward the lowest index. The first 16 colours are excluded because terminals may redefine them. Diffusion scans left-to-right, top-to-bottom and drops error at boundaries. This deterministic policy does not claim perceptual colour matching or terminal colour calibration.

The CLI additions compose existing public APIs; reusable image preprocessing lives in art. No core renderer behavior, theme-stack API, graphics protocol or new extension API is introduced. See workflow recipes, CLI guide and porting boundaries.

Validation and release handoff

  • [x] Accepted scope, copyable recipes, public API and ownership boundaries documented
  • [x] Prior CLI 0.0.8/art 0.0.6 publication evidence recorded

Local evidence is recorded in .github/evidence/0.0.9/verification.json and demos.json. The combined suite passes 597 tests; the lean CLI passes 151. Independent review findings were fixed and re-reviewed. The PR and deployment checks remain separate gates:

  • [x] Formatting, Clippy, full workspace and lean CLI tests
  • [x] Rust 1.90, golden parity and focused CLI/PTY regressions
  • [x] Theme exports/worker propagation and cancellation cleanup verification
  • [x] Deterministic image preprocessing and default-output parity
  • [x] Fresh optimized-build recordings, provenance and strict docs build
  • [x] Registry identity, staged package verification and tag-selection checks
  • [x] Independent combined review; both findings fixed and confirmed
  • [ ] Main-target PR and required CI checks
  • [ ] Merge/main ancestry and documentation deployment verification

Publication requires a separate authorized handoff after preparation gates pass. Release rs-rich-v0.0.5 first, then rs-rich-ext-v0.0.7 and rs-rich-art-v0.0.7, then rs-rich-cli-v0.0.9, verifying an exact-version registry consumer before each dependent tag. Staged sibling package success is not registry readiness. Do not create a coordinated workspace tag or move existing published tags.

Track the accepted scope in the 0.0.9 plan.