Repository navigation
Description
Behavior
MediaTool.MinimumVersion sets a minimum only for the FFmpeg tool family, at 8.0. It returns null for HandBrake, MediaInfo, MkvToolNix, and 7-Zip, so Tools.VerifyTools() accepts any version of those tools at startup. A very old MkvMerge, MkvPropEdit, MediaInfo, HandBrakeCLI, or 7-Zip can therefore run, and it fails later, partway through processing. The failure mode is an unknown option, a different output format, or a known bug PlexCleaner depends on being fixed. That fails a file rather than stopping the run cleanly before any media is touched.
Fix direction
Give every tool family a minimum version, enforced through the same single startup path the FFmpeg minimum uses. Keep one minimum per family, with no per-version branching at call sites.
Pick each minimum by one of these, in order of preference:
- Audit the command-line options in use. For each family, list every option, output field, and JSON property PlexCleaner passes or parses. Record the release that introduced each one, and take the highest as the floor.
- Audit the bug fixes we depend on. Note any tool behavior PlexCleaner relies on that a fix changed, and take the release carrying that fix where it is higher than item 1.
- Fallback, a circa-date baseline. Where an audit is impractical, take each family's release from around FFmpeg 8.0's release in August 2025. This keeps the whole toolset on a consistent vintage. Confirm each version against the project's own release history before using it.
Things to check
MediaTool.IsSupportedVersion()treats a version string that does not parse as a current git build and passes it. Confirm each family's version parser yields a comparableSystem.Version, such as the year-based MediaInfo and 7-Zip versions and the major-only MkvToolNix versions. A parser returning an unparsable string would silently skip the gate.- Each minimum must be met by the
ubuntu:rollingapt packages the Docker image installs, and by the Windows automatic tool download. - State which distribution packages each raise drops, and update the README minimum statement and HISTORY together with the code.
- Add a test per family that an older version is refused and the minimum is accepted.
Activity
ptr727 commentedon Oct 31, 2026
Decision from the maintainer (2026-10-30): set each tool family's minimum to its version from around FFmpeg 8.0's release (August 2025).
Claim (backlog burndown round 1): branch
feature/1104-tool-minimum-versions, filesPlexCleaner/MediaTool.cs, the per-toolPlexCleaner/*Tool.csfiles,PlexCleaner/MediaToolInfo.cs,PlexCleaner/Tools.cs,README.md,PlexCleanerTests/VersionParsingTests.cs, newPlexCleanerTests/MinimumVersionTests.cs, andDocker/Dockerfileonly if a minimum exceeds the packaged version.ARCHITECTURE.mdandHISTORY.mdare deferred to one final docs pull request by the maintainer's choice, so this group does not touch them.ptr727 commentedon Oct 31, 2026
Further decision from the maintainer (2026-10-30): floors are each family's latest release on or before FFmpeg 8.0's tag (2025-08-22). An unparseable version string is handled by parsing the known dev-build formats (HandBrake branch suffix and build timestamp, FFmpeg git builds) where possible, and otherwise accepting it with a logged warning instead of passing silently.