V1.0.0
🎉 Image Optimizer v1.0.0
We're excited to announce the first public release of Image Optimizer! 🎉
This initial release provides a simple, cross-platform desktop application for batch image optimization with real-time progress tracking, multiple compression modes, and an intuitive before/after preview experience.
✨ Highlights
-
Batch scan local folders for PNG, JPG, BMP, and TIFF images.
-
Drag & drop files or browse to upload individual images.
-
Three optimization modes:
- Standard (lossy)
- Lossless
- Resize-only
-
Preserve specific colors during PNG quantization with hex color protection.
-
Optional Floyd–Steinberg dithering for pngquant.
-
Interactive side-by-side and overlay comparison before and after compression.
-
Live optimization logs with real-time progress updates.
-
Download all optimized images as a single ZIP archive.
-
Automatic detection of pngquant and oxipng binaries.
-
Cross-platform support for Windows, macOS, and Linux, with Windows binaries bundled for out-of-the-box use.
🔧 Packaging & Deployment
- Added a PyInstaller build script for generating standalone Windows executables.
- Included application icons, favicon, and README banner assets.
- Improved compatibility with frozen PyInstaller builds using proper
sys._MEIPASSpath resolution.
🐛 Stability & Security
This release also includes numerous reliability and security improvements:
- Fixed path traversal vulnerabilities in file-serving endpoints.
- Fixed XSS vulnerabilities in file name rendering on preview and results pages.
- Eliminated a race condition that could reset application state during active optimization.
- Fixed background task failures that could silently hide optimizer errors.
- Added automatic busy-port detection and fallback.
- Prevented
tkintercrashes in headless environments. - Fixed preview support for uploaded (non-scanned) images.
- Corrected log color inconsistencies between the backend and frontend.