Skip to content

Latest commit

 

History

792 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoQACSharp

AutoQACSharp is a Windows desktop tool for sequential cleaning of Bethesda plugins with xEdit Quick Auto Clean (-QAC). The main app is built with WinUI 3 and the Windows App SDK, uses Serilog for logging, YamlDotNet for configuration, and Mutagen for plugin discovery where supported.

Current Status

  • The desktop app is past the old "foundation stage". Core configuration, plugin loading, cleaning orchestration, backup/restore, result reporting, and test coverage are all in place.
  • The solution currently contains four projects: AutoQAC, AutoQAC.Tests, QueryPlugins, and QueryPlugins.Tests.
  • The UI uses WinUI 3 and the shipping app targets Windows (net10.0-windows10.0.19041.0) because it relies on Windows registry and process behavior for game discovery and xEdit integration.

Implemented Features

  • Sequential xEdit orchestration with timeout handling, retry prompts, hang detection, graceful stop, and force-kill fallback.
  • Plugin discovery via Mutagen for Skyrim LE/SE/VR and Fallout 4/VR, with file-based load-order support for Fallout 3, Fallout: New Vegas, and Oblivion.
  • Per-game data folder overrides and per-game load order overrides.
  • Skip list management backed by AutoQAC Main.yaml defaults plus user overrides, including TTW and Enderal variant handling.
  • Plugin backup sessions before cleaning, retention cleanup, and a restore browser.
  • Dry-run preview showing which plugins will be cleaned or skipped before xEdit is launched.
  • Plugin-list preview counts for approximate ITMs, deleted references, and deleted navmeshes after Mutagen-backed refreshes for Skyrim LE/SE/VR and Fallout 4/VR.
  • Cleaning results windows with per-plugin stats and exportable session reports.
  • Debounced YAML config saves, external config file watching, startup log retention cleanup, and one-time legacy config migration.
  • A separate QueryPlugins library for Mutagen-based issue detection (ITMs, deleted references, deleted navmeshes) with its own tests.

Note: the dry-run preview is a readiness check only. The plugin list can show Mutagen-based approximate issue previews for supported games, but authoritative ITM/UDR/navmesh statistics still come from an actual xEdit run.

Supported Games

Game AutoQAC app Plugin discovery
Skyrim (Legendary Edition) Yes Mutagen
Skyrim Special Edition Yes Mutagen
Skyrim VR Yes Mutagen
Fallout 4 Yes Mutagen
Fallout 4 VR Yes Mutagen
Fallout 3 Yes File-based load order
Fallout: New Vegas Yes File-based load order
Oblivion Yes File-based load order

QueryPlugins also contains standalone detector support for Starfield analysis, but the desktop cleaning app does not currently expose Starfield cleaning.

Solution Layout

AutoQAC/             WinUI 3 desktop application
AutoQAC.Tests/       Tests for the desktop app
QueryPlugins/        Standalone Mutagen-based plugin analysis library
QueryPlugins.Tests/  Tests for the analysis library
AutoQAC Data/        Bundled YAML config and assets
docs/mutagen/        Curated Mutagen reference docs
Mutagen/             Read-only Mutagen git submodule

Requirements

  • Windows 10 or 11
  • .NET 10 SDK
  • xEdit (SSEEdit.exe, FO4Edit.exe, xEdit64.exe, etc.)
  • Optional: Mod Organizer 2 for MO2 launch mode

Build, Run, and Test

dotnet restore AutoQACSharp.slnx
dotnet build AutoQACSharp.slnx
dotnet run --project AutoQAC/AutoQAC.csproj
dotnet test AutoQACSharp.slnx
dotnet build AutoQAC/AutoQAC.csproj -c Release

Release Publish

The shipping app is published as an unpackaged, self-contained folder (not single-file). The publish output includes the .NET and Windows App SDK runtimes, so end users do not need the .NET SDK or a separate Windows App SDK runtime install.

Requirements for running published output:

  • Windows 10 version 19041 or later (Windows 11 is supported)
  • xEdit and any configured game/MO2 paths on the target machine

Publish with the release script:

.\scripts\Publish-Release.ps1

This restores, builds Release, runs tests, publishes to artifacts/publish/win-x64/, verifies required files (AutoQAC.exe, AutoQAC Data/, assets, self-contained runtime), and performs a short launch smoke check.

Manual publish fallback:

dotnet publish AutoQAC/AutoQAC.csproj -c Release -r win-x64 --self-contained true -o artifacts/publish/win-x64

Distribution: Zip the publish folder for xcopy-style deployment. At runtime:

  • Configuration reads and writes under AutoQAC Data/ next to AutoQAC.exe
  • Logs are written to logs/ next to AutoQAC.exe

Configuration Files

  • AutoQAC Data/AutoQAC Main.yaml - bundled defaults such as xEdit executable name lists and built-in skip lists.
  • AutoQAC Data/AutoQAC Settings.yaml - user settings, selected game, per-game overrides, log retention, and backup settings.
  • Legacy AutoQAC Config.yaml files are migrated on startup when present.
  • External edits to AutoQAC Settings.yaml are watched and reloaded when it is safe to do so.

Logs and Backups

  • Logs are written to logs/ next to the running executable.
  • Backup sessions are written to AutoQAC Backups/ next to the selected game's Data directory.
  • Session reports can be exported from the cleaning results window.

Important Constraint

Only one plugin can be cleaned at a time. ProcessExecutionService and CleaningOrchestrator intentionally serialize xEdit launches because xEdit relies on single-instance file locking.

Mutagen Reference Material

  • Use docs/mutagen/ first for quick API lookups.
  • Use the read-only Mutagen/ submodule when the curated docs are not detailed enough.

License

GPL-3.0. See LICENSE.

Credits

  • Original AutoQAC / XEdit-PACT concept by Poet (GuidanceOfGrace)
  • xEdit by the TES5Edit/xEdit team
  • C# desktop implementation in this repository

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages