chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore: Consolidate project structure and update build configuration - #682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

Copy link
Copy Markdown
Owner
  • Added CODESTYLE.md for code style and formatting rules.
  • Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
  • Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
  • Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
  • Updated HISTORY.md to reflect structural changes and new version 3.16.
  • Updated LICENSE to reflect copyright years.
  • Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
  • Refactored test classes to remove unnecessary fixture dependencies.
  • Updated README.md to reflect the latest version and changes.
  • Updated version.json to version 3.16.

Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com

- Added CODESTYLE.md for code style and formatting rules.
- Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions.
- Refactored Docker build scripts and Dockerfile for improved clarity and functionality.
- Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh.
- Updated HISTORY.md to reflect structural changes and new version 3.16.
- Updated LICENSE to reflect copyright years.
- Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings.
- Refactored test classes to remove unnecessary fixture dependencies.
- Updated README.md to reflect the latest version and changes.
- Updated version.json to version 3.16.
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 16, 2026 00:30

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.

Changes:

  • Centralized shared MSBuild properties and NuGet package versions via Directory.Build.props and Directory.Packages.props, and updated project files accordingly.
  • Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
  • Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused using directives.

Reviewed changes

Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
version.jsonBumps Nerdbank.GitVersioning version to 3.16.
README.mdUpdates release notes/version and workflow badge URLs.
HISTORY.mdAdds 3.16 entry documenting structural changes.
LICENSEUpdates copyright years.
CODESTYLE.mdAdds documented code style/formatting rules.
AGENTS.mdAdds guidance for AI agents and repo conventions.
Directory.Build.propsAdds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.).
Directory.Packages.propsAdds centralized NuGet package versions.
PlexCleaner/PlexCleaner.csprojRemoves per-project framework/package versions to align with centralized props.
PlexCleanerTests/PlexCleanerTests.csprojAligns test project with centralized props and adjusts test package refs.
Sandbox/Sandbox.csprojRemoves per-project TFM/package versions to align with centralized props.
Sandbox/Program.csSwitches settings deserialization to async and improves nullability handling.
Sandbox/TestSomething.csRemoves unused using directives after implicit usings/cleanup.
PlexCleanerTests/CommandLineTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FileNameEscapingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/VersionParsingTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/WildcardTests.csRemoves unused fixture dependency in test class signature.
PlexCleanerTests/FfMpegIdetInfoSerializer.csUpdates nullability annotations in serializer signature.
PlexCleanerTests/PlexCleanerFixture.csSeals fixture type, tightens nullability, and adds analyzer suppressions.
PlexCleaner/Program.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Tools.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TrackProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VideoProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SubtitleProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Process.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessDriver.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ProcessResultJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Convert.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConvertOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/VerifyOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/CommandLineOptions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Extensions.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Language.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Bitrate.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/BitrateInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SelectMediaProps.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/Monitor.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFile.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SidecarFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ConfigFileJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/ToolInfoJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/TagMapSet.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaToolInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoXmlParser.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolXmlSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfProbeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegIdetInfo.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/FfMpegBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/HandBrakeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/SevenZipBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvMergeBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditTool.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvPropEditBuilder.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MkvToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/JsonSerialization.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/KeepAwake.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner/MediaInfoToolJsonSchema.csRemoves unused using directives after centralized settings/implicit usings.
PlexCleaner.slnxUpdates solution structure and referenced workflow/script/doc items.
PlexCleaner.code-workspaceUpdates workspace recommendations and settings.
.vscode/tasks.jsonRefactors tasks (adds outdated upgrade, simplifies Docker tasks).
.vscode/launch.jsonUpdates debug launch paths to .artifacts layout.
.editorconfigAdjusts formatting rules and analyzer settings.
.gitignoreAdds .codex and *.log ignores.
.dockerignoreReplaces/modernizes ignore patterns for smaller Docker contexts.
Docker/DockerfileRenames/updates Dockerfile and integrates centralized props into build context.
Docker/Build.shRuns build+test, then publishes using PublishDir properties.
Docker/UnitTest.shRemoved (unit testing moved into Build.sh).
.github/dependabot.ymlSimplifies Dependabot config.
.github/copilot-instructions.mdUpdates repo conventions/docs to reflect new centralized build/package props and workflows.
.github/workflows/build-datebadge-task.ymlAdds reusable workflow for BYOB date badge.
.github/workflows/get-version-task.ymlRefactors version extraction task workflow.
.github/workflows/build-docker-task.ymlRefactors Docker build task workflow and adds registry cache usage.
.github/workflows/build-executable-task.ymlAdds reusable workflow to publish executables for multiple runtimes.
.github/workflows/build-release-task.ymlAdds reusable workflow to orchestrate release build + (optional) publishing.
.github/workflows/test-release-task.ymlAdds reusable workflow to run style checks + tests + build.
.github/workflows/test-pull-request.ymlAdds PR validation workflow calling reusable test workflow.
.github/workflows/publish-release.ymlAdds publish workflow calling the reusable release task.
.github/workflows/publish-periodic-docker-release.ymlRefactors weekly Docker publish workflow to use new task workflows.
.github/workflows/merge-bot-pull-request.ymlAdds bot workflow to auto-merge Dependabot PRs under constraints.
.github/workflows/TestDockerTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestDockerPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/TestBuildTask.ymlRemoved (superseded by new task workflows).
.github/workflows/TestBuildPr.ymlRemoved (superseded by new PR workflow).
.github/workflows/DependabotAutoMerge.ymlRemoved (replaced by merge-bot workflow).
.github/workflows/BuildGitHubRelease.ymlRemoved (replaced by publish-release/build-release-task workflows).
Comments suppressed due to low confidence (5)

.github/workflows/publish-periodic-docker-release.yml:80

  • This workflow references action versions that may not exist (e.g., actions/upload-artifact@v7, actions/checkout@v6, actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
    .github/workflows/build-docker-task.yml:71
  • BUILD_ASSEMBLY_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to keep versioning consistent.
    .github/workflows/get-version-task.yml:36
  • This workflow uses action versions that may not exist (e.g., actions/setup-dotnet@v5, actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
    .github/workflows/build-docker-task.yml:43
  • Several GitHub Actions references use major versions that may not exist (e.g., actions/checkout@v6, docker/setup-qemu-action@v4, docker/setup-buildx-action@v4, docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
    .github/workflows/get-version-task.yml:41
  • dotnet/nbgv@master is a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.

Comment thread.vscode/launch.json
Comment thread.editorconfig Outdated
Comment thread.dockerignore
…y .editorconfig for CA5392 severity description
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/build-docker-task.yml:71

  • BUILD_ASSEMBLY_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion
Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727
ptr727 merged commit 868173f into developApr 16, 2026
16 checks passed
@ptr727
ptr727 deleted the prbot branch July 7, 2026 21:06
Sign up for freeto 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.

2 participants

@ptr727