# Changelog — [Türkçe](CHANGELOG.md)

## [4.0.4] — 2026-06-25

### Added
- Username validation function `validate_username` (returns detailed error messages)
- Forbidden system usernames list (root, daemon, bin, sys, etc.)
- Turkish character conversions extended to include uppercase letters (Ş, Ğ, İ, Ö, Ü, Ç)
- New username validation keys in locale files (username_too_long, username_forbidden, username_invalid_start, username_invalid_chars)
- `autologin` field added to UsersStep struct

### Changed
- Check/fail icons for username, password validation, and hostname inputs moved next to input fields
- Error messages shown below inputs (username validation, password mismatch)
- Bootloader page form layout updated to match users page (Frame, form_label, form_input_text/password)
- Display manager step removed from step list (ISOs ship with single desktop environment)
- Autologin feature moved from display manager step to users step
- Display manager configuration made automatic (desktop_environment auto-detected)
- Desktop environment selection used in SDDM/GDM configuration (xfce.desktop, gnome.desktop, etc.)
- Autologin default value changed to false

### Fixed
- Sidebar text color disappearing in dark mode (SIDEBAR_TEXT set to white)
- Incorrect character in derive_username function (ā → ğ)
- unused_mut warning (name variable)
- unused variable warning (err variable)
- unused import warning (DisplayManagerStep)

---

## [4.0.3] — 2026-06-23

### Added
- Searchable keyboard layout/variant selector: egui `TextEdit` + `Area` popup custom implementation
- `color_from_hex(hex: u32)` helper (`combobox_stil.rs`)
- `layout_buf`, `variant_buf` fields (`KeyboardStep`)

### Changed
- `egui-dropdown` dependency removed (no longer used)
- Layout/Variant selectors side-by-side → stacked, label width equalized to longest label
- Popup item height 28px → 32px, gradient background (`draw_gradient_bg`) in `combobox.rs` style
- `DROPDOWN_TEXT_COLOR` off-white → pure white (`color_from_hex(0xFFFFFF)`)
- All color constants converted to hex format (`color_from_hex`)

### Fixed
- Popup not showing all items on first open due to old selection filter — buffer cleared on focus
- `t!()` return type `Cow<str>` → `String` mismatch (`keyboard.rs`)

### Changed
- Slider maximum value now equals available disk space (excluding other partitions)
- Selected partition capacity included in slider range in edit mode
- `form_input_text` size field directly connected to `add_size_str`, formatted MB display added
- Size label now in `"123.456 MB"` format instead of `"123 MB"` (for parseable values)

### Fixed
- Value written to size input field not written back to `add_size_str` — text edit remained read-only

---

## [4.0.1] — 2026-06-19

### Added
- `c_root_bg()` theme function
- `show_root_password`, `show_root_password_confirm` fields (`UsersStep`)
- `form_input_text` / `form_input_password` wrapped with `Frame` and `.frame(false)`

### Changed
- `form_input_text`: Wrapped in Frame, added stroke/fill/rounding, height 32→10
- `form_input_password`: SVG eye icons (instead of emoji), Frame wrapped, `override_text_color`
- Disk grid selection colors `theme::c_*()` → constant `(237,237,224,1)`
- Disk list header and column headers: `Align::Center` → `Align::LEFT`, `vertical_centered` removed
- Root password fields raw `TextEdit` → `form_input_password` (with eye icon + frame)
- User form Frame color `theme::c_bg_widget()` → `(240,243,198)`
- Manual disk list brand/model label ordering changed

### Fixed
- `users.rs:154` — `Color32` import error (missing `egui::` prefix)

---

## [4.0.0] — 2026-06-18

### Added
- `CHANGELOG.md`
- `src/ui/combobox.rs` — ComboBox helpers (`show_combo_box`, `selectable_value`, `selectable_value_custom`, `draw_gradient_bg`)
- `src/ui/combobox_stil.rs` — ComboBox visual constants and `apply_visuals()`
- `src/steps/location.rs` — Region/timezone selection step
- `src/steps/network.rs` — Network configuration step
- `src/steps/rescue.rs` — Rescue mode
- `xkbcommon` dependency
- Keyboard visual: XKB keymap → egui drawing (`compile_layout`, `draw_layout`, `keysym_to_label`)
- ISO‑105 key position mapping (function keys, numpad, navigation included)
- Single character display per key (uppercase preferred)

### Changed
- Keyboard visual: KLE JSON download/parse → direct keymap compilation with xkbcommon
- `Cargo.toml`: `ureq`, `serde_json` removed; `xkbcommon` added
- ComboBox styles moved from `theme.rs` → `combobox_stil.rs`
- Comment lines added to `secondary_button` gradient colors
- `draw_gradient_bg` moved to `combobox_stil.rs`
- All ComboBox usages updated with `theme::show_combo_box` / `theme::selectable_value`
- Keyboard step (`keyboard.rs`): `ScrollArea`+`selectable_label` → ComboBox
- `TextEdit::multiline` background made with per-widget `Frame::group`
- `locale/` files updated
- Font sizes increased (label 9→12, secondary 7→9)

### Removed
- `ureq`, `serde_json` dependencies
- `assets/keyboards/KLE_*.json` cache files
- `assets/keyboards/KB_*.svg` files
- Old keyboard SVG loading code
- KLE JSON download/cache logic
- Old button examples in demo page

### Fixed
- `set_style`/`set_visuals` order: `set_style` called first
- Region/timezone labels vertically aligned
- Keyboard step `on_enter` not called on first render — layout also initialized in `show()`
- `xkbcommon::Keycode` iteration (conversion with `raw()`)
- `None::<&str>` → `None::<String>` type mismatch

---

## [4.0.0] — 2026-06-06

### Added
- Rescue mode (rescue step)
- Network configuration step (NetworkManager/Wicd)
- Netinstall step
- LVM and LUKS encryption support
- Demo mode (`--demo`)
- Automatic installation (`--auto-install answer.toml`)
- Multi-language support with `rust-i18n` (Turkish, English)
- Gradient buttons (`gradient_button`, `secondary_button`)
- Language selector (flag + label)
- SVG loading support (`egui_extras` + `image`)
- Slideshow (configurable with branding.toml)
- Step list in sidebar (processed steps green ✔️)
- Real-time installation file tracking
- Advanced partitioning UI (usage bar, LUKS indicator, mount-point selector)

### Changed
- `pspec.xml`/`actions.py` → Cargo-based build
- `comar`/`mudur` calls → `zbus` D-Bus and direct command execution
- Shell-based password management → secure stdin piping (LUKS/GRUB)
- Automatic username derivation (real name → system username)
- Hostname validation/sanitization
- Cleanup operations: user deletion, pool management, boot directory cleanup
- Rsync command with dynamic exclusion
- Version 4.0.1 → 4.0.0 (Cargo.toml compatibility)

### Fixed
- GRUB password writing security
- Dracut/Mkinitcpio LVM module addition
- EFI partition detection and mounting
- Password strength indicator colors
- Automatic partitioning (LVM/LUKS ordering)

---

## [0.1.0] — 2026-05-20

### Added
- First stable release
- Project skeleton (egui + wgpu)
- Step-based installation wizard
- Automatic disk partitioning (GPT/MBR)
- User creation (with password strength check)
- Bootloader configuration (GRUB)
- Display manager selection
- Summary screen
- Basic color theme (light/dark)
- Customizable branding (branding.toml)
- Error screen for rescue purposes
- Job queue (JobQueue / async task management)
- YALI serialization (installer state save/load)
