The line-output face of the fleet. Typed, capability-honest, dark-Nord /
blackmatter beautiful CLI output — banners, callouts, panels, rules, lists,
badges (tables / trees / progress / diagnostics at M2) — as a pure-data,
format!()-free Block IR.
kazari is the sibling of seki: seki dresses the prompt (before the command), kazari dresses the output (after the command), over the one ishou / irodori token spine that also feeds egaku-term (the cell-grid) and tela (the web). Four faces, one spine.
A Block carries no color depth. render() requires a Capability
supplied by the environment — so "assumed truecolor on a pipe" is a
compile-shaped absence, not a runtime clamp. The same value degrades
truecolor → 256 → 16 → NO_COLOR through one total morphism.
use kazari::prelude::*;
banner("sui — Rust-native Nix").print()?; // rounded box, Frost accent
ok("realised /nix/store/…-hello (byte-parity)").print()?; // ✓ Aurora green
warn("cache miss — rebuilding").print()?; // ⚠ Aurora orange
error("exit 1").with_title("build").eprint()?; // ✗ Aurora red
Panel::titled("store")
.row("path", "/nix/store/…")
.row("closure-size", "42 MiB")
.print()?;Piped or under NO_COLOR, the same code emits zero escape bytes and a
plain [TAG] / ASCII-glyph projection.
- OWNS (the ~15% genuinely-new, 0-hit fleet gap): the
ColorLevelcapability wall, theRGB→256→16nearest-in-linear quantizer, the line-block AST. - CONSUMES
irodori(Nord palette, no fork) · WRAPSanstyle(typed SGR — the escape bytes are anstyle's, never hand-spelled).
Dark-Nord by default (fully morphable). Design + tier-honest ledger:
theory/KAZARI.md.
MIT.