# 🛠 Yali-RS (Rust Installer) Yol Haritası

Bu dosya, PisiLinux için geliştirilen yeni Rust tabanlı yükleyicinin (Yali) gelişim sürecini takip eder.

## 1. Temel Altyapı
- [x] Proje iskeletinin oluşturulması (egui + eframe)
- [x] `InstallerStep` trait yapısının kurulması
- [x] Global State yönetimi (Dil, kullanıcı, disk bilgileri)
- [x] **i18n (Çoklu Dil) desteğinin entegre edilmesi**
- [x] Navigasyon sistemi (Geri/İleri/İptal butonları yönetimi)
- [x] Branding config hot-reload (dil değişince logo/slayt yeniden yüklenir)

## 2. Kurulum Modülleri (Calamares Benzeri)
- [x] **Hoşgeldiniz (Welcome):** Sistem gereksinim kontrolü ve dil seçimi.
- [x] **Konum (Location):** Bölge ve zaman dilimi seçimi.
    - [x] Sistem saat dilimi yükleme (timedatectl / zone.tab)
    - [x] Bölge/alan çift ComboBox (Calamares tarzı)
    - [x] GeoIP ile otomatik dil/saat dilimi tespiti
    - [x] NTP veya manuel tarih/saat ayarı
    - [ ] Harita desteği (gelecek)
- [x] **Klavye (Keyboard):** Klavye düzeni seçimi ve test alanı.
- [x] **Bölümleme (Partition):**
    - [x] Disklerin listelenmesi (sysinfo/block-utils).
    - [x] Otomatik bölümleme (Tüm diski sil).
    - [x] Manuel bölümleme (GParted/KPMCore benzeri yapı).
        - [x] Mevcut bölümleri tablo olarak göster.
        - [x] Bölüm silme / oluşturma (diyalog penceresi).
        - [x] Bağlama noktası (mountpoint) ve dosya sistemi seçimi.
        - [x] EFI, swap, kök (/) bölümlerinin manuel atanması.
        - [x] Değişiklik planı gösterimi (özet tablo).
        - [x] GlobalState'e `custom_partitions: Vec<CustomPartition>` eklenmesi.
        - [x] Yeniden boyutlandırma (mevcut bölümleri koruyarak) — iptal.
- [x] **Kullanıcılar (Users):** Kullanıcı adı, parola ve hostname ayarları.
- [x] **Özet (Summary):** Yapılacak işlemlerin son kontrolü.
- [x] **Kurulum (Execution):** Gerçek işlemlerin (rsync, chroot, grub) yapıldığı ekran.
- [x] **Sonuç (Finish):** Yeniden başlatma veya masaüstüne dönme.

## 3. Sistem Arka Plan İşlemleri (Job Queue)
- [x] Disklerin formatlanması (mkfs.ext4, mkswap vb.).
- [x] Sistem dosyalarının kopyalanması (`rsync` veya `squashfs` açma).
- [x] Chroot içine girerek yapılandırma yapılması.
- [x] Bootloader (GRUB) kurulumu.
- [x] COMAR üzerinden servislerin ve tetikleyicilerin çalıştırılması.
- [x] LUKS/GRUB parola yönetimi (stdin pipe, shell injection yok).

## 4. Görsel ve Kullanıcı Deneyimi (UX/UI)
- [x] PisiLinux temasına uygun egui stillerinin uygulanması.
- [x] Özel gradient butonlar (primary, secondary, danger — `buttons.rs`).
- [x] Stil uygulanmış ComboBox yardımcıları (`combobox.rs`).
- [x] ComboBox görsel sabitleri ayrı modülde (`combobox_stil.rs`).
- [x] Gradient arkaplanlı dropdown öğeleri, pointing hand imleci.
- [x] Kurulum sırasında slayt gösterisi (Slideshow).
- [x] Slayt gösterisi öncelikle ortak slaytları göstermeli, sonra masaüstü ortamına özel slaytları göstermeli.
- [x] ISO hangi masaüstü ortamını içeriyorsa onun slaytı gösterilmeli.
- [x] Hata yakalama ve kullanıcıya bildirme ekranları.
- [x] `weak_bg_fill` ile ComboBox popup arkaplan rengi (globalselde ayarlanabilir).
- [x] SVG ikon desteği (egui_extras `svg` feature).
- [x] Tema uygulama sırası düzeltmesi: önce `set_style`, sonra `set_visuals`.

