Commit Graph

15 Commits

Author SHA1 Message Date
a666fbad05 Fix pipeline order, add selective metadata stripping, rename case/regex
- Move watermark step after compress in processing pipeline to match
  design doc order (resize, adjustments, convert, compress, metadata,
  watermark, rename)
- Implement selective EXIF metadata stripping for Privacy and Custom
  modes using little_exif tag filtering (GPS, camera, software,
  timestamps, copyright categories)
- Add case conversion support to rename (none/lower/upper/title)
- Add regex find-and-replace on original filenames
- Wire case and regex controls in rename step UI to JobConfig
- Add regex crate dependency to pixstrip-core
2026-03-06 18:12:18 +02:00
3284e066a0 Add session memory, resize mode tabs, improved output summary 2026-03-06 12:44:16 +02:00
e969c4165e Add window persistence, clickable step indicator, file list improvements
- Window size/position remembered between sessions via SessionStore
- Step indicator dots now clickable to navigate directly to that step,
  with keyboard shortcut hints in tooltips
- File list in add-files dialog shows format and size per image,
  header shows total count and total size
- Welcome dialog now saves skill level choice to config
- SessionState extended with window_width, window_height, window_maximized
2026-03-06 12:27:19 +02:00
e1c2e11165 Add file watcher for watch folder functionality
inotify-based folder watcher using the notify crate that detects new
image files, ignores non-image files, and supports start/stop lifecycle.
WatchFolder config struct for preset-linked watched directories.
2026-03-06 11:17:02 +02:00
be7d345aa9 Add storage module for presets, config, session, and history persistence
Preset save/load/list/delete/import/export, config JSON persistence,
session state save/restore, and processing history log with append/clear.
All stored as JSON under ~/.config/pixstrip/.
2026-03-06 02:14:57 +02:00
8ced89a00f Add pipeline executor with progress reporting and cancellation
Sequential execution with per-image progress callbacks, cancellation
via atomic flag, batch result tracking (success/fail/sizes/timing).
Phase 5 complete - 85 tests passing, zero clippy warnings.
2026-03-06 02:08:11 +02:00
d4aef0b774 Add metadata stripping, watermark positioning, and rename template modules
Metadata: JPEG EXIF stripping (APP1 segment removal).
Watermark: 9-position grid calculation with margin support.
Rename: template parser with {name}, {ext}, {counter:N}, {width}, {height}
  and collision resolution with auto-suffix.
Phase 4 complete - 79 tests passing, zero clippy warnings.
2026-03-06 02:06:01 +02:00
52931daf53 Add output encoders (mozjpeg, oxipng, webp, avif) and integration tests
OutputEncoder dispatches to specialized encoders per format.
JPEG: mozjpeg with quality control. PNG: oxipng lossless optimization.
WebP: libwebp encoding. AVIF: ravif via image crate.
GIF/TIFF: fallback via image crate.
Phase 3 complete - 59 tests passing, zero clippy warnings.
2026-03-06 02:02:27 +02:00
545bf27fe4 Add SIMD-accelerated resize operation using fast_image_resize
Lanczos3 filter, supports ByWidth, ByHeight, FitInBox, Exact modes.
All 5 resize tests passing.
2026-03-06 01:54:57 +02:00
c445f71163 Add ImageLoader and file discovery modules
ImageLoader: load image info (dimensions, format, file size) and pixels.
Discovery: find image files by extension, flat or recursive, single file or directory.
All 9 tests passing.
2026-03-06 01:50:46 +02:00
d630d2fb3d Add AppConfig with overwrite behavior, skill level, thread count settings
All 3 config tests passing.
2026-03-06 01:43:22 +02:00
e7142604d4 Add Preset type with 8 built-in presets and JSON serialization
All 5 preset tests passing.
2026-03-06 01:42:35 +02:00
715d8ab626 Add ProcessingJob type with source management and output path resolution
All 6 pipeline tests passing.
2026-03-06 01:41:23 +02:00
0203044a43 Add operation configuration types: resize, convert, compress, metadata, watermark, rename
All 11 operation tests passing.
2026-03-06 01:40:24 +02:00
3e176e3d65 Add error types and core image types: ImageFormat, ImageSource, Dimensions, QualityPreset 2026-03-06 01:37:39 +02:00