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