Changelog
Every change to Image Squeezer, newest first, with the date and time it was made.
Image Squeezer has no release numbers. The service worker caches against a hash of the shipped files, so an installed copy updates whenever those files actually change.
-
Full-width headline
The headline now runs across the page on two lines, with the intro underneath. That closes the empty space beside it on wide screens and brings the whole drop zone into view on a 1080p display.
-
Downloads end in -squeezed
A downloaded file is now named
photo-squeezed.jpgrather thanphoto-compressed.jpg, and the zip issqueezed-images.zip. -
Share button
A share icon in the top bar. On phones it opens the share sheet with the link to this site. Elsewhere it copies the link.
-
Features overview
A short list of what the squeezer does, shown once on a first visit. The Features link in the top bar opens it again.
-
Up to 25 images at a time
The batch limit goes from 5 to 25, for files shared from another app too.
-
Re-squeeze with current settings
Changed the quality or size after adding a batch? One button runs every image again with the new settings, without adding the files a second time.
-
Cap the long edge
The max size can apply to the width, as before, or to the longest side, so tall portrait photos get smaller too.
-
Changelog page
This page. A record of what changed and when, linked from the top bar.
-
Precache the maskable icon
The maskable icon was referenced by the manifest but left out of the precache list, so a cold offline install could be missing it.
-
Redesign around the squeezer artwork
New hero layout, a light and dark theme with a toggle that remembers the choice, and a reworked results list.
-
Fall back to lossless PNG when the quantizer traps
quantize_imagepanics with a wasmunreachableerror on some images. Encoding now catches that and produces a lossless PNG instead of failing the file outright. The fallback is larger than a quantized PNG would have been. -
Share buttons removed
The per-result Share button was dropped. Coverage for sharing files through
navigator.sharewas inconsistent enough that the button was often present and non-functional. Copy and download cover the same ground. -
Copy button
Puts a compressed result straight on the clipboard, for pasting into a document or chat without a round trip through the downloads folder.
-
Share buttons
Send a compressed result to another app through the system share sheet.
-
Target file size
Set a size in KB and the encoder searches for a quality that lands under it, instead of holding the quality slider fixed. Quality is now also passed through to the JPEG encoder, which it previously was not.
-
Before and after comparison
A slider wipes between the original and the compressed version at full size, so a quality setting can be judged before committing to it.
-
Open image files from the operating system
Registers as a handler for the supported image types, so an installed copy can be set as the app that opens a JPG, PNG, WebP, HEIC and the rest.
-
Accept images from the system share sheet
Share images to Image Squeezer from another app. The service worker takes the POST, parks the files in a cache, and redirects to a normal page load that picks them up.
-
Quality slider
Exposes the encoder quality from 40 to 95 rather than leaving it pinned at the default 80.
-
In-page install button
Surfaces installation without digging through a browser menu. Stays hidden in browsers that do not fire the install prompt event.
-
Output format picker
Choose JPG, PNG or WebP explicitly, or leave it on Auto, which encodes to several and keeps whichever comes out smallest.
-
Build on CI instead of committing build output
The bundled worker, the wasm codecs and the generated service worker are no longer in the repository. A GitHub Actions workflow builds them on every push to
mainand publishes to Pages, so the repository holds only source. -
Initial commit
Drop, resize and re-encode up to five images at a time, entirely in the browser, with per-image and zipped downloads and an offline-capable service worker.