From 3e6f7b283b623b93a47247aea039de73d4437b78 Mon Sep 17 00:00:00 2001 From: Taku Kodma <79110363+risu729@users.noreply.github.com> Date: Fri, 15 May 2026 02:07:38 +1000 Subject: [PATCH 1/3] fix(upgrade): preserve summary after progress cleanup --- e2e/cli/test_upgrade_progress_summary | 16 ++++++++++++++++ src/cli/upgrade.rs | 1 + src/ui/multi_progress_report.rs | 8 ++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 e2e/cli/test_upgrade_progress_summary diff --git a/e2e/cli/test_upgrade_progress_summary b/e2e/cli/test_upgrade_progress_summary new file mode 100644 index 0000000000..9af82c115a --- /dev/null +++ b/e2e/cli/test_upgrade_progress_summary @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +echo 'dummy 1' >.tool-versions +mise install dummy@1.0.0 >/dev/null 2>&1 + +output="$(MISE_FORCE_PROGRESS=1 mise up dummy 2>&1)" +summary_line=" dummy 1.0.0 → 1.1.0" + +if [[ $output != *"$summary_line"* ]]; then + fail "upgrade summary did not include '$summary_line': $output" +fi + +after_summary="${output#*"$summary_line"}" +if grep -q $'\033\\[[0-9;]*J' <<<"$after_summary"; then + fail "upgrade summary was followed by a terminal clear sequence" +fi diff --git a/src/cli/upgrade.rs b/src/cli/upgrade.rs index 34b67073bc..8bc71413de 100644 --- a/src/cli/upgrade.rs +++ b/src/cli/upgrade.rs @@ -411,6 +411,7 @@ impl Upgrade { }); } + mpr.finish_progress(); Self::print_summary(&outdated, &successful_versions)?; install_error diff --git a/src/ui/multi_progress_report.rs b/src/ui/multi_progress_report.rs index 82a2d7ff3c..ad303413b3 100644 --- a/src/ui/multi_progress_report.rs +++ b/src/ui/multi_progress_report.rs @@ -181,9 +181,13 @@ impl MultiProgressReport { progress_trace!("footer_finish: completed={}, total={}", completed, total); - // Stop clx progress - progress::stop(); + self.finish_progress(); + } + /// Render the final progress state, then clear clx's registered jobs so + /// later regular terminal output cannot be erased by process shutdown. + pub fn finish_progress(&self) { + progress::stop(); self.reset_jobs(); } From 2c27f4cdfb3781892aadc7caec19ad97951960a3 Mon Sep 17 00:00:00 2001 From: Taku Kodma <79110363+risu729@users.noreply.github.com> Date: Fri, 15 May 2026 02:16:31 +1000 Subject: [PATCH 2/3] fix(upgrade): reset uninstall progress before follow-up work --- src/cli/upgrade.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cli/upgrade.rs b/src/cli/upgrade.rs index 8bc71413de..fe2ab9fb21 100644 --- a/src/cli/upgrade.rs +++ b/src/cli/upgrade.rs @@ -380,6 +380,7 @@ impl Upgrade { } } + mpr.finish_progress(); let ts = config.get_toolset().await?; // Fix up sources and requests for lockfile update - CLI args produce From e81688948a10b0add5beef36a22efdb66ea20e60 Mon Sep 17 00:00:00 2001 From: Taku Kodma <79110363+risu729@users.noreply.github.com> Date: Fri, 15 May 2026 02:17:42 +1000 Subject: [PATCH 3/3] test(upgrade): clarify progress summary setup failure --- e2e/cli/test_upgrade_progress_summary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/cli/test_upgrade_progress_summary b/e2e/cli/test_upgrade_progress_summary index 9af82c115a..43132f0aef 100644 --- a/e2e/cli/test_upgrade_progress_summary +++ b/e2e/cli/test_upgrade_progress_summary @@ -1,7 +1,7 @@ #!/usr/bin/env bash echo 'dummy 1' >.tool-versions -mise install dummy@1.0.0 >/dev/null 2>&1 +mise install dummy@1.0.0 >/dev/null 2>&1 || fail "pre-install of dummy@1.0.0 failed" output="$(MISE_FORCE_PROGRESS=1 mise up dummy 2>&1)" summary_line=" dummy 1.0.0 → 1.1.0"