LoadingIndicator was causing OperationLog ModalScreen to fail silently
during compose. Replaced with a simple Static emoji spinner (⏳→✅).
Reverted screen push patterns back to simple callback approach.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add wait_ready() to OperationLog and await it in all callers before
starting CLI commands. Ensures the modal with spinner is fully rendered
before streaming begins.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shows an animated spinner next to the title while backup, restore,
retention, remote test, and schedule operations are running. Spinner
hides when the operation completes via finish().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The worker starts streaming output before the modal screen finishes
composing. Buffer writes until on_mount fires, then flush.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use Text.from_markup() for strings containing Rich tags
so [red]...[/red] renders as colored text instead of raw tags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>