Skip to content

Fix #184: accept only verified FFmpeg builds; fix installer bootstrap - #195

Merged
edenaion merged 1 commit into
mainfrom
hotfix/ffmpeg-verified-builds
Jul 11, 2026
Merged

edenaion merged 1 commit into
mainfrom
hotfix/ffmpeg-verified-builds

Conversation

@edenaion

Copy link
Copy Markdown
Owner

Follow-up hotfix for #184, folded into the 2.1.4 release (no version bump).

Problem

After 2.1.4, a user on a gyan.dev FFmpeg development nightly (2026-07-09-git-...) still failed export with Unrecognized option 'apply_trc', and Repair FFmpeg reported "No repair is needed." The version parser read the date-prefixed banner as release major "2026", so the nightly passed validation. The blacklist approach could only catch build shapes we anticipated.

Separately, 1-install.bat downloaded a rolling FFmpeg master nightly, and its extraction used bare tar.exe, which resolves to Git's GNU tar on many machines and reads C:\... as a remote host, so extraction silently failed and no bundled FFmpeg was installed.

Fix

☼ Windows validation is now an allowlist of verified tag-exact 8.1.2 full builds (BtbN tag and gyan full), each run through the full FFmpeg operation matrix. Every other build is rejected and routed to one-click Repair. A verified build already on PATH is used without forcing a switch. Repair only ever writes into the app's own tools/ffmpeg, never the system PATH.
☼ 1-install.bat installs the same pinned verified build Repair uses, and extraction is pinned to System32 bsdtar.
☼ check_ffmpeg.py gains --print-pin-url/--print-pin-asset so the installer and Repair share one source of truth.

Verification

☼ Full suite: 789 passed, 2 skipped
☼ Build matrix (6 real builds): all verdicts correct; both accepted 8.1.2 full builds pass all 8 FFmpeg operations (probe, cuda EXR extract + DWAB readback, all 6 export codec paths)
☼ Option B PATH e2e, Repair e2e (real download/swap), and installer bootstrap e2e all pass

Windows now accepts only verified tag-exact 8.1.2 full builds (BtbN tag and
gyan full). Any other build (nightly, development, essentials, or too old) is
rejected and routed to one-click Repair FFmpeg. A verified build already on
PATH is used without forcing a switch. Repair only ever writes into the app's
own tools/ffmpeg and never touches the system PATH.

The previous approach parsed a gyan development nightly banner
("2026-07-09-git-...") as release major "2026" and let it pass validation, so
Repair reported nothing to fix while export failed on the removed -apply_trc
option. Validation is now an allowlist of builds actually run through the full
operation matrix, not a blacklist of known-bad shapes.

1-install.bat now installs the same pinned verified build the in-app Repair
uses; it previously downloaded a rolling FFmpeg master nightly. Its extraction
step is pinned to System32 bsdtar so it no longer silently fails on machines
where Git's GNU tar wins the PATH lookup and rejects Windows drive paths.

check_ffmpeg.py gains --print-pin-url and --print-pin-asset so the installer
and Repair share one source of truth for the pinned build.
@edenaion
edenaion merged commit ded54c8 into main Jul 11, 2026
2 of 5 checks passed
@edenaion
edenaion deleted the hotfix/ffmpeg-verified-builds branch July 11, 2026 18:02
@edenaion edenaion self-assigned this Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant