Status: Open
Priority: Medium
Component: lib/wsl/manager.ps1, lib/wsl/commands.ps1
Depends on: SC-029, SC-016, SC-028
Summary: As a user, I want to see spinners, progress bars, and clear status feedback during long-running WSL operations so that I know the system is working and can estimate how long I need to wait.
Description: Long-running operations (install, clone, docker/podman setup, export/import) currently show no progress indication - the user stares at a blank or static screen. SC-028 addresses the underlying output visibility issue; this item builds on that fix by adding rich visual feedback using PwshSpectreConsole's progress primitives.
- Spinner animations: wrap long operations in
Invoke-SpectreCommandWithStatusto show an animated spinner with a descriptive message (e.g., "Installing Ubuntu-24.04...") - Progress bars: use
Invoke-SpectreCommandWithProgressfor multi-step operations that have discrete phases (e.g., export: enumerate -> compress -> write) - Targeted redraws: replace
Clear-Hostfull-screen wipe with Spectre'sInvoke-SpectreLivefor updating only changed regions, eliminating screen flicker - Color-coded result summaries: after each operation, show a brief result with Spectre markup -
[green]Success[/],[yellow]Warning[/],[red]Failed[/] - Elapsed time display: show elapsed time for operations that take more than a few seconds
- Wrap existing command functions (which remain unchanged) in Spectre status/progress contexts
- Build a thin helper (e.g.,
Invoke-WslOperationWithStatus) that standardizes spinner usage across all commands - Use
Invoke-SpectreLivein the main menu loop to avoid full-screen redraws
Acceptance Criteria:
- Long-running operations (install, clone, docker setup, podman setup, export, import) show a spinner
-
Clear-Hostreplaced with targeted redraws (no full-screen flicker) - Operations display elapsed time when they take longer than 3 seconds
- Success/failure results are color-coded using Spectre markup
- Existing command functions (
commands.ps1) are not structurally changed - progress wrapping is applied at the TUI layer - All existing tests continue to pass