feat(downloads): granular post-processing phase labels

ffmpeg post-steps have no byte-progress, so instead of a silent 'Processing' the row now names
the current step (Merging / Extracting audio / Embedding thumbnail / Removing sponsors / Writing
metadata) with an indeterminate pulse. Byte-progress phases (video/audio) keep the % bar.
i18n en/hu/de.
This commit is contained in:
npeter83 2026-07-03 04:01:53 +02:00
parent 4b15d55092
commit fc69656d12
5 changed files with 39 additions and 8 deletions

View file

@ -36,7 +36,11 @@ const STATUS_CLS: Record<string, string> = {
canceled: "text-muted",
};
const PHASE_KEYS = ["video", "audio", "merging", "processing"];
// Byte-progress phases (show a % bar) vs ffmpeg post-steps (no %, indeterminate pulse).
const DOWNLOAD_PHASES = ["video", "audio"];
const PHASE_KEYS = [
"video", "audio", "merging", "audio_extract", "thumbnail", "sponsorblock", "metadata", "processing",
];
function StatusPill({ job }: { job: DownloadJob }) {
const { t } = useTranslation();
@ -116,8 +120,8 @@ function DownloadRow({
</div>
{running && (
<div className="mt-1.5">
{job.phase === "merging" || job.phase === "processing" ? (
// No meaningful percentage during ffmpeg — show an indeterminate pulse.
{job.phase && !DOWNLOAD_PHASES.includes(job.phase) ? (
// ffmpeg post-steps aren't byte-progress — show an indeterminate pulse, no %.
<div className="h-1.5 rounded-full bg-surface overflow-hidden">
<div className="h-full w-full bg-accent/60 animate-pulse" />
</div>