- InstallMessage: added SubProgress(f32) and CurrentFile(String) variants
- GlobalState: added install_sub_progress field
- UiSender: added sub_progress() and current_file() helpers
- CopyFilesJob: now streams rsync stderr, parses xfr#/to-chk for progress,
and sends SubProgress/CurrentFile messages to UI
- execution.rs: displays secondary progress bar below the main one during
rsync file copy, updates install_current_file in real-time
- main.rs: handles new InstallMessage variants in auto-install mode
- gradient_button now accepts enabled parameter; uses Sense::hover() and muted colors when disabled
- Added primary_button_enabled, secondary_button_enabled, danger_button_enabled variants
- main.rs: next button uses primary_button_enabled(..., is_valid) so it's grayed out and non-clickable when form incomplete
- Custom combobox implementation with TextEdit + Area popup for keyboard layout/variant search
- Added color_from_hex() helper, layout_buf/variant_buf fields
- Removed egui-dropdown dependency
- Popup items 28px -> 32px with gradient background
- Dropdown text color changed to pure white
- All color constants converted to hex format
- KLE SVG rendering improvements
- CHANGELOG.md updated
- Add linear gradient backgrounds to primary/secondary/danger buttons
- Add language selector with flag icons in ComboBox
- Add SVG support via egui_extras feature
- Add cancel confirmation dialog on exit
- Update Yali logo to SVG icon
- Add flag SVGs for all countries
- Improve users step layout with form helpers
- Refactor button API (ui::theme::*_button now takes ui param)