- Added
missingDependencyas a first-class error kind for missingffmpeg/ffprobe. - Added stable code
YTDLP_MISSING_DEPENDENCY, metadata, README coverage, and fixture coverage.
- Classified yt-dlp's generic
unable to download video datawrapper asnetwork. - Updated the upstream yt-dlp snapshot so no entries remain with
kind: null. - Hardened the upstream scan workflow for Node 24 actions, annotated tag dereferencing, and inline validation before generated PRs are opened.
First public release. Curated regex taxonomy of yt-dlp error kinds, snapshot-anchored to the upstream source.
classifyYtDlpStderr(stderr, opts?)— pure stderr →{ kind, raw }classifierclassifyAll(stderr, opts?)— per-line classification for--ignore-errorsrunsextractLastError(stderr)— pull the most useful single-line descriptionisPostprocessFailure(raw)— predicate for ENOSPC-masquerading-as-ffmpeg detectionerrorKindMetadata(kind)— stable code, recoverability, suggested yt-dlp flags, docs URLYT_DLP_ERROR_KINDS,YtDlpErrorKind,ERROR_KIND_METADATA,ERROR_PATTERNS
botBlock, ipBlock, rateLimit, ageRestricted, unavailable, geoBlocked, drmProtected, loginRequired, outOfDiskSpace, chunkTransferFailure, postprocessFailure, parse, network, unsupportedUrl, unknown.
- yt-dlp
2026.03.17(04d6974f502bbdfaed72c624344f262e30ad9708) - Weekly CI cron tracks new releases and opens PR on snapshot drift.
- Fixture corpus: realistic stderr blobs per kind under
tests/fixtures/yt-dlp-stderr/. data/known-yt-dlp-strings.json: auto-extracted yt-dlp source strings, each tagged withkindfor round-trip testing.data/known-extractor-strings.json: hand-curated YouTube / extractor-passthrough strings (those that don't originate in yt-dlp source).tests/codes-golden.test.ts: stable-code contract — any change requires a major SemVer bump.