Skip to content

Add installation progress reporting#456

Merged
Larusso merged 1 commit intomasterfrom
improve/install_progress_reporting
Apr 7, 2026
Merged

Add installation progress reporting#456
Larusso merged 1 commit intomasterfrom
improve/install_progress_reporting

Conversation

@Larusso
Copy link
Copy Markdown
Owner

@Larusso Larusso commented Apr 7, 2026

Description

Adds real-time progress feedback to the uvm install command using indicatif progress bars. Interactive terminals show per-component download progress with speed and ETA, followed by installation sub-phase spinners. Non-interactive environments (pipes, CI) fall back to milestone log lines.

  • ![ADD] ProgressHandler trait with set_message, initialize_components, get_component_handler, and begin_extraction_progress methods
  • ![ADD] MultiProgressCoordinator with per-component progress bars, phase-level spinners, and overall component counter
  • ![ADD] IndicatifProgressHandler wrapping indicatif ProgressBar; switches between download bar, spinner, and extraction bar styles based on installation phase
  • ![ADD] SimpleProgressHandler fallback for non-TTY/CI environments printing milestone messages to stderr
  • ![ADD] begin_extraction_progress for determinate byte-level progress during ZIP extraction (two-pass: sum central directory sizes, then inc per file)
  • ![ADD] Sub-phase progress messages in pkg installers (macOS/Linux): Unpacking…Extracting…Installing…
  • ![ADD] --progress / --no-progress flags to force-override TTY detection
  • ![ADD] indicatif_log_bridge integration so verbose log output suspends bars rather than corrupting them
  • ![ADD] Installation summary printed after success (elapsed time, bytes downloaded, components installed)
  • ![UPDATE] create_installer on all platforms accepts Option<Box<dyn ProgressHandler>> and wires it into the installer structs via a with_progress builder
  • ![UPDATE] Installer<V, T, I> struct carries an optional Box<dyn ProgressHandler> field

Adds real-time progress feedback to the `uvm install` command using
indicatif progress bars. Interactive terminals show per-component
download progress with speed and ETA, followed by installation
sub-phase spinners. Non-interactive environments (pipes, CI) fall back
to milestone log lines.

* ![ADD] `ProgressHandler` trait with `set_message`, `initialize_components`,
  `get_component_handler`, and `begin_extraction_progress` methods
* ![ADD] `MultiProgressCoordinator` with per-component progress bars,
  phase-level spinners, and overall component counter
* ![ADD] `IndicatifProgressHandler` wrapping indicatif `ProgressBar`;
  switches between download bar, spinner, and extraction bar styles
  based on installation phase
* ![ADD] `SimpleProgressHandler` fallback for non-TTY/CI environments
  printing milestone messages to stderr
* ![ADD] `begin_extraction_progress` for determinate byte-level progress
  during ZIP extraction (two-pass: sum central directory sizes, then
  `inc` per file)
* ![ADD] Sub-phase progress messages in pkg installers (macOS/Linux):
  `Unpacking…` → `Extracting…` → `Installing…`
* ![ADD] `--progress` / `--no-progress` flags to force-override TTY
  detection
* ![ADD] `indicatif_log_bridge` integration so verbose log output
  suspends bars rather than corrupting them
* ![ADD] Installation summary printed after success (elapsed time,
  bytes downloaded, components installed)
* ![UPDATE] `create_installer` on all platforms accepts
  `Option<Box<dyn ProgressHandler>>` and wires it into the installer
  structs via a `with_progress` builder
* ![UPDATE] `Installer<V, T, I>` struct carries an optional
  `Box<dyn ProgressHandler>` field
@Larusso Larusso merged commit 33f0bb4 into master Apr 7, 2026
8 checks passed
@Larusso Larusso deleted the improve/install_progress_reporting branch April 7, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant