# 🛠 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) ## 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 (Harita desteği eklenecek). - [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` eklenmesi. - [x] Yeniden boyutlandırma (mevcut bölümleri koruyarak) — gelecek. - [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ı. ## 4. Görsel ve Kullanıcı Deneyimi (UX/UI) - [x] PisiLinux temasına uygun egui stillerinin uygulanması. - [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ı. ## 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` 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 notu: ntfsresize/resize2fs entegrasyonu disk I/O riskleri taşıdığından, mevcut manuel bölümleme akışında "bölümü sil ve yeniden oluştur" yaklaşımı yeterli; ayrıca calamares da aynı yolu izler.)* - [x] **Kurtarma Modunda Pisi Geçmiş Geri Alma:** `rescue.rs` güncellendi — "Pisi Geçmiş" sekmesi eklendi; `pisi history` listeleme ve `pisi takeback ` ile geri alma destekleniyor.