Release makeover v2.2.0
Everything since 2.1.1 is additive, so a minor. Two things land:
ANSI_256, ANSI_240 and ANSI_240_OFFSET -- the xterm table, and the
fixed region of it a themed color should quantize against, so a
consumer on a 256-color terminal picks an index rather than sending
truecolor at something that cannot show it.
bevel-light and bevel-dark, derived from surface-raised in OKLab the
same way border-strong and action-hover already were. Derived in the
crate rather than composed per app because the two webviews could do
it in color-mix() and audiofiles, which is egui, could not.
Both have been consumed from the tree through a [patch.crates-io] in
alloy_tui and in alloy; this is what lets those stanzas go.
Author: Max Johnson <me@maxj.phd> · 2026-07-27 02:27 UTC
description = "Shared theme loading for the make-family apps: TOML theme files parsed into intent-based color tokens, with perceptual derivations and WCAG contrast."