- Add detailed_mode to AppState, derived from skill_level setting
- Expand advanced option sections by default in Detailed mode
(resize, convert, compress, watermark steps)
- Fix high contrast to use HighContrast GTK theme
- Add completion sound via canberra-gtk-play
- Add adjustments_enabled field and guard rotation/flip/adjustments behind it
- Wire adjustments toggle in workflow step
- Wire progressive JPEG toggle in convert and compress steps
- Wire format mapping ComboRows (JPEG/PNG/WebP/TIFF) in convert step
- Wire AVIF quality, WebP effort, AVIF speed controls in compress step
- Initialize all new controls from current config values
Split-view comparison showing original vs compressed image side by
side. Draggable vertical divider with handle circle. Shows file sizes
and savings percentage. Compresses a sample image in a background
thread and renders via cairo with pixbuf clipping.
Screen readers now announce the purpose and range of brightness,
contrast, saturation, and compression quality sliders. The
watermark position grid frame also has a descriptive label.
Add Photographer mode to metadata step that keeps copyright and camera
model while stripping GPS and software data. Improve compress quality
descriptions with estimated file size reduction percentages.
- 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.