- Images step: folder drag-and-drop with recursive image scanning, per-file
list with format and size info, total file size in header, supported
formats label in empty state
- Compress step: per-format quality controls moved into AdwExpanderRow,
improved quality level descriptions
- Output step: dynamic image count with total size from loaded_files,
initial overwrite behavior from config
- Workflow step: properly handle MetadataConfig::Custom in preset import,
mapping all custom metadata fields to JobConfig
All four configurable steps (resize, convert, compress, metadata) now
have signal handlers that update the shared JobConfig via AppState.
The run_processing function builds ProcessingJob from actual user
choices instead of hardcoded values. Fixed clippy warnings (collapsed
if-let chain, removed needless borrow).
Full Adwaita widget-based layouts for all 7 wizard steps with
PreferencesGroups, SwitchRows, SpinRows, ComboRows, FlowBoxes,
ExpanderRows for social media presets, quality slider with named
marks, metadata radio group, and output configuration.