Shrinker Pro 1.3.0
1.3.0 — 2026-09-16
Added
Max size. Give Shrinker Pro a number and nothing comes out bigger than it
on its longest side: a landscape image is scaled by its width, a portrait one
by its height, always keeping the aspect ratio. Anything already inside the cap
is left at the size it arrived — the number is a ceiling, not a target, and
nothing is ever scaled up.
Every still image is resized by the same resampler, whichever encoder finishes
the file, so a PNG and a WebP capped at the same number match. GIF is the one
exception, and it is resized by gifsicle precisely so an animation stays an
animation. SVG is unaffected: it is vector, so it has no pixel size to cap.
A resized file is written even if it comes out larger — the same exemption
converting already had. You asked for those dimensions.
--max-size for the command line.
shrinker --max-size 2000 ./camera-roll
Changed
The window footer is now a session settings bar. One line states what will
happen to the next files you drop — WebP · High · Max 2000px — and Adjust
opens Convert all to, Quality and Max size in place. Done, Escape, or a click
anywhere above closes it again; nothing is discarded by closing, because every
control applies the moment you use it. A dot marks any setting that differs
from your defaults, and Reset puts all three back.
The three controls in a row needed about 620pt of window. A summary fits any
width, and it says something the row never did: these settings are the
session's, not the app's.
Quality set in the window no longer changes your saved default. It applies
to that session and is gone at the next launch, which is now true of everything
in the bar — the defaults each session starts from still live in Settings, and
that is where to change them for good. If you never open the panel, nothing
about your quality changes.
1.2.1 — 2026-09-14
Added
Shrinker Pro now asks before replacing a file. Drop something whose result
would land on a file that already exists and you are asked before any work
starts, with the choice to skip those files, keep both, or replace. Files in
the same drop that collide with nothing still get shrunk.
Two questions rather than one, asked separately and answered separately,
because the stakes differ. Your own originals are asked about first —
overwriting one cannot be undone — then anything already sitting at the
destination: a copy from an earlier run, or something unrelated that happens
to share the name. Shrinker Pro cannot tell which from where it stands, so it
asks rather than assuming. Skipping declines only the files in that one
answer; the rest of the drop still runs.
You can turn it off in Settings, under Output, which restores exactly what
1.2.0 did.
--if-exists for the command line. The same three choices, plus a fourth
that has no sheet equivalent, as a flag:
shrinker --if-exists skip ./screenshots
shrinker --if-exists keep-both photo.jpg
shrinker --if-exists fail ./build-assets
It defaults to replace, which is what every earlier version did, so no
existing script changes behaviour. --json output gains a status field —
shrunk, declined or skipped — so a caller can tell a file that was
skipped from one that had nothing worth saving.
Changed
Settings is easier to read. The panel is now five labelled sections —
Output, Conversion, Quality, Metadata, General — where two of them previously
had no heading at all. Where files go and whether originals are kept are
radio choices that each state their own consequence, instead of a checkbox
whose off-state you had to work out.
Fixed
The "your originals will be overwritten" warning told the truth only some
of the time. It appeared whenever the .min suffix was off, including when
a subfolder or a chosen save folder meant nothing was actually being
overwritten. It now appears only when originals are genuinely at risk.