feat(tui): surface the failure reason on failed downloads

Carry a human-readable reason on DownloadStatus::Failed so it flows
through the existing status channel to the TUI. The download Info pane
now shows an Error line for a failed download (connect failure, peer
disconnect, truncated transfer, peer-reported upload failure, or the
underlying transfer error). Failures without a known reason render as
before.
This commit is contained in:
michel
2026-07-19 19:36:15 +02:00
parent 4809dd7059
commit ae28f4236a
9 changed files with 114 additions and 34 deletions
+3 -3
View File
@@ -231,7 +231,7 @@ impl MultiDownloadProgress {
DownloadStatus::InProgress { .. } => "⧗",
DownloadStatus::Paused { .. } => "⏸",
DownloadStatus::Completed => "✓",
DownloadStatus::Failed => "✗",
DownloadStatus::Failed(_) => "✗",
DownloadStatus::TimedOut => "⏱",
};
@@ -272,7 +272,7 @@ impl MultiDownloadProgress {
DownloadStatus::InProgress { .. } => warning_style(),
DownloadStatus::Paused { .. } => info_style(),
DownloadStatus::Completed => primary_style(),
DownloadStatus::Failed | DownloadStatus::TimedOut => {
DownloadStatus::Failed(_) | DownloadStatus::TimedOut => {
error_style()
}
};
@@ -346,7 +346,7 @@ pub fn render_download_stats(
.filter(|d| {
matches!(
d.download.status,
DownloadStatus::Failed | DownloadStatus::TimedOut
DownloadStatus::Failed(_) | DownloadStatus::TimedOut
)
})
.count();