feat(diagnostics): persist full stderr detail behind a "Show details" toggle
describeDownloadError condenses a postprocessing failure to one line for the queue/notification, discarding the rest of yt-dlp's stderr. The persisted error log now also keeps the fuller non-noise transcript (stderrDetail) as an optional `detail` field, and the Diagnostics card gets a collapsible "Show details" expander per row so a failure like "Postprocessing: Conversion failed!" can be inspected -- and copied into a bug report -- without re-running the download from a terminal.
This commit is contained in:
@@ -33,7 +33,7 @@ import {
|
||||
FILEPATH_MARKER,
|
||||
DEST_MARKER
|
||||
} from './core/buildArgs'
|
||||
import { describeDownloadError } from './log'
|
||||
import { describeDownloadError, stderrDetail } from './log'
|
||||
import { addErrorLog } from './errorlog'
|
||||
import {
|
||||
STALL_TIMEOUT_MS,
|
||||
@@ -117,7 +117,12 @@ function notify(wc: WebContents, title: string, body: string, incognito = false)
|
||||
if (flashWin && !flashWin.isDestroyed() && !flashWin.isFocused()) flashWin.flashFrame(true)
|
||||
}
|
||||
|
||||
function logFailure(opts: StartDownloadOptions, title: string | undefined, error: string): void {
|
||||
function logFailure(
|
||||
opts: StartDownloadOptions,
|
||||
title: string | undefined,
|
||||
error: string,
|
||||
detail?: string
|
||||
): void {
|
||||
// L136: incognito downloads are never recorded — not even a failure entry, which
|
||||
// would persist the title + URL in the user-facing diagnostics log.
|
||||
if (opts.incognito) return
|
||||
@@ -127,6 +132,7 @@ function logFailure(opts: StartDownloadOptions, title: string | undefined, error
|
||||
url: opts.url,
|
||||
kind: opts.kind,
|
||||
error,
|
||||
detail,
|
||||
occurredAt: Date.now()
|
||||
})
|
||||
}
|
||||
@@ -532,7 +538,7 @@ function wireChildProcess(params: {
|
||||
} else {
|
||||
const msg = describeDownloadError(stderrTail) || `yt-dlp exited with code ${code}`
|
||||
send(wc, { type: 'error', id: opts.id, error: msg })
|
||||
logFailure(opts, getTitle(), msg)
|
||||
logFailure(opts, getTitle(), msg, stderrDetail(stderrTail))
|
||||
notify(
|
||||
wc,
|
||||
opts.incognito ? 'Download failed' : (getTitle() ?? 'Download failed'),
|
||||
|
||||
Reference in New Issue
Block a user