10-bit (default): Rgb10a2Unorm, falling back to Rgba16Float then 8-bit;
8-bit: the previous hardcoded Bgra8Unorm/Rgba8Unorm. Selection is a
pure function with unit tests; the env var is re-read on every surface
(re)creation.
BGRA atlas uploads (every viewer video frame on macOS) were staged
through swizzle_upload_data's to_vec() into pending_uploads — a
full-frame CPU copy per upload. Non-swizzled formats now write_texture
directly from the borrowed bytes; only the RGBA swizzle and the
not-yet-allocated fallback keep the owned staging path.
* Add text spacing and transform style plumbing
* Apply byte-stable transforms and spacing-aware truncation
* Add platform letter spacing support
* Fix scheduler clippy warning
* Refresh dependency lockfile
* Fix CI for text spacing changes
* Add text transform preview example