Releases: SysAdminDoc/ImgConverter
Releases · SysAdminDoc/ImgConverter
Release list
ImgConverter v3.5.0
Premium workspace redesign
- Reframed the desktop workflow as Source → Output recipe → Batch summary with responsive wide and compact layouts.
- Added a unified line-icon system, new ImgConverter app icon, clearer hierarchy, progressive disclosure, and polished empty/busy/success/error states.
- Reworked History, Watch, Plugins, Duplicate Finder, Command Preview, and File Manager dialogs into the same visual system.
- Hardened scan/conversion state restoration, stale-result invalidation, cancellation/partial-failure reporting, and completed-output actions.
- Added GUI and packaging regressions, including responsive behavior, semantic state, checkbox rendering, shortcut absence, and frozen multiprocessing startup.
Verification
- 192 tests passed; 3 optional-dependency tests skipped.
- Clean isolated PyInstaller 6.21.0 build on Python 3.12.10.
- Packaged executable converted a PNG fixture to WebP successfully.
- SHA-256 checksum, dependency inventory, SBOM, and provenance are attached.
The Windows executable is unsigned because no trusted code-signing certificate is available on the build host.
v3.3.4
Added
- Persistent batch session history: completed GUI and CLI batches append redacted local history records with option summaries, counts, byte totals, failure counts, and report/support-bundle pointers. The GUI exposes a read-only Batch History dialog, and --history prints the same redacted history as JSON.
v3.3.3
[v3.3.3] — 2026-06-28
Fixed
- Entry-point plugin trust pinning: Package entry-point plugins now store and verify a digest of installed module and distribution metadata files, so same-version package code changes are reported as changed and skipped until re-trusted.
v3.3.2
[v3.3.2] — 2026-06-28
Fixed
- SDK-only C2PA verification: C2PA-marked sources now run provenance verification when
c2pa-pythonis installed even if thec2patoolbinary is absent, while preserving the existingc2patoolfallback.
v3.3.1
[v3.3.1] — 2026-06-27
Fixed
- Multi-frame ConvertOptions parity:
--frames all/--frames animatenow routes throughConvertOptions, so quality, resize, compression, DPI, and metadata choices are honored consistently with single-frame conversion.
Changed
- Drained
ROADMAP.mdto actionable-only state and kept true blockers inRoadmap_Blocked.md. - Synced docs with local-build-only releases and Pillow-native QOI support.
HEICShift v2.8.0
What's New
- Live scan feedback — per-directory progress in log, live stats panel updates, running totals in status bar, pulsing progress bar during scan
- XMP metadata passthrough for AVIF/JXL output
- UI scaling — QScrollArea + QSplitter, reduced minimum size (700x520), column stretch for grid layouts
- Removed rigid pixel constraints for better display adaptation
- Lossless WebP checkbox hidden in Auto mode
- Resize mode preserves user values across format changes
- Format index bounds check on settings restore
HEICShift v2.7.0
What's New
- JPEG XL output format — encode to JPEG XL via pillow-jxl-plugin with quality slider and effort tuning (conditional on plugin availability; disabled in GUI/CLI when not installed)
- CLI full option parity — new
--tiff-compression(none/lzw/deflate),--png-level(1-9), and--resize scale:VALUEflags - CLI progress counters — every line now shows
(15/100)progress, final summary includes wall-clock time and files/sec - Sorted scan results — deterministic file ordering in both directory scans and drag & drop
CLI Examples
# Convert to JPEG XL
python heicshift.py --input ./photos --format jxl --quality 90
# Resize by scale percentage
python heicshift.py --input ./photos --resize scale:50
# TIFF with LZW compression
python heicshift.py --input ./photos --format tiff --tiff-compression lzw
# PNG with max compression
python heicshift.py --input ./photos --format png --png-level 9HEICShift 2.7.0
Full Changelog: v2.6.0...2.7.0
HEICShift v2.6.0
What's New
- AVIF output format — next-gen AV1 codec via Pillow's native encoder with quality slider, best compression ratio
- CSV conversion report — export structured per-file report with status, sizes, timing, and warnings
- Drag & drop individual files — drop image files directly onto the window (not just folders)
- CLI full parity — 8 new flags:
--skip-existing,--progressive,--chroma-420,--lossless,--srgb,--prefix,--suffix,--no-structure - Wall-clock time — done summary now shows actual elapsed time alongside processing time
CLI Examples
# Convert to AVIF with sRGB color conversion
python heicshift.py --input ./photos --format avif --srgb
# Progressive JPEG with prefix, skip already-converted
python heicshift.py -i ./photos -f jpeg --progressive --prefix "web_" --skip-existingHEICShift v2.5.0
What's New
CLI Mode
Run HEICShift from the command line for scripted or headless operation. If --input is provided, the GUI is skipped entirely.
python heicshift.py --input ./photos --format jpeg --quality 85
python heicshift.py --input ./photos --dry-run
python heicshift.py --versionFlags: --input, --output, --format, --quality, --workers, --in-place, --recursive/--no-recursive, --dry-run, --strip-metadata, --resize max_dim:1920, --version
Exit codes: 0 (all OK), 1 (partial failure), 2 (total failure / bad input)
Safety & Diagnostics
- Disk space pre-check — blocks conversion if estimated output exceeds available space, warns at 80%
- Resize upscaling guard — warns when image is already smaller than the resize target instead of silently skipping
- Better error logging — new
[WARN]log lines for sRGB conversion failures, RAW metadata absence, and resize skips - Dependency version logging — startup log now shows Pillow, pillow-heif, PyQt6, and optional dependency versions
- Stats color reset — stat label colors (skipped/failed/saved) now reset to green on new batch start
UX Polish
- File count in title bar — shows file count after scan, progress during conversion, summary when done
- Auto-open output folder — new checkbox to automatically open the output folder when conversion finishes
- Strip metadata — new option to remove all EXIF/ICC/XMP from output files (mutually exclusive with preserve)