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:
@@ -53,3 +53,20 @@ export function describeDownloadError(stderr: string): string {
|
||||
}
|
||||
return context.length > 0 ? `${headline} — ${context.join(' · ')}` : headline
|
||||
}
|
||||
|
||||
/**
|
||||
* Full non-noise stderr, for the persisted error log's "Show details" expander
|
||||
* (Diagnostics card) — everything describeDownloadError condenses to one line,
|
||||
* kept in full (progress ticks and delete-bookkeeping still stripped) so a bug
|
||||
* report carries the real yt-dlp/ffmpeg transcript instead of a paraphrase.
|
||||
* Returns undefined when there's nothing beyond a single line — the headline
|
||||
* the caller already shows — so a plain, self-explanatory error doesn't grow a
|
||||
* details toggle with nothing new in it.
|
||||
*/
|
||||
export function stderrDetail(stderr: string): string | undefined {
|
||||
const lines = stderr
|
||||
.split('\n')
|
||||
.map((l) => l.trim())
|
||||
.filter((l) => l && !CONTEXT_NOISE.test(l))
|
||||
return lines.length > 1 ? lines.join('\n') : undefined
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user