---
id: TASK-26.1
title: Wire spinner into runner execution flow
status: Done
assignee: []
created_date: '2026-02-28 19:47'
updated_date: '2026-03-01 00:50'
labels:
  - ui
  - cli
dependencies: []
references:
  - src/core/exec.rs
  - src/core/log.rs
parent_task_id: TASK-26
priority: medium
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
Use spinners::Spinner (SimpleDots) in the command runner to show an active spinner while commands run, only at verbosity=2. Suppress spinner for quiet mode and for verbose output modes.
<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria
<!-- AC:BEGIN -->
- [x] #1 Spinner activates for non-dry-run commands only at verbosity=2 (normal).
- [x] #2 Spinner stops cleanly on success and on error before emitting error output.
- [x] #3 Spinner is not shown when verbose output is inherited or when quiet mode suppresses output.
<!-- AC:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Updated spinner handling so verbose=2 uses a spinner tied to the current command message (e.g., Configuring/Building/Flashing/Running), printing the message via stop_with_message. Added run_with_spinner in Runner and a cmd helper to use it. Ran `just check -- -D warnings`.
<!-- SECTION:FINAL_SUMMARY:END -->
