From 7ff5c4b783ea8befbc983a1a6e0e679c1d4934f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkan=20I=C5=9EIK?= Date: Sun, 27 Sep 2026 17:00:43 +0300 Subject: [PATCH] =?UTF-8?q?fix(execution):=20kopyalama=20ba=C5=9Flay=C4=B1?= =?UTF-8?q?nca=20"bekleyin"=20uyar=C4=B1s=C4=B1n=C4=B1=20gizle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kullanıcı isteği: "kurulum başladığında kopyalanan dosyalar gösterilmeye başladığında kurulum devam ediyor bekleyin uyarısını kaldır." `install_in_progress` ("Kurulum devam ediyor, lütfen bekleyin…") İKİ yerde çiziliyordu: 1. çubuğun yanında, `copy_active` DEĞİLSE 2. altındaki "durum etiketi"nde, `running` olduğu sürece `running = !finished && !error && (copy_active || install_progress > 0.0)` olduğu için kopyalama sırasında ikisi de doğruydu: aynı uyarı ekranda iki kez görünüyordu. Üstelik birinin yanında yüzde ve kopyalanan dosyanın adı yazılıydı — "bekleyin" demek, ne olduğunu söyleyen çok daha fazla bilginin üstüne gereksiz bir talimat. ## Değişiklik `show_wait_notice(running, copy_active)` saf yardımcı; kopyalama sırasında uyarıyı bastırır. Kopyalama bitince `CopyFinished` ile `copy_active` false olur ve uyarı GERİ GELİR: fstab, GRUB, temizlik gibi adımlarda ilerleme çubuğu yoktur, orada kullanıcının beklemesi gerektiğini bilmesi doğrudur. Kullanıcı "kopyalama sırasında" dediği için bu adımlar kapsam dışı bırakıldı. ## Testler (102 → 105) execution.rs'de test modülü yoktu; eklendi. - kopyalama sırasında uyarı yok - kopyalama bitince uyarı geri geliyor - çalışmıyorken uyarı yok Not: `execution_description` ("Lütfen bekleyin. Bu işlem birkaç dakika sürebilir.") başlıkta sabit duruyor. O da "bekleyin" diyor ama kopyalamanın uzun süreceğini baştan bildiği için anlamlı; istenirse o da kaldırılabilir. cargo check --all-targets : 0 hata, 0 uyarı cargo test : 105/105 Co-Authored-By: Claude Opus 4.8 (1M context) --- src/steps/execution.rs | 50 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/steps/execution.rs b/src/steps/execution.rs index fbbfa1d..81a08fe 100644 --- a/src/steps/execution.rs +++ b/src/steps/execution.rs @@ -16,6 +16,20 @@ use crate::jobs::{self, InstallMessage, UiSender}; use crate::ui::{ErrorScreen, Slideshow}; use crate::ui::theme; +/// "Kurulum devam ediyor, lütfen bekleyin…" uyarısı gösterilmeli mi? +/// +/// `copy_active` iken GÖSTERİLMEZ: çubuğun yanında yüzde ve kopyalanan +/// dosyanın adı zaten yazılı, "bekleyin" demek yerine ne olduğunu +/// söyleyen çok daha fazla bilgi var. Ek olarak bu etiket çubuğun +/// altında ikinci kez görünüyordu. +/// +/// Kopyalama bitince `copy_active` false olur ve uyarı geri gelir: +/// fstab, GRUB, temizlik gibi adımlarda ilerleme çubuğu yoktur, orada +/// kullanıcının beklemesi gerektiğini bilmesi doğrudur. +fn show_wait_notice(running: bool, copy_active: bool) -> bool { + running && !copy_active +} + #[derive(Default)] pub struct ExecutionStep { rx: Option>, @@ -337,7 +351,7 @@ impl InstallerStep for ExecutionStep { ui.add_space(8.0); if self.finished { theme::success_box(ui, &t!("install_done")); - } else if running { + } else if show_wait_notice(running, self.copy_active) { ui.horizontal(|ui| { ui.spinner(); ui.colored_label(theme::c_text_dim(), t!("install_in_progress")); @@ -390,3 +404,37 @@ impl InstallerStep for ExecutionStep { // egui::Color32::from_rgb(185, 185, 205) // } // } + +#[cfg(test)] +mod tests { + use super::show_wait_notice; + + /// Kopyalama başlayınca "bekleyin" uyarısı KAYBOLMALI. + /// + /// Kullanıcı isteği: kopyalanan dosyalar gösterilmeye başladığında + /// uyarı gereksiz — çubuk zaten yüzde ve dosya adını gösteriyor. + #[test] + fn wait_notice_hidden_while_copying() { + assert!( + !show_wait_notice(true, true), + "kopyalama sırasında uyarı gösterilmemeli" + ); + } + + /// Çubuk olmayan adımlarda (fstab, GRUB, temizlik) uyarı kalmalı — + /// orada kullanıcının beklemesi gerektiğini bilmesi doğru. + #[test] + fn wait_notice_shown_after_copy_finishes() { + assert!( + show_wait_notice(true, false), + "kopyalama bitince uyarı geri gelmeli" + ); + } + + /// Kurulum başlamadan / bitince uyarı olmaz. + #[test] + fn wait_notice_absent_when_not_running() { + assert!(!show_wait_notice(false, false), "çalışmıyorken uyarı olmamalı"); + assert!(!show_wait_notice(false, true), "çalışmıyorken uyarı olmamalı"); + } +}