Repository navigation
v0.6.0 · GUI overhaul: quality metrics, presets, sortable table & native AVIF EXIF
One of the biggest byteshaver-gui update so far: six planned workstreams plus two
community-feedback rounds turn the GUI into a proper conversion workbench —
with compression-ratio feedback, perceptual quality metrics, presets, and a
fully reworked file table. On the CLI side, AVIF outputs now embed EXIF
natively.
✨ Highlights
- Quality measurement — right-click any converted file to measure DSSIM
and PSNR (memory-bounded, computed off-thread), or open the visual
difference inspector: side-by-side, swipe and amplified-difference
heatmap views with synchronized zoom. - Presets — save your target-format + policy combinations as
shareable files (title & description included), or start from built-in,
literature-based profiles for AVIF, WebP, JPEG XL and oxipng. - File table — sortable columns, drag-to-reorder headers, configurable
data fields (modified date, dimensions, EXIF camera/date-taken/ISO/
exposure), target-format column, per-row "open converted file" /
"open output folder" actions, and optional thumbnails. - Progress that tells the truth — a segmented bar shades finished files
by their result and animates only the files currently being worked on;
a successful, size-saving run earns a compression-ratio-scaled confetti
burst right on the converted rows 🎉 (configurable, reduced-motion aware). - Native AVIF EXIF —
aviftargets embed EXIF via ravif ≥ 0.13 as a
standard HEIF Exif item; the "metadata dropped" warnings for avif are gone.
🖥️ Desktop GUI
- Compression ratio with subtle color hints in rows, footer and report
- Options UX: quality-ladder chips (⚡ speed / ▤ size) per encoder, aligned
option form, restore-defaults with undo, auto-sizing options panel that
hands space back to the file table when collapsed - Independent OS windows: run report, about, difference inspector and the
preset windows can be dragged outside the main window; the report window
resizes properly and remembers its geometry - Windows integration: "show in folder" selects the written file (paths
with spaces fixed), drag-and-drop unchanged - Output handling: "same as input" ↔ "directory:" toggle keeps your path,
an empty directory is a start blocker instead of writing silently,
state-colored Convert button
🧩 CLI & core
avif: EXIF embedding (follows the global--exifpolicy; pixels unaffected)- Job API:
Outcome::Encoded/SkippedExistingnow carryoutput_path
(front-ends can open/reveal results); new public helpers
input::decode_rgbaand the typedExifSummaryreader - Encoder capability descriptions are identity-only; the option detail
stays in the per-run "Using …" line
⚠️ Compatibility notes
- JSON-lines event logs gain an
output_pathfield (additive — existing
parsers unaffected) - GUI
settings.jsonmigrates automatically (output mode is now explicit;
old flat and embedded layouts both load) - New GUI-only dependencies (
egui_extras,image,dssim) are pure Rust;
the static musl / windows-gnu release builds are unchanged
📦 Artifacts
As always: CLI and GUI binaries for Linux (musl, static-pie) and
Windows per CPU target (x86-64-v3/v4) with .sha256
checksums; docker images (alpine + debian) with HEIC/HEIF/AVIF input support.