Skip to content

Enforce a Minimum Version for Every Media Tool Family #1104

Closed

Description

@ptr727

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:

  1. 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.
  2. 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.
  3. 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 comparable System.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:rolling apt 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

  1. ptr727 commented on Oct 31, 2026

    @ptr727
    OwnerAuthor

    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, files PlexCleaner/MediaTool.cs, the per-tool PlexCleaner/*Tool.cs files, PlexCleaner/MediaToolInfo.cs, PlexCleaner/Tools.cs, README.md, PlexCleanerTests/VersionParsingTests.cs, new PlexCleanerTests/MinimumVersionTests.cs, and Docker/Dockerfile only if a minimum exceeds the packaged version. ARCHITECTURE.md and HISTORY.md are deferred to one final docs pull request by the maintainer's choice, so this group does not touch them.

  2. ptr727 commented on Oct 31, 2026

    @ptr727
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions