Skip to content

Offspring 0.3.45

Choose a tag to compare

@honear honear released this 04 May 19:48
· 79 commits to main since this release

First release that handles still images as a first-class output format, plus a fix for a multi-file selection regression that crept in around 0.3.43.

What's new

🖼️ Image presets

Presets now have an Image format alongside GIF and MP4. Pick a codec (PNG, JPEG, WebP, AVIF), set a per-codec quality, optionally strip EXIF / GPS / camera-serial metadata, and resize / crop / greyscale work the same way they do for video.

Five image presets ship by default:

Preset What it does
Reduce Size Re-encodes losslessly as PNG with EXIF stripped. The "share-ready, don't change anything I can see" default.
JPEG 85% (web, strip EXIF) The standard web JPEG.
PNG (lossless, strip EXIF) Same as Reduce Size but explicitly named for PNG output.
WebP 80% (modern web) Better compression than JPEG at the same quality on most browsers from 2020+.
Thumbnail 256px PNG 256-pixel-wide PNG for previews / contact sheets.

You can edit any of these or add your own. Codec selector remembers per-codec quality semantics — switching from PNG to JPEG, the field re-labels itself from "Compression level (0–9)" to "Quality (1–100)" and clamps your previous value into the new range.

🛠️ Tools work on images

  • Compare stacks any number of selected images into a single side-by-side still (PNG, JPEG, WebP, or AVIF — matches the first input's format).
  • Overlay and Greyscale apply to image inputs and produce same-format output (JPEG → JPEG, PNG → PNG, WebP → WebP).
  • Trim and Merge are video-only operations; they refuse cleanly on image-only selections with a clear explanation.
  • Image-format presets refuse to run on video inputs (and vice-versa) with a clear error rather than silently producing nonsense.

🪲 Multi-file selection fix

A regression introduced in 0.3.43 (when the singleton + IPC was rewritten manually to fix the secondary-window flash) caused multi-file right-clicks to silently drop all but the last file, surfacing as "Merge needs at least two files" errors. Two underlying bugs:

  1. The pipe listener was being spawned inside Tauri's setup(), which runs ~100-300ms after process start — long enough that a multi-file selection's secondaries (which fire in rapid succession) raced ahead and silently dropped their argv after a 500ms retry budget. Fixed by spawning the listener immediately after acquiring the singleton mutex, before Tauri Builder runs at all, with an mpsc channel bridging to the processor that lives in setup().
  2. The new-batch detection was firing for every arrival in a fresh batch instead of just the first one, wiping each predecessor's file as the next one landed. Fixed by clearing the dispatch timestamp once per batch reset.

End result: multi-file Merge / Compare / preset application all work as advertised again.

Verifying this release

Public key fingerprint: C8D647377413CFA8. Run:

minisign -Vm Offspring-Setup-0.3.45.exe -p offspring.pub

Expected: Signature and comment signature verified.