"use client"; import Link from "next/link"; import { useState } from "react"; import type { JobRowView } from "yt-dlp-transcript-common/views/jobRowView"; import { formatDuration } from "yt-dlp-transcript-common/lib/format"; import { JobLogTail } from "../[id]/components/JobLogTail"; import { jobKindLabel } from "../jobKindLabels"; import { formatElapsed } from "../../lib/formatElapsed"; import { CancelJobButton } from "./CancelJobButton"; import { DrainJobButton } from "./DrainJobButton"; import { ForceReleaseJobButton } from "./ForceReleaseJobButton"; import { ReorderJobButtons } from "./ReorderJobButtons"; import { RetryJobButton } from "./RetryJobButton"; import { JobProgressBar, TaskProgressBar, compactProgressText, } from "./JobProgressBars"; // ONE JOB, DRAWN ONE WAY — in three sizes. // // Every surface that shows a job in flight draws a `JobRowView` // (common/views/jobRowView.ts) through this file: the /jobs table (`table`, a //
{job.queueKey || "—"}
{job.background && " · waiting behind a manual job"}
)}
{/* Its counterpart for a cancelled job: why. Compact rows carry it as
the pill's title instead — they are one line, always. */}
{!compact &&