## 5. Test ve Dağıtım
- [x] `--demo` parameteresi ile komutlar aktif çalışmadan sadece görsel arayüzde başlangıçtan bitişe kadar gezinme, slaytlar arasında 5 sn kadar bekleme süresi. Böylece arayüz testi yapılmış olur.
- [ ] ISO ortamında çalışma testleri.
- [ ] Farklı disk yapılarında (UEFI/Legacy, NVMe/SATA) testler.
- [x] Otomatik kurulum (Auto-install/Answer file) desteği.

## 6. Kritik Düzeltmeler (Gerçek Kurulum İçin Zorunlu)
> Bu bölüm, gerçek Live ortamda başarılı kurulum için düzeltilmesi gereken kritik sorunları içerir.

- [x] **[KRİTİK] `arch-chroot` bağımlılığını kaldır:**
    - [x] `MountBindJob` eklendi: `/proc`, `/sys`, `/dev`, `/dev/pts` bind mount'ları yapılıyor.
    - [x] `UnmountBindJob` eklendi: kurulum sonunda bind mount'lar temizleniyor.
    - [x] Tüm `run_cmd("arch-chroot", ...)` çağrıları `run_chroot(...)` helper ile değiştirildi.
    - [x] Job Queue'ya `MountBindJob` başına, `UnmountBindJob` sonuna eklendi.
- [x] **[KRİTİK] initramfs oluşturma adımı:**
    - [x] `GenerateInitramfsJob` eklendi: önce `dracut`, hata olursa `mkinitcpio` deneniyor.
    - [x] GRUB kurulumundan önce Job Queue'ya eklendi.
- [x] **[ÖNEMLİ] Kaynak dizin hardcode — dinamik hale getirildi:**
    - [x] `detect_source_dir()` fonksiyonu yazıldı (birden fazla aday dizin deneniyor).
    - [x] `build_full_job_queue()` içinde otomatik kullanılıyor.
- [x] **[ÖNEMLİ] GRUB kurulumu chroot içine taşındı:**
    - [x] `grub-install` artık chroot içinde çalışıyor (hem UEFI hem BIOS modu).
    - [x] `grub-mkconfig` de chroot içinde çalışıyor.
- [x] **[ÖNEMLİ] Lokalizasyon anahtarları güncellendi:**
    - [x] Yeni job isimleri (mount_bind, umount_bind, initramfs, bootloader) eklendi.
    - [x] Manuel bölümleme UI anahtarları eklendi (en.toml + tr.toml).
- [x] **[ÖNEMLİ] Manuel bölümleme için Job desteği — TAMAMLANDI:**
    - [x] `CustomPartition`, `FsType` tipleri `installer.rs`'e eklendi.
    - [x] `GlobalState`'e `custom_partitions: Vec<CustomPartition>` eklendi.
    - [x] `CustomPartitionJob`: kullanıcının seçtiği planı uygulayan Job.
    - [x] `build_custom_job_queue()` fabrika fonksiyonu.
- [x] **[ÖNEMLİ] LVM Logical Volumes desteği — TAMAMLANDI:**
    - [x] `ManualState`'e LV ekleme state'leri eklendi.
    - [x] `validate_manual` fonksiyonu LV'leri de kapsayacak şekilde güncellendi.
    - [x] `partition.rs` arayüzüne LV tablosu ve ➕ LV ekleme diyaloğu eklendi.
    - [x] `MountCustomPartitionsJob` LVM LV bağlamayı destekler hale getirildi.
    - [x] `FstabFromCustomPartitionsJob` LVM LV girişlerini fstab'a yazar.
    - [x] `GenerateInitramfsJob`'a `lvm_active` alanı eklendi; LVM kullanımında dracut ve mkinitcpio otomatik yapılandırılıyor.

## Kalan Eksiklikler

- [x] **Disk Bölümü Yeniden Boyutlandırma (Shrink):** *(Kapsam dışı — mevcut manuel bölümleme akışında "bölümü sil ve yeniden oluştur" yaklaşımı yeterli.)*
- [x] **Kurtarma Modunda Pisi Geçmiş Geri Alma:** `rescue.rs` — "Pisi Geçmiş" sekmesi eklendi; `pisi history` listeleme ve `pisi takeback <N>` ile geri alma destekleniyor.
- [ ] **ISO ortamında test:** Canlı ISO üzerinde kurulum testi yapılmadı.
- [ ] **Farklı disk yapılarında test:** UEFI/Legacy, NVMe/SATA farklı kombinasyonları test edilmedi.
- [ ] **Harita desteği:** Konum adımına görsel harita seçici eklenmesi planlanıyor.
- [ ] **Ağ kurulumu:** WiFi profillerinin kaydedilmesi ve otomatik bağlanma.
