Squint 0.6.0
Pre-releaseTwo things Squint was getting quietly wrong, and the other half of format support.
A WebP shot in portrait no longer converts on its side. A WebP has no orientation field of its own; the only place a turn can be recorded is the TIFF block inside its EXIF chunk, and nothing here read one. A picture that carried its rotation there was converted the way its pixels were stored rather than the way it was meant to be seen. The tag is now read by the same walk that reads a JPEG's, and Strip still removes the chunk — by then the turn is in the pixels and what is left of the block names a camera.
An image sequence is refused rather than flattened to one frame. avis was already refused; msf1, hevc and hevx were not. Those are the HEIF and HEVC-coded sequences that sit beside the heic and heix single images, one letter apart, and macOS decodes any of them to a primary frame — so a sequence became a single still with nothing said about the frames that went missing. All four brands are now refused for re-encoding, and stripping one still works and leaves the frames alone.
AVIF and lossless WebP can be written, from the command line only: --format avif and --format webp. Both are conversions, written beside the original and never over it.
AVIF goes through the system encoder rather than a crate, because no pure-Rust AVIF encoder can embed a colour profile — ravif has no colour handling at all, and the container writer beneath it emits only an nclx box. An untagged AVIF is read as sRGB, and a Display P3 photograph comes out flat, which is the failure this project exists to avoid. Worth stating plainly: measured against JPEG at the same perceptual score on two 12 megapixel photographs, AVIF was 2 to 4% smaller, which is within noise. What it reliably buys is time — about 7 seconds where the JPEG search takes 11.7, and three probes rather than five. It is written only on macOS.
WebP is lossless, because the pure-Rust encoder has no other kind and adding one would mean a C dependency. It suits what a PNG suits: a flat-colour 800x600 PNG went from 6,926 to 514 bytes. A photograph encoded this way comes out several times larger and is refused — not by recognising a photograph, but because a result larger than its source is refused on principle.
That rule needed saying properly, and one case had it backwards. A conversion has no size to beat, since a raster of a drawing is legitimately larger than the drawing. A format asked for by name is the exception: asking for AVIF is asking for a smaller file of the same picture, and one that came out larger did not do what was asked.
Not notarized. macOS will refuse to open it on first launch: System Settings, Privacy & Security, scroll down, Open Anyway. Control-click and Open no longer bypasses Gatekeeper on Sequoia and later. Requires macOS 14.
SHA-256
e6255a7d24c1a17fb1e04c6ed1db26650c945baf8e41cbd40e21e554293dfc6f Squint-0.6.0.dmg
d13ec292e90c082be2bb2bf044e862ca62df29ec0f312a0bcc765d4d5f438749 Squint-0.6.0.zip