From ca7b9a9bc247e3d92696ed0627029a73dab58c0f Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Sat, 13 Dec 2025 08:45:08 -0500 Subject: [PATCH] Truncate long error messages in queue view to prevent UI overflow Long FFmpeg error messages were pushing the queue UI off screen, making the interface unusable when jobs failed with verbose errors. Changes: - Truncate error messages to 150 characters maximum in status text - Add helpful message indicating full error is available via Copy Error button - Enable text wrapping on status labels to handle multi-line content gracefully - Prevents UI layout breakage while maintaining error visibility Users can still access the full error message via: - Copy Error button (copies full error to clipboard) - View Log button (opens per-job conversion log) --- internal/ui/queueview.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/ui/queueview.go b/internal/ui/queueview.go index d654f97..2cab276 100644 --- a/internal/ui/queueview.go +++ b/internal/ui/queueview.go @@ -140,6 +140,7 @@ func buildJobItem( statusText := getStatusText(job) statusLabel := widget.NewLabel(statusText) statusLabel.TextStyle = fyne.TextStyle{Monospace: true} + statusLabel.Wrapping = fyne.TextWrapWord // Control buttons var buttons []fyne.CanvasObject @@ -273,7 +274,13 @@ func getStatusText(job *queue.Job) string { } return fmt.Sprintf("Status: Completed%s", duration) case queue.JobStatusFailed: - return fmt.Sprintf("Status: Failed | Error: %s", job.Error) + // Truncate error to prevent UI overflow + errMsg := job.Error + maxLen := 150 + if len(errMsg) > maxLen { + errMsg = errMsg[:maxLen] + "… (see Copy Error button for full message)" + } + return fmt.Sprintf("Status: Failed | Error: %s", errMsg) case queue.JobStatusCancelled: return "Status: Cancelled" default: