From e74f5879a0094dcbb0be477830a6ead680a8c701 Mon Sep 17 00:00:00 2001 From: PrimeBuild-pc Date: Wed, 12 Aug 2026 21:58:53 +0200 Subject: [PATCH] Prepare ThreadPilot 1.7.0 gaming and signing release --- .github/workflows/release.yml | 8 +- Installer/Installer.iss | 3 +- Installer/ThreadPilot.wxs | 2 +- Installer/setup.iss | 4 +- Locales/de-DE.xaml | 36 +- Locales/en-US.xaml | 36 +- Locales/es-ES.xaml | 36 +- Locales/fr-FR.xaml | 36 +- Locales/it-IT.xaml | 36 +- Locales/ru-RU.xaml | 36 +- Locales/zh-CN.xaml | 36 +- Models/PersistentProcessRule.cs | 16 +- Models/ProcessMemoryPriority.cs | 8 + .../IProcessMemoryPriorityNativeApi.cs | 23 + .../ProcessMemoryPriorityNativeMethods.cs | 17 + README.md | 7 + Services/GameModeService.cs | 34 +- Services/IGameModeService.cs | 2 - Services/IProcessMemoryPriorityService.cs | 9 + Services/IProcessService.cs | 2 - Services/ISystemTweaksService.cs | 39 ++ Services/PersistentRulesEngine.cs | 73 ++- Services/ProcessMemoryPriorityService.cs | 113 ++++ Services/ProcessPowerRequestService.cs | 160 ++++++ Services/ProcessRuleCreationService.cs | 77 +-- Services/ProcessService.cs | 52 -- Services/ServiceConfiguration.cs | 1 + Services/StoragePaths.cs | 2 + Services/SystemTweaksService.cs | 488 +++++++++++++++++- .../BundledPowerPlanAssetTests.cs | 168 ++---- .../PackagingMetadataTests.cs | 27 +- .../PersistentProcessRuleJsonStoreTests.cs | 62 ++- .../PowerPlanViewXamlTests.cs | 10 + .../ProcessMemoryPriorityServiceTests.cs | 35 ++ .../ProcessViewModelAffinityTests.cs | 5 +- .../SettingsViewModelThemeTests.cs | 66 ++- .../SystemTweaksServiceTests.cs | 24 + .../SystemTweaksViewModelTests.cs | 65 ++- ThreadPilot.csproj | 17 +- ViewModels/BaseViewModel.cs | 13 + ViewModels/PowerPlanViewModel.cs | 4 + .../ProcessViewModel.Behaviors.partial.cs | 256 +++++---- ViewModels/ProcessViewModel.cs | 43 +- ViewModels/SelectedProcessSummaryViewModel.cs | 48 ++ ViewModels/SettingsViewModel.cs | 98 ++-- ViewModels/SystemTweaksViewModel.cs | 59 +++ Views/PowerPlanView.xaml | 24 +- Views/ProcessView.xaml | 22 + Views/SettingsView.xaml | 36 ++ Views/SystemTweaksView.xaml | 51 +- app.manifest | 2 +- assets/Powerplans/0 Synez_Public_Power.pow | Bin 12288 -> 0 bytes assets/Powerplans/Amit.pow | Bin 12288 -> 0 bytes assets/Powerplans/Anonymous.pow | Bin 28672 -> 0 bytes assets/Powerplans/ApexOS.pow | Bin 28672 -> 0 bytes assets/Powerplans/AutoOS.pow | Bin 20480 -> 0 bytes .../BEYOND-PERFORMANCE-AMD+INTEL.pow | Bin 28672 -> 0 bytes assets/Powerplans/Beyond.pow | Bin 32768 -> 0 bytes .../Powerplans/Bitsum Highest Performance.pow | Bin 8192 -> 0 bytes assets/Powerplans/BlitzOS.pow | Bin 16384 -> 0 bytes assets/Powerplans/CalyptoPowerPlan.pow | Bin 16384 -> 0 bytes assets/Powerplans/Delta.pow | Bin 12288 -> 0 bytes assets/Powerplans/EXO.pow | Bin 24576 -> 0 bytes assets/Powerplans/EnvyOS.pow | Bin 20480 -> 0 bytes assets/Powerplans/FPSHEAVEN2026.pow | Bin 45056 -> 0 bytes assets/Powerplans/FrameSyncBoost.pow | Bin 16384 -> 0 bytes .../GALA's ultimate performance(AMD).pow | Bin 16384 -> 0 bytes assets/Powerplans/GTweaks Power Plan V3.pow | Bin 20480 -> 0 bytes assets/Powerplans/Gavot Performance.pow | Bin 28672 -> 0 bytes assets/Powerplans/HYDRA_PBO.pow | Bin 8192 -> 0 bytes assets/Powerplans/IIIEXOIII_LOW_LATENCY.pow | Bin 24576 -> 0 bytes assets/Powerplans/IrisFixed.pow | Bin 16384 -> 0 bytes assets/Powerplans/IrisOS.pow | Bin 16384 -> 0 bytes .../J o k r O S P o w e r P l a n.pow | Bin 16384 -> 0 bytes assets/Powerplans/Jackpot2026.pow | Bin 32768 -> 0 bytes assets/Powerplans/JackpotOS.pow | Bin 32768 -> 0 bytes assets/Powerplans/KSOS11.pow | Bin 16384 -> 0 bytes assets/Powerplans/Kaisen V4.pow | Bin 12288 -> 0 bytes assets/Powerplans/Kaisen V5 fps.pow | Bin 16384 -> 0 bytes assets/Powerplans/Kaisen V5 lowlatency.pow | Bin 24576 -> 0 bytes .../Kizzimo's Extreme Low Latency.pow | Bin 45056 -> 0 bytes assets/Powerplans/L1 Final Version.pow | Bin 24576 -> 0 bytes ...\316\236RT1F1\316\236D-FOR-NON-K-CPUs.pow" | Bin 32768 -> 0 bytes ...T1F1\316\236D-FOR-PARKING+E-CORES-FIX.pow" | Bin 32768 -> 0 bytes .../LLG-C\316\236RT1F1\316\236D.pow" | Bin 32768 -> 0 bytes assets/Powerplans/LLG.pow | Bin 32768 -> 0 bytes .../MaxOS Low Latency Powerplan v1.pow | Bin 20480 -> 0 bytes .../MaxOS Low Latency Powerplan v2.pow | Bin 24576 -> 0 bytes .../MaxOS Low Latency Powerplan v3.pow | Bin 32768 -> 0 bytes assets/Powerplans/MaxPower.pow | Bin 12288 -> 0 bytes .../Powerplans/Microsoft High performance.pow | Bin 8192 -> 0 bytes .../Microsoft Ultimate Performance.pow | Bin 8192 -> 0 bytes assets/Powerplans/Mitstas IDLE ENABLED.pow | Bin 24576 -> 0 bytes assets/Powerplans/NovaOS.pow | Bin 28672 -> 0 bytes assets/Powerplans/Plan.pow | Bin 12288 -> 0 bytes assets/Powerplans/Prodazin Power Plan.pow | Bin 28672 -> 0 bytes assets/Powerplans/RIP Tweaks Power Plan.pow | Bin 8192 -> 0 bytes assets/Powerplans/RaxOS.pow | Bin 12288 -> 0 bytes assets/Powerplans/Reticle v2.pow | Bin 45056 -> 0 bytes assets/Powerplans/RevisionPowerPlanV2.8.pow | Bin 28672 -> 0 bytes assets/Powerplans/Rosca Tweaks v2.pow | Bin 20480 -> 0 bytes assets/Powerplans/Sazinho-Idle-OFF.pow | Bin 28672 -> 0 bytes assets/Powerplans/Slower.pow | Bin 24576 -> 0 bytes assets/Powerplans/TrinityOS.pow | Bin 24576 -> 0 bytes assets/Powerplans/VTRL Optimized.pow | Bin 16384 -> 0 bytes assets/Powerplans/VainOS.pow | Bin 20480 -> 0 bytes assets/Powerplans/VantageOS Power Plan.pow | Bin 24576 -> 0 bytes assets/Powerplans/Velo's Power Plan.pow | Bin 24576 -> 0 bytes assets/Powerplans/Winhance.pow | Bin 16384 -> 0 bytes assets/Powerplans/XNRL Pro Plan.pow | Bin 32768 -> 0 bytes assets/Powerplans/Zoyata.pow | Bin 16384 -> 0 bytes assets/Powerplans/adamx.pow | Bin 24576 -> 0 bytes assets/Powerplans/ancel.pow | Bin 12288 -> 0 bytes ...ow latency (INTEL FIX THREAD-DIRECTOR).pow | Bin 24576 -> 0 bytes assets/Powerplans/arsenza low latency.pow | Bin 24576 -> 0 bytes assets/Powerplans/atlas.pow | Bin 20480 -> 0 bytes assets/Powerplans/bitsum.pow | Bin 8192 -> 0 bytes assets/Powerplans/cactusOS.pow | Bin 20480 -> 0 bytes assets/Powerplans/calypto.pow | Bin 16384 -> 0 bytes assets/Powerplans/core.pow | Bin 8192 -> 0 bytes assets/Powerplans/exmfree.pow | Bin 12288 -> 0 bytes assets/Powerplans/gora.pow | Bin 24576 -> 0 bytes assets/Powerplans/hybred.pow | Bin 16384 -> 0 bytes assets/Powerplans/icon.pow | Bin 16384 -> 0 bytes assets/Powerplans/imribiy2026.pow | Bin 24576 -> 0 bytes assets/Powerplans/jiNN GoKu.pow | Bin 12288 -> 0 bytes assets/Powerplans/kaisen.pow | Bin 24576 -> 0 bytes assets/Powerplans/khorvie.pow | Bin 20480 -> 0 bytes assets/Powerplans/kirby.pow | Bin 8192 -> 0 bytes assets/Powerplans/kizzimo.pow | Bin 45056 -> 0 bytes assets/Powerplans/lawliet.pow | Bin 16384 -> 0 bytes assets/Powerplans/melody LowestLatency.pow | Bin 16384 -> 0 bytes .../n1kobg GPU_Booster_Power_Plan.pow | Bin 16384 -> 0 bytes assets/Powerplans/nexus.pow | Bin 12288 -> 0 bytes assets/Powerplans/powerx.pow | Bin 28672 -> 0 bytes assets/Powerplans/sapphire.pow | Bin 16384 -> 0 bytes assets/Powerplans/void-v1.pow | Bin 24576 -> 0 bytes assets/Powerplans/vtrl.pow | Bin 12288 -> 0 bytes assets/Powerplans/xilly.pow | Bin 8192 -> 0 bytes assets/Powerplans/xos.pow | Bin 16384 -> 0 bytes build/build-installer.ps1 | 2 +- build/build-release.ps1 | 3 +- build/package-release-zips.ps1 | 3 +- chocolatey/threadpilot.nuspec | 4 +- docs/CHANGELOG.md | 22 + docs/CODE_SIGNING_POLICY.md | 47 ++ docs/POWER_PLAN_LICENSING.md | 36 ++ docs/PRIVACY.md | 13 + docs/README.md | 6 +- docs/RELEASE_SIGNING.md | 42 +- docs/release/RELEASE_NOTES.md | 48 +- sonar-project.properties | 2 +- 152 files changed, 2155 insertions(+), 600 deletions(-) create mode 100644 Services/ProcessPowerRequestService.cs delete mode 100644 assets/Powerplans/0 Synez_Public_Power.pow delete mode 100644 assets/Powerplans/Amit.pow delete mode 100644 assets/Powerplans/Anonymous.pow delete mode 100644 assets/Powerplans/ApexOS.pow delete mode 100644 assets/Powerplans/AutoOS.pow delete mode 100644 assets/Powerplans/BEYOND-PERFORMANCE-AMD+INTEL.pow delete mode 100644 assets/Powerplans/Beyond.pow delete mode 100644 assets/Powerplans/Bitsum Highest Performance.pow delete mode 100644 assets/Powerplans/BlitzOS.pow delete mode 100644 assets/Powerplans/CalyptoPowerPlan.pow delete mode 100644 assets/Powerplans/Delta.pow delete mode 100644 assets/Powerplans/EXO.pow delete mode 100644 assets/Powerplans/EnvyOS.pow delete mode 100644 assets/Powerplans/FPSHEAVEN2026.pow delete mode 100644 assets/Powerplans/FrameSyncBoost.pow delete mode 100644 assets/Powerplans/GALA's ultimate performance(AMD).pow delete mode 100644 assets/Powerplans/GTweaks Power Plan V3.pow delete mode 100644 assets/Powerplans/Gavot Performance.pow delete mode 100644 assets/Powerplans/HYDRA_PBO.pow delete mode 100644 assets/Powerplans/IIIEXOIII_LOW_LATENCY.pow delete mode 100644 assets/Powerplans/IrisFixed.pow delete mode 100644 assets/Powerplans/IrisOS.pow delete mode 100644 assets/Powerplans/J o k r O S P o w e r P l a n.pow delete mode 100644 assets/Powerplans/Jackpot2026.pow delete mode 100644 assets/Powerplans/JackpotOS.pow delete mode 100644 assets/Powerplans/KSOS11.pow delete mode 100644 assets/Powerplans/Kaisen V4.pow delete mode 100644 assets/Powerplans/Kaisen V5 fps.pow delete mode 100644 assets/Powerplans/Kaisen V5 lowlatency.pow delete mode 100644 assets/Powerplans/Kizzimo's Extreme Low Latency.pow delete mode 100644 assets/Powerplans/L1 Final Version.pow delete mode 100644 "assets/Powerplans/LLG-C\316\236RT1F1\316\236D-FOR-NON-K-CPUs.pow" delete mode 100644 "assets/Powerplans/LLG-C\316\236RT1F1\316\236D-FOR-PARKING+E-CORES-FIX.pow" delete mode 100644 "assets/Powerplans/LLG-C\316\236RT1F1\316\236D.pow" delete mode 100644 assets/Powerplans/LLG.pow delete mode 100644 assets/Powerplans/MaxOS Low Latency Powerplan v1.pow delete mode 100644 assets/Powerplans/MaxOS Low Latency Powerplan v2.pow delete mode 100644 assets/Powerplans/MaxOS Low Latency Powerplan v3.pow delete mode 100644 assets/Powerplans/MaxPower.pow delete mode 100644 assets/Powerplans/Microsoft High performance.pow delete mode 100644 assets/Powerplans/Microsoft Ultimate Performance.pow delete mode 100644 assets/Powerplans/Mitstas IDLE ENABLED.pow delete mode 100644 assets/Powerplans/NovaOS.pow delete mode 100644 assets/Powerplans/Plan.pow delete mode 100644 assets/Powerplans/Prodazin Power Plan.pow delete mode 100644 assets/Powerplans/RIP Tweaks Power Plan.pow delete mode 100644 assets/Powerplans/RaxOS.pow delete mode 100644 assets/Powerplans/Reticle v2.pow delete mode 100644 assets/Powerplans/RevisionPowerPlanV2.8.pow delete mode 100644 assets/Powerplans/Rosca Tweaks v2.pow delete mode 100644 assets/Powerplans/Sazinho-Idle-OFF.pow delete mode 100644 assets/Powerplans/Slower.pow delete mode 100644 assets/Powerplans/TrinityOS.pow delete mode 100644 assets/Powerplans/VTRL Optimized.pow delete mode 100644 assets/Powerplans/VainOS.pow delete mode 100644 assets/Powerplans/VantageOS Power Plan.pow delete mode 100644 assets/Powerplans/Velo's Power Plan.pow delete mode 100644 assets/Powerplans/Winhance.pow delete mode 100644 assets/Powerplans/XNRL Pro Plan.pow delete mode 100644 assets/Powerplans/Zoyata.pow delete mode 100644 assets/Powerplans/adamx.pow delete mode 100644 assets/Powerplans/ancel.pow delete mode 100644 assets/Powerplans/arsenza low latency (INTEL FIX THREAD-DIRECTOR).pow delete mode 100644 assets/Powerplans/arsenza low latency.pow delete mode 100644 assets/Powerplans/atlas.pow delete mode 100644 assets/Powerplans/bitsum.pow delete mode 100644 assets/Powerplans/cactusOS.pow delete mode 100644 assets/Powerplans/calypto.pow delete mode 100644 assets/Powerplans/core.pow delete mode 100644 assets/Powerplans/exmfree.pow delete mode 100644 assets/Powerplans/gora.pow delete mode 100644 assets/Powerplans/hybred.pow delete mode 100644 assets/Powerplans/icon.pow delete mode 100644 assets/Powerplans/imribiy2026.pow delete mode 100644 assets/Powerplans/jiNN GoKu.pow delete mode 100644 assets/Powerplans/kaisen.pow delete mode 100644 assets/Powerplans/khorvie.pow delete mode 100644 assets/Powerplans/kirby.pow delete mode 100644 assets/Powerplans/kizzimo.pow delete mode 100644 assets/Powerplans/lawliet.pow delete mode 100644 assets/Powerplans/melody LowestLatency.pow delete mode 100644 assets/Powerplans/n1kobg GPU_Booster_Power_Plan.pow delete mode 100644 assets/Powerplans/nexus.pow delete mode 100644 assets/Powerplans/powerx.pow delete mode 100644 assets/Powerplans/sapphire.pow delete mode 100644 assets/Powerplans/void-v1.pow delete mode 100644 assets/Powerplans/vtrl.pow delete mode 100644 assets/Powerplans/xilly.pow delete mode 100644 assets/Powerplans/xos.pow create mode 100644 docs/CODE_SIGNING_POLICY.md create mode 100644 docs/POWER_PLAN_LICENSING.md create mode 100644 docs/PRIVACY.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d60d726..03f3fec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,13 +66,6 @@ jobs: - name: Publish self-contained single-file run: dotnet publish "ThreadPilot.csproj" --configuration Release -p:PublishProfile=WinX64-SingleFile - - name: Ensure bundled power plans in single-file output - shell: pwsh - run: | - $ErrorActionPreference = "Stop" - New-Item -ItemType Directory -Force -Path "artifacts/release/singlefile/Powerplans" | Out-Null - Copy-Item "assets/Powerplans/*" -Destination "artifacts/release/singlefile/Powerplans" -Recurse -Force - - name: Publish ReadyToRun run: dotnet publish "ThreadPilot.csproj" --configuration Release -p:PublishProfile=WinX64-ReadyToRun @@ -158,6 +151,7 @@ jobs: taskkill /IM "ThreadPilot.exe" /F >nul 2>&1 echo [2/4] Removing startup task and startup registry entry... + schtasks /Delete /TN "ThreadPilot_Launch" /F >nul 2>&1 schtasks /Delete /TN "ThreadPilot_Startup" /F >nul 2>&1 reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "ThreadPilot" /f >nul 2>&1 diff --git a/Installer/Installer.iss b/Installer/Installer.iss index a3b2eaf..785f98c 100644 --- a/Installer/Installer.iss +++ b/Installer/Installer.iss @@ -5,7 +5,7 @@ #define MyAppPublisher "ThreadPilot" #define MyAppURL "https://github.com/" #define MyAppExeName "ThreadPilot.exe" -#define MyAppVersion "1.6.0" +#define MyAppVersion "1.7.0" #ifndef MyWizardStyle #define MyWizardStyle "modern dynamic windows11" @@ -55,6 +55,7 @@ Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChang [UninstallRun] Filename: "taskkill.exe"; Parameters: "/IM ""{#MyAppExeName}"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallKill" +Filename: "schtasks.exe"; Parameters: "/Delete /TN ""ThreadPilot_Launch"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotLaunchTask" Filename: "schtasks.exe"; Parameters: "/Delete /TN ""ThreadPilot_Startup"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotStartupTask" Filename: "reg.exe"; Parameters: "delete ""HKCU\Software\Microsoft\Windows\CurrentVersion\Run"" /v ""ThreadPilot"" /f"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotRunEntry" diff --git a/Installer/ThreadPilot.wxs b/Installer/ThreadPilot.wxs index 0563c60..c277b43 100644 --- a/Installer/ThreadPilot.wxs +++ b/Installer/ThreadPilot.wxs @@ -7,7 +7,7 @@ diff --git a/Installer/setup.iss b/Installer/setup.iss index 0c75239..40c41f2 100644 --- a/Installer/setup.iss +++ b/Installer/setup.iss @@ -11,7 +11,7 @@ #endif #ifndef MyAppVersion - #define MyAppVersion "1.6.0" + #define MyAppVersion "1.7.0" #endif #ifndef MyAppSourceDir @@ -54,7 +54,6 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ Source: "{#MyAppSourceDir}\ThreadPilot.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppSourceDir}\*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist Source: "{#MyAppSourceDir}\*.pdb"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist -Source: "{#MyAppSourceDir}\Powerplans\*"; DestDir: "{app}\Powerplans"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" @@ -71,6 +70,7 @@ Filename: "{app}\{#MyAppExeName}"; Flags: nowait; Check: IsThreadPilotUpdate ; Per-user AppData cleanup is limited to the account context used by uninstall. [UninstallRun] Filename: "taskkill.exe"; Parameters: "/IM ""{#MyAppExeName}"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallKillThreadPilot" +Filename: "schtasks.exe"; Parameters: "/Delete /TN ""ThreadPilot_Launch"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotLaunchTask" Filename: "schtasks.exe"; Parameters: "/Delete /TN ""ThreadPilot_Startup"" /F"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotStartupTask" Filename: "reg.exe"; Parameters: "delete ""HKCU\Software\Microsoft\Windows\CurrentVersion\Run"" /v ""ThreadPilot"" /f"; Flags: runhidden waituntilterminated; RunOnceId: "UninstallRemoveThreadPilotRunEntry" diff --git a/Locales/de-DE.xaml b/Locales/de-DE.xaml index 3116589..6575406 100644 --- a/Locales/de-DE.xaml +++ b/Locales/de-DE.xaml @@ -172,6 +172,8 @@ Importieren Sie die ausgewählte benutzerdefinierte .pow-Datei in Windows .pow-Datei hinzufügen Fügen Sie der benutzerdefinierten Bibliothek eine neue benutzerdefinierte Energieplandatei hinzu + Mehr Energiesparpläne? + Weitere Energiesparpläne der Community auf Discord entdecken. Löschen Aktiv @@ -278,8 +280,8 @@ Die Echtzeitpriorität wird von ThreadPilot blockiert, da Windows dadurch instabil werden oder nicht mehr reagieren kann. Echtzeit (blockiert) - Deaktivieren Sie den inaktiven Server - Verhindert, dass das System während der Ausführung dieses Prozesses in den Ruhezustand wechselt. Nützlich für Spiele und leistungskritische Anwendungen. + Ruhezustand während des Prozesses verhindern + Hält das System aktiv, solange der Prozess läuft. Der Bildschirm darf ausgehen und expliziter Ruhezustand wird nicht blockiert. Profil / Regel Geben Sie einen Profilnamen ein, um Einstellungen zu speichern oder zu laden @@ -365,6 +367,9 @@ Regeln Name Legen Sie die Speicherpriorität fest + E/A-Priorität festlegen + E/A-Priorität nicht verfügbar + E/A-Priorität: {0} Sehr niedrig Mittel Prozessinformationen aktualisieren @@ -437,6 +442,11 @@ Aktivieren Sie die Debug-Protokollierung Leistungsindikatoren aktivieren + Stimmt etwas nicht? + Tritt der ThreadPilot-Discord-Community bei, um Hilfe zu erhalten und dich auszutauschen. + Discord öffnen + Melde Fehler oder unerwartetes Verhalten über GitHub Issues. + Problem melden Über Version: Copyright © 2026 PrimeBuild @@ -547,6 +557,28 @@ Hohe Planungspriorität für Gaming-Anwendungen Menü Verzögerung anzeigen Verzögerung vor der Anzeige von Kontextmenüs + Spielmodus + Planungsoptimierungen des Windows-Spielmodus + Speicherintegrität (HVCI) + Öffnet Windows-Sicherheit. Das Deaktivieren verringert die Systemsicherheit und kann einen Neustart erfordern. + Hardwarebeschleunigte GPU-Planung + Öffnet die Windows-Grafikeinstellungen zur Prüfung von HAGS. + Optimierungen für Fensterspiele + Öffnet die Windows-Grafikeinstellungen für Flip-Model-Optimierungen. + Selektives USB-Energiesparen + Steuert selektives USB-Energiesparen im aktiven Netzstromplan. + Zeigerbeschleunigung + Steuert die Windows-Mausbeschleunigung. + Ethernet-Energiesparen deaktivieren + Deaktiviert unterstützte EEE-, Green-Ethernet- und Energiesparoptionen physischer Ethernet-Adapter. + Interrupt-Moderation deaktivieren + Kann die Ethernet-Latenz auf Kosten höherer CPU- und Interrupt-Last senken. + GPU-MSI-Modus + Steuert MSI nur, wenn der Grafiktreiber MSISupported bereits bereitstellt. Neustart erforderlich. + Einstellungen öffnen + Von Windows verwaltet + Windows-Einstellungen konnten nicht geöffnet werden + Einstellungen für {0} geöffnet Bereit diff --git a/Locales/en-US.xaml b/Locales/en-US.xaml index 00e3f0c..6babb75 100644 --- a/Locales/en-US.xaml +++ b/Locales/en-US.xaml @@ -172,6 +172,8 @@ Import the selected custom .pow file into Windows Add .pow File Add a new custom power plan file to the custom library + More plans? + Browse additional community power plans on Discord. Delete Active @@ -278,8 +280,8 @@ Realtime priority is blocked by ThreadPilot because it can make Windows unstable or unresponsive. Realtime (blocked) - Disable Idle Server - Prevents the system from entering idle state while this process is running. Useful for games and performance-critical applications. + Prevent sleep while process runs + Keeps the system awake while this process is running. The display may still turn off, and explicit sleep is not blocked. Profile / Rule Enter a profile name to save or load settings @@ -365,6 +367,9 @@ Rules Name Set Memory Priority + Set I/O Priority + I/O priority unavailable + I/O priority: {0} Very Low Medium Refresh Process Info @@ -437,6 +442,11 @@ Enable debug logging Enable performance counters + Something wrong? + Join the ThreadPilot Discord community for help and discussion. + Open Discord + Report bugs or unexpected behavior through GitHub Issues. + Report an issue About Version: Copyright © 2026 PrimeBuild @@ -547,6 +557,28 @@ High scheduling priority for gaming applications Menu Show Delay Delay before showing context menus + Game Mode + Windows Game Mode scheduling optimizations + Memory Integrity (HVCI) + Opens Windows Security. Disabling this protection reduces system security and may require a restart. + Hardware-accelerated GPU scheduling + Opens Windows graphics settings to let you review HAGS. + Optimizations for windowed games + Opens Windows graphics settings to manage Flip Model optimizations. + USB Selective Suspend + Controls USB selective suspend for the active power plan while plugged in. + Enhance pointer precision + Controls Windows mouse acceleration. + Disable Ethernet power saving + Disables supported EEE, Green Ethernet and power-saving driver properties on physical Ethernet adapters. + Disable interrupt moderation + Can reduce Ethernet latency at the cost of higher CPU and interrupt load. + GPU MSI Mode + Controls MSI only when the display driver already exposes MSISupported. A restart is required. + Open settings + Managed by Windows + Could not open Windows settings + Opened settings for {0} Ready diff --git a/Locales/es-ES.xaml b/Locales/es-ES.xaml index bc1b81f..4fff18e 100644 --- a/Locales/es-ES.xaml +++ b/Locales/es-ES.xaml @@ -172,6 +172,8 @@ Importe el archivo .pow personalizado seleccionado a Windows Agregar archivo .pow Agregue un nuevo archivo de plan de energía personalizado a la biblioteca personalizada + ¿Más planes? + Descubre más planes de energía de la comunidad en Discord. Eliminar Activo @@ -278,8 +280,8 @@ La prioridad en tiempo real está bloqueada por ThreadPilot porque puede hacer que Windows sea inestable o no responda. Tiempo real (bloqueado) - Deshabilitar el servidor inactivo - Evita que el sistema entre en estado inactivo mientras se ejecuta este proceso. Útil para juegos y aplicaciones críticas para el rendimiento. + Evitar suspensión durante el proceso + Mantiene el sistema activo mientras se ejecuta el proceso. La pantalla puede apagarse y no se bloquea una suspensión explícita. Perfil / Regla Ingrese un nombre de perfil para guardar o cargar la configuración @@ -365,6 +367,9 @@ Reglas Nombre Establecer prioridad de memoria + Establecer prioridad de E/S + Prioridad de E/S no disponible + Prioridad de E/S: {0} Muy bajo Medio Actualizar información del proceso @@ -437,6 +442,11 @@ Habilitar el registro de depuración Habilitar contadores de rendimiento + ¿Algo no funciona? + Únete a la comunidad de ThreadPilot en Discord para obtener ayuda y conversar. + Abrir Discord + Informa de errores o comportamientos inesperados mediante GitHub Issues. + Informar de un problema Acerca de Versión: Copyright © 2026 PrimeBuild @@ -547,6 +557,28 @@ Alta prioridad de programación para aplicaciones de juegos Menú Mostrar retraso Retraso antes de mostrar menús contextuales + Modo de juego + Optimizaciones de programación del Modo de juego de Windows + Integridad de memoria (HVCI) + Abre Seguridad de Windows. Desactivarla reduce la seguridad y puede requerir reiniciar. + Programación de GPU acelerada por hardware + Abre la configuración gráfica de Windows para revisar HAGS. + Optimizaciones para juegos en ventana + Abre la configuración gráfica de Windows para administrar Flip Model. + Suspensión selectiva USB + Controla la suspensión selectiva USB del plan activo cuando está conectado. + Mejorar precisión del puntero + Controla la aceleración del ratón de Windows. + Desactivar ahorro de energía Ethernet + Desactiva EEE, Green Ethernet y opciones compatibles en adaptadores Ethernet físicos. + Desactivar moderación de interrupciones + Puede reducir la latencia Ethernet aumentando la carga de CPU e interrupciones. + Modo MSI de GPU + Controla MSI solo si el controlador gráfico ya expone MSISupported. Requiere reiniciar. + Abrir configuración + Administrado por Windows + No se pudo abrir la configuración de Windows + Configuración abierta para {0} Listo diff --git a/Locales/fr-FR.xaml b/Locales/fr-FR.xaml index 0224ff8..c7c777e 100644 --- a/Locales/fr-FR.xaml +++ b/Locales/fr-FR.xaml @@ -172,6 +172,8 @@ Importez le fichier .pow personnalisé sélectionné dans Windows Ajouter un fichier .pow Ajouter un nouveau fichier de plan d'alimentation personnalisé à la bibliothèque personnalisée + Plus de modes ? + Découvrez d'autres modes d'alimentation de la communauté sur Discord. Supprimer Actif @@ -278,8 +280,8 @@ La priorité en temps réel est bloquée par ThreadPilot car elle peut rendre Windows instable ou ne pas répondre. Temps réel (bloqué) - Désactiver le serveur inactif - Empêche le système d'entrer en état d'inactivité pendant l'exécution de ce processus. Utile pour les jeux et les applications critiques en termes de performances. + Empêcher la veille pendant le processus + Maintient le système éveillé pendant l'exécution du processus. L'écran peut s'éteindre et une veille explicite n'est pas bloquée. Profil / Règle Entrez un nom de profil pour enregistrer ou charger les paramètres @@ -365,6 +367,9 @@ Règles Nom Définir la priorité de la mémoire + Définir la priorité E/S + Priorité E/S indisponible + Priorité E/S : {0} Très faible Moyen Actualiser les informations sur le processus @@ -437,6 +442,11 @@ Activer la journalisation du débogage Activer les compteurs de performances + Un problème ? + Rejoignez la communauté Discord de ThreadPilot pour obtenir de l'aide et échanger. + Ouvrir Discord + Signalez les bugs ou comportements inattendus via GitHub Issues. + Signaler un problème À propos Version : Copyright © 2026 PrimeBuild @@ -547,6 +557,28 @@ Priorité de planification élevée pour les applications de jeux Menu Afficher le délai Délai avant l'affichage des menus contextuels + Mode Jeu + Optimisations de planification du Mode Jeu Windows + Intégrité de la mémoire (HVCI) + Ouvre Sécurité Windows. La désactivation réduit la sécurité et peut nécessiter un redémarrage. + Planification GPU à accélération matérielle + Ouvre les paramètres graphiques Windows pour vérifier HAGS. + Optimisations des jeux fenêtrés + Ouvre les paramètres graphiques Windows pour gérer les optimisations Flip Model. + Suspension sélective USB + Contrôle la suspension sélective USB du mode d'alimentation actif sur secteur. + Améliorer la précision du pointeur + Contrôle l'accélération de la souris Windows. + Désactiver l'économie d'énergie Ethernet + Désactive EEE, Green Ethernet et les options d'économie prises en charge sur les adaptateurs Ethernet physiques. + Désactiver la modération des interruptions + Peut réduire la latence Ethernet au prix d'une charge CPU et d'interruptions supérieure. + Mode MSI du GPU + Contrôle MSI uniquement si le pilote graphique expose déjà MSISupported. Redémarrage requis. + Ouvrir les paramètres + Géré par Windows + Impossible d'ouvrir les paramètres Windows + Paramètres ouverts pour {0} Prêt diff --git a/Locales/it-IT.xaml b/Locales/it-IT.xaml index 5c316cc..748e389 100644 --- a/Locales/it-IT.xaml +++ b/Locales/it-IT.xaml @@ -172,6 +172,8 @@ Importa il file .pow personalizzato selezionato in Windows Aggiungi il file .pow Aggiungi un nuovo file di combinazione di risparmio energia personalizzato alla libreria personalizzata + Altri piani? + Scopri altri piani energetici della community su Discord. Elimina Attivo @@ -278,8 +280,8 @@ La priorità in tempo reale è bloccata da ThreadPilot perché può rendere Windows instabile o non rispondere. In tempo reale (bloccato) - Disabilita server inattivo - Impedisce al sistema di entrare nello stato inattivo mentre questo processo è in esecuzione. Utile per giochi e applicazioni critiche per le prestazioni. + Impedisci sospensione durante il processo + Mantiene attivo il sistema finché il processo è in esecuzione. Lo schermo può spegnersi e la sospensione richiesta dall'utente non viene bloccata. Profilo/Regola Inserisci un nome di profilo per salvare o caricare le impostazioni @@ -365,6 +367,9 @@ Regole Nome Imposta la priorità della memoria + Imposta priorità I/O + Priorità I/O non disponibile + Priorità I/O: {0} Molto basso Medio Aggiorna informazioni sul processo @@ -437,6 +442,11 @@ Abilita la registrazione del debug Abilita i contatori delle prestazioni + Qualcosa non va? + Entra nella community Discord di ThreadPilot per assistenza e discussioni. + Apri Discord + Segnala bug o comportamenti anomali tramite GitHub Issues. + Segnala un problema Informazioni Versione: Copyright © 2026 PrimeBuild @@ -547,6 +557,28 @@ Alta priorità di pianificazione per le applicazioni di gioco Menu Mostra ritardo Ritardo prima di mostrare i menu contestuali + Modalità gioco + Ottimizzazioni di pianificazione della Modalità gioco di Windows + Integrità della memoria (HVCI) + Apre Sicurezza di Windows. Disattivare questa protezione riduce la sicurezza e può richiedere il riavvio. + Pianificazione GPU con accelerazione hardware + Apre le impostazioni grafiche di Windows per controllare HAGS. + Ottimizzazioni per giochi in finestra + Apre le impostazioni grafiche di Windows per gestire le ottimizzazioni Flip Model. + Sospensione selettiva USB + Controlla la sospensione selettiva USB del piano attivo quando il PC è collegato alla rete elettrica. + Aumenta precisione puntatore + Controlla l'accelerazione del mouse di Windows. + Disattiva risparmio energetico Ethernet + Disattiva EEE, Green Ethernet e le proprietà di risparmio energetico supportate sugli adattatori Ethernet fisici. + Disattiva moderazione interrupt + Può ridurre la latenza Ethernet aumentando il carico CPU e il numero di interrupt. + Modalità MSI GPU + Controlla MSI solo se il driver video espone già MSISupported. È necessario riavviare. + Apri impostazioni + Gestito da Windows + Impossibile aprire le impostazioni di Windows + Impostazioni aperte per {0} Pronto diff --git a/Locales/ru-RU.xaml b/Locales/ru-RU.xaml index e445183..ed2da51 100644 --- a/Locales/ru-RU.xaml +++ b/Locales/ru-RU.xaml @@ -172,6 +172,8 @@ Импортируйте выбранный пользовательский файл .pow в Windows. Добавить файл .pow Добавьте новый файл пользовательского плана электропитания в пользовательскую библиотеку. + Нужны другие планы? + Найдите дополнительные планы электропитания сообщества в Discord. Удалить Активный @@ -278,8 +280,8 @@ Приоритет реального времени блокируется ThreadPilot, поскольку это может сделать Windows нестабильным или перестать отвечать на запросы. В реальном времени (заблокировано) - Отключить простаивающий сервер - Предотвращает переход системы в состояние ожидания во время выполнения этого процесса. Полезно для игр и приложений, критичных к производительности. + Не переходить в сон во время процесса + Поддерживает работу системы, пока процесс запущен. Экран может выключиться, а явный переход в сон не блокируется. Профиль/Правило Введите имя профиля, чтобы сохранить или загрузить настройки. @@ -365,6 +367,9 @@ Правила Имя Установить приоритет памяти + Установить приоритет ввода-вывода + Приоритет ввода-вывода недоступен + Приоритет ввода-вывода: {0} Очень низкий Средний Обновить информацию о процессе @@ -437,6 +442,11 @@ Включить ведение журнала отладки Включить счетчики производительности + Что-то не работает? + Присоединяйтесь к сообществу ThreadPilot в Discord для помощи и общения. + Открыть Discord + Сообщайте об ошибках и неожиданном поведении через GitHub Issues. + Сообщить о проблеме О Версия: © 2026 PrimeBuild. @@ -547,6 +557,28 @@ Высокий приоритет планирования для игровых приложений Задержка показа меню Задержка перед показом контекстных меню + Игровой режим + Оптимизации планирования игрового режима Windows + Целостность памяти (HVCI) + Открывает Безопасность Windows. Отключение снижает безопасность и может потребовать перезагрузки. + Аппаратное планирование GPU + Открывает параметры графики Windows для проверки HAGS. + Оптимизация оконных игр + Открывает параметры графики Windows для управления Flip Model. + Выборочная приостановка USB + Управляет приостановкой USB в активном плане при питании от сети. + Повышенная точность указателя + Управляет ускорением мыши Windows. + Отключить энергосбережение Ethernet + Отключает поддерживаемые EEE, Green Ethernet и энергосбережение физических Ethernet-адаптеров. + Отключить модерацию прерываний + Может снизить задержку Ethernet ценой повышенной нагрузки CPU и прерываний. + Режим MSI для GPU + Управляет MSI, только если видеодрайвер уже предоставляет MSISupported. Требуется перезагрузка. + Открыть параметры + Управляется Windows + Не удалось открыть параметры Windows + Открыты параметры для {0} Готово diff --git a/Locales/zh-CN.xaml b/Locales/zh-CN.xaml index 7b68060..a457fc7 100644 --- a/Locales/zh-CN.xaml +++ b/Locales/zh-CN.xaml @@ -172,6 +172,8 @@ 将所选的自定义 .pow 文件导入 Windows 添加 .pow 文件 向自定义库添加新的自定义电源计划文件 + 需要更多计划? + 在 Discord 中获取更多社区电源计划。 删除 活动 @@ -278,8 +280,8 @@ 实时优先级已被 ThreadPilot 阻止,因为它可能会使 Windows 不稳定或无响应。 实时 (已阻止) - 禁用空闲服务 - 在此进程运行时阻止系统进入空闲状态。适用于游戏和对性能要求严苛的应用程序。 + 进程运行时阻止睡眠 + 进程运行时保持系统唤醒。显示器仍可关闭,并且不会阻止用户明确请求的睡眠。 配置文件 / 规则 输入配置文件名称以保存或加载设置 @@ -365,6 +367,9 @@ 规则 名称 设置内存优先级 + 设置 I/O 优先级 + I/O 优先级不可用 + I/O 优先级:{0} 极低 刷新进程信息 @@ -437,6 +442,11 @@ 开启调试诊断日志记录 启用内部性能计数器 + 遇到问题? + 加入 ThreadPilot Discord 社区以获取帮助并参与讨论。 + 打开 Discord + 通过 GitHub Issues 报告错误或异常行为。 + 报告问题 关于应用 软件版本: 版权所有 © 2026 PrimeBuild @@ -547,6 +557,28 @@ 为游戏应用程序提供高调度优先级 菜单显示延迟 显示上下文菜单之前的延迟时间 + 游戏模式 + Windows 游戏模式调度优化 + 内存完整性 (HVCI) + 打开 Windows 安全中心。关闭此保护会降低系统安全性,并且可能需要重启。 + 硬件加速 GPU 计划 + 打开 Windows 图形设置以查看 HAGS。 + 窗口化游戏优化 + 打开 Windows 图形设置以管理 Flip Model 优化。 + USB 选择性暂停 + 控制接通电源时当前电源计划的 USB 选择性暂停。 + 提高指针精确度 + 控制 Windows 鼠标加速。 + 禁用以太网节能 + 禁用物理以太网适配器支持的 EEE、Green Ethernet 和节能属性。 + 禁用中断调节 + 可以降低以太网延迟,但会增加 CPU 和中断负载。 + GPU MSI 模式 + 仅当显示驱动已公开 MSISupported 时控制 MSI。需要重启。 + 打开设置 + 由 Windows 管理 + 无法打开 Windows 设置 + 已打开 {0} 的设置 就绪 diff --git a/Models/PersistentProcessRule.cs b/Models/PersistentProcessRule.cs index c7e37aa..65271d3 100644 --- a/Models/PersistentProcessRule.cs +++ b/Models/PersistentProcessRule.cs @@ -20,20 +20,26 @@ public sealed record PersistentProcessRule public CpuSelection? CpuSelection { get; init; } - public long? LegacyAffinityMask { get; init; } - - public CpuAssignmentMode CpuAssignmentMode { get; init; } = CpuAssignmentMode.Automatic; + public long? LegacyAffinityMask { get; init; } + + public CpuAssignmentMode CpuAssignmentMode { get; init; } = CpuAssignmentMode.Automatic; public ProcessPriorityClass? Priority { get; init; } public ProcessMemoryPriority? MemoryPriority { get; init; } + public ProcessIoPriority? IoPriority { get; init; } + public bool ApplyAffinityOnStart { get; init; } public bool ApplyPriorityOnStart { get; init; } public bool ApplyMemoryPriorityOnStart { get; init; } + public bool ApplyIoPriorityOnStart { get; init; } + + public bool PreventSystemSleepWhileRunning { get; init; } + public DateTime CreatedAt { get; init; } = DateTime.UtcNow; public DateTime UpdatedAt { get; init; } = DateTime.UtcNow; @@ -67,6 +73,10 @@ public sealed record PersistentRuleApplyResult public bool MemoryPriorityApplied { get; init; } + public bool IoPriorityApplied { get; init; } + + public bool PreventSleepApplied { get; init; } + public string? ErrorCode { get; init; } public string UserMessage { get; init; } = string.Empty; diff --git a/Models/ProcessMemoryPriority.cs b/Models/ProcessMemoryPriority.cs index 6c83902..645dd8a 100644 --- a/Models/ProcessMemoryPriority.cs +++ b/Models/ProcessMemoryPriority.cs @@ -11,4 +11,12 @@ public enum ProcessMemoryPriority BelowNormal = 4, Normal = 5, } + + public enum ProcessIoPriority + { + VeryLow = 0, + Low = 1, + Normal = 2, + High = 3, + } } diff --git a/Platforms/Windows/IProcessMemoryPriorityNativeApi.cs b/Platforms/Windows/IProcessMemoryPriorityNativeApi.cs index d22b2b8..1511d3c 100644 --- a/Platforms/Windows/IProcessMemoryPriorityNativeApi.cs +++ b/Platforms/Windows/IProcessMemoryPriorityNativeApi.cs @@ -26,6 +26,14 @@ bool SetProcessInformation( uint processInformationSize); int GetLastWin32Error(); + + int QueryIoPriority(SafeProcessHandle process, ref int priority, out uint returnLength) + { + returnLength = 0; + return unchecked((int)0xC0000002); + } + + int SetIoPriority(SafeProcessHandle process, ref int priority) => unchecked((int)0xC0000002); } public sealed class ProcessMemoryPriorityNativeApi : IProcessMemoryPriorityNativeApi @@ -73,6 +81,21 @@ public int GetLastWin32Error() { return Marshal.GetLastWin32Error(); } + + public int QueryIoPriority(SafeProcessHandle process, ref int priority, out uint returnLength) => + ProcessMemoryPriorityNativeMethods.NtQueryInformationProcess( + process, + ProcessMemoryPriorityNativeMethods.ProcessIoPriority, + ref priority, + sizeof(int), + out returnLength); + + public int SetIoPriority(SafeProcessHandle process, ref int priority) => + ProcessMemoryPriorityNativeMethods.NtSetInformationProcess( + process, + ProcessMemoryPriorityNativeMethods.ProcessIoPriority, + ref priority, + sizeof(int)); } public enum ProcessInformationClass diff --git a/Platforms/Windows/ProcessMemoryPriorityNativeMethods.cs b/Platforms/Windows/ProcessMemoryPriorityNativeMethods.cs index 1535bfa..d0ba944 100644 --- a/Platforms/Windows/ProcessMemoryPriorityNativeMethods.cs +++ b/Platforms/Windows/ProcessMemoryPriorityNativeMethods.cs @@ -8,6 +8,8 @@ namespace ThreadPilot.Platforms.Windows internal static partial class ProcessMemoryPriorityNativeMethods { + internal const int ProcessIoPriority = 33; + [LibraryImport("kernel32.dll", SetLastError = true)] public static partial SafeProcessHandle OpenProcess( ProcessAccessFlags access, @@ -29,5 +31,20 @@ public static partial bool SetProcessInformation( ProcessInformationClass processInformationClass, ref MemoryPriorityInformation processInformation, uint processInformationSize); + + [LibraryImport("ntdll.dll")] + public static partial int NtQueryInformationProcess( + SafeProcessHandle process, + int processInformationClass, + ref int processInformation, + int processInformationLength, + out uint returnLength); + + [LibraryImport("ntdll.dll")] + public static partial int NtSetInformationProcess( + SafeProcessHandle process, + int processInformationClass, + ref int processInformation, + int processInformationLength); } } diff --git a/README.md b/README.md index 8d263ed..68c7b10 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,8 @@ Useful startup arguments: In `Power Plans > Custom Power Plans`, use `Add .pow File` to import custom power plans directly from the app. +ThreadPilot does not bundle third-party `.pow` files. The Power Plans page can open the community Discord catalog on request; Settings also links to Discord support and GitHub Issues. Existing plans already imported into Windows are not removed by updates. + ## 🧱 Build from Source ```powershell @@ -161,6 +163,9 @@ Build release artifacts with the project script: - CI validates build, formatting, analyzers, vulnerability checks, and secret scanning. - Security disclosures are handled through private GitHub advisories. See [`docs/SECURITY.md`](docs/SECURITY.md). +- ThreadPilot has no analytics or telemetry. See [`docs/PRIVACY.md`](docs/PRIVACY.md). +- Release signing scope and controls are documented in [`docs/CODE_SIGNING_POLICY.md`](docs/CODE_SIGNING_POLICY.md). +- Free code signing provided by [SignPath.io](https://signpath.io), certificate by [SignPath Foundation](https://signpath.org), once the pending application is approved; current artifacts are unsigned. - Change history is tracked in [`docs/CHANGELOG.md`](docs/CHANGELOG.md). - Coverage focuses on business/application code and excludes generated build artifacts. @@ -170,6 +175,8 @@ Build release artifacts with the project script: - [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) - [`docs/CODE_OF_CONDUCT.md`](docs/CODE_OF_CONDUCT.md) - [`docs/RELEASE_SIGNING.md`](docs/RELEASE_SIGNING.md) +- [`docs/CODE_SIGNING_POLICY.md`](docs/CODE_SIGNING_POLICY.md) +- [`docs/PRIVACY.md`](docs/PRIVACY.md) - [`docs/release/PACKAGING.md`](docs/release/PACKAGING.md) - [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) - [`docs/QUALITY_GATES.md`](docs/QUALITY_GATES.md) diff --git a/Services/GameModeService.cs b/Services/GameModeService.cs index 7550192..229e8f4 100644 --- a/Services/GameModeService.cs +++ b/Services/GameModeService.cs @@ -53,7 +53,7 @@ public async Task SetGameModeAsync(bool enabled) try { - using var key = Registry.CurrentUser.OpenSubKey(GameBarKeyPath, writable: true); + using var key = Registry.CurrentUser.CreateSubKey(GameBarKeyPath, writable: true); if (key == null) { this.logger.LogWarning("GameBar registry key not found, cannot modify Game Mode"); @@ -75,38 +75,6 @@ public async Task SetGameModeAsync(bool enabled) return false; } } - - public async Task DisableGameModeForAffinityAsync() - { - try - { - bool isEnabled = await this.IsGameModeEnabledAsync(); - if (!isEnabled) - { - this.logger.LogDebug("Game Mode already disabled, no action needed"); - return false; - } - - this.logger.LogInformation("Game Mode is enabled, disabling for better CPU affinity control"); - bool success = await this.SetGameModeAsync(false); - - if (success) - { - this.logger.LogInformation("Successfully disabled Windows Game Mode for CPU affinity optimization"); - } - else - { - this.logger.LogWarning("Failed to disable Game Mode, CPU affinity may be affected"); - } - - return success; - } - catch (Exception ex) - { - this.logger.LogError(ex, "Error disabling Game Mode for affinity"); - return false; - } - } } } diff --git a/Services/IGameModeService.cs b/Services/IGameModeService.cs index fcd29ac..c01ffea 100644 --- a/Services/IGameModeService.cs +++ b/Services/IGameModeService.cs @@ -7,8 +7,6 @@ public interface IGameModeService Task IsGameModeEnabledAsync(); Task SetGameModeAsync(bool enabled); - - Task DisableGameModeForAffinityAsync(); } } diff --git a/Services/IProcessMemoryPriorityService.cs b/Services/IProcessMemoryPriorityService.cs index c2e6b34..5769858 100644 --- a/Services/IProcessMemoryPriorityService.cs +++ b/Services/IProcessMemoryPriorityService.cs @@ -10,5 +10,14 @@ public interface IProcessMemoryPriorityService Task GetMemoryPriorityAsync(ProcessModel process); Task SetMemoryPriorityAsync(ProcessModel process, ProcessMemoryPriority priority); + + Task GetIoPriorityAsync(ProcessModel process) => + Task.FromResult(null); + + Task SetIoPriorityAsync(ProcessModel process, ProcessIoPriority priority) => + Task.FromResult(ProcessOperationResult.Failed( + "Unsupported", + "I/O priority is unavailable on this system.", + "The configured priority service does not support I/O priority.")); } } diff --git a/Services/IProcessService.cs b/Services/IProcessService.cs index 1b1a085..940e3f6 100644 --- a/Services/IProcessService.cs +++ b/Services/IProcessService.cs @@ -38,8 +38,6 @@ public interface IProcessService Task IsProcessStillRunning(ProcessModel process); - Task SetIdleServerStateAsync(ProcessModel process, bool enableIdleServer); - Task SetRegistryPriorityAsync(ProcessModel process, bool enable, ProcessPriorityClass priority); void SetUseCpuSets(bool useCpuSets); diff --git a/Services/ISystemTweaksService.cs b/Services/ISystemTweaksService.cs index ca0bdb3..835dde7 100644 --- a/Services/ISystemTweaksService.cs +++ b/Services/ISystemTweaksService.cs @@ -7,6 +7,10 @@ public interface ISystemTweaksService { event EventHandler? TweakStatusChanged; + Task GetGameModeStatusAsync(); + + Task SetGameModeAsync(bool enabled); + Task GetCoreParkingStatusAsync(); Task SetCoreParkingAsync(bool enabled); @@ -34,6 +38,30 @@ public interface ISystemTweaksService Task GetMenuShowDelayStatusAsync(); Task SetMenuShowDelayAsync(bool enabled); + + Task GetUsbSelectiveSuspendStatusAsync(); + + Task SetUsbSelectiveSuspendAsync(bool enabled); + + Task GetPointerPrecisionStatusAsync(); + + Task SetPointerPrecisionAsync(bool enabled); + + Task GetEthernetPowerSavingStatusAsync(); + + Task SetEthernetPowerSavingAsync(bool enabled); + + Task GetInterruptModerationStatusAsync(); + + Task SetInterruptModerationAsync(bool enabled); + + Task GetGpuMsiModeStatusAsync(); + + Task SetGpuMsiModeAsync(bool enabled); + + Task GetMemoryIntegrityStatusAsync(); + + Task OpenSettingsAsync(SystemTweak tweak); } public class TweakStatus @@ -43,6 +71,8 @@ public class TweakStatus public bool IsAvailable { get; set; } public string? ErrorMessage { get; set; } + + public string? StatusText { get; set; } } public class TweakStatusChangedEventArgs : EventArgs @@ -63,8 +93,17 @@ public TweakStatusChangedEventArgs(string tweakName, TweakStatus status) public enum SystemTweak { + GameMode, CoreParking, CStates, + MemoryIntegrity, + Hags, + WindowedOptimizations, + UsbSelectiveSuspend, + PointerPrecision, + EthernetPowerSaving, + InterruptModeration, + GpuMsiMode, SysMain, Prefetch, PowerThrottling, diff --git a/Services/PersistentRulesEngine.cs b/Services/PersistentRulesEngine.cs index 849bccf..c21fce8 100644 --- a/Services/PersistentRulesEngine.cs +++ b/Services/PersistentRulesEngine.cs @@ -32,6 +32,7 @@ public sealed class PersistentRulesEngine : IPersistentRulesEngine private readonly IAffinityApplyService affinityApplyService; private readonly IProcessService processService; private readonly IProcessMemoryPriorityService memoryPriorityService; + private readonly ProcessPowerRequestService? powerRequestService; private readonly ILogger logger; public PersistentRulesEngine( @@ -40,7 +41,8 @@ public PersistentRulesEngine( IAffinityApplyService affinityApplyService, IProcessService processService, IProcessMemoryPriorityService memoryPriorityService, - ILogger logger) + ILogger logger, + ProcessPowerRequestService? powerRequestService = null) { this.ruleStore = ruleStore ?? throw new ArgumentNullException(nameof(ruleStore)); this.matcher = matcher ?? throw new ArgumentNullException(nameof(matcher)); @@ -48,6 +50,7 @@ public PersistentRulesEngine( this.processService = processService ?? throw new ArgumentNullException(nameof(processService)); this.memoryPriorityService = memoryPriorityService ?? throw new ArgumentNullException(nameof(memoryPriorityService)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); + this.powerRequestService = powerRequestService; } public async Task> ApplyMatchingRulesAsync( @@ -79,7 +82,11 @@ private async Task ApplyRuleAsync( var result = CreateSuccessResult(rule, process); var success = true; - if (!rule.ApplyAffinityOnStart && !rule.ApplyPriorityOnStart && !rule.ApplyMemoryPriorityOnStart) + if (!rule.ApplyAffinityOnStart && + !rule.ApplyPriorityOnStart && + !rule.ApplyMemoryPriorityOnStart && + !rule.ApplyIoPriorityOnStart && + !rule.PreventSystemSleepWhileRunning) { return MarkRuleConfigurationFailure( result, @@ -172,6 +179,50 @@ private async Task ApplyRuleAsync( } } + if (rule.ApplyIoPriorityOnStart && !result.IsProcessExited) + { + if (!rule.IoPriority.HasValue) + { + success = false; + result = MarkRuleConfigurationFailure( + result, + rule, + "PersistentRuleMissingIoPriority", + "This saved rule has no I/O priority value to apply."); + } + else + { + var ioResult = await this.memoryPriorityService + .SetIoPriorityAsync(process, rule.IoPriority.Value) + .ConfigureAwait(false); + if (ioResult.Success) + { + result = result with { IoPriorityApplied = true }; + } + else + { + success = false; + result = this.MergeMemoryPriorityFailure(result, ioResult); + } + } + } + + if (rule.PreventSystemSleepWhileRunning && !result.IsProcessExited) + { + var applied = this.powerRequestService != null && + await this.powerRequestService.SetPreventSleepAsync(process, enabled: true).ConfigureAwait(false); + result = result with { PreventSleepApplied = applied }; + success = success && applied; + if (!applied) + { + result = result with + { + ErrorCode = "PowerRequestFailed", + UserMessage = "ThreadPilot could not prevent system sleep for this process.", + }; + } + } + return result with { Success = success, @@ -291,18 +342,18 @@ private async Task VerifyPriorityAsync( private Task ApplyAffinityAsync(PersistentProcessRule rule, ProcessModel process) { - if (rule.CpuSelection != null) - { - return rule.CpuAssignmentMode == CpuAssignmentMode.Automatic - ? this.affinityApplyService.ApplyAsync(process, rule.CpuSelection) - : this.affinityApplyService.ApplyAsync(process, rule.CpuSelection, rule.CpuAssignmentMode); - } + if (rule.CpuSelection != null) + { + return rule.CpuAssignmentMode == CpuAssignmentMode.Automatic + ? this.affinityApplyService.ApplyAsync(process, rule.CpuSelection) + : this.affinityApplyService.ApplyAsync(process, rule.CpuSelection, rule.CpuAssignmentMode); + } if (rule.LegacyAffinityMask.HasValue) { - return rule.CpuAssignmentMode == CpuAssignmentMode.Automatic - ? this.affinityApplyService.ApplyAsync(process, rule.LegacyAffinityMask.Value) - : this.affinityApplyService.ApplyAsync(process, rule.LegacyAffinityMask.Value, rule.CpuAssignmentMode); + return rule.CpuAssignmentMode == CpuAssignmentMode.Automatic + ? this.affinityApplyService.ApplyAsync(process, rule.LegacyAffinityMask.Value) + : this.affinityApplyService.ApplyAsync(process, rule.LegacyAffinityMask.Value, rule.CpuAssignmentMode); } return Task.FromResult(AffinityApplyResult.Succeeded(0, process.ProcessorAffinity)); diff --git a/Services/ProcessMemoryPriorityService.cs b/Services/ProcessMemoryPriorityService.cs index 33805ec..592d9bd 100644 --- a/Services/ProcessMemoryPriorityService.cs +++ b/Services/ProcessMemoryPriorityService.cs @@ -183,6 +183,119 @@ public Task SetMemoryPriorityAsync(ProcessModel process, } } + public Task GetIoPriorityAsync(ProcessModel process) + { + if (!this.nativeApi.IsSupported || !IsValidProcess(process)) + { + return Task.FromResult(null); + } + + try + { + using var handle = this.nativeApi.OpenProcess( + ProcessAccessFlags.PROCESS_QUERY_LIMITED_INFORMATION, + inheritHandle: false, + (uint)process.ProcessId); + if (handle.IsInvalid) + { + return Task.FromResult(null); + } + + var value = 0; + var status = this.nativeApi.QueryIoPriority(handle, ref value, out _); + return Task.FromResult(status == 0 && Enum.IsDefined(typeof(ProcessIoPriority), value) + ? (ProcessIoPriority?)value + : null); + } + catch (Exception ex) + { + this.logger.LogDebug(ex, "Could not read I/O priority for process {ProcessId}", process.ProcessId); + return Task.FromResult(null); + } + } + + public Task SetIoPriorityAsync(ProcessModel process, ProcessIoPriority priority) + { + if (!IsValidProcess(process)) + { + return Task.FromResult(ProcessOperationResult.Failed( + InvalidProcessErrorCode, + ProcessOperationUserMessages.ProcessExited, + "Process is null or has an invalid PID.")); + } + + if (!Enum.IsDefined(priority)) + { + return Task.FromResult(ProcessOperationResult.Failed( + "InvalidIoPriority", + "This I/O priority value is not supported.", + $"I/O priority value '{priority}' is not supported.")); + } + + try + { + using var handle = this.nativeApi.OpenProcess( + ProcessAccessFlags.PROCESS_SET_INFORMATION, + inheritHandle: false, + (uint)process.ProcessId); + if (handle.IsInvalid) + { + return Task.FromResult(this.FromLastError("OpenProcess failed before setting I/O priority.")); + } + + var value = (int)priority; + var status = this.nativeApi.SetIoPriority(handle, ref value); + if (status == 0) + { + return Task.FromResult(ProcessOperationResult.Succeeded( + "I/O priority applied.", + $"Process {process.Name} (PID: {process.ProcessId}) I/O priority set to {priority}.")); + } + + return Task.FromResult(status switch + { + unchecked((int)0xC0000022) => ProcessOperationResult.Failed( + AffinityApplyErrorCodes.AccessDenied, + ProcessOperationUserMessages.AccessDenied, + $"NtSetInformationProcess failed with NTSTATUS 0x{status:X8}.", + isAccessDenied: true), + unchecked((int)0xC0000008) => ProcessOperationResult.Failed( + AffinityApplyErrorCodes.ProcessExited, + ProcessOperationUserMessages.ProcessExited, + $"NtSetInformationProcess failed with NTSTATUS 0x{status:X8}.", + isProcessExited: true), + _ => ProcessOperationResult.Failed( + AffinityApplyErrorCodes.NativeApplyFailed, + "ThreadPilot could not apply the I/O priority change.", + $"NtSetInformationProcess failed with NTSTATUS 0x{status:X8}."), + }); + } + catch (Exception ex) when (AffinityApplyExceptionClassifier.IsProcessExited(ex)) + { + return Task.FromResult(ProcessOperationResult.Failed( + AffinityApplyErrorCodes.ProcessExited, + ProcessOperationUserMessages.ProcessExited, + ex.Message, + isProcessExited: true)); + } + catch (Exception ex) when (AffinityApplyExceptionClassifier.IsAccessDenied(ex)) + { + return Task.FromResult(ProcessOperationResult.Failed( + AffinityApplyErrorCodes.AccessDenied, + ProcessOperationUserMessages.AccessDenied, + ex.Message, + isAccessDenied: true)); + } + catch (Exception ex) + { + this.logger.LogWarning(ex, "I/O priority apply failed for process {ProcessId}", process.ProcessId); + return Task.FromResult(ProcessOperationResult.Failed( + AffinityApplyErrorCodes.NativeApplyFailed, + "ThreadPilot could not apply the I/O priority change.", + ex.Message)); + } + } + private static bool IsValidProcess(ProcessModel? process) => process != null && process.ProcessId > 0; diff --git a/Services/ProcessPowerRequestService.cs b/Services/ProcessPowerRequestService.cs new file mode 100644 index 0000000..2028e90 --- /dev/null +++ b/Services/ProcessPowerRequestService.cs @@ -0,0 +1,160 @@ +namespace ThreadPilot.Services +{ + using System.Diagnostics; + using System.Runtime.InteropServices; + using Microsoft.Extensions.Logging; + using Microsoft.Win32.SafeHandles; + using ThreadPilot.Models; + + public sealed partial class ProcessPowerRequestService : IDisposable + { + private readonly Dictionary requests = []; + private readonly object sync = new(); + private readonly ILogger logger; + private bool disposed; + + public ProcessPowerRequestService(ILogger logger) + { + this.logger = logger; + } + + public Task SetPreventSleepAsync(ProcessModel process, bool enabled) + { + ArgumentNullException.ThrowIfNull(process); + if (!enabled) + { + this.Release(process.ProcessId); + return Task.FromResult(true); + } + + lock (this.sync) + { + ObjectDisposedException.ThrowIf(this.disposed, this); + if (this.requests.ContainsKey(process.ProcessId)) + { + return Task.FromResult(true); + } + } + + try + { + var target = Process.GetProcessById(process.ProcessId); + var reasonPointer = Marshal.StringToHGlobalUni($"ThreadPilot: {process.Name} is running"); + SafeFileHandle request; + try + { + var context = new ReasonContext { Version = 0, Flags = 1, SimpleReasonString = reasonPointer }; + request = NativeMethods.PowerCreateRequest(ref context); + } + finally + { + Marshal.FreeHGlobal(reasonPointer); + } + + if (request.IsInvalid || !NativeMethods.PowerSetRequest(request, PowerRequestType.SystemRequired)) + { + request.Dispose(); + target.Dispose(); + return Task.FromResult(false); + } + + EventHandler exited = (_, _) => this.Release(process.ProcessId); + target.EnableRaisingEvents = true; + target.Exited += exited; + lock (this.sync) + { + if (this.disposed || this.requests.ContainsKey(process.ProcessId)) + { + target.Exited -= exited; + _ = NativeMethods.PowerClearRequest(request, PowerRequestType.SystemRequired); + request.Dispose(); + target.Dispose(); + return Task.FromResult(!this.disposed); + } + + this.requests[process.ProcessId] = new RequestEntry(target, request, exited); + } + + if (target.HasExited) + { + this.Release(process.ProcessId); + return Task.FromResult(false); + } + + return Task.FromResult(true); + } + catch (Exception ex) + { + this.logger.LogDebug(ex, "Could not create power request for PID {ProcessId}", process.ProcessId); + return Task.FromResult(false); + } + } + + public void Release(int processId) + { + RequestEntry? entry; + lock (this.sync) + { + if (!this.requests.Remove(processId, out entry)) + { + return; + } + } + + entry.Process.Exited -= entry.ExitedHandler; + _ = NativeMethods.PowerClearRequest(entry.Request, PowerRequestType.SystemRequired); + entry.Request.Dispose(); + entry.Process.Dispose(); + } + + public void Dispose() + { + int[] processIds; + lock (this.sync) + { + if (this.disposed) + { + return; + } + + this.disposed = true; + processIds = [.. this.requests.Keys]; + } + + foreach (var processId in processIds) + { + this.Release(processId); + } + } + + private sealed record RequestEntry(Process Process, SafeFileHandle Request, EventHandler ExitedHandler); + + private enum PowerRequestType + { + DisplayRequired = 0, + SystemRequired = 1, + } + + [StructLayout(LayoutKind.Sequential)] + private struct ReasonContext + { + public uint Version; + public uint Flags; + public IntPtr SimpleReasonString; + } + + private static partial class NativeMethods + { + [LibraryImport("kernel32.dll", SetLastError = true)] + internal static partial SafeFileHandle PowerCreateRequest(ref ReasonContext context); + + [LibraryImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static partial bool PowerSetRequest(SafeFileHandle request, PowerRequestType requestType); + + [LibraryImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static partial bool PowerClearRequest(SafeFileHandle request, PowerRequestType requestType); + } + } +} diff --git a/Services/ProcessRuleCreationService.cs b/Services/ProcessRuleCreationService.cs index 82cfd4a..ad4c425 100644 --- a/Services/ProcessRuleCreationService.cs +++ b/Services/ProcessRuleCreationService.cs @@ -14,12 +14,14 @@ Task SaveRuleAsync( ProcessRuleCreationPayload payload, CancellationToken cancellationToken = default); - Task SaveCurrentSettingsAsRuleAsync( - ProcessModel process, - IReadOnlyList? currentCoreSelection, - ProcessMemoryPriority? currentMemoryPriority, - CpuAssignmentMode cpuAssignmentMode = CpuAssignmentMode.Automatic, - CancellationToken cancellationToken = default); + Task SaveCurrentSettingsAsRuleAsync( + ProcessModel process, + IReadOnlyList? currentCoreSelection, + ProcessMemoryPriority? currentMemoryPriority, + CpuAssignmentMode cpuAssignmentMode = CpuAssignmentMode.Automatic, + ProcessIoPriority? currentIoPriority = null, + bool preventSystemSleepWhileRunning = false, + CancellationToken cancellationToken = default); } public sealed record ProcessRuleCreationPayload @@ -30,9 +32,13 @@ public sealed record ProcessRuleCreationPayload public ProcessPriorityClass? Priority { get; init; } - public ProcessMemoryPriority? MemoryPriority { get; init; } - - public CpuAssignmentMode CpuAssignmentMode { get; init; } = CpuAssignmentMode.Automatic; + public ProcessMemoryPriority? MemoryPriority { get; init; } + + public ProcessIoPriority? IoPriority { get; init; } + + public bool PreventSystemSleepWhileRunning { get; init; } + + public CpuAssignmentMode CpuAssignmentMode { get; init; } = CpuAssignmentMode.Automatic; } public sealed record ProcessRuleCreationResult @@ -85,12 +91,14 @@ public ProcessRuleCreationService( this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); } - public async Task SaveCurrentSettingsAsRuleAsync( - ProcessModel process, - IReadOnlyList? currentCoreSelection, - ProcessMemoryPriority? currentMemoryPriority, - CpuAssignmentMode cpuAssignmentMode = CpuAssignmentMode.Automatic, - CancellationToken cancellationToken = default) + public async Task SaveCurrentSettingsAsRuleAsync( + ProcessModel process, + IReadOnlyList? currentCoreSelection, + ProcessMemoryPriority? currentMemoryPriority, + CpuAssignmentMode cpuAssignmentMode = CpuAssignmentMode.Automatic, + ProcessIoPriority? currentIoPriority = null, + bool preventSystemSleepWhileRunning = false, + CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(process); @@ -99,8 +107,10 @@ public async Task SaveCurrentSettingsAsRuleAsync( Priority = ShouldCaptureCurrentCpuPriority(process.Priority) ? process.Priority : null, - MemoryPriority = currentMemoryPriority, - CpuAssignmentMode = cpuAssignmentMode, + MemoryPriority = currentMemoryPriority, + IoPriority = currentIoPriority, + PreventSystemSleepWhileRunning = preventSystemSleepWhileRunning, + CpuAssignmentMode = cpuAssignmentMode, }; var affinityPayload = currentCoreSelection == null @@ -123,8 +133,8 @@ public async Task SaveCurrentSettingsAsRuleAsync( payload = payload with { CpuSelection = affinityPayload.Payload.CpuSelection, - LegacyAffinityMask = affinityPayload.Payload.LegacyAffinityMask, - CpuAssignmentMode = cpuAssignmentMode, + LegacyAffinityMask = affinityPayload.Payload.LegacyAffinityMask, + CpuAssignmentMode = cpuAssignmentMode, }; } @@ -170,13 +180,16 @@ public async Task SaveRuleAsync( ProcessName = processName, ExecutablePath = executablePath, CpuSelection = payload.CpuSelection, - LegacyAffinityMask = HasSelectionPayload(payload.CpuSelection) ? null : payload.LegacyAffinityMask, - CpuAssignmentMode = payload.CpuAssignmentMode, + LegacyAffinityMask = HasSelectionPayload(payload.CpuSelection) ? null : payload.LegacyAffinityMask, + CpuAssignmentMode = payload.CpuAssignmentMode, Priority = payload.Priority, MemoryPriority = payload.MemoryPriority, + IoPriority = payload.IoPriority, ApplyAffinityOnStart = HasSelectionPayload(payload.CpuSelection) || payload.LegacyAffinityMask.HasValue, ApplyPriorityOnStart = payload.Priority.HasValue, ApplyMemoryPriorityOnStart = payload.MemoryPriority.HasValue, + ApplyIoPriorityOnStart = payload.IoPriority.HasValue, + PreventSystemSleepWhileRunning = payload.PreventSystemSleepWhileRunning, CreatedAt = existing?.CreatedAt ?? now, UpdatedAt = now, Description = RuleDescription, @@ -241,21 +254,21 @@ private static PayloadSanitizationResult SanitizePayload(ProcessRuleCreationPayl ProcessOperationUserMessages.RealtimePriorityBlocked); } - var hasCpuSelection = HasSelectionPayload(payload.CpuSelection); + var hasCpuSelection = HasSelectionPayload(payload.CpuSelection); var legacyMask = hasCpuSelection ? null : payload.LegacyAffinityMask; if (legacyMask.HasValue && legacyMask.Value == 0) { legacyMask = null; } - return PayloadSanitizationResult.Succeeded(payload with - { - CpuSelection = hasCpuSelection ? payload.CpuSelection : null, - LegacyAffinityMask = legacyMask, - CpuAssignmentMode = Enum.IsDefined(payload.CpuAssignmentMode) - ? payload.CpuAssignmentMode - : CpuAssignmentMode.Automatic, - }); + return PayloadSanitizationResult.Succeeded(payload with + { + CpuSelection = hasCpuSelection ? payload.CpuSelection : null, + LegacyAffinityMask = legacyMask, + CpuAssignmentMode = Enum.IsDefined(payload.CpuAssignmentMode) + ? payload.CpuAssignmentMode + : CpuAssignmentMode.Automatic, + }); } private static bool ShouldCaptureCurrentCpuPriority(ProcessPriorityClass priority) => @@ -268,7 +281,9 @@ private static bool HasActionablePayload(ProcessRuleCreationPayload payload) => HasSelectionPayload(payload.CpuSelection) || payload.LegacyAffinityMask.HasValue || payload.Priority.HasValue || - payload.MemoryPriority.HasValue; + payload.MemoryPriority.HasValue || + payload.IoPriority.HasValue || + payload.PreventSystemSleepWhileRunning; private static bool HasSelectionPayload(CpuSelection? selection) => selection != null && diff --git a/Services/ProcessService.cs b/Services/ProcessService.cs index 140484f..1002ebe 100644 --- a/Services/ProcessService.cs +++ b/Services/ProcessService.cs @@ -1106,43 +1106,6 @@ public async Task IsProcessStillRunning(ProcessModel process) }).ConfigureAwait(false); } - public async Task SetIdleServerStateAsync(ProcessModel process, bool enableIdleServer) - { - return await Task.Run(() => - { - try - { - // Get the actual process - var actualProcess = Process.GetProcessById(process.ProcessId); - - // Use Windows API to set execution state for the process - // This prevents the system from entering idle state while the process is running - if (!enableIdleServer) - { - // Disable idle server by setting ES_CONTINUOUS | ES_SYSTEM_REQUIRED - // This keeps the system awake while the process is running - var result = NativeMethods.SetThreadExecutionState( - NativeMethods.EXECUTION_STATE.ES_CONTINUOUS | - NativeMethods.EXECUTION_STATE.ES_SYSTEM_REQUIRED); - - return result != 0; - } - else - { - // Re-enable idle server by clearing the execution state - var result = NativeMethods.SetThreadExecutionState( - NativeMethods.EXECUTION_STATE.ES_CONTINUOUS); - - return result != 0; - } - } - catch (Exception) - { - return false; - } - }).ConfigureAwait(false); - } - public async Task SetRegistryPriorityAsync(ProcessModel process, bool enable, ProcessPriorityClass priority) { ArgumentNullException.ThrowIfNull(process); @@ -1443,19 +1406,4 @@ private void MigrateLegacyProfilesIfNeeded() } } } - - internal static class NativeMethods - { - [System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)] - public static extern uint SetThreadExecutionState(EXECUTION_STATE esFlags); - - [System.Flags] - public enum EXECUTION_STATE : uint - { - ES_AWAYMODE_REQUIRED = 0x00000040, - ES_CONTINUOUS = 0x80000000, - ES_DISPLAY_REQUIRED = 0x00000002, - ES_SYSTEM_REQUIRED = 0x00000001, - } - } } diff --git a/Services/ServiceConfiguration.cs b/Services/ServiceConfiguration.cs index 0697742..50ec95d 100644 --- a/Services/ServiceConfiguration.cs +++ b/Services/ServiceConfiguration.cs @@ -75,6 +75,7 @@ private static IServiceCollection ConfigureCoreSystemServices(this IServiceColle services.AddSingleton(); services.AddSingleton(ProcessMemoryPriorityNativeApi.Instance); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/Services/StoragePaths.cs b/Services/StoragePaths.cs index 286eb34..2a37897 100644 --- a/Services/StoragePaths.cs +++ b/Services/StoragePaths.cs @@ -19,6 +19,8 @@ internal static class StoragePaths public static string PersistentRulesFilePath => Path.Combine(AppDataRoot, "persistent_rules.json"); + public static string DeviceTweakBackupsFilePath => Path.Combine(AppDataRoot, "device_tweak_backups.json"); + public static string PowerPlansDirectory => Path.Combine(AppDataRoot, "Powerplans"); public static void EnsureAppDataDirectories() diff --git a/Services/SystemTweaksService.cs b/Services/SystemTweaksService.cs index 8cd4b01..50e0520 100644 --- a/Services/SystemTweaksService.cs +++ b/Services/SystemTweaksService.cs @@ -1,11 +1,16 @@ namespace ThreadPilot.Services { using System; + using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; + using System.Globalization; using System.IO; + using System.Linq; + using System.Management; using System.Runtime.InteropServices; using System.ServiceProcess; + using System.Text.Json; using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -19,21 +24,247 @@ public class SystemTweaksService : ISystemTweaksService private static readonly Guid ProcessorSettingsSubgroupGuid = new("54533251-82be-4824-96c1-47b60b740d00"); private static readonly Guid CoreParkingSettingGuid = new("0cc5b647-c1df-4637-891a-dec35c318583"); private static readonly Guid ProcessorIdleDisableSettingGuid = new("5d76a2ca-e8c0-402f-a133-2158492d58ad"); + private static readonly Guid UsbSettingsSubgroupGuid = new("2a737441-1930-4402-8d77-b2bebba308a3"); + private static readonly Guid UsbSelectiveSuspendSettingGuid = new("48e6b7a6-50f5-4782-a5d4-53bb8f07e226"); + private static readonly string[] EthernetPowerSavingValueNames = ["*EEE", "AdvancedEEE", "EnableGreenEthernet", "PowerSavingMode"]; + private static readonly string[] InterruptModerationValueNames = ["*InterruptModeration"]; + private const string NetworkAdapterClassPath = @"SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}"; + private const string MsiPropertiesSuffix = @"Device Parameters\Interrupt Management\MessageSignaledInterruptProperties"; private const string GamesSchedulingKeyPath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games"; private const string SchedulingCategoryValueName = "Scheduling Category"; internal const string HighSchedulingCategoryEnabledValue = "High"; private const string HighSchedulingCategoryDisabledValue = "Medium"; private readonly ILogger logger; private readonly IElevationService elevationService; + private readonly IGameModeService gameModeService; public event EventHandler? TweakStatusChanged; public SystemTweaksService( ILogger logger, - IElevationService elevationService) + IElevationService elevationService, + IGameModeService gameModeService) { this.logger = logger; this.elevationService = elevationService; + this.gameModeService = gameModeService; + } + + public async Task GetGameModeStatusAsync() => new() + { + IsEnabled = await this.gameModeService.IsGameModeEnabledAsync(), + IsAvailable = true, + }; + + public async Task SetGameModeAsync(bool enabled) + { + var success = await this.gameModeService.SetGameModeAsync(enabled); + if (success) + { + this.RaiseStatusChanged(nameof(SystemTweak.GameMode), await this.GetGameModeStatusAsync()); + } + + return success; + } + + public Task GetUsbSelectiveSuspendStatusAsync() + { + var available = TryReadAcPowerSetting( + UsbSettingsSubgroupGuid, + UsbSelectiveSuspendSettingGuid, + out var value, + out var error); + return Task.FromResult(new TweakStatus + { + IsEnabled = value != 0, + IsAvailable = available, + ErrorMessage = error, + }); + } + + public async Task SetUsbSelectiveSuspendAsync(bool enabled) + { + string? error = "Administrator privileges are required."; + if (!this.elevationService.IsRunningAsAdministrator() || + !TryWriteAcPowerSetting( + UsbSettingsSubgroupGuid, + UsbSelectiveSuspendSettingGuid, + enabled ? 1u : 0u, + out error)) + { + this.logger.LogWarning("Could not update USB selective suspend: {Error}", error); + return false; + } + + var status = await this.GetUsbSelectiveSuspendStatusAsync(); + this.RaiseStatusChanged(nameof(SystemTweak.UsbSelectiveSuspend), status); + return status.IsAvailable && status.IsEnabled == enabled; + } + + public Task GetPointerPrecisionStatusAsync() + { + try + { + using var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Mouse"); + var mouseSpeed = key?.GetValue("MouseSpeed")?.ToString(); + if (int.TryParse(mouseSpeed, NumberStyles.Integer, CultureInfo.InvariantCulture, out var speed)) + { + return Task.FromResult(new TweakStatus { IsEnabled = speed != 0, IsAvailable = true }); + } + + var values = new int[3]; + var available = NativeMethods.SystemParametersInfo(NativeMethods.SpiGetMouse, 0, values, 0); + return Task.FromResult(new TweakStatus + { + IsEnabled = available && values[2] != 0, + IsAvailable = available, + ErrorMessage = available ? null : new Win32Exception(Marshal.GetLastWin32Error()).Message, + }); + } + catch (Exception ex) + { + return Task.FromResult(new TweakStatus { IsAvailable = false, ErrorMessage = ex.Message }); + } + } + + public async Task SetPointerPrecisionAsync(bool enabled) + { + var values = new int[3]; + if (!NativeMethods.SystemParametersInfo(NativeMethods.SpiGetMouse, 0, values, 0)) + { + return false; + } + + values = GetPointerPrecisionValues(enabled, values); + var notified = NativeMethods.SystemParametersInfo( + NativeMethods.SpiSetMouse, + 0, + values, + NativeMethods.SpifUpdateIniFile | NativeMethods.SpifSendChange); + if (!notified) + { + this.logger.LogWarning( + "Windows did not apply pointer precision immediately: {Error}", + new Win32Exception(Marshal.GetLastWin32Error()).Message); + } + + try + { + using var key = Registry.CurrentUser.CreateSubKey(@"Control Panel\Mouse", writable: true); + key.SetValue("MouseThreshold1", values[0].ToString(CultureInfo.InvariantCulture), RegistryValueKind.String); + key.SetValue("MouseThreshold2", values[1].ToString(CultureInfo.InvariantCulture), RegistryValueKind.String); + key.SetValue("MouseSpeed", values[2].ToString(CultureInfo.InvariantCulture), RegistryValueKind.String); + } + catch (Exception ex) + { + this.logger.LogWarning(ex, "Could not persist pointer precision settings."); + return false; + } + + var status = await this.GetPointerPrecisionStatusAsync(); + this.RaiseStatusChanged(nameof(SystemTweak.PointerPrecision), status); + return status.IsAvailable && status.IsEnabled == enabled; + } + + internal static int[] GetPointerPrecisionValues(bool enabled, IReadOnlyList current) + { + if (current.Count < 3) + { + throw new ArgumentException("Three mouse parameters are required.", nameof(current)); + } + + if (!enabled) + { + // Windows may normalize acceleration back to enabled when non-zero + // thresholds are submitted with acceleration disabled. + return [0, 0, 0]; + } + + return + [ + current[0] > 0 ? current[0] : 6, + current[1] > 0 ? current[1] : 10, + current[2] > 0 ? current[2] : 1, + ]; + } + + public Task GetEthernetPowerSavingStatusAsync() => + Task.FromResult(GetRegistryTargetsStatus(FindEthernetTargets(EthernetPowerSavingValueNames), enabledValue: 0)); + + public Task SetEthernetPowerSavingAsync(bool enabled) => + this.SetRegistryTargetsAsync( + SystemTweak.EthernetPowerSaving, + FindEthernetTargets(EthernetPowerSavingValueNames), + enabled, + enabledValue: 0, + disabledValue: 1); + + public Task GetInterruptModerationStatusAsync() => + Task.FromResult(GetRegistryTargetsStatus(FindEthernetTargets(InterruptModerationValueNames), enabledValue: 0)); + + public Task SetInterruptModerationAsync(bool enabled) => + this.SetRegistryTargetsAsync( + SystemTweak.InterruptModeration, + FindEthernetTargets(InterruptModerationValueNames), + enabled, + enabledValue: 0, + disabledValue: 1); + + public Task GetGpuMsiModeStatusAsync() => + Task.FromResult(GetRegistryTargetsStatus(FindGpuMsiTargets(), enabledValue: 1)); + + public Task SetGpuMsiModeAsync(bool enabled) => + this.SetRegistryTargetsAsync( + SystemTweak.GpuMsiMode, + FindGpuMsiTargets(), + enabled, + enabledValue: 1, + disabledValue: 0, + restoreOriginalWhenDisabled: false); + + public Task GetMemoryIntegrityStatusAsync() + { + try + { + using var key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\CI\State"); + var value = key == null ? null : ReadRegistryIntValue(key, "HVCIEnabled"); + return Task.FromResult(new TweakStatus + { + IsEnabled = value == 1, + IsAvailable = value.HasValue, + ErrorMessage = value.HasValue ? null : "Memory Integrity state is not exposed by Windows.", + }); + } + catch (Exception ex) + { + return Task.FromResult(new TweakStatus { IsAvailable = false, ErrorMessage = ex.Message }); + } + } + + public Task OpenSettingsAsync(SystemTweak tweak) + { + var uri = tweak switch + { + SystemTweak.MemoryIntegrity => "windowsdefender://coreisolation", + SystemTweak.Hags or SystemTweak.WindowedOptimizations => "ms-settings:display-advancedgraphics-default", + _ => null, + }; + + if (uri == null) + { + return Task.FromResult(false); + } + + try + { + Process.Start(new ProcessStartInfo(uri) { UseShellExecute = true }); + return Task.FromResult(true); + } + catch (Exception ex) + { + this.logger.LogWarning(ex, "Could not open Windows settings for {Tweak}", tweak); + return Task.FromResult(false); + } } public Task GetCoreParkingStatusAsync() @@ -420,7 +651,233 @@ private async Task SetServiceStartModeAsync(string serviceName, ServiceSta internal static string GetHighSchedulingCategoryRegistryValue(bool enabled) => enabled ? HighSchedulingCategoryEnabledValue : HighSchedulingCategoryDisabledValue; + private void RaiseStatusChanged(string tweakName, TweakStatus status) => + this.TweakStatusChanged?.Invoke(this, new TweakStatusChangedEventArgs(tweakName, status)); + + private static List FindEthernetTargets(IEnumerable valueNames) + { + var targets = new List(); + using var adapters = Registry.LocalMachine.OpenSubKey(NetworkAdapterClassPath); + if (adapters == null) + { + return targets; + } + + foreach (var subKeyName in adapters.GetSubKeyNames()) + { + var path = $@"{NetworkAdapterClassPath}\{subKeyName}"; + using var adapter = Registry.LocalMachine.OpenSubKey(path); + var characteristics = adapter == null ? null : ReadRegistryIntValue(adapter, "Characteristics"); + if (adapter == null || + ReadRegistryIntValue(adapter, "*IfType") != 6 || + !characteristics.HasValue || + (characteristics.Value & 0x4) == 0) + { + continue; + } + + foreach (var valueName in valueNames) + { + AddRegistryTarget(targets, adapter, path, valueName); + } + } + + return targets; + } + + private static List FindGpuMsiTargets() + { + var targets = new List(); + try + { + using var searcher = new ManagementObjectSearcher("SELECT PNPDeviceID FROM Win32_VideoController"); + using var results = searcher.Get(); + foreach (ManagementObject device in results) + { + using (device) + { + var pnpDeviceId = device["PNPDeviceID"]?.ToString(); + if (string.IsNullOrWhiteSpace(pnpDeviceId)) + { + continue; + } + + var path = $@"SYSTEM\CurrentControlSet\Enum\{pnpDeviceId}\{MsiPropertiesSuffix}"; + using var key = Registry.LocalMachine.OpenSubKey(path); + if (key != null) + { + AddRegistryTarget(targets, key, path, "MSISupported"); + } + } + } + } + catch (ManagementException) + { + // No supported display adapter information is available. + } + + return targets; + } + + private static void AddRegistryTarget( + ICollection targets, + RegistryKey key, + string path, + string valueName) + { + var value = ReadRegistryIntValue(key, valueName); + if (!value.HasValue) + { + return; + } + + var kind = key.GetValueKind(valueName); + if (kind is RegistryValueKind.DWord or RegistryValueKind.QWord or RegistryValueKind.String) + { + targets.Add(new RegistryTarget(path, valueName, value.Value, kind)); + } + } + + private static TweakStatus GetRegistryTargetsStatus(IReadOnlyCollection targets, int enabledValue) => new() + { + IsAvailable = targets.Count > 0, + IsEnabled = targets.Count > 0 && targets.All(target => target.Value == enabledValue), + ErrorMessage = targets.Count == 0 ? "No supported driver property was found." : null, + }; + + private async Task SetRegistryTargetsAsync( + SystemTweak tweak, + IReadOnlyCollection targets, + bool enabled, + int enabledValue, + int disabledValue, + bool restoreOriginalWhenDisabled = true) + { + if (!this.elevationService.IsRunningAsAdministrator() || targets.Count == 0) + { + return false; + } + + var backups = this.LoadRegistryBackups(); + var changedBackups = false; + var changedTargets = new List(); + try + { + foreach (var target in targets) + { + var backupKey = target.BackupKey; + if (!backups.ContainsKey(backupKey)) + { + backups[backupKey] = new RegistryValueBackup(target.Value, target.Kind); + changedBackups = true; + } + } + + if (changedBackups) + { + this.SaveRegistryBackups(backups); + } + + foreach (var target in targets) + { + var backupKey = target.BackupKey; + var desiredValue = enabled + ? enabledValue + : restoreOriginalWhenDisabled && backups.TryGetValue(backupKey, out var backup) + ? backup.Value + : disabledValue; + using var key = Registry.LocalMachine.OpenSubKey(target.Path, writable: true); + if (key == null) + { + return false; + } + + key.SetValue( + target.ValueName, + target.Kind == RegistryValueKind.String + ? desiredValue.ToString(CultureInfo.InvariantCulture) + : desiredValue, + target.Kind); + changedTargets.Add(target); + } + + var status = tweak switch + { + SystemTweak.EthernetPowerSaving => await this.GetEthernetPowerSavingStatusAsync(), + SystemTweak.InterruptModeration => await this.GetInterruptModerationStatusAsync(), + SystemTweak.GpuMsiMode => await this.GetGpuMsiModeStatusAsync(), + _ => new TweakStatus { IsAvailable = false }, + }; + this.RaiseStatusChanged(tweak.ToString(), status); + return status.IsAvailable && status.IsEnabled == enabled; + } + catch (Exception ex) + { + this.logger.LogWarning(ex, "Could not update driver tweak {Tweak}", tweak); + foreach (var target in changedTargets) + { + try + { + using var key = Registry.LocalMachine.OpenSubKey(target.Path, writable: true); + key?.SetValue( + target.ValueName, + target.Kind == RegistryValueKind.String + ? target.Value.ToString(CultureInfo.InvariantCulture) + : target.Value, + target.Kind); + } + catch (Exception rollbackException) + { + this.logger.LogWarning( + rollbackException, + "Could not roll back {Path}\\{ValueName}", + target.Path, + target.ValueName); + } + } + + return false; + } + } + + private Dictionary LoadRegistryBackups() + { + try + { + if (!File.Exists(StoragePaths.DeviceTweakBackupsFilePath)) + { + return new Dictionary(StringComparer.OrdinalIgnoreCase); + } + + var stored = JsonSerializer.Deserialize>( + File.ReadAllText(StoragePaths.DeviceTweakBackupsFilePath)); + return stored == null + ? new Dictionary(StringComparer.OrdinalIgnoreCase) + : new Dictionary(stored, StringComparer.OrdinalIgnoreCase); + } + catch (Exception ex) + { + this.logger.LogWarning(ex, "Could not load device tweak backups"); + return new Dictionary(StringComparer.OrdinalIgnoreCase); + } + } + + private void SaveRegistryBackups(Dictionary backups) + { + StoragePaths.EnsureAppDataDirectories(); + File.WriteAllText( + StoragePaths.DeviceTweakBackupsFilePath, + JsonSerializer.Serialize(backups, new JsonSerializerOptions { WriteIndented = true })); + } + private static bool TryReadAcPowerSetting(Guid settingGuid, out uint value, out string? error) + => TryReadAcPowerSetting(ProcessorSettingsSubgroupGuid, settingGuid, out value, out error); + + private static bool TryReadAcPowerSetting( + Guid subgroupGuid, + Guid settingGuid, + out uint value, + out string? error) { value = 0; if (!TryGetActivePowerScheme(out var schemeGuid, out error)) @@ -428,7 +885,6 @@ private static bool TryReadAcPowerSetting(Guid settingGuid, out uint value, out return false; } - var subgroupGuid = ProcessorSettingsSubgroupGuid; var result = NativeMethods.PowerReadAcValueIndex( IntPtr.Zero, ref schemeGuid, @@ -446,13 +902,19 @@ private static bool TryReadAcPowerSetting(Guid settingGuid, out uint value, out } private static bool TryWriteAcPowerSetting(Guid settingGuid, uint value, out string? error) + => TryWriteAcPowerSetting(ProcessorSettingsSubgroupGuid, settingGuid, value, out error); + + private static bool TryWriteAcPowerSetting( + Guid subgroupGuid, + Guid settingGuid, + uint value, + out string? error) { if (!TryGetActivePowerScheme(out var schemeGuid, out error)) { return false; } - var subgroupGuid = ProcessorSettingsSubgroupGuid; var writeResult = NativeMethods.PowerWriteAcValueIndex( IntPtr.Zero, ref schemeGuid, @@ -585,6 +1047,17 @@ public ProcessResult(int exitCode, string standardOutput, string standardError) public string StandardError { get; } } + private sealed record RegistryTarget( + string Path, + string ValueName, + int Value, + RegistryValueKind Kind) + { + public string BackupKey => $"{this.Path}|{this.ValueName}"; + } + + private sealed record RegistryValueBackup(int Value, RegistryValueKind Kind); + public Task GetMenuShowDelayStatusAsync() { try @@ -645,6 +1118,15 @@ public async Task SetMenuShowDelayAsync(bool enabled) private static class NativeMethods { + internal const uint SpiGetMouse = 0x0003; + internal const uint SpiSetMouse = 0x0004; + internal const uint SpifUpdateIniFile = 0x0001; + internal const uint SpifSendChange = 0x0002; + + [DllImport("user32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static extern bool SystemParametersInfo(uint action, uint parameter, [In, Out] int[] values, uint flags); + [DllImport("PowrProf.dll", EntryPoint = "PowerGetActiveScheme")] internal static extern uint PowerGetActiveScheme(IntPtr userRootPowerKey, out IntPtr activePolicyGuid); diff --git a/Tests/ThreadPilot.Core.Tests/BundledPowerPlanAssetTests.cs b/Tests/ThreadPilot.Core.Tests/BundledPowerPlanAssetTests.cs index a9de865..5aea8ed 100644 --- a/Tests/ThreadPilot.Core.Tests/BundledPowerPlanAssetTests.cs +++ b/Tests/ThreadPilot.Core.Tests/BundledPowerPlanAssetTests.cs @@ -1,127 +1,41 @@ -namespace ThreadPilot.Core.Tests -{ - using System.Security.Cryptography; - using System.Text; - using Microsoft.Extensions.Logging.Abstractions; - using Moq; - using ThreadPilot.Services; - using ThreadPilot.Services.Abstractions; - - public sealed class BundledPowerPlanAssetTests - { - private static readonly string[] NewPlanFiles = - [ - "0 Synez_Public_Power.pow", - "arsenza low latency (INTEL FIX THREAD-DIRECTOR).pow", - "arsenza low latency.pow", - "AutoOS.pow", - "BEYOND-PERFORMANCE-AMD+INTEL.pow", - "Bitsum Highest Performance.pow", - "cactusOS.pow", - "FPSHEAVEN2026.pow", - "GALA's ultimate performance(AMD).pow", - "Gavot Performance.pow", - "GTweaks Power Plan V3.pow", - "imribiy2026.pow", - "IrisFixed.pow", - "J o k r O S P o w e r P l a n.pow", - "Jackpot2026.pow", - "Kizzimo's Extreme Low Latency.pow", - "KSOS11.pow", - "melody LowestLatency.pow", - "Microsoft High performance.pow", - "Microsoft Ultimate Performance.pow", - "Mitstas IDLE ENABLED.pow", - "n1kobg GPU_Booster_Power_Plan.pow", - "Prodazin Power Plan.pow", - "Reticle v2.pow", - "RevisionPowerPlanV2.8.pow", - "RIP Tweaks Power Plan.pow", - "Rosca Tweaks v2.pow", - "Velo's Power Plan.pow", - "VTRL Optimized.pow", - "XNRL Pro Plan.pow", - ]; - - [Fact] - public void BundledPlans_AreValidUniqueRegistryHives() - { - var directory = GetPowerPlansDirectory(); - var files = Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly); - - Assert.All(files, file => Assert.Equal(".pow", Path.GetExtension(file), ignoreCase: true)); - Assert.Equal(files.Length, files.Select(Path.GetFileNameWithoutExtension).Distinct(StringComparer.OrdinalIgnoreCase).Count()); - - foreach (var file in files) - { - var info = new FileInfo(file); - Assert.InRange(info.Length, 4, 10 * 1024 * 1024); - Assert.Equal("regf", Encoding.ASCII.GetString(File.ReadAllBytes(file), 0, 4)); - Assert.DoesNotContain(Path.GetFileName(file), character => Path.GetInvalidFileNameChars().Contains(character)); - Assert.DoesNotContain("#U", Path.GetFileName(file), StringComparison.OrdinalIgnoreCase); - } - } - - [Fact] - public async Task NewAndExistingPlans_ArePresentDiscoverableAndNotBinaryDuplicates() - { - var directory = GetPowerPlansDirectory(); - var files = Directory.GetFiles(directory, "*.pow", SearchOption.TopDirectoryOnly); - var newPaths = NewPlanFiles.Select(file => Path.Combine(directory, file)).ToArray(); - - Assert.All(newPaths, path => Assert.True(File.Exists(path), $"Missing bundled power plan: {Path.GetFileName(path)}")); - Assert.All(["Amit.pow", "Beyond.pow", "L1 Final Version.pow"], file => Assert.True(File.Exists(Path.Combine(directory, file)))); - - var newHashes = newPaths.ToDictionary(path => path, GetSha256); - Assert.Equal(newHashes.Count, newHashes.Values.Distinct(StringComparer.Ordinal).Count()); - Assert.All( - newHashes, - entry => Assert.DoesNotContain(files, file => !newPaths.Contains(file, StringComparer.OrdinalIgnoreCase) && GetSha256(file) == entry.Value)); - - var logger = new Mock(MockBehavior.Loose); - var runner = new Mock(MockBehavior.Strict); - var service = new PowerPlanService( - NullLogger.Instance, - logger.Object, - runner.Object, - () => directory); - - var discovered = await service.GetCustomPowerPlansAsync(); - Assert.All(NewPlanFiles, file => Assert.Contains(discovered, plan => plan.Name == Path.GetFileNameWithoutExtension(file))); - Assert.Equal(files.Length, discovered.Count); - } - - [Fact] - public void Project_ConfiguresAllPowerPlansForBuildAndPublish() - { - var project = File.ReadAllText(Path.Combine(FindRepositoryRoot(), "ThreadPilot.csproj")); - - Assert.Contains(@"assets\Powerplans\**\*.pow", project, StringComparison.Ordinal); - Assert.Contains(@"Powerplans\%(RecursiveDir)%(Filename)%(Extension)", project, StringComparison.Ordinal); - Assert.Contains("PreserveNewest", project, StringComparison.Ordinal); - Assert.Contains("PreserveNewest", project, StringComparison.Ordinal); - } - - private static string GetPowerPlansDirectory() => - Path.Combine(FindRepositoryRoot(), "assets", "Powerplans"); - - private static string GetSha256(string path) => - Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path))); - - private static string FindRepositoryRoot() - { - var directory = new DirectoryInfo(AppContext.BaseDirectory); - while (directory != null) - { - if (File.Exists(Path.Combine(directory.FullName, "ThreadPilot.csproj"))) - { - return directory.FullName; - } - - directory = directory.Parent; - } - - throw new InvalidOperationException("Repository root could not be located."); - } - } -} +namespace ThreadPilot.Core.Tests +{ + public sealed class BundledPowerPlanAssetTests + { + [Fact] + public void RepositoryAndReleasePipeline_DoNotBundlePowerPlanFiles() + { + var root = FindRepositoryRoot(); + var assetsDirectory = Path.Combine(root, "assets", "Powerplans"); + var project = File.ReadAllText(Path.Combine(root, "ThreadPilot.csproj")); + var installer = File.ReadAllText(Path.Combine(root, "Installer", "setup.iss")); + var workflow = File.ReadAllText(Path.Combine(root, ".github", "workflows", "release.yml")); + + Assert.Empty(Directory.Exists(assetsDirectory) + ? Directory.GetFiles(assetsDirectory, "*.pow", SearchOption.AllDirectories) + : []); + Assert.DoesNotContain(@"assets\Powerplans", project, StringComparison.OrdinalIgnoreCase); + Assert.DoesNotContain(@"\Powerplans\*", installer, StringComparison.OrdinalIgnoreCase); + Assert.DoesNotContain("assets/Powerplans", workflow, StringComparison.OrdinalIgnoreCase); + } + + [Fact] + public void CommunityAndSupportLinks_AreTheRequestedDestinations() + { + Assert.Equal("https://discord.gg/EmPfb57Kfr", ThreadPilot.ViewModels.PowerPlanViewModel.MorePlansUrl); + Assert.Equal("https://discord.gg/VYwkCbr4vH", ThreadPilot.ViewModels.SettingsViewModel.DiscordUrl); + Assert.Equal("https://github.com/PrimeBuild-pc/ThreadPilot/issues", ThreadPilot.ViewModels.SettingsViewModel.IssuesUrl); + } + + private static string FindRepositoryRoot() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory != null && !File.Exists(Path.Combine(directory.FullName, "ThreadPilot.csproj"))) + { + directory = directory.Parent; + } + + return directory?.FullName ?? throw new InvalidOperationException("Repository root was not found."); + } + } +} diff --git a/Tests/ThreadPilot.Core.Tests/PackagingMetadataTests.cs b/Tests/ThreadPilot.Core.Tests/PackagingMetadataTests.cs index 37f96d9..1d0c915 100644 --- a/Tests/ThreadPilot.Core.Tests/PackagingMetadataTests.cs +++ b/Tests/ThreadPilot.Core.Tests/PackagingMetadataTests.cs @@ -4,8 +4,8 @@ namespace ThreadPilot.Core.Tests public sealed partial class PackagingMetadataTests { - private const string ReleaseVersion = "1.6.0"; - private const string ReleaseAssemblyVersion = "1.6.0.0"; + private const string ReleaseVersion = "1.7.0"; + private const string ReleaseAssemblyVersion = "1.7.0.0"; [Fact] public void InnoInstallers_UseStableDisplayNameAndSeparateVersionMetadata() @@ -38,10 +38,31 @@ public void PrimaryInstaller_RemovesThreadPilotOwnedDataOnlyDuringUninstall() Assert.Contains("[UninstallDelete]", script, StringComparison.Ordinal); Assert.Contains("Name: \"{userappdata}\\ThreadPilot\"", script, StringComparison.Ordinal); Assert.Contains("ThreadPilot user data is preserved during install/update", script, StringComparison.Ordinal); + Assert.Contains("ThreadPilot_Launch", script, StringComparison.Ordinal); + Assert.Contains("ThreadPilot_Startup", script, StringComparison.Ordinal); Assert.DoesNotContain("[InstallDelete]", script, StringComparison.Ordinal); Assert.DoesNotContain("Name: \"{userappdata}\"", script, StringComparison.Ordinal); } + [Fact] + public void PortableUninstallers_RemoveCurrentAndLegacyStartupTasks() + { + var root = FindRepositoryRoot(); + var paths = new[] + { + Path.Combine(root, "build", "build-release.ps1"), + Path.Combine(root, "build", "package-release-zips.ps1"), + Path.Combine(root, ".github", "workflows", "release.yml"), + }; + + foreach (var path in paths) + { + var script = File.ReadAllText(path); + Assert.Contains("ThreadPilot_Launch", script, StringComparison.Ordinal); + Assert.Contains("ThreadPilot_Startup", script, StringComparison.Ordinal); + } + } + [Fact] public void PrimaryInstaller_CleansOnlyRecognizedLegacyBetaUninstallRegistryEntries() { @@ -99,7 +120,7 @@ private static string FindRepositoryRoot() throw new InvalidOperationException("Repository root could not be located."); } - [GeneratedRegex("#define MyAppVersion \"1\\.6\\.0\"", RegexOptions.CultureInvariant)] + [GeneratedRegex("#define MyAppVersion \"1\\.7\\.0\"", RegexOptions.CultureInvariant)] private static partial Regex MyAppVersionRegex(); } } diff --git a/Tests/ThreadPilot.Core.Tests/PersistentProcessRuleJsonStoreTests.cs b/Tests/ThreadPilot.Core.Tests/PersistentProcessRuleJsonStoreTests.cs index 3ce5313..36aa945 100644 --- a/Tests/ThreadPilot.Core.Tests/PersistentProcessRuleJsonStoreTests.cs +++ b/Tests/ThreadPilot.Core.Tests/PersistentProcessRuleJsonStoreTests.cs @@ -36,13 +36,16 @@ public async Task SaveAndLoadAsync_RoundTripsCpuSelectionAndLegacyAffinityMask() LogicalProcessors = [new ProcessorRef(0, 0, 0)], GlobalLogicalProcessorIndexes = [0], }, - LegacyAffinityMask = 3, - CpuAssignmentMode = CpuAssignmentMode.IdealProcessor, + LegacyAffinityMask = 3, + CpuAssignmentMode = CpuAssignmentMode.IdealProcessor, Priority = ProcessPriorityClass.AboveNormal, MemoryPriority = ProcessMemoryPriority.BelowNormal, + IoPriority = ProcessIoPriority.Low, ApplyAffinityOnStart = true, ApplyPriorityOnStart = true, ApplyMemoryPriorityOnStart = true, + ApplyIoPriorityOnStart = true, + PreventSystemSleepWhileRunning = true, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, Description = ProcessOperationUserMessages.PersistentRulesDescription, @@ -56,11 +59,14 @@ public async Task SaveAndLoadAsync_RoundTripsCpuSelectionAndLegacyAffinityMask() var loadedRule = Assert.Single(loaded); Assert.Equal("rule-a", loadedRule.Id); - Assert.Equal(3, loadedRule.LegacyAffinityMask); - Assert.Equal(CpuAssignmentMode.IdealProcessor, loadedRule.CpuAssignmentMode); + Assert.Equal(3, loadedRule.LegacyAffinityMask); + Assert.Equal(CpuAssignmentMode.IdealProcessor, loadedRule.CpuAssignmentMode); Assert.Equal(ProcessPriorityClass.AboveNormal, loadedRule.Priority); Assert.Equal(ProcessMemoryPriority.BelowNormal, loadedRule.MemoryPriority); Assert.True(loadedRule.ApplyMemoryPriorityOnStart); + Assert.Equal(ProcessIoPriority.Low, loadedRule.IoPriority); + Assert.True(loadedRule.ApplyIoPriorityOnStart); + Assert.True(loadedRule.PreventSystemSleepWhileRunning); Assert.NotNull(loadedRule.CpuSelection); Assert.Equal(0, loadedRule.CpuSelection.GlobalLogicalProcessorIndexes.Single()); } @@ -68,30 +74,30 @@ public async Task SaveAndLoadAsync_RoundTripsCpuSelectionAndLegacyAffinityMask() { DeleteFile(filePath); } - } - - [Fact] - public async Task LoadAsync_OldRuleWithoutCpuAssignmentMode_DefaultsToAutomatic() - { - var filePath = CreateTemporaryFilePath(); - Directory.CreateDirectory(Path.GetDirectoryName(filePath)!); - await File.WriteAllTextAsync( - filePath, - """ - [{"Id":"legacy","Name":"Legacy","IsEnabled":true,"ProcessName":"game.exe","LegacyAffinityMask":3,"ApplyAffinityOnStart":true}] - """); - - try - { - var rule = Assert.Single(await new PersistentProcessRuleJsonStore(() => filePath).LoadAsync()); - Assert.Equal(CpuAssignmentMode.Automatic, rule.CpuAssignmentMode); - Assert.Equal(3, rule.LegacyAffinityMask); - } - finally - { - DeleteFile(filePath); - } - } + } + + [Fact] + public async Task LoadAsync_OldRuleWithoutCpuAssignmentMode_DefaultsToAutomatic() + { + var filePath = CreateTemporaryFilePath(); + Directory.CreateDirectory(Path.GetDirectoryName(filePath)!); + await File.WriteAllTextAsync( + filePath, + """ + [{"Id":"legacy","Name":"Legacy","IsEnabled":true,"ProcessName":"game.exe","LegacyAffinityMask":3,"ApplyAffinityOnStart":true}] + """); + + try + { + var rule = Assert.Single(await new PersistentProcessRuleJsonStore(() => filePath).LoadAsync()); + Assert.Equal(CpuAssignmentMode.Automatic, rule.CpuAssignmentMode); + Assert.Equal(3, rule.LegacyAffinityMask); + } + finally + { + DeleteFile(filePath); + } + } [Fact] public async Task MultipleRules_SaveThenReload_DoesNotLoseEntries() diff --git a/Tests/ThreadPilot.Core.Tests/PowerPlanViewXamlTests.cs b/Tests/ThreadPilot.Core.Tests/PowerPlanViewXamlTests.cs index 92cbbaa..97a6173 100644 --- a/Tests/ThreadPilot.Core.Tests/PowerPlanViewXamlTests.cs +++ b/Tests/ThreadPilot.Core.Tests/PowerPlanViewXamlTests.cs @@ -56,5 +56,15 @@ public void ActivePowerPlanTemplate_ContainsNeutralActiveBadgeAndBorder() Assert.Contains("StatusPillBackgroundBrush", serialized, StringComparison.Ordinal); Assert.DoesNotContain("BorderThickness=\"4,1,1,1\"", serialized, StringComparison.Ordinal); } + + [Fact] + public void Header_ExposesLocalizedCommunityPlansLink() + { + var document = XDocument.Load(PowerPlanViewPath, LoadOptions.PreserveWhitespace); + var serialized = document.ToString(SaveOptions.DisableFormatting); + + Assert.Contains("OpenMorePlansCommand", serialized, StringComparison.Ordinal); + Assert.Contains("PowerPlanView_MorePlans", serialized, StringComparison.Ordinal); + } } } diff --git a/Tests/ThreadPilot.Core.Tests/ProcessMemoryPriorityServiceTests.cs b/Tests/ThreadPilot.Core.Tests/ProcessMemoryPriorityServiceTests.cs index f1012fa..13414cb 100644 --- a/Tests/ThreadPilot.Core.Tests/ProcessMemoryPriorityServiceTests.cs +++ b/Tests/ThreadPilot.Core.Tests/ProcessMemoryPriorityServiceTests.cs @@ -42,6 +42,24 @@ public async Task GetMemoryPriorityAsync_WithValidProcess_ReadsNativeApi() Assert.Equal(ProcessAccessFlags.PROCESS_QUERY_LIMITED_INFORMATION, nativeApi.LastOpenAccess); } + [Fact] + public async Task IoPriority_WithValidProcess_RoundTripsThroughNativeApi() + { + var nativeApi = new FakeProcessMemoryPriorityNativeApi + { + IoPriorityToReturn = ProcessIoPriority.Low, + }; + var service = CreateService(nativeApi); + var process = CreateProcess(); + + var observed = await service.GetIoPriorityAsync(process); + var result = await service.SetIoPriorityAsync(process, ProcessIoPriority.High); + + Assert.Equal(ProcessIoPriority.Low, observed); + Assert.True(result.Success); + Assert.Equal(ProcessIoPriority.High, nativeApi.LastSetIoPriority); + } + [Theory] [InlineData(1, ProcessMemoryPriority.VeryLow)] [InlineData(2, ProcessMemoryPriority.Low)] @@ -198,6 +216,10 @@ private sealed class FakeProcessMemoryPriorityNativeApi : IProcessMemoryPriority public ProcessMemoryPriority PriorityToReturn { get; init; } = ProcessMemoryPriority.Normal; + public ProcessIoPriority IoPriorityToReturn { get; init; } = ProcessIoPriority.Normal; + + public ProcessIoPriority? LastSetIoPriority { get; private set; } + public Exception? OpenException { get; init; } public Exception? SetException { get; init; } @@ -243,6 +265,19 @@ public bool SetProcessInformation( } public int GetLastWin32Error() => this.LastError; + + public int QueryIoPriority(SafeProcessHandle process, ref int priority, out uint returnLength) + { + priority = (int)this.IoPriorityToReturn; + returnLength = sizeof(int); + return 0; + } + + public int SetIoPriority(SafeProcessHandle process, ref int priority) + { + this.LastSetIoPriority = (ProcessIoPriority)priority; + return 0; + } } } } diff --git a/Tests/ThreadPilot.Core.Tests/ProcessViewModelAffinityTests.cs b/Tests/ThreadPilot.Core.Tests/ProcessViewModelAffinityTests.cs index 2f89e81..f187380 100644 --- a/Tests/ThreadPilot.Core.Tests/ProcessViewModelAffinityTests.cs +++ b/Tests/ThreadPilot.Core.Tests/ProcessViewModelAffinityTests.cs @@ -13,9 +13,6 @@ public async Task SelectingCoreMask_DoesNotApplyProcessorAffinity() { var processService = new Mock(MockBehavior.Loose); var gameModeService = new Mock(MockBehavior.Loose); - gameModeService - .Setup(service => service.DisableGameModeForAffinityAsync()) - .ReturnsAsync(false); var viewModel = CreateViewModel(processService.Object, gameModeService.Object); viewModel.SelectedProcess = new ProcessModel @@ -58,7 +55,7 @@ public async Task SelectingCoreMask_ReportsPendingAffinityWithoutChangingCurrent Assert.True(viewModel.HasPendingAffinityEdits); Assert.Equal("Current OS affinity: 0x3", viewModel.CurrentAffinityText); Assert.Equal("Pending core mask: 0x1", viewModel.PendingAffinityText); - Assert.Equal("CPU selection staged. Use Apply CPU Assignment to apply it.", viewModel.AffinityEditStateText); + Assert.Equal("CPU selection staged. Use Apply CPU Assignment to apply it.", viewModel.AffinityEditStateText); } [Fact] diff --git a/Tests/ThreadPilot.Core.Tests/SettingsViewModelThemeTests.cs b/Tests/ThreadPilot.Core.Tests/SettingsViewModelThemeTests.cs index 698d845..6117814 100644 --- a/Tests/ThreadPilot.Core.Tests/SettingsViewModelThemeTests.cs +++ b/Tests/ThreadPilot.Core.Tests/SettingsViewModelThemeTests.cs @@ -197,7 +197,7 @@ public async Task NavigationPrompt_SavePersistsPendingSettingsBeforeNavigating() } [Fact] - public void SettingsView_ExposesPersistentRuleAutoApplyToggle() + public void SettingsView_ExposesPersistentRuleAutoApplyToggle() { var settingsViewPath = Path.Combine( AppContext.BaseDirectory, @@ -214,28 +214,28 @@ public void SettingsView_ExposesPersistentRuleAutoApplyToggle() Assert.Contains("Text=\"{DynamicResource SettingsView_ApplyOnStart}\"", serialized, StringComparison.Ordinal); Assert.Contains("TextWrapping=\"Wrap\"", serialized, StringComparison.Ordinal); Assert.Contains("IsChecked=\"{Binding Settings.ApplyPersistentRulesOnProcessStart}\"", serialized, StringComparison.Ordinal); - Assert.Contains("Text=\"{DynamicResource SettingsView_ApplyOnStartDescription}\"", serialized, StringComparison.Ordinal); - } - - [Fact] - public void SettingsView_ExposesDefaultCpuAssignmentAndReadOnlyReservedState() - { - var settingsViewPath = Path.Combine( - AppContext.BaseDirectory, - "..", - "..", - "..", - "..", - "..", - "Views", - "SettingsView.xaml"); - var serialized = File.ReadAllText(settingsViewPath); - - Assert.Contains("SelectedValue=\"{Binding Settings.DefaultCpuAssignmentMode}\"", serialized, StringComparison.Ordinal); - Assert.Contains("Text=\"{Binding ReservedCpuSetsStatus}\"", serialized, StringComparison.Ordinal); - Assert.Contains("AutomationProperties.HelpText=\"{DynamicResource SettingsView_ReservedCpuSetsTooltip}\"", serialized, StringComparison.Ordinal); - Assert.DoesNotContain("ReservedCpuSetsStatus, Mode=TwoWay", serialized, StringComparison.Ordinal); - } + Assert.Contains("Text=\"{DynamicResource SettingsView_ApplyOnStartDescription}\"", serialized, StringComparison.Ordinal); + } + + [Fact] + public void SettingsView_ExposesDefaultCpuAssignmentAndReadOnlyReservedState() + { + var settingsViewPath = Path.Combine( + AppContext.BaseDirectory, + "..", + "..", + "..", + "..", + "..", + "Views", + "SettingsView.xaml"); + var serialized = File.ReadAllText(settingsViewPath); + + Assert.Contains("SelectedValue=\"{Binding Settings.DefaultCpuAssignmentMode}\"", serialized, StringComparison.Ordinal); + Assert.Contains("Text=\"{Binding ReservedCpuSetsStatus}\"", serialized, StringComparison.Ordinal); + Assert.Contains("AutomationProperties.HelpText=\"{DynamicResource SettingsView_ReservedCpuSetsTooltip}\"", serialized, StringComparison.Ordinal); + Assert.DoesNotContain("ReservedCpuSetsStatus, Mode=TwoWay", serialized, StringComparison.Ordinal); + } [Fact] public void SettingsView_ExposesAllSupportedLanguageSelections() @@ -258,6 +258,26 @@ public void SettingsView_ExposesAllSupportedLanguageSelections() } } + [Fact] + public void SettingsView_ExposesLocalizedDiscordAndIssueActions() + { + var settingsViewPath = Path.Combine( + AppContext.BaseDirectory, + "..", + "..", + "..", + "..", + "..", + "Views", + "SettingsView.xaml"); + var serialized = File.ReadAllText(settingsViewPath); + + Assert.Contains("SettingsView_SomethingWrong", serialized, StringComparison.Ordinal); + Assert.Contains("OpenDiscordCommand", serialized, StringComparison.Ordinal); + Assert.Contains("ReportIssueCommand", serialized, StringComparison.Ordinal); + Assert.Contains("SettingsView_ReportIssue", serialized, StringComparison.Ordinal); + } + private sealed class Harness { private readonly ApplicationSettingsModel settings; diff --git a/Tests/ThreadPilot.Core.Tests/SystemTweaksServiceTests.cs b/Tests/ThreadPilot.Core.Tests/SystemTweaksServiceTests.cs index 7764297..3405504 100644 --- a/Tests/ThreadPilot.Core.Tests/SystemTweaksServiceTests.cs +++ b/Tests/ThreadPilot.Core.Tests/SystemTweaksServiceTests.cs @@ -19,5 +19,29 @@ public void GetHighSchedulingCategoryRegistryValue_WhenDisabled_KeepsDefaultReve Assert.Equal("Medium", value); } + + [Fact] + public void GetPointerPrecisionValues_WhenDisabled_ClearsAccelerationAndThresholds() + { + var values = SystemTweaksService.GetPointerPrecisionValues(enabled: false, [6, 10, 1]); + + Assert.Equal([0, 0, 0], values); + } + + [Fact] + public void GetPointerPrecisionValues_WhenEnabled_RestoresWindowsDefaultsAfterDisable() + { + var values = SystemTweaksService.GetPointerPrecisionValues(enabled: true, [0, 0, 0]); + + Assert.Equal([6, 10, 1], values); + } + + [Fact] + public void GetPointerPrecisionValues_WhenEnabled_PreservesExistingNonZeroValues() + { + var values = SystemTweaksService.GetPointerPrecisionValues(enabled: true, [4, 8, 2]); + + Assert.Equal([4, 8, 2], values); + } } } diff --git a/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs b/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs index 4d41392..cb55c3a 100644 --- a/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs +++ b/Tests/ThreadPilot.Core.Tests/SystemTweaksViewModelTests.cs @@ -12,8 +12,15 @@ public async Task LoadAsync_QueriesEverySupportedTweakExactlyOnce() { var harness = new Harness(); var status = new TweakStatus { IsEnabled = true, IsAvailable = true }; + harness.Tweaks.Setup(service => service.GetGameModeStatusAsync()).ReturnsAsync(status); harness.Tweaks.Setup(service => service.GetCoreParkingStatusAsync()).ReturnsAsync(status); harness.Tweaks.Setup(service => service.GetCStatesStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetMemoryIntegrityStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetUsbSelectiveSuspendStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetPointerPrecisionStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetEthernetPowerSavingStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetInterruptModerationStatusAsync()).ReturnsAsync(status); + harness.Tweaks.Setup(service => service.GetGpuMsiModeStatusAsync()).ReturnsAsync(status); harness.Tweaks.Setup(service => service.GetSysMainStatusAsync()).ReturnsAsync(status); harness.Tweaks.Setup(service => service.GetPrefetchStatusAsync()).ReturnsAsync(status); harness.Tweaks.Setup(service => service.GetPowerThrottlingStatusAsync()).ReturnsAsync(status); @@ -24,9 +31,17 @@ public async Task LoadAsync_QueriesEverySupportedTweakExactlyOnce() await viewModel.LoadAsync(); Assert.Equal(Enum.GetValues().Length, viewModel.TweakItems.Count); - Assert.All(viewModel.TweakItems, item => Assert.True(item.IsEnabled)); + Assert.All(viewModel.TweakItems.Where(item => !item.IsGuidedAction), item => Assert.True(item.IsEnabled)); + Assert.All(viewModel.TweakItems, item => Assert.True(item.IsAvailable)); + harness.Tweaks.Verify(service => service.GetGameModeStatusAsync(), Times.Once); harness.Tweaks.Verify(service => service.GetCoreParkingStatusAsync(), Times.Once); harness.Tweaks.Verify(service => service.GetCStatesStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetMemoryIntegrityStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetUsbSelectiveSuspendStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetPointerPrecisionStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetEthernetPowerSavingStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetInterruptModerationStatusAsync(), Times.Once); + harness.Tweaks.Verify(service => service.GetGpuMsiModeStatusAsync(), Times.Once); harness.Tweaks.Verify(service => service.GetSysMainStatusAsync(), Times.Once); harness.Tweaks.Verify(service => service.GetPrefetchStatusAsync(), Times.Once); harness.Tweaks.Verify(service => service.GetPowerThrottlingStatusAsync(), Times.Once); @@ -35,8 +50,14 @@ public async Task LoadAsync_QueriesEverySupportedTweakExactlyOnce() } [Theory] + [InlineData(SystemTweak.GameMode, "Game Mode")] [InlineData(SystemTweak.CoreParking, "Core Parking")] [InlineData(SystemTweak.CStates, "C-States")] + [InlineData(SystemTweak.UsbSelectiveSuspend, "USB Selective Suspend")] + [InlineData(SystemTweak.PointerPrecision, "Enhance pointer precision")] + [InlineData(SystemTweak.EthernetPowerSaving, "Disable Ethernet power saving")] + [InlineData(SystemTweak.InterruptModeration, "Disable interrupt moderation")] + [InlineData(SystemTweak.GpuMsiMode, "GPU MSI Mode")] [InlineData(SystemTweak.SysMain, "SysMain Service")] [InlineData(SystemTweak.Prefetch, "Prefetch")] [InlineData(SystemTweak.PowerThrottling, "Power Throttling")] @@ -109,6 +130,10 @@ public void SetupTweak(SystemTweak tweakType, bool setResult) { switch (tweakType) { + case SystemTweak.GameMode: + this.Tweaks.Setup(service => service.SetGameModeAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetGameModeStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; case SystemTweak.CoreParking: this.Tweaks.Setup(service => service.SetCoreParkingAsync(true)).ReturnsAsync(setResult); this.Tweaks.Setup(service => service.GetCoreParkingStatusAsync()).ReturnsAsync(CreateEnabledStatus()); @@ -117,6 +142,26 @@ public void SetupTweak(SystemTweak tweakType, bool setResult) this.Tweaks.Setup(service => service.SetCStatesAsync(true)).ReturnsAsync(setResult); this.Tweaks.Setup(service => service.GetCStatesStatusAsync()).ReturnsAsync(CreateEnabledStatus()); break; + case SystemTweak.UsbSelectiveSuspend: + this.Tweaks.Setup(service => service.SetUsbSelectiveSuspendAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetUsbSelectiveSuspendStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; + case SystemTweak.PointerPrecision: + this.Tweaks.Setup(service => service.SetPointerPrecisionAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetPointerPrecisionStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; + case SystemTweak.EthernetPowerSaving: + this.Tweaks.Setup(service => service.SetEthernetPowerSavingAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetEthernetPowerSavingStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; + case SystemTweak.InterruptModeration: + this.Tweaks.Setup(service => service.SetInterruptModerationAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetInterruptModerationStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; + case SystemTweak.GpuMsiMode: + this.Tweaks.Setup(service => service.SetGpuMsiModeAsync(true)).ReturnsAsync(setResult); + this.Tweaks.Setup(service => service.GetGpuMsiModeStatusAsync()).ReturnsAsync(CreateEnabledStatus()); + break; case SystemTweak.SysMain: this.Tweaks.Setup(service => service.SetSysMainAsync(true)).ReturnsAsync(setResult); this.Tweaks.Setup(service => service.GetSysMainStatusAsync()).ReturnsAsync(CreateEnabledStatus()); @@ -146,12 +191,30 @@ public void VerifySetCalled(SystemTweak tweakType) { switch (tweakType) { + case SystemTweak.GameMode: + this.Tweaks.Verify(service => service.SetGameModeAsync(true), Times.Once); + break; case SystemTweak.CoreParking: this.Tweaks.Verify(service => service.SetCoreParkingAsync(true), Times.Once); break; case SystemTweak.CStates: this.Tweaks.Verify(service => service.SetCStatesAsync(true), Times.Once); break; + case SystemTweak.UsbSelectiveSuspend: + this.Tweaks.Verify(service => service.SetUsbSelectiveSuspendAsync(true), Times.Once); + break; + case SystemTweak.PointerPrecision: + this.Tweaks.Verify(service => service.SetPointerPrecisionAsync(true), Times.Once); + break; + case SystemTweak.EthernetPowerSaving: + this.Tweaks.Verify(service => service.SetEthernetPowerSavingAsync(true), Times.Once); + break; + case SystemTweak.InterruptModeration: + this.Tweaks.Verify(service => service.SetInterruptModerationAsync(true), Times.Once); + break; + case SystemTweak.GpuMsiMode: + this.Tweaks.Verify(service => service.SetGpuMsiModeAsync(true), Times.Once); + break; case SystemTweak.SysMain: this.Tweaks.Verify(service => service.SetSysMainAsync(true), Times.Once); break; diff --git a/ThreadPilot.csproj b/ThreadPilot.csproj index 7179973..da1d696 100644 --- a/ThreadPilot.csproj +++ b/ThreadPilot.csproj @@ -16,10 +16,10 @@ link true CS1998;CS0067;CS0414;WFAC010;IL3000;MVVMTK0034 - 1.6.0 - 1.6.0.0 - 1.6.0.0 - 1.6.0 + 1.7.0 + 1.7.0.0 + 1.7.0.0 + 1.7.0 @@ -36,15 +36,6 @@ - - - - Powerplans\%(RecursiveDir)%(Filename)%(Extension) - PreserveNewest - PreserveNewest - - - diff --git a/ViewModels/BaseViewModel.cs b/ViewModels/BaseViewModel.cs index ccf6ccd..3a6e267 100644 --- a/ViewModels/BaseViewModel.cs +++ b/ViewModels/BaseViewModel.cs @@ -1,6 +1,7 @@ namespace ThreadPilot.ViewModels { using System; + using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; @@ -104,6 +105,18 @@ protected void ClearError() this.HasError = false; } + protected void OpenExternalLink(string url) + { + try + { + Process.Start(new ProcessStartInfo(url) { UseShellExecute = true }); + } + catch (Exception ex) + { + this.SetError("Unable to open the link.", ex); + } + } + protected async Task ExecuteAsync(Func operation, string? statusMessage = null, string? successMessage = null) { try diff --git a/ViewModels/PowerPlanViewModel.cs b/ViewModels/PowerPlanViewModel.cs index d727e82..d8a8e69 100644 --- a/ViewModels/PowerPlanViewModel.cs +++ b/ViewModels/PowerPlanViewModel.cs @@ -16,6 +16,7 @@ namespace ThreadPilot.ViewModels public partial class PowerPlanViewModel : BaseViewModel { + internal const string MorePlansUrl = "https://discord.gg/EmPfb57Kfr"; private readonly IPowerPlanService powerPlanService; private System.Timers.Timer? refreshTimer; private bool isAutoRefreshPaused = true; @@ -133,6 +134,9 @@ public void ResumeAutoRefresh(bool refreshImmediately = true) }); } + [RelayCommand] + private void OpenMorePlans() => this.OpenExternalLink(MorePlansUrl); + [RelayCommand] public async Task LoadPowerPlans() { diff --git a/ViewModels/ProcessViewModel.Behaviors.partial.cs b/ViewModels/ProcessViewModel.Behaviors.partial.cs index 64e2a8b..b2a357c 100644 --- a/ViewModels/ProcessViewModel.Behaviors.partial.cs +++ b/ViewModels/ProcessViewModel.Behaviors.partial.cs @@ -145,24 +145,24 @@ await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => } } - partial void OnSelectedProcessChanged(ProcessModel? value) - { - this.SetCpuAssignmentMode( - this.settingsService?.Settings.DefaultCpuAssignmentMode ?? CpuAssignmentMode.Automatic, - overriddenByRule: false); - this.UpdateSelectedProcessSummary(value); + partial void OnSelectedProcessChanged(ProcessModel? value) + { + this.SetCpuAssignmentMode( + this.settingsService?.Settings.DefaultCpuAssignmentMode ?? CpuAssignmentMode.Automatic, + overriddenByRule: false); + this.UpdateSelectedProcessSummary(value); if (value != null && CpuTopology != null) { this.HasPendingAffinityEdits = false; this.UpdateAffinityDisplayState(); // Immediately fetch and display real-time process information - TaskSafety.FireAndForget(HandleSelectedProcessChangedAsync(value), ex => + TaskSafety.FireAndForget(HandleSelectedProcessChangedAsync(value), ex => { this.Logger.LogWarning(ex, "Failed while handling selected process change for {ProcessName}", value.Name); - }); - TaskSafety.FireAndForget(this.ResolveCpuAssignmentModeAsync(value), ex => - this.Logger.LogDebug(ex, "Could not resolve saved CPU assignment mode for {ProcessName}", value.Name)); + }); + TaskSafety.FireAndForget(this.ResolveCpuAssignmentModeAsync(value), ex => + this.Logger.LogDebug(ex, "Could not resolve saved CPU assignment mode for {ProcessName}", value.Name)); } else if (value == null) { @@ -172,39 +172,39 @@ partial void OnSelectedProcessChanged(ProcessModel? value) // Update system tray context menu this.systemTrayService.UpdateContextMenu(value?.Name, value != null); - } - - partial void OnSelectedCpuAssignmentModeChanged(CpuAssignmentMode value) - { - if (!this.suppressCpuAssignmentModeChanges && this.SelectedProcess != null) - { - this.HasPendingAffinityEdits = true; - this.cpuAssignmentModeOverriddenByRule = true; - } - } - - private async Task ResolveCpuAssignmentModeAsync(ProcessModel process) - { - if (this.persistentRuleStore == null || this.persistentRuleMatcher == null) - { - return; - } - - var rules = await this.persistentRuleStore.LoadAsync().ConfigureAwait(false); - var rule = rules.FirstOrDefault(candidate => candidate.IsEnabled && this.persistentRuleMatcher.IsMatch(candidate, process)); - if (rule != null && this.SelectedProcess?.ProcessId == process.ProcessId) - { - await InvokeOnUiAsync(() => this.SetCpuAssignmentMode(rule.CpuAssignmentMode, overriddenByRule: true)); - } - } - - private void SetCpuAssignmentMode(CpuAssignmentMode mode, bool overriddenByRule) - { - this.suppressCpuAssignmentModeChanges = true; - this.SelectedCpuAssignmentMode = Enum.IsDefined(mode) ? mode : CpuAssignmentMode.Automatic; - this.suppressCpuAssignmentModeChanges = false; - this.cpuAssignmentModeOverriddenByRule = overriddenByRule; - } + } + + partial void OnSelectedCpuAssignmentModeChanged(CpuAssignmentMode value) + { + if (!this.suppressCpuAssignmentModeChanges && this.SelectedProcess != null) + { + this.HasPendingAffinityEdits = true; + this.cpuAssignmentModeOverriddenByRule = true; + } + } + + private async Task ResolveCpuAssignmentModeAsync(ProcessModel process) + { + if (this.persistentRuleStore == null || this.persistentRuleMatcher == null) + { + return; + } + + var rules = await this.persistentRuleStore.LoadAsync().ConfigureAwait(false); + var rule = rules.FirstOrDefault(candidate => candidate.IsEnabled && this.persistentRuleMatcher.IsMatch(candidate, process)); + if (rule != null && this.SelectedProcess?.ProcessId == process.ProcessId) + { + await InvokeOnUiAsync(() => this.SetCpuAssignmentMode(rule.CpuAssignmentMode, overriddenByRule: true)); + } + } + + private void SetCpuAssignmentMode(CpuAssignmentMode mode, bool overriddenByRule) + { + this.suppressCpuAssignmentModeChanges = true; + this.SelectedCpuAssignmentMode = Enum.IsDefined(mode) ? mode : CpuAssignmentMode.Automatic; + this.suppressCpuAssignmentModeChanges = false; + this.cpuAssignmentModeOverriddenByRule = overriddenByRule; + } private void UpdateSelectedProcessSummary(ProcessModel? process) { @@ -546,7 +546,7 @@ private void UpdateAffinityDisplayState() this.PendingAffinityText = pendingMask > 0 ? $"Pending core mask: 0x{pendingMask:X}" : "Pending core mask: no cores selected"; - this.AffinityEditStateText = "CPU selection staged. Use Apply CPU Assignment to apply it."; + this.AffinityEditStateText = "CPU selection staged. Use Apply CPU Assignment to apply it."; } [RelayCommand] @@ -813,11 +813,13 @@ private async Task SaveCurrentSettingsAsRule(ProcessModel? process) var currentCoreSelection = this.HasPendingAffinityEdits && this.CpuCores.Count > 0 ? this.GetPendingCoreSelectionMask() : null; - var result = await this.processRuleCreationService.SaveCurrentSettingsAsRuleAsync( - targetProcess, - currentCoreSelection, - this.SelectedProcessSummary.MemoryPriority, - this.SelectedCpuAssignmentMode); + var result = await this.processRuleCreationService.SaveCurrentSettingsAsRuleAsync( + targetProcess, + currentCoreSelection, + this.SelectedProcessSummary.MemoryPriority, + this.SelectedCpuAssignmentMode, + this.SelectedProcessSummary.IoPriority, + this.IsIdleServerDisabled); this.ApplyRuleCreationResultStatus(result); await this.LogUserActionAsync( @@ -848,24 +850,24 @@ private async Task ApplyAffinityAndSaveAsRule(ProcessModel? process) } var pendingSelection = this.GetPendingCoreSelectionMask(); - var applyResult = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( - process, - pendingSelection, - "Manual Process tab context menu CPU selection", - this.SelectedCpuAssignmentMode); + var applyResult = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( + process, + pendingSelection, + "Manual Process tab context menu CPU selection", + this.SelectedCpuAssignmentMode); if (!applyResult.Success) { this.SetContextError(applyResult.Message); await this.LogUserActionAsync( - "ProcessCpuAssignmentFailed", - applyResult.Message, - $"Process: {process.Name}, PID: {process.ProcessId}, RequestedMode: {applyResult.RequestedMode}, EffectiveMode: {applyResult.EffectiveMode}, RequestedMask: 0x{applyResult.RequestedMask:X}"); + "ProcessCpuAssignmentFailed", + applyResult.Message, + $"Process: {process.Name}, PID: {process.ProcessId}, RequestedMode: {applyResult.RequestedMode}, EffectiveMode: {applyResult.EffectiveMode}, RequestedMask: 0x{applyResult.RequestedMask:X}"); await this.UpdateSelectedProcessSummaryAsync(process); return; } - if (applyResult.EffectiveMode == CpuAssignmentMode.AffinityMask) + if (applyResult.EffectiveMode == CpuAssignmentMode.AffinityMask) { this.UpdateCoreSelections(process.ProcessorAffinity, true); } @@ -875,11 +877,13 @@ await this.LogUserActionAsync( this.HasPendingAffinityEdits = false; this.UpdateAffinityDisplayState(); - var saveResult = await this.processRuleCreationService.SaveCurrentSettingsAsRuleAsync( - process, - pendingSelection, - currentMemoryPriority: null, - cpuAssignmentMode: this.SelectedCpuAssignmentMode); + var saveResult = await this.processRuleCreationService.SaveCurrentSettingsAsRuleAsync( + process, + pendingSelection, + currentMemoryPriority: null, + cpuAssignmentMode: this.SelectedCpuAssignmentMode, + currentIoPriority: null, + preventSystemSleepWhileRunning: this.IsIdleServerDisabled); this.ApplyRuleCreationResultStatus(saveResult); await this.LogUserActionAsync( @@ -913,15 +917,15 @@ await InvokeOnUiAsync(() => this.SetStatus($"Setting affinity for {selectedProcess.Name}..."); }); - var result = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( - selectedProcess, - pendingSelection, - selectionReason, - this.SelectedCpuAssignmentMode); + var result = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( + selectedProcess, + pendingSelection, + selectionReason, + this.SelectedCpuAssignmentMode); await InvokeOnUiAsync(() => { - if (result.EffectiveMode == CpuAssignmentMode.AffinityMask) + if (result.EffectiveMode == CpuAssignmentMode.AffinityMask) { this.UpdateCoreSelections(selectedProcess.ProcessorAffinity, true); } @@ -933,58 +937,58 @@ await InvokeOnUiAsync(() => { this.HasPendingAffinityEdits = false; this.UpdateAffinityDisplayState(); - this.SetStatus($"CPU assignment applied successfully to {selectedProcess.Name} using {result.EffectiveMode}.", false); - _ = this.notificationService.ShowNotificationAsync("CPU assignment applied", $"{selectedProcess.Name}: {result.EffectiveMode}", NotificationType.Success); + this.SetStatus($"CPU assignment applied successfully to {selectedProcess.Name} using {result.EffectiveMode}.", false); + _ = this.notificationService.ShowNotificationAsync("CPU assignment applied", $"{selectedProcess.Name}: {result.EffectiveMode}", NotificationType.Success); } else if (result.FailureReason == AffinityApplyFailureReason.VerificationMismatch) { this.HasPendingAffinityEdits = false; this.UpdateAffinityDisplayState(); this.SetStatus(result.Message, false); - _ = this.notificationService.ShowNotificationAsync("CPU assignment adjusted", result.Message, NotificationType.Warning); + _ = this.notificationService.ShowNotificationAsync("CPU assignment adjusted", result.Message, NotificationType.Warning); } else if (result.FailureReason == AffinityApplyFailureReason.ProcessTerminated) { this.SelectedProcess = null; this.ClearProcessSelection(); this.SetCriticalStatus(result.Message); - _ = this.notificationService.ShowNotificationAsync("CPU assignment failed", result.Message, NotificationType.Warning); + _ = this.notificationService.ShowNotificationAsync("CPU assignment failed", result.Message, NotificationType.Warning); } else if (result.FailureReason == AffinityApplyFailureReason.AccessDenied) { this.SetCriticalStatus(result.Message); - _ = this.notificationService.ShowNotificationAsync("CPU assignment blocked", result.Message, NotificationType.Warning); + _ = this.notificationService.ShowNotificationAsync("CPU assignment blocked", result.Message, NotificationType.Warning); } else if (result.IsInvalidTopology || result.IsLegacyFallbackBlocked) { this.SetCriticalStatus(result.Message); - _ = this.notificationService.ShowNotificationAsync("CPU assignment blocked", result.Message, NotificationType.Warning); + _ = this.notificationService.ShowNotificationAsync("CPU assignment blocked", result.Message, NotificationType.Warning); } else { this.SetStatus(result.Message, false); - _ = this.notificationService.ShowNotificationAsync("CPU assignment error", result.Message, NotificationType.Error); + _ = this.notificationService.ShowNotificationAsync("CPU assignment error", result.Message, NotificationType.Error); } }); await this.LogUserActionAsync( - result.Success ? "ProcessCpuAssignmentApplied" : "ProcessCpuAssignmentFailed", - result.Message, - $"Process: {selectedProcess.Name}, PID: {selectedProcess.ProcessId}, RequestedMode: {result.RequestedMode}, EffectiveMode: {result.EffectiveMode}, Threads: {result.AppliedThreadCount}, RequestedMask: 0x{result.RequestedMask:X}, VerifiedMask: 0x{result.VerifiedMask:X}"); + result.Success ? "ProcessCpuAssignmentApplied" : "ProcessCpuAssignmentFailed", + result.Message, + $"Process: {selectedProcess.Name}, PID: {selectedProcess.ProcessId}, RequestedMode: {result.RequestedMode}, EffectiveMode: {result.EffectiveMode}, Threads: {result.AppliedThreadCount}, RequestedMask: 0x{result.RequestedMask:X}, VerifiedMask: 0x{result.VerifiedMask:X}"); await this.UpdateSelectedProcessSummaryAsync(selectedProcess); } catch (Exception ex) { var friendly = ex.Message; - _ = this.notificationService.ShowNotificationAsync("CPU assignment error", friendly, NotificationType.Error); + _ = this.notificationService.ShowNotificationAsync("CPU assignment error", friendly, NotificationType.Error); await this.LogUserActionAsync( - "ProcessCpuAssignmentFailed", - friendly, - $"Process: {selectedProcess.Name}, PID: {selectedProcess.ProcessId}, Mode: {this.SelectedCpuAssignmentMode}"); + "ProcessCpuAssignmentFailed", + friendly, + $"Process: {selectedProcess.Name}, PID: {selectedProcess.ProcessId}, Mode: {this.SelectedCpuAssignmentMode}"); await InvokeOnUiAsync(() => { - this.SetCriticalStatus($"Error applying CPU assignment: {friendly}"); + this.SetCriticalStatus($"Error applying CPU assignment: {friendly}"); }); // Try to refresh process info even if setting failed, to show current state @@ -1148,10 +1152,6 @@ private async Task ApplyCoreMaskToProcessAsync(CoreMask mask) "Applying mask '{MaskName}' to process {ProcessName} (PID: {ProcessId})", mask.Name, selectedProcess.Name, selectedProcess.ProcessId); - // Disable Windows Game Mode for better CPU affinity control - // Game Mode can interfere with CPU Sets, particularly on AMD systems - await this.gameModeService.DisableGameModeForAffinityAsync(); - var result = await this.processAffinityApplyCoordinator.ApplyCoreMaskAsync(selectedProcess, mask); System.Windows.Application.Current.Dispatcher.Invoke(() => @@ -1231,7 +1231,7 @@ private async Task QuickApplyAffinityAndPowerPlan() try { - var affinityModeChangedOsAffinity = false; + var affinityModeChangedOsAffinity = false; await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => { @@ -1242,16 +1242,16 @@ await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => var pendingSelection = this.GetPendingCoreSelectionMask(); if (pendingSelection.Any(selected => selected)) { - var result = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( - selectedProcess, - pendingSelection, - "Manual Process tab quick apply CPU selection", - this.SelectedCpuAssignmentMode); + var result = await this.processAffinityApplyCoordinator.ApplyCoreSelectionAsync( + selectedProcess, + pendingSelection, + "Manual Process tab quick apply CPU selection", + this.SelectedCpuAssignmentMode); if (!result.Success) { await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => { - if (result.EffectiveMode == CpuAssignmentMode.AffinityMask) + if (result.EffectiveMode == CpuAssignmentMode.AffinityMask) { this.UpdateCoreSelections(selectedProcess.ProcessorAffinity, true); } @@ -1265,7 +1265,7 @@ await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => this.HasPendingAffinityEdits = false; this.UpdateAffinityDisplayState(); - affinityModeChangedOsAffinity = result.EffectiveMode == CpuAssignmentMode.AffinityMask; + affinityModeChangedOsAffinity = result.EffectiveMode == CpuAssignmentMode.AffinityMask; } // Apply power plan if selected @@ -1278,7 +1278,7 @@ await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => await System.Windows.Application.Current.Dispatcher.InvokeAsync(() => { - if (affinityModeChangedOsAffinity) + if (affinityModeChangedOsAffinity) { this.UpdateCoreSelections(selectedProcess.ProcessorAffinity, true); } @@ -1531,6 +1531,22 @@ private Task SetContextMemoryPriorityBelowNormal(ProcessModel? process) => private Task SetContextMemoryPriorityNormal(ProcessModel? process) => this.SetContextMemoryPriorityAsync(process, ProcessMemoryPriority.Normal); + [RelayCommand] + private Task SetContextIoPriorityVeryLow(ProcessModel? process) => + this.SetContextIoPriorityAsync(process, ProcessIoPriority.VeryLow); + + [RelayCommand] + private Task SetContextIoPriorityLow(ProcessModel? process) => + this.SetContextIoPriorityAsync(process, ProcessIoPriority.Low); + + [RelayCommand] + private Task SetContextIoPriorityNormal(ProcessModel? process) => + this.SetContextIoPriorityAsync(process, ProcessIoPriority.Normal); + + [RelayCommand] + private Task SetContextIoPriorityHigh(ProcessModel? process) => + this.SetContextIoPriorityAsync(process, ProcessIoPriority.High); + [RelayCommand] private async Task ClearContextCpuSets(ProcessModel? process) { @@ -1665,6 +1681,7 @@ private async Task CopyContextProcessInfo(ProcessModel? process) .AppendLine($"Path: {path}") .AppendLine($"CPU priority: {process.Priority}") .AppendLine($"Memory priority: {this.SelectedProcessSummary.MemoryPriority?.ToString() ?? "unavailable"}") + .AppendLine($"I/O priority: {this.SelectedProcessSummary.IoPriority?.ToString() ?? "unavailable"}") .AppendLine($"Affinity: 0x{process.ProcessorAffinity:X}") .AppendLine($"Rule status: {this.SelectedProcessSummary.RuleStatusText}"); @@ -1794,6 +1811,33 @@ await this.LogUserActionAsync( } } + private async Task SetContextIoPriorityAsync(ProcessModel? process, ProcessIoPriority priority) + { + if (process == null || this.memoryPriorityService == null) + { + return; + } + + var result = await this.memoryPriorityService.SetIoPriorityAsync(process, priority); + if (!result.Success) + { + this.SetContextError(result.UserMessage); + await this.LogUserActionAsync( + "ProcessIoPriorityFailed", + result.UserMessage, + $"Process: {process.Name}, PID: {process.ProcessId}, Priority: {priority}"); + await this.UpdateSelectedProcessSummaryAsync(process); + return; + } + + this.SetStatus($"I/O priority applied successfully to {process.Name}: {priority}.", false); + await this.LogUserActionAsync( + "ProcessIoPriorityChanged", + $"I/O priority changed for {process.Name}: {priority}", + $"PID: {process.ProcessId}"); + await this.UpdateSelectedProcessSummaryAsync(process); + } + private async Task TryRefreshContextProcessSummaryAsync(ProcessModel process) { try @@ -2230,32 +2274,30 @@ private async Task ToggleIdleServerAsync(bool disable) try { - this.SetStatus($"{(disable ? "Disabling" : "Enabling")} idle server for {this.SelectedProcess.Name}..."); - - // Implementation for disabling/enabling idle server - // This typically involves setting process execution state or power management settings - var success = await this.processService.SetIdleServerStateAsync(this.SelectedProcess, !disable); + this.SetStatus($"{(disable ? "Enabling" : "Disabling")} sleep prevention for {this.SelectedProcess.Name}..."); + var success = this.powerRequestService != null && + await this.powerRequestService.SetPreventSleepAsync(this.SelectedProcess, disable); if (success) { this.SelectedProcess.IsIdleServerDisabled = disable; - this.SetStatus($"Idle server {(disable ? "disabled" : "enabled")} for {this.SelectedProcess.Name}"); + this.SetStatus($"Sleep prevention {(disable ? "enabled" : "disabled")} for {this.SelectedProcess.Name}"); await this.LogUserActionAsync( - "IdleServer", - $"Idle server {(disable ? "disabled" : "enabled")} for process {this.SelectedProcess.Name}", + "ProcessSleepPrevention", + $"Sleep prevention {(disable ? "enabled" : "disabled")} for process {this.SelectedProcess.Name}", $"PID: {this.SelectedProcess.ProcessId}"); } else { - this.SetStatus($"Failed to {(disable ? "disable" : "enable")} idle server for {this.SelectedProcess.Name}", false); + this.SetStatus($"Failed to {(disable ? "enable" : "disable")} sleep prevention for {this.SelectedProcess.Name}", false); // Revert the UI state this.IsIdleServerDisabled = !disable; } } catch (Exception ex) { - this.Logger.LogError(ex, "Error toggling idle server for process {ProcessName}", this.SelectedProcess.Name); + this.Logger.LogError(ex, "Error toggling sleep prevention for process {ProcessName}", this.SelectedProcess.Name); this.SetStatus($"Error: {ex.Message}", false); // Revert the UI state this.IsIdleServerDisabled = !disable; diff --git a/ViewModels/ProcessViewModel.cs b/ViewModels/ProcessViewModel.cs index e251658..2b2d393 100644 --- a/ViewModels/ProcessViewModel.cs +++ b/ViewModels/ProcessViewModel.cs @@ -32,10 +32,11 @@ public partial class ProcessViewModel : BaseViewModel private readonly IAffinityApplyService affinityApplyService; private readonly IProcessAffinityApplyCoordinator processAffinityApplyCoordinator; private readonly IProcessMemoryPriorityService? memoryPriorityService; + private readonly ProcessPowerRequestService? powerRequestService; private readonly IProcessRuleCreationService? processRuleCreationService; - private readonly IApplicationSettingsService? settingsService; - private readonly IPersistentProcessRuleStore? persistentRuleStore; - private readonly IPersistentProcessRuleMatcher? persistentRuleMatcher; + private readonly IApplicationSettingsService? settingsService; + private readonly IPersistentProcessRuleStore? persistentRuleStore; + private readonly IPersistentProcessRuleMatcher? persistentRuleMatcher; private readonly Action clipboardSetter; private readonly Action executableLocationOpener; private System.Timers.Timer? refreshTimer; @@ -47,9 +48,9 @@ public partial class ProcessViewModel : BaseViewModel private readonly ThrottledRefreshCoordinator filterRefreshCoordinator; private bool isApplyingFilter; private bool filterRefreshPending; - private bool suppressCoreSelectionEvents; - private bool suppressCpuAssignmentModeChanges; - private bool cpuAssignmentModeOverriddenByRule; + private bool suppressCoreSelectionEvents; + private bool suppressCpuAssignmentModeChanges; + private bool cpuAssignmentModeOverriddenByRule; [ObservableProperty] private bool isAutomationMonitoringEnabled = true; @@ -105,10 +106,10 @@ public partial class ProcessViewModel : BaseViewModel private string topologyStatus = "Detecting CPU topology..."; [ObservableProperty] - private bool areAdvancedFeaturesAvailable = false; - - [ObservableProperty] - private CpuAssignmentMode selectedCpuAssignmentMode = CpuAssignmentMode.Automatic; + private bool areAdvancedFeaturesAvailable = false; + + [ObservableProperty] + private CpuAssignmentMode selectedCpuAssignmentMode = CpuAssignmentMode.Automatic; [ObservableProperty] private PowerPlanModel? selectedPowerPlan; @@ -194,7 +195,8 @@ public ProcessViewModel( Action? clipboardSetter = null, Action? executableLocationOpener = null, ILocalizationService? localizationService = null, - IApplicationSettingsService? settingsService = null) + IApplicationSettingsService? settingsService = null, + ProcessPowerRequestService? powerRequestService = null) : base(logger, enhancedLoggingService, activityAuditService) { this.processService = processService ?? throw new ArgumentNullException(nameof(processService)); @@ -217,10 +219,11 @@ public ProcessViewModel( new CpuSelectionMigrationService(), NullLogger.Instance); this.memoryPriorityService = memoryPriorityService; - this.settingsService = settingsService; - this.persistentRuleStore = persistentRuleStore; - this.persistentRuleMatcher = persistentRuleMatcher; - this.SelectedCpuAssignmentMode = settingsService?.Settings.DefaultCpuAssignmentMode ?? CpuAssignmentMode.Automatic; + this.powerRequestService = powerRequestService; + this.settingsService = settingsService; + this.persistentRuleStore = persistentRuleStore; + this.persistentRuleMatcher = persistentRuleMatcher; + this.SelectedCpuAssignmentMode = settingsService?.Settings.DefaultCpuAssignmentMode ?? CpuAssignmentMode.Automatic; this.IsAutomationMonitoringEnabled = settingsService?.Settings.EnableAutomationMonitoring ?? true; if (settingsService != null) { @@ -265,11 +268,11 @@ public ProcessViewModel( private void OnSettingsChanged(object? sender, ApplicationSettingsChangedEventArgs e) { - this.IsAutomationMonitoringEnabled = e.NewSettings.EnableAutomationMonitoring; - if (!this.cpuAssignmentModeOverriddenByRule) - { - this.SetCpuAssignmentMode(e.NewSettings.DefaultCpuAssignmentMode, overriddenByRule: false); - } + this.IsAutomationMonitoringEnabled = e.NewSettings.EnableAutomationMonitoring; + if (!this.cpuAssignmentModeOverriddenByRule) + { + this.SetCpuAssignmentMode(e.NewSettings.DefaultCpuAssignmentMode, overriddenByRule: false); + } if (!this.IsAutomationMonitoringEnabled) { this.SetUiRefreshEnabled(false, refreshImmediately: false); diff --git a/ViewModels/SelectedProcessSummaryViewModel.cs b/ViewModels/SelectedProcessSummaryViewModel.cs index 2802061..4173dcd 100644 --- a/ViewModels/SelectedProcessSummaryViewModel.cs +++ b/ViewModels/SelectedProcessSummaryViewModel.cs @@ -24,12 +24,14 @@ public sealed class SelectedProcessSummaryViewModel : ObservableObject private ProcessPriorityClass cpuPriority; private long processorAffinity; private ProcessMemoryPriority? memoryPriority; + private ProcessIoPriority? ioPriority; private string processTitle = "No process selected"; private string currentProcessStatusText = "No process selected"; private string cpuUsageText = "CPU: unavailable"; private string memoryUsageText = "Memory: unavailable"; private string cpuPriorityText = "CPU priority: unavailable"; private string memoryPriorityText = "Memory priority unavailable"; + private string ioPriorityText = "I/O priority unavailable"; private string affinityText = "Affinity: unavailable"; private string ruleStatusText = "No saved rule"; private string lastOperationMessage = "No recent ThreadPilot action"; @@ -105,6 +107,12 @@ public ProcessMemoryPriority? MemoryPriority private set => this.SetProperty(ref this.memoryPriority, value); } + public ProcessIoPriority? IoPriority + { + get => this.ioPriority; + private set => this.SetProperty(ref this.ioPriority, value); + } + public string ProcessTitle { get => this.processTitle; @@ -141,6 +149,12 @@ public string MemoryPriorityText private set => this.SetProperty(ref this.memoryPriorityText, value); } + public string IoPriorityText + { + get => this.ioPriorityText; + private set => this.SetProperty(ref this.ioPriorityText, value); + } + public string AffinityText { get => this.affinityText; @@ -214,6 +228,12 @@ public async Task UpdateAsync( return; } + await this.UpdateIoPriorityAsync(process, version); + if (!this.IsCurrentVersion(version)) + { + return; + } + await this.UpdateRuleStatusAsync(process, version); } @@ -244,6 +264,7 @@ private void Clear(int version, string? lastOperationMessage, bool lastOperation this.CpuPriority = default; this.ProcessorAffinity = 0; this.MemoryPriority = null; + this.IoPriority = null; this.IsProtectedOrAccessDenied = false; this.HasThreadPilotRule = false; this.ProcessTitle = this.L("ProcessView_NoProcessSelected", "No process selected"); @@ -252,6 +273,7 @@ private void Clear(int version, string? lastOperationMessage, bool lastOperation this.MemoryUsageText = this.L("ProcessSummary_MemoryUnavailable", "Memory: unavailable"); this.CpuPriorityText = this.L("ProcessSummary_CpuPriorityUnavailable", "CPU priority: unavailable"); this.MemoryPriorityText = this.L("ProcessSummary_MemoryPriorityUnavailable", "Memory priority unavailable"); + this.IoPriorityText = this.L("ProcessSummary_IoPriorityUnavailable", "I/O priority unavailable"); this.AffinityText = this.L("ProcessSummary_AffinityUnavailable", "Affinity: unavailable"); this.RuleStatusText = this.L("ProcessSummary_NoSavedRule", "No saved rule"); this.UpdateLastOperation(lastOperationMessage, lastOperationIsError); @@ -295,6 +317,32 @@ private async Task UpdateMemoryPriorityAsync(ProcessModel process, int version) } } + private async Task UpdateIoPriorityAsync(ProcessModel process, int version) + { + this.IoPriority = null; + this.IoPriorityText = this.L("ProcessSummary_IoPriorityUnavailable", "I/O priority unavailable"); + if (this.memoryPriorityService == null) + { + return; + } + + try + { + var priority = await this.memoryPriorityService.GetIoPriorityAsync(process); + if (!this.IsCurrentVersion(version) || priority == null) + { + return; + } + + this.IoPriority = priority.Value; + this.IoPriorityText = this.L("ProcessSummary_IoPriorityFormat", "I/O priority: {0}", priority.Value); + } + catch (Exception) + { + this.IoPriority = null; + } + } + private async Task UpdateRuleStatusAsync(ProcessModel process, int version) { this.HasThreadPilotRule = false; diff --git a/ViewModels/SettingsViewModel.cs b/ViewModels/SettingsViewModel.cs index 70a96d6..3786562 100644 --- a/ViewModels/SettingsViewModel.cs +++ b/ViewModels/SettingsViewModel.cs @@ -21,6 +21,8 @@ namespace ThreadPilot.ViewModels public partial class SettingsViewModel : BaseViewModel { + internal const string DiscordUrl = "https://discord.gg/VYwkCbr4vH"; + internal const string IssuesUrl = "https://github.com/PrimeBuild-pc/ThreadPilot/issues"; private readonly IApplicationSettingsService settingsService; private readonly INotificationService notificationService; private readonly IAutostartService autostartService; @@ -31,8 +33,8 @@ public partial class SettingsViewModel : BaseViewModel private readonly ISystemTrayService systemTrayService; private readonly IUpdateService updateService; private readonly IApplicationVersionProvider versionProvider; - private readonly ILocalizationService localizationService; - private readonly ICpuTopologyProvider? cpuTopologyProvider; + private readonly ILocalizationService localizationService; + private readonly ICpuTopologyProvider? cpuTopologyProvider; private ApplicationSettingsModel savedSettingsSnapshot; private bool isSyncingFromService = false; private bool? appliedThemePreference; @@ -88,11 +90,11 @@ public partial class SettingsViewModel : BaseViewModel [ObservableProperty] private string lastUpdateCheckText = string.Empty; - [ObservableProperty] - private bool isUpdateAvailable = false; - - [ObservableProperty] - private string reservedCpuSetsStatus = string.Empty; + [ObservableProperty] + private bool isUpdateAvailable = false; + + [ObservableProperty] + private string reservedCpuSetsStatus = string.Empty; public bool CanDownloadAndInstallUpdate => this.IsUpdateAvailable && !this.IsLoading; @@ -108,10 +110,10 @@ public SettingsViewModel( ISystemTrayService systemTrayService, IUpdateService updateService, IApplicationVersionProvider versionProvider, - ILocalizationService localizationService, - IEnhancedLoggingService? enhancedLoggingService = null, - IActivityAuditService? activityAuditService = null, - ICpuTopologyProvider? cpuTopologyProvider = null) + ILocalizationService localizationService, + IEnhancedLoggingService? enhancedLoggingService = null, + IActivityAuditService? activityAuditService = null, + ICpuTopologyProvider? cpuTopologyProvider = null) : base(logger, enhancedLoggingService, activityAuditService) { this.settingsService = settingsService ?? throw new ArgumentNullException(nameof(settingsService)); @@ -124,8 +126,8 @@ public SettingsViewModel( this.systemTrayService = systemTrayService ?? throw new ArgumentNullException(nameof(systemTrayService)); this.updateService = updateService ?? throw new ArgumentNullException(nameof(updateService)); this.versionProvider = versionProvider ?? throw new ArgumentNullException(nameof(versionProvider)); - this.localizationService = localizationService ?? throw new ArgumentNullException(nameof(localizationService)); - this.cpuTopologyProvider = cpuTopologyProvider; + this.localizationService = localizationService ?? throw new ArgumentNullException(nameof(localizationService)); + this.cpuTopologyProvider = cpuTopologyProvider; this.ApplicationVersion = this.versionProvider.DisplayVersion; @@ -133,8 +135,8 @@ public SettingsViewModel( this.settings = (ApplicationSettingsModel)this.settingsService.Settings.Clone(); this.savedSettingsSnapshot = (ApplicationSettingsModel)this.settings.Clone(); this.appliedThemePreference = this.settings.UseDarkTheme; - this.LatestUpdateVersion = this.GetLocalizedString("Settings_UpdateNotChecked", "Not checked"); - this.ReservedCpuSetsStatus = this.GetLocalizedString("SettingsView_ReservedCpuSetsUnknown", "Reserved CPU Sets: status unavailable."); + this.LatestUpdateVersion = this.GetLocalizedString("Settings_UpdateNotChecked", "Not checked"); + this.ReservedCpuSetsStatus = this.GetLocalizedString("SettingsView_ReservedCpuSetsUnknown", "Reserved CPU Sets: status unavailable."); this.UpdateLastCheckedText(); // Initialize commands @@ -158,36 +160,42 @@ public SettingsViewModel( this.Logger.LogInformation("Settings ViewModel initialized"); } - public override async Task InitializeAsync() - { - await this.RefreshSettingsAsync(); - await this.RefreshPowerPlansAsync(); - await this.RefreshReservedCpuSetsStatusAsync(); - } - - private async Task RefreshReservedCpuSetsStatusAsync() - { - if (this.cpuTopologyProvider == null) - { - return; - } - - try - { - var topology = await this.cpuTopologyProvider.GetTopologySnapshotAsync(); - this.ReservedCpuSetsStatus = topology.ReservedLogicalProcessorIndexes.Count == 0 - ? this.GetLocalizedString("SettingsView_ReservedCpuSetsNone", "Reserved CPU Sets: none detected.") - : this.GetLocalizedString( - "SettingsView_ReservedCpuSetsDetectedFormat", - "Reserved CPU Sets detected on logical processors: {0}.", - string.Join(", ", topology.ReservedLogicalProcessorIndexes)); - } - catch (Exception ex) - { - this.Logger.LogDebug(ex, "Could not read reserved CPU Set state"); - this.ReservedCpuSetsStatus = this.GetLocalizedString("SettingsView_ReservedCpuSetsUnknown", "Reserved CPU Sets: status unavailable."); - } - } + public override async Task InitializeAsync() + { + await this.RefreshSettingsAsync(); + await this.RefreshPowerPlansAsync(); + await this.RefreshReservedCpuSetsStatusAsync(); + } + + [RelayCommand] + private void OpenDiscord() => this.OpenExternalLink(DiscordUrl); + + [RelayCommand] + private void ReportIssue() => this.OpenExternalLink(IssuesUrl); + + private async Task RefreshReservedCpuSetsStatusAsync() + { + if (this.cpuTopologyProvider == null) + { + return; + } + + try + { + var topology = await this.cpuTopologyProvider.GetTopologySnapshotAsync(); + this.ReservedCpuSetsStatus = topology.ReservedLogicalProcessorIndexes.Count == 0 + ? this.GetLocalizedString("SettingsView_ReservedCpuSetsNone", "Reserved CPU Sets: none detected.") + : this.GetLocalizedString( + "SettingsView_ReservedCpuSetsDetectedFormat", + "Reserved CPU Sets detected on logical processors: {0}.", + string.Join(", ", topology.ReservedLogicalProcessorIndexes)); + } + catch (Exception ex) + { + this.Logger.LogDebug(ex, "Could not read reserved CPU Set state"); + this.ReservedCpuSetsStatus = this.GetLocalizedString("SettingsView_ReservedCpuSetsUnknown", "Reserved CPU Sets: status unavailable."); + } + } private void OnSettingsPropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) { diff --git a/ViewModels/SystemTweaksViewModel.cs b/ViewModels/SystemTweaksViewModel.cs index 086ce88..36f937a 100644 --- a/ViewModels/SystemTweaksViewModel.cs +++ b/ViewModels/SystemTweaksViewModel.cs @@ -50,7 +50,9 @@ private void InitializeTweakItems() Enum.GetValues().Select(type => new SystemTweakItem { TweakType = type, + IsGuidedAction = type is SystemTweak.MemoryIntegrity or SystemTweak.Hags or SystemTweak.WindowedOptimizations, ToggleCommand = new AsyncRelayCommand(this.ToggleTweakAsync), + ActionCommand = new AsyncRelayCommand(this.OpenTweakSettingsAsync), })); this.ApplyLocalizedTweakText(); } @@ -105,8 +107,20 @@ private async Task UpdateTweakItemStatusAsync(SystemTweakItem item) { TweakStatus status = item.TweakType switch { + SystemTweak.GameMode => await this.systemTweaksService.GetGameModeStatusAsync(), SystemTweak.CoreParking => await this.systemTweaksService.GetCoreParkingStatusAsync(), SystemTweak.CStates => await this.systemTweaksService.GetCStatesStatusAsync(), + SystemTweak.MemoryIntegrity => await this.systemTweaksService.GetMemoryIntegrityStatusAsync(), + SystemTweak.Hags or SystemTweak.WindowedOptimizations => new TweakStatus + { + IsAvailable = true, + StatusText = this.Localize("SystemTweaks_StatusManagedByWindows", "Managed by Windows"), + }, + SystemTweak.UsbSelectiveSuspend => await this.systemTweaksService.GetUsbSelectiveSuspendStatusAsync(), + SystemTweak.PointerPrecision => await this.systemTweaksService.GetPointerPrecisionStatusAsync(), + SystemTweak.EthernetPowerSaving => await this.systemTweaksService.GetEthernetPowerSavingStatusAsync(), + SystemTweak.InterruptModeration => await this.systemTweaksService.GetInterruptModerationStatusAsync(), + SystemTweak.GpuMsiMode => await this.systemTweaksService.GetGpuMsiModeStatusAsync(), SystemTweak.SysMain => await this.systemTweaksService.GetSysMainStatusAsync(), SystemTweak.Prefetch => await this.systemTweaksService.GetPrefetchStatusAsync(), SystemTweak.PowerThrottling => await this.systemTweaksService.GetPowerThrottlingStatusAsync(), @@ -118,6 +132,7 @@ private async Task UpdateTweakItemStatusAsync(SystemTweakItem item) item.IsEnabled = status.IsEnabled; item.IsAvailable = status.IsAvailable; item.ErrorMessage = status.ErrorMessage; + item.StatusText = status.StatusText ?? this.GetStatusText(status); } catch (Exception ex) { @@ -144,8 +159,14 @@ await InvokeOnUiAsync(() => var newState = !item.IsEnabled; bool success = item.TweakType switch { + SystemTweak.GameMode => await this.systemTweaksService.SetGameModeAsync(newState), SystemTweak.CoreParking => await this.systemTweaksService.SetCoreParkingAsync(newState), SystemTweak.CStates => await this.systemTweaksService.SetCStatesAsync(newState), + SystemTweak.UsbSelectiveSuspend => await this.systemTweaksService.SetUsbSelectiveSuspendAsync(newState), + SystemTweak.PointerPrecision => await this.systemTweaksService.SetPointerPrecisionAsync(newState), + SystemTweak.EthernetPowerSaving => await this.systemTweaksService.SetEthernetPowerSavingAsync(newState), + SystemTweak.InterruptModeration => await this.systemTweaksService.SetInterruptModerationAsync(newState), + SystemTweak.GpuMsiMode => await this.systemTweaksService.SetGpuMsiModeAsync(newState), SystemTweak.SysMain => await this.systemTweaksService.SetSysMainAsync(newState), SystemTweak.Prefetch => await this.systemTweaksService.SetPrefetchAsync(newState), SystemTweak.PowerThrottling => await this.systemTweaksService.SetPowerThrottlingAsync(newState), @@ -209,6 +230,18 @@ await this.LogUserActionAsync( } } + private async Task OpenTweakSettingsAsync(SystemTweakItem? item) + { + if (item == null || !await this.systemTweaksService.OpenSettingsAsync(item.TweakType)) + { + this.SetError(this.Localize("SystemTweaks_StatusOpenSettingsFailed", "Could not open Windows settings"), null); + return; + } + + this.SetStatus(this.Localize("SystemTweaks_StatusSettingsOpenedFormat", "Opened settings for {0}", item.Name)); + await this.LogUserActionAsync("SystemTweakSettingsOpened", $"Opened settings for {item.Name}", item.TweakType.ToString()); + } + private static Task InvokeOnUiAsync(Action action) { var dispatcher = System.Windows.Application.Current?.Dispatcher; @@ -227,8 +260,17 @@ private void ApplyLocalizedTweakText() { var text = item.TweakType switch { + SystemTweak.GameMode => ("SystemTweak_GameMode_Name", "Game Mode", "SystemTweak_GameMode_Desc", "Windows Game Mode scheduling optimizations"), SystemTweak.CoreParking => ("SystemTweak_CoreParking_Name", "Core Parking", "SystemTweak_CoreParking_Desc", "Controls CPU core parking for power management"), SystemTweak.CStates => ("SystemTweak_CStates_Name", "C-States", "SystemTweak_CStates_Desc", "Controls CPU C-States for power management"), + SystemTweak.MemoryIntegrity => ("SystemTweak_MemoryIntegrity_Name", "Memory Integrity (HVCI)", "SystemTweak_MemoryIntegrity_Desc", "Opens Windows Security. Disabling this protection reduces system security and may require a restart."), + SystemTweak.Hags => ("SystemTweak_Hags_Name", "Hardware-accelerated GPU scheduling", "SystemTweak_Hags_Desc", "Opens Windows graphics settings to let you review HAGS."), + SystemTweak.WindowedOptimizations => ("SystemTweak_WindowedOptimizations_Name", "Optimizations for windowed games", "SystemTweak_WindowedOptimizations_Desc", "Opens Windows graphics settings to manage Flip Model optimizations."), + SystemTweak.UsbSelectiveSuspend => ("SystemTweak_UsbSelectiveSuspend_Name", "USB Selective Suspend", "SystemTweak_UsbSelectiveSuspend_Desc", "Controls USB selective suspend for the active power plan while plugged in."), + SystemTweak.PointerPrecision => ("SystemTweak_PointerPrecision_Name", "Enhance pointer precision", "SystemTweak_PointerPrecision_Desc", "Controls Windows mouse acceleration."), + SystemTweak.EthernetPowerSaving => ("SystemTweak_EthernetPowerSaving_Name", "Disable Ethernet power saving", "SystemTweak_EthernetPowerSaving_Desc", "Disables supported EEE, Green Ethernet and power-saving driver properties on physical Ethernet adapters."), + SystemTweak.InterruptModeration => ("SystemTweak_InterruptModeration_Name", "Disable interrupt moderation", "SystemTweak_InterruptModeration_Desc", "Can reduce Ethernet latency at the cost of higher CPU and interrupt load."), + SystemTweak.GpuMsiMode => ("SystemTweak_GpuMsiMode_Name", "GPU MSI Mode", "SystemTweak_GpuMsiMode_Desc", "Controls MSI only when the display driver already exposes MSISupported. A restart is required."), SystemTweak.SysMain => ("SystemTweak_SysMain_Name", "SysMain Service", "SystemTweak_SysMain_Desc", "Windows SysMain service for memory management"), SystemTweak.Prefetch => ("SystemTweak_Prefetch_Name", "Prefetch", "SystemTweak_Prefetch_Desc", "Windows Prefetch for faster application loading"), SystemTweak.PowerThrottling => ("SystemTweak_PowerThrottling_Name", "Power Throttling", "SystemTweak_PowerThrottling_Desc", "Turns off Windows Power Throttling for sustained performance"), @@ -239,6 +281,10 @@ private void ApplyLocalizedTweakText() item.Name = this.Localize(text.Item1, text.Item2); item.Description = this.Localize(text.Item3, text.Item4); + if (!string.IsNullOrEmpty(item.StatusText) && item.TweakType is not SystemTweak.Hags and not SystemTweak.WindowedOptimizations) + { + item.StatusText = this.GetStatusText(new TweakStatus { IsAvailable = item.IsAvailable, IsEnabled = item.IsEnabled }); + } } this.RefreshStatusText = this.Localize("SystemTweaks_StatusReady", "Ready"); @@ -255,6 +301,10 @@ private string Localize(string key, string fallback, params object[] arguments) : string.Format(CultureInfo.CurrentCulture, format, arguments); } + private string GetStatusText(TweakStatus status) => !status.IsAvailable + ? this.Localize("SystemTweaks_StatusNotAvailable", "Not available") + : this.Localize(status.IsEnabled ? "SystemTweaks_StatusEnabled" : "SystemTweaks_StatusDisabled", status.IsEnabled ? "Enabled" : "Disabled"); + private void OnLanguageChanged(object? sender, string language) => this.ApplyLocalizedTweakText(); private void OnTweakStatusChanged(object? sender, TweakStatusChangedEventArgs e) @@ -267,6 +317,7 @@ private void OnTweakStatusChanged(object? sender, TweakStatusChangedEventArgs e) item.IsEnabled = e.Status.IsEnabled; item.IsAvailable = e.Status.IsAvailable; item.ErrorMessage = e.Status.ErrorMessage; + item.StatusText = e.Status.StatusText ?? this.GetStatusText(e.Status); } } catch (Exception ex) @@ -303,6 +354,14 @@ public partial class SystemTweakItem : ObservableObject [ObservableProperty] private string? errorMessage; + [ObservableProperty] + private string statusText = string.Empty; + + [ObservableProperty] + private bool isGuidedAction; + public IAsyncRelayCommand? ToggleCommand { get; set; } + + public IAsyncRelayCommand? ActionCommand { get; set; } } } diff --git a/Views/PowerPlanView.xaml b/Views/PowerPlanView.xaml index 612613e..9aff249 100644 --- a/Views/PowerPlanView.xaml +++ b/Views/PowerPlanView.xaml @@ -15,10 +15,26 @@ - - - - + + + + + + + + + + + diff --git a/Views/ProcessView.xaml b/Views/ProcessView.xaml index 5b479d6..47b336f 100644 --- a/Views/ProcessView.xaml +++ b/Views/ProcessView.xaml @@ -305,6 +305,25 @@ Command="{Binding ApplyAffinityAndSaveAsRuleCommand}" CommandParameter="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/> + + + + + + @@ -460,6 +479,9 @@ + diff --git a/Views/SettingsView.xaml b/Views/SettingsView.xaml index cd89592..02555d2 100644 --- a/Views/SettingsView.xaml +++ b/Views/SettingsView.xaml @@ -6,6 +6,7 @@ xmlns:local="clr-namespace:ThreadPilot.Views" xmlns:models="clr-namespace:ThreadPilot.Models" xmlns:converters="clr-namespace:ThreadPilot.Converters" + xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="800"> @@ -379,6 +380,41 @@ + + + + + + + + + + + + + + + + diff --git a/Views/SystemTweaksView.xaml b/Views/SystemTweaksView.xaml index f99d512..e796bfe 100644 --- a/Views/SystemTweaksView.xaml +++ b/Views/SystemTweaksView.xaml @@ -127,23 +127,10 @@ - - - - - + VerticalAlignment="Center"/> + ToolTip="{DynamicResource SystemTweaksView_TweakTooltip}"> + + + + + + - + diff --git a/assets/Powerplans/0 Synez_Public_Power.pow b/assets/Powerplans/0 Synez_Public_Power.pow deleted file mode 100644 index 3b6eab329d1eb952ccc9be2b7df95109ccdf5a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHLO^6&t6t0a?qcL&)Wfg@{1QW2dx_-K<58^MfUNoS>3LdPgt~SeVCbC&gA|CeO zAqNi;Jb27OFc%@mfFMZ_+;|Z2qToe51uw>1ZtM5Dr^(Eu*Gy0lq~C5$)l^l#`rcRX zy{ewI^iDO$7^AZ9l# z)89$|#i==Kht?1M({=mjuVvu%#pj;7wzu!;8R!}48R!}48R!}48R!}48R!}48R!}K zKQeGIEDvkD=DV#sv9+}|TzP`sb6$Q$zYWkVbZy-_nto+h^L+=tFXH2~(fHzMe1ZB$ z?Z;48MJbclg8NEXt_!WXcU8%QHn}r}Dob6`^aZSOWTnwZI`2dI0cDQu{P-;DZ%|0? zMcKhVXEmPr1@-{G%@G*JZXV#{5o$k3DA>j|{T=fM+sv=~=kI0Dusd1(0}1rsOLX`U>^8@)#OIWHKdfc_DPhbuc9_2%k}=3f_fGYf1A7$0~l& zn!lN`P^!>{W2ps!`Lrepb)CgdwKzx@$wMfBS_|RGt#V05&6D$nYp*2_S?+lfS|pnn z*5rvMUxCggJV^BkU}^Z?OS(2_95wdY^5IF58rutSf*p!&HMDD7pLZtod<#U zZSOe&ntDjB0EJ1zmoYPEy?3Id6nP3Wd) zyY0QeChh%Yt_$}7dPi==et=#qu|;c9-R{qJej=5NMdckA-UD}*O72vpd0|76T1Hn% zLAr>)1Gg}C4267)_UROoNEeIAZCttA7%Ppa`8tC(@pg81Q*YccX$NsMi=R{MHS;d8Nk2#IK>u*%Z}P~l8}ttk zzt*rfD-`xa3&~xHJQ8F`A$TR6S7dM3x~JePt+YIojk^%v*W+2cln3i`ZbXH=VV&gO zlp6Uf1c#$ANtu&w;&TZ$Q9al*$tR6BJU#vOq+i?^-jne2>)|am;=EEBH&vCmjw$0I z;cFI@!@rI~6olsza8mp)KquL_iJG46_UDWHCvjig-^KF)dfWKl2hNFWT8ruy_qOq$ za*<`&S{w{GC+c`ZZsyX+BF}>_h0&zz9CWQ#w=y~lDE=wNDR-Q~UQ$fZUQ77O2KGWi z=g;tUqm9Dx&#cMvF5EP?6~anFb~xy2akt~saY!*$S!CI)jJOviT#3BFAy)|<^2$WO zHuP*aue0Zg)`ic(w+J8Uq`Jko9j|1&lAzQfP`GvyDK(E^*oIsLt3@g5yxPSJan}m1 zMM5#ZfV|PJ+m283B4RWl$GIP~vf?^dmb)VJyi8GbcB}(}gUJ z^8|Yvo=q`n$L#(=et&8Pzjt^QO35XTaD(4xNx<)8&I6KyC}dIOIugDnkKMu!z)#6P z_CYuK)~~2(uTH~v$ks)~JL%j9KMK**u}aU6^M7@pw4RIyEoSw9vhOn1xL#Zn2IVTt zrGja?$OZCA>A6xq_zEwACe`+J3ad;VNTzNdUe zbE$6a+AdGh*$@g-@ygm9_lsO}7mdR8FUxJEu|-9FZg#CpXG<%z775`vGlRdVC_)r6 zP@n#f5#P!D3??pse3%$oyM?t nsOh_U26_g126_g126_g126_g126_g126_g126_hmLk9i=sLWFm diff --git a/assets/Powerplans/Amit.pow b/assets/Powerplans/Amit.pow deleted file mode 100644 index 9392ab00b0573123ce9a562b4d0e9c01a92737f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHLL5Lkm8Lrt)H0!R}SzTd_9$FBbLu#$6uI{Q9!AOE+iE#&1Ja|b}cU3ZE@-j|d zcC!a@M3jIY7FQ(-vOz=wiexV`Ai}Z;hTT1gA}$^z=k;JNLJs2i{oSuJ{a)TP6ZR%u zGu>5PUG@Lp|NVdcRj;?g*|@|QqwAMPFCX~ZSO2<1?MHD@p>{?M+^GF-%X4r3>5aGk z@Qqby^B1`LU|EnjCD=JSD@q4`A#0m zJc8?wxR%&~@9m)eJuWIw<9dYsoV}MGmRHz^@w7x>7(1BZ_AzQ7Arx%;zWzDmvjyYZ z{^h6HXV{ah{XhcwA0Vkm2mxE3)3-h8Yd@v*-}l>Z!_Mc=Ki+b51MHIeC3caW2$$-u z_0946#Sy#2#_S}<1-8M~*#%r9=Fk`LCS#iz{Q}xscyjFd_U&2pzkt@5ook=Frx9z~ zv6rBu-(E+5C+jjaj4|WFL_SF;$r1Cm+TIbX(UakMggZ$;i#v_Ua3`r5TVuz8LUAvIR3T`?E1@OVzG!&mjp0RJMDMJZS}Ph)I5zM_Zu>oq z<)Ug5j$fQQ{i`=8>u)82z~!RIPciuHf2f#l0*Y z4?>Gz%E}aFpuu+`a|Je1eH(S>$HOFRo8FU5(8WG`{EJ~cULT!(cGQF`i^diF#LPId za}`3?NDxZ0^VJ{!{n^C#JUdC}3g#rf+sU}i+S%kyQH0p=8YzWqr30^;I_FwTAB@d& zAqCA%eBVL>@lEc@-eZTR?Ktz!B70Zv;qJ%DBHY=2aF=;iNDGG)Wy5u@3vOM6ld71j z=v662MYzcy8}U(g9kD<@y$ac6^D+3Ufeac$rSG>rI}XhF?d$jK`00`3FDL#p%qPC7 zyaYW^xl3)T6aNe2y)lh8b1jtP2=l;IX^aV0TU$3IEBU>z_Yh(~71Bk8aAfdN z(wpAT`kmHH9V*X#h|nu##j8q5?rb5Wmnw>=X>Okvk`4M`>){z*KJpuihr7Tt4``LU?tqd z+0A{dJ7J65l~!_PYKwRlf;)xuYn70Bs0_lW#ohPE_3z*`2l-2Eb3DC|eEJ@~KCg@L zUEc>jZA0meD|sOz_B~@2cSWPI|9WquFhQvjP+DFOy?<|g-9TIUSod+$xDNNl8GgqP zh5N=na5p+sHs+ESF$S*dAd%VdD1C16uWK>AAKZlx$rsm+GA^B8PPdei&aJVv=Onh>~bYQr_12wZ`~R}|Wpk$#Nmg67WWC6?2?9G>gn z4D%B&D-XHewJnW`x#h-H4(CFoSnH$ZIkKA%vTA}3gl`@%0*9!C{lOLSm`P9D1>93+Y^5H6**w3+1#f?$6wu=B0k;E&ycEn{dAJ>wo_um7 zIztGYL1+)8z4jb(HtiXdLlkl>#gsx!5{Kl2HDD)QJHTfO+2(={ad%I4{p{amNOsYj zRLB-86bE;pBiWVS&&H)FYu7{(c&V}VYmJ@OR?6@izl&ofg3pVVf8zCRD7Yu?B_H&#|PmL8eh zk9TrF$LlA*G9B;Vyw)E_^SW`f=Zf{w!`N{h`}u?7M*B)Nrm(zlSPB}aTJE$F+{&Uc z)`fr*FX8Fq+q1*2PTO%}HR0>8*F`+v*atr2mBQgZhga(wdEQijRz)0cjm9UQ8b7{j z!uJ~Dc_SWVtB^@+Aw&F8Y+OT4zB+?gCtDeUd3q^lq(VBW5RRMs;EUE|E${=Sw)ioigD~7x zCg&x-2-LpDvCp*mzwb}d)y3O~ZcY31)Yn9BuS}SRdSGB+U|?WiU|?WiU|?WiU|?Wi JU|@h4_%C5MJ<0$8 diff --git a/assets/Powerplans/Anonymous.pow b/assets/Powerplans/Anonymous.pow deleted file mode 100644 index 7f84bad409f55d779676fc9a22443812005c39df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 diff --git a/assets/Powerplans/ApexOS.pow b/assets/Powerplans/ApexOS.pow deleted file mode 100644 index 36e64d186dc78f7b0927df80eb5b74532b000a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 diff --git a/assets/Powerplans/AutoOS.pow b/assets/Powerplans/AutoOS.pow deleted file mode 100644 index 08e1882345c064ea19b779578110739e1ecde870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/assets/Powerplans/BEYOND-PERFORMANCE-AMD+INTEL.pow b/assets/Powerplans/BEYOND-PERFORMANCE-AMD+INTEL.pow deleted file mode 100644 index 1a20bbde886c8a1f16ca8cf5434ad70cf87ecbd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 aKYX}qN1t_~*sr~U2^yvB$uIxs|NS3Ee@S8h diff --git a/assets/Powerplans/Beyond.pow b/assets/Powerplans/Beyond.pow deleted file mode 100644 index b06e78749eacde2ecc000412484438d0e872f8f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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

  • ckkMAfYzAq_#- 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 diff --git a/assets/Powerplans/CalyptoPowerPlan.pow b/assets/Powerplans/CalyptoPowerPlan.pow deleted file mode 100644 index d5a697ce84c6e36f77144e00d06b2cb3db5b795b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/assets/Powerplans/EXO.pow b/assets/Powerplans/EXO.pow deleted file mode 100644 index 46a79c1335983d4487b799659da5dcf4905c9d3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/assets/Powerplans/EnvyOS.pow b/assets/Powerplans/EnvyOS.pow deleted file mode 100644 index 6e51141b3562bd89ec0ea971b502f8851b3c1945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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�!|{~CDk5s(csvEC&7(LQ3*uL<9Ykg|ELdt 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 diff --git a/assets/Powerplans/FrameSyncBoost.pow b/assets/Powerplans/FrameSyncBoost.pow deleted file mode 100644 index 597efb0ad8a75f8d08dcb9bccb5dfb5138b5310a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 B5s?4@ diff --git a/assets/Powerplans/GTweaks Power Plan V3.pow b/assets/Powerplans/GTweaks Power Plan V3.pow deleted file mode 100644 index 6865cc57b8701bd7d10aface5e61c4fa04c910de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/assets/Powerplans/HYDRA_PBO.pow b/assets/Powerplans/HYDRA_PBO.pow deleted file mode 100644 index 645454b8475f3842bf2e591cf2fc24cdebb90a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHLJ!~9B6nd_huy|Vr-B>B0^Y*Af@1Dch)}HK3nIr z6C;64my*&2g$tz6L3tEN5l}=xL4$CVCPEbHa1$w1=6kcZKA(M-4_Tr>`>eS)^XAQa zZ@zu+-Fcg4CaVw;kK32OZ{7Rgeud{xU@-CA;mJro=jn0CZQp+Tryu@0+ZMl#O-!lg z{x#e7_USYiS_{YVS)T2W!1YhRey9IVDJ>Bw5hxKT5hxKT5hxKT5hxKT5hxKT5%|9$ zFsthgdnf#V-;ZwX?Cdn=E|Gin!V%5dhC0fd!`-!umj)Z1{i)9WDEM|~ejYqf zo|eAvi!6$zkY47BI8vd=vQTS3a?{K=tUd}K%X37VC-TAme#NNJiCb;(A2FEDVGPli zbdnb%qx3vhl{~m%2cj2wKE_ed`T=<#ediE;D<3&WuhFw)Uyu+DKgU+bI072!BU|st z?5mW$`+MhGxaaEJGZv$-fG)eQ(ED#pn&qTfUuxAC8#FTUEuDhi6?%!LX^obtMTQpW zJzB(H3)1V5b>#v1kSt;E1~tK(m}T?|r8JMfOC-o62|i9MIK2odh$AOPJPR~NaK$~@Dtc3)c4V+wo_L8;FYsX3*>uU)8QX9}V{H#}ylk60f*M~zFFFjf;>cg=+`3KZ3vHB=-xu}mq2o_41`3f2<`fz@Pb-Z$tF=d&TYg6F`waRIn8cE$5>R=Rze z_X=X{nb`F;7iv9h07etY&X0Z__sD(nNIuqJU6XAtMqh}|PiUK~nH_v#@E)V9J zl$@U~{1$P3^4-PVyg4k+Htu+2oZ6MC%u?YcNmaHaHl9dV-T$5E- zC@)N_s%DJm9k|D5$&YTIzhCLik8b|%?bnCZ-OZa{H_E4l1cfkiFC8co;l#?{jo6sRMyR$np{YY+-202iQQCihVrFdp%Cbr_Z zSB^<<3WfWlKQ0K6Q4zU92psYQBUI(8qF@A-OpCyX{&4x~ZHt1bkZOKZbwv@DiZIW+ zd)Mb{kI$|W353oh*K+Q zFAmkO>E)|w_ZEIVeC8W(_{6cl|0(~?W7j6%)7)>F7<2NOQ_sAbH5b2ar@%|wKmAJk zH;Ydf6j)GTL4gGY78F=eU_pTe1r`)oP+&oU1qJ@UQQ)XMcB0zTQv1#}u3fu!;_0^~ zcZ*;7g}=V`WeNu*_~_d0JHyxCQNQ1f_eb&1=FayAcfQ|`{zrCR--ll2A{8MMEEYaz zvhXEysVP_~xE3Z9x|F^ejy0Zrx}J~b{1E>B6@R;un>Id=ej9((-iW{5$+={2^=^N1 zH{R_cFiCRr0RP-WuMZH4WPR%MWP1Ey#`x-UtoCqnM^XhyF#mVbtOp1|vNZM?##J~f zYK@Is-x*hhS4Mv``kE%(#{QpsdS6Am^O%QV(RA+)&z2{Tt)4pe;S=kh``8t=g>mmm zemwa=@_6!O^1ft{yeD}C{o~1dlgE;u#QQ_|_DTHrMDi%UdmNuUT7CWmK6wJ~599m# z^>E$WlDFZF#-h!-KYa37IN^^!|6cn{DF5n?uUy2s(=*WOgk=&%l3c;~&0QcAO^8;@ z)ga+t|K;m)HNfXL)0b$6ZmH#pUgM|NNCv2HPXa2!X(Yw)@x$++=tIM#MB(s){v8lWdz;97%&zN7X%_`9ikl_Z3tP?-*C zDOu1K@@-|xoG2^{T=Jj_qw*rq@T-{fAbv>w5;k4)`*xaZoxVp8e&2u3Bab~9PMtb- z;;AQ2_^@{89vZ&^9DQ)Fb-?X2pXVWZ9K;xzOl4rkml=~%xS({Falr`}t-l4l)L-7g zzX@8l<4=-t{5O4~5AO9YxQoo>LW970;hD^2&a{mnx`|mDU0Mik2zNWayOziC{rbn- z$NkOj@p1j=&q1eoauZ9HsniwBx|H@20@KPUCh}mk6frGJJ9{6KbbjTwoG%btXSrpdy2ylgrRJ4fpNCu=j}Q>>j?Th4^dwuWSi^%?8eh>~x2xXdw5QS5 zhI@bkbpEJa!P&$T*XT9%4P9sI1+TobA%#dA3Gk_9PzQmfg;FYLsdedTE|TXXxJ0Pe z-%Zp9`tp&(j&~MxE9oZVk z_x^Hp9R04|$E3Wr(|LgL5R>_Y^SS5Vw27gCv)I;NFAYm>K) z+L)-;9i`uyTj$d+&3&{&8kT#Hdq`ykbGdbN9c0SoP7AGQ;;wYL3IJ=u?~afA+^#c9id3r~2i>wCy3$^KdNBwI(Y2JvbcvO{~lfS%^0-;B04x(-GLH0O^@vLmmbPuEoD zUgt0YGb71*Nnr}`G-o2SO3PR%ScNn_$@6)b?$mF5*SI_nQ z^qWz-(Yo#T!9y=~#aqb*^ie}6nv>e(y(V=ioPxHDbmS_eX+ggu z{vHGmsK30^Cvf!IasSCbj-NxjyM3IWl8dhUBYrG_c60YGO-b`|Nvvhkeu9I%2nZjJOZVAYfVHt#Fyf|FYyavj2arlU+XmO-RnD zodNAYlJ4g-6kG@#O*o>k2P!=ZUy!9aq8^2_p68Xl*G8A6H`Hs=zqBSbqV1pqT{3~$ zOXvj!`Y;)I##{!cE|ie}n7UNxse6*vX+Mvv5B0%!r2{^n^E4`WIl`ClC&=@(Ih^*$ z;akMK1X(KI;4=1nJnl|5KnvQ_GU!jg9hJ8s?iX$ym$yG`mA3(Y0Jo%SN1*$OuJnfb z=A6yaw^A1>jhSZ38Vf%NSE6=NvkbS63&QvyE4nsuhNX8VNp8Js$J>6t9KCZGr%2wF zBqHz-TTEaep+mx5EL9;B? zKCR@J_OO9#%cTE!*Ejp%yV^lNsRFlLv>Ef>z&{FEfFD;>=7UKMn4W4* zdndWPihGp$L*HHZ`*FD1aX&i|4|}fFE}KQyvmNMa3IqSWgf#{&32KItnKW~(h!UQs z#BM@mgOB2)yRFvy|L{-a^7i0wjgF)J*5f|P#>c(fYad%(_F-Za6lwx^+?yp=%o=#q zd6}hfJru%{lJKRzZMp5QREq{?E><_5os{M%PayU(!uUf zp*sKPAr}-6TZXP8nZJOZWNRI35U&nGml^E!GJ2Ym_B7fWxgO2G3^3q7b6xoCKBSzg^Q?fkT-#^vqp)p%&;2Yp(V$Z!pN$+%+94vf+&U>)3@Pl^Xc3pn=w`y^qLilK zwmKuD_-L*g-y0|B+)qAMUK@Oh@QmW4Gg9N5rZdUU;qR^G=-l_!{n9=Ca3Ab~JK8dq z1#b5$PTGIQn8ZEg`{aH5>0a`?jdL-N@2SkdcbHP}S}BeJBNV(w znpj2L0J+Gdn~FOV-kPrA@w@hx?~df$$m zegBUCKfny|<65gID$?pSmk?|5GLl!Ahr~oM80uYWq>z?kguH+FJ z7c7|ugfb~?(E7Q88d>EeFNxB~Rb{~9~z^{37)dAlP^vbyx#^vNo zt?}wvdU?GIKB-b%B(T@v9>5-hg^4^jjE7*O;?5Kyow6&5o;T8ahwdGx_i%i>+^)n94khiQ&$^eptXt#(rX^<%8Esf=nZ>!uk>287aHTv# zJyUt^-Ph^=@161mv*hDS7ktj7UI9>UAr%tYOlGBmkciwXZ9_n&ljt&fzUX}|ACu?n zsUPh_zpI__d8Drc@?8Q>JL-<$Pvns^^5amEREQ$P+4x@i(ztv*&>B~oMZaz6*}3N* zX%#N=lqsLXpD@}njRVFqDrv|}YSZ$1JfVpbY#^pk(@#ysF)R7Ux(yv~z2&x_`N*L< zPBaVW8qUi+oZw~wEU33YyqWUpxUr$SSt?*)LIiR|K_=-q)T1-*zaJRl9QAW%;aoa5CJvdJC&}$vt$S}O0R>7GOh9`eb(LXvM%;c`FvKG9DX3&LZrr#DK}6h zsTaP#Igc59{~Ym%*?MD=?;rb9qUUL>+lQV^;`mUb-!<8{YDQH?wjzpD|zq_#_x&W*-bb#*6o9HFN!bc@g3zj zuvx8Qa69O}<$x%8iM$tAGDFr2S)SSS{A4TNFZIN^4!!;AaTZg4=THx~-xnL8Pak?7 zX7h1Ig=#hwtRa62?JFaS9xR8G?0pFE5rm7mpS&-Id~d%mIMyZppMgfJdc1F!n@RcJ z=V<(D=kY)HW*UF#?fvMo`a|>SqEn3hEz;kH^HSd^ zzWBA)^KfMZXP0~Bd>5QJoVp~tBpTSEDMFyuYsG@GSquopXg_tY+zf)&`ejm1zO|3| zzKL~50j3mU%+_!-4a%+^8a)K=lK6!_J5_z{t+6Fu*_KI>Nv1Qz6ohZ znd+iM7z*N4$x|aAUDmz&+N|5-{`tNCYVh6i+wXhpJu5es-)+!&o}Q#Et44Jog9#0L ztk9r~N8Px{5E;vmc|ulU@|;l)yOxWuesrAA|FVntyM=WdoL%U+4ohJ!P6X>S4};&} z0)oBj5x)Ui7T}+9Bo;Ud*Cuh&`x@uvDL<5O9>%(Ta4y3lo`UWk6at)`-M4N03Pr>obZ`^aHy{~d5JtoH1PY7Zzrcp7*yjLsNYGx5B24we*N3q ziSJi?;=J(M;GFVR@O3h=7TQXhJQ~Ir1p+QwqhZHiIkV zMPBO4zgYTj%5y%D>_<+Ha%ksw`ZeSxIC4`fNc2!{=h9BUiI}ZGPC_F_PqF_?)MLWI z0Chfy5pSZWn5e#|?zgE&4D!;wb$=MKYzdunm3qXUHt(a}TaB0pybE^;J;f?Ge0K7& z&r%QHa{ynF`U_QW+$ww>@}c&_mmnYIJoWGaj=~lu8+!>fqJ9ImF2xis!X_h|XbrXj z*&GAhJ*YG-2e?D=phmg5(`)En(&?9|htAvpl}IOXoXrwvew%unsddN}$?P(CNBu?W zLGyE1muym!)&GmFP0j`YN_w8!3T#mvoon=(`sUmoqz@(W`7xG!aHq4);wNA@GdNR6fUFr{BxJKTf|- zw$g8a@gzso4&T{No;4{IBMLnDhiXr#O4NrqT$(Jv_9C{Xoo@H6Tjr3&hsb-sMzNt1eMQth7uu)AS)w1BWQxr3$8V}+< zovFR=03U#5tNkieWaH5;93DJWg=c^~&uqo_ZA?5JKf3$V<8t|-18w{m z035`mY8#LAlS|?~mq_8c2-j0afjqk+GufqF6*$&LM4Gs5U6P%qjnZYS16^{6fx;76 zsFy?%24zOHE=2;Pwj5#Z0+&6_UHJnK*Zskjale+nul3*T=io;5-z>bRADS<>D4+?J zvKuIjfZc=C4EYZwk{!6c4HO)n&>=j8_wq{J4|e*MM`z*w)`!RWd-i&swhQjf4!H4r z8J>eeX>ve08uYeDofS-WCZr7rj|ic7CHGJ(Rjd4e;GX6Gx6A1te`b6ix5f5xllJs~ zTc~+qgcKywkXZ^dG=+0o*$wUZKE5`-k73@t3qKBa zz~@lj?D2#$L-i%(2<86Fm53~(_8l%>!SN7Sr4PL=e` z`cY*6{M*iZn)}L*ch0C-~4L&H;bnW4lFpZ;J|_d3l1zeu;9Rg z0}Bo;II!Trf&=e04y>jVr-yr5n!dA(w{G1!ee(0o*7yGYv%mb{U1|q3cy#O0@#{CA z8r?sD`vLyDJpTU3`1@s0JH9>)s+2S-$jVA^n&}WF3)M)L@K_t+vbLFCU&b0|PmboJ zIlqL@b$kvq5B+o<^eud7JdMu-&99sH(aq9wa|m|_2u#yFJivd?)AciiqPei^`IPr* z57XWsK3{sed9iu288%2T{|9N-X9z*FH09Za@v~toW%B#U>vyov*G@h*bWPMm)ErPHOJAHBZ<9Mkx>7jE7IcTvTd+7^~Y z+cGV6Wuaunv=*s4uM`*P+>O>>eRxDKKQf~0;A3C>^WgSGUvX~_8qgLi! za7>sQycVs@Id=Q#qbJk&Jir8`S2S+I2EdZu_9d0ip^cvL7=cgJ!n|rV3occuW%jKc z>Id2V1vvGq_>fI*;eG?oVj7-H(4%e;78+z{H+%3)n$kw012d(--kq{6nV87zluIUg z;T_GrA9?PD?<#a?mLG5_>nPj6if=Ql$Oe|UOH8SnoHsG%c-x-NKQ^}O$H#W{f%}8| z%^tXej@cF&m{Ykz&e1Z@L(8nPDn%)hc0>Qw+0y_%fMl@&N_##Jy`ni*;1gnM^Znre zRuBE4wWSe(Da$?6Sw*#Y@rCB3 zu`^%LzS`tqWrnxN7o3+Ynxc`nq~u%fs+7aDcN2R))jrU8$Xb$Jfx<+~{lLA_19#Dg zORW;jv@QHZu7ahCTalERPYHyuvm1i!7h5?`XXoMmTBY^!s%9o8w6_?A998{cGIJ-~iCx%qKjjYs|D)&?i453JUN zJWm?~da9uSYaG0CsZ9=L^!JSMGKTP5~N2LZ1u3i9{c#e>cl?yRv^z=`XSnw z+ic-whk0?zhM{xekq+vbIjU>;5R%~}|LA@%K9e3D|L{nE`0|Ke2c1W+kMzJTwSso?VX`9S)CHwq6y7kNTVzO1CzRnk@lkBNo7|6mbi1Bh1fNFl zZ^`ZU`1=*olZ$wN9=*8KXJ6V$Ww0-cv;lPiA|U#q2qHDMj;CO&+{O1h``RDhFW(z{ zd2hb&6W^g8dSOi!EmDSr&LyI*iqKnwwi_>kJ6AH&hn@KDmcNpm*Rbw9a=rk)n5n-w zd?^mVOoVi`N5&AfgRq4u&c|AXxZQW{`jvNZ?v4+HbNQL=`b+z~oBkfz^Zh?>ZrAs> zeophB$NTf};mtmLC^B(@gC|!E`h3AB=ArORQ7c*n8D%!Kk9pSJcy>1b!DWlN(f9T+ zF|;atJG^Wa?iSRb5dxET%y%#o$*iayM+ErU#5hOE%daC5~o z!nrvo&h>kPb65RHif}i6Uc$Qb@N)%rG)wMIaB3C{6t-y6Bfe382q(3X^Hw3(HmEO1 z&hLOvoqxEapVR$=|M+}34}M}c&W!U5j&3WHULa2>=+lRS<|JCj(I{67&(@j5Cvl?W z8T0eSXSe&AKb$4G-ZhQxt_TuBr;>`md9ZSXYf``H{%$x| zu^SxajVg#;pg#B&E_X{8$C`T8A37Qp7kC$@pk}1p>k5jTBFmv za`#ww9-Idc_rO_E5210xctOb1LgNG)g&Zm-7*Z%m>GCf9d|-xt-k1~Tarnzw@g!^G zMaBVx4>;vTzYqQor34E(Wa?9J9HS6F*Z)g>spp!b_@f%?`CJ>*3#f&t7jOi(I9Z-2dzf@G7A1hSl4Qva~ReO z)7GUPVK)$7hvNVqY<*_7-Ut_ClmS_JqI1?1kbw()>bXFAQ``!Y#&&Z>zLx;XqTRRD%AVIAqfIS&IMUQ2n!+Ps_N?4vg25`Wt;=j zN?i89!Qz6CK3YN`pO6V0EQG+y$rr>PB4Kf1BRE)`_JsNV?rnQ^cgE9`wGW^v?QHe* z)Kq=-)&K4}UEXf?R8>W<{M*w%dhPKK_t5o2cu}M45nb@^nl5+K{_*r{|9s)xt!I9B z}0#ArO7*6y?y)k$>U$Ee(*m3HGAwsDhE`!b^Ec+;Rim| zz2A%X9{(m*nZSvEHMS_sz;#~Npjck|Jl z-@t1fuRYbnKf8hcL%gUxi`U-j_tidnv$R~jUOipyAuv_-$O!*Nbp0ZssFrrz$N1;* z?eY6B)A$$K@hd~_xAQMO+pXKOQ#}GoFb5&Snmg~UY~E{2EaRV#U$0^R=Z-(oa(4}L z5G4A_1Z=pmlOGs(yIxuAGc; z|6%$N?J6!X#cjH#p3ao|UQXzK-$+h47qS%XSl}cl$RWQPXU}I~hm4ITl1&S({L)1Kb|;Wg&ihdnjfsRywSI?P#eLu)&kEQ?9f zK1yNU1;>Ob!E4dToMXR_bH``P$t0dfm;g}Pwhw0pN(SqfR6d6$dd6b}K2d7sRijyO zsYoreZ)7VUr1uwL?62WPI=O-OYcLj*@LUGxeIqQ?Naptq;7gjii9!cv>YDt5vMiaH zNbQtMCVAmozp$J0oQCfjWN6lTx|DU4O<=WeGPKABmbgnysgj&GG3IzjpDsMHsn<_# z>eVNAr%%&xUmt)w=$LIS19K`DoO86y^UyG>tV&Ue1Q$$a*6Wjp4WP4FLr;6Y0NYA) z9EN&7~GFPfM1=>(p*c*sO;c&krGpYG)3(q@1Csjc!t zIz)Ot$$yNW$N0E!Z}T&g^mT+eVK&>wA*-}!dP9A`--F%9TmJ9II~if$;7phZietZA zGGD_#Cz(o0QE})keQDCV>wWNu&uJ}cgq;uInR}z6^@2&4AqRqU2DOCol3b_~9Jjt* zcbpf(F^#`@@Ew9K^t{lV)V9Y9+83J~w9N1Z@q+V`MN@0UEh+hiyCP*94zFX+Cz`$0 zA)K{@Y~Ml;6|Elx?!yCc*BXAQQG%JKft|=juvG9?B<1m^GavW64^>Ct1L!O&*gD$t zRrEAR$I4durF--6Kf-vD2WqDvDd53ks9qKI4@+==8?B)_*MqsBb_Z)*Q|CDc93|9-g1_mF|jGmm8Q*8#_=tEWja2R zuhnNdxx6`5E_db;y*;_OR8=NNzl1r04T0uc#yr&f=emAvvtRj4Rkis)zEja_LYs7+ zBaG|i=sJ8BrXDUwO>m<4z)DGoJGC+3t44BC3^F~WR7$sga^kvU7->yvBuA?Q&WSit z$~tBXQVMMl0!4}VO*@-J%|#BXwafFYdjWf&CBJkAHf4AzczddMWEP}K%r+Vkt*+}( zK33c^UXP*kAibe>Y5#oZ0kfhM0xM`$g5CELDS*usfhWt8)4b-qofll6XdbI5m!>>` zVp7T>HV_w5>_a}CVgj;(5;mB0ifqORX9o3kS0InH*7_^(b4IjWw}3bQP2!!t)3^4p zH_w}6?peHZn`7PZ!mLJWqct*0AEaZsxYPt*k}|E`m}lJ$?Cn0RdnexhxN+({^b6TJG%kt3mJtfY+U>aS%E#``{nh|{Dsf$FL`Nc1 zoCHv)u!ziRp_KC?WVqn%`0nyL9pAV;oyOnB0DPJ^si647WI^buYovftc*A&Z5GgsG zkdAN1M?UOc=YIaPTjgXGacejJuYcdFkH2|?a9i^5ry*f^eoEpi9%clWhB-mlyre0e(WyTf;N2tI3yXb=J-azZg66+~@$<;}jUhbLGI3!fbG1R8FZjef1f3}= zMXMmA%!c;SulvxS{{1HXW|roB|6Blg6YlUgKztk7Q=2 z_=}zLOZ;5Hx;@Sza%)!;5_iTAvjTRGaQDOBihylb(pp+gNR#(tWeExbNMmiv%e=!3bC|7{y^uv2A+ERaM%7%whxCsKOdi? zFU-c7@%)0L+RCICh!1Mi=|hd;BudB8C|7Eptuu*_<3vic$>-}YZnZP-pP_T#m=ovf z5I%t+7S*tn3-sMY$9zUwoP!m36b@(6i^d zN8YdApMAG_InTP+2grp>QfluNvYiaOUPD3~n_d1DApt+LN}PHLNg=Oz*KEd%A zh4{PrAF4aORITDiHB{57ko!=72|d*Sj-s|n{XWFt0y+0J^pwLMd9JD`SF8~8QBJl- zJ#v`y%U!>W+*uRuP+65fX<_rG5=P`N9Lxeexrt zQP*Fj9yVs_W&92bI=_mZbdW<9@kB7Mp(hzy0hf5Nq7L9JiGvkzMLvu6`XJjRIU8X? zl22*}56o9Lq#9ldra@uAkzKPI{>v!X7hzqadCsBD7bdMsHNd{Xy|#^F1*(hBk{jV- zj4~i9PxPEM1%x1|voriG2vvAoiqdkqfmttOKI%_lZ{zY#Yu`&R*S|bjFQ?&N!}wXa zRpzMpAZp4UKf2I`!_Eb#7^=@Yr;Nv@-E(-tyY$u09n)Tyu?PC@Q2g`oeRBYAUr_YL5uIWFQ18Ua1T{`&avUgt2+J}wN9 z8(O=mk;rw{P@pmw8W?fIEuuw)TqW$N%hdOflk1NX`bAqXuwY=pz=DAV1OJ;0{1>Xs B@Kyi- diff --git a/assets/Powerplans/J o k r O S P o w e r P l a n.pow b/assets/Powerplans/J o k r O S P o w e r P l a n.pow deleted file mode 100644 index 7dad1a3904b0f1acaed6bace89e78893b47540b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNON<>y741pvVB&n75XdADc!3aEhzix!)t^F%a6|+)B8f>9Vu_8bs;lgg$M(pc z#E#^}tdK=mc!eCX$%2K&0(og=Wh53BEANO9NEU1ii^#B=73Q4o_dM_Q^kjMzR_N99 zo&Hr<-Fxn*Zr%2oa4aq)NkV$;lgnp*`}039@ce!d8_!2Pk?lE8KTG?|`ycK8;NPD- z_R+1?pT795S8sN&Ird*Wea@U*J^5MYoWI+Tz|a2v;y?SJ%rhWaAUA%ku?x_>sPS!5{DzY}fUbuC4@3{M|FSOV9 z;rb|w2A9Xr500NN;`mDQR+2o2b0tllNvVa(v=%ybN|;b+k)>tn%R+@b_k48`bDTZV zj>j<-=q6|(+4ak7IQ{{|_5|p@=kMQSNoa=v?FZ-dbl;Kb<{l9l9@ zaMqt$T3KB>eJTmb`Q+Mv?%q9&O3Z1{IZyzd0rAKC%ODFn1>(;YrapK^qY*&=lt<{b$osjM~<@u;(TX8{MDezToZoy4)3uad1{|OoIIEu#}%KF z$QeiZF6cXB;%JgD%dvnRtS`Eha$difFF;H(^tBfSoK6T}}e=d(}OMUvdXIBN?y zaw4?WpGHabyF<@U{Aq;y5AY${3Je*q+~qlsw0#~Y{>1x}_8d;6OjQWF6h`V)XqVT* zxUv*^mPcnRmugMdY4|w&V3M2%DHDr6K2{n_ZAa&vY+yaPvTMVy+owtL6`bI9(;7aU zstZ$>!YT_swDH0el@!sWzLdF2eSr#M%g2G;Npc({@lLCcM>y6RpL5KG#(2Y_&~A_ zU!(nBg^kh%FJTVq>IiJAhOFy2a?GoU2hp3H@3QU0J`V5M-aa_CjT$V&+z~$tK$_)N zbp^xG{!$;3KM{wnA4v7bfB| z!Ujs0My=~c-~G5DC+hfpf4>VId|z(j_)+k85yaMq^Hy@*hRtmkFA&13G`EE)v8uq& zO4u=)$Z=EVQL3!aoR_#BfDU=QH9lT_WGg%I9eG!`u&0w9dEXl>ALB@cwQW23T%EZx zt*nq-opfzrM{rpY(i(xp!rY6R@=+hlaaVF1HbPxr2j0ZyL(IW3jzi{J`?Ozgt|P~R z9m#QEfE=6~REawG9`UBmgsZY3qR&&6=H5wtPmXs_wCgJ|qW>)<{`72If3laq5&BLV z;Ak5C_Y`T%?&TD;%PY} z?q9`uR-|ScXUf4;Wg$sBI4{rG6?tvtJ=3wjcea#wk^&umbcgZDBK~X0o0<%ErKJ*8 zjXcaL7o4-1tZW8$dgon7teUhj%uU{PYXHu&$}?M3sZb@1L8nq81B)4|eylx0w= z$wwx3aRa<67d`ntfW2lv->Sp+(vEPxjrC!>xKV4Y<1tG`9+^k^kO~)YnYygPKkcP7 z#F6|h$NQ5Nj7i;$5ECi$$2f8f_F?Onql^C=Tl9O&&-(8lUm!joLcbH-u3=jmLc9LS zFShrSCy_IPWZ^CQAN&&XaPI%%dkr<5&Hm}r{|H^^gKTTCT?{pR9S?;}Q@98=DA*@7 z@fW$aP`NTi;cPAQW_{_Mmwb*J=VT)vm%zie`a^7qSkpvWd*nF*E@E?RmZC(?6LXJg zn;ffOFPri1z8twp89 z<<0=RW^DBtCbAK$ptjK?P9wt(WegD+Z5^^r`vc0@#)~&Pes{Ll??&i<4;T0Wc_hC) zPV{z=H#+S(T-%<8m>H6LQ&<+wND-k$j|b3^9RdtjejqZ!K; z)~*qJOTjm3OSDB|N9>Oy=5nqBh$lJZK7v>RSIH!lQ|4)J9bp8SCi=d)!*!H%Xly-% zRyHzkFwCn{VSzsOdIdJ?l92V`NggL{8qZq;@MNrvMi!!0ShY2xg1}w~b$~qD)aGST z$4`k5zwYQ;{G^Y+5ty5pR(8QVJ}5ifO zo@_@?7kd3`D>?2AkVDmVo!bhDo-JXu8TOS1vWePBSNXE4%1n{(Y5tgtxBPYYh35wI zM?1Rw)b==MMNyT}1Q9aU0c#gg2dq8oH%RYLy{w8RkDlg_I&AsdjPp9|Ok!T*M#AJNpyWymtfkx`Hv-`r=8SJ}B=B?0P%98X#|zhxPM&u46Bw8NHF; ziCxXsIW9DEjlkbQ5Zh3>i1qpaJ0r%mMs}Ba=6O+NsK}*WU`feP*)Sd{1n2FS>r6+k zLp$Q{$N)RjGP;1mo=^d$2VG-JY!Re{^br|Nsh#zk@~w+lgSWD?X*uXXZNESLZ5H>Z zeos5R{AJW1LE0HL6nEOw(IIl>&U=YCRacM(^-tt!h0H|=GWa5x!sVumdwq}J?mA&- z^z-7qep$y)+>Z2f^qKAbLKk^RV=l4!r^v(03>mr0QFfGdD$BC=I<2~L5Th3N&FjWG zaIY}$P`qj9d%ik=Pw22N!B}pQ3g`-%fz_oHDBht;Ws%Ob`QNmCY>oG7TgTf0pOpDF zY-zhV0}FRD&6Oxos6sulLd6t0oXB*BjK(Od{HDALWrQv5op@dZK8-zp6ZQ;BOKYd) zJOt)ieRTKJs*&@?`2CB|qt*-J``lV)UOJ@5iSxPKiN3CVZF?LFuZ%%(5>?b#$Ey_U zi}wZX3K=JoT`M>FJy;pbk$2+KGi@G&d8g&x(62Z+>;JEvCSKRc=ZK@W`A_xic>h1b z4Fb^9hT_oJ!vGvAlhq+qK_HDqzLo|cVt|9gW?ULzRA^5&`sFG*IQSj;)%yR2Kf*l2 z-)>yD_9i;~nH}+$e0_U6LN(P_9^aXYXt+s2DsJnl6v0@0;0s<>b=u|ct$X}+^Qe~^ zJNg)QuoFGs9Ka`iD61mYxeO|1o{Ien_ETAAosGH4^6+VTR!f1LAIt%_x?F5_R|B1UAqpwU#Be;WpDqaZ!1%nml$t{B1ctp4`OV zi+iXQmBYyCnA0yVV!w?SuHndB>&PFuHXTQd z=K8%4yfU^f!loHpMk9RxfNxzNACE$(w3R);fx5VbBYB6IpQ-iXIl_p{)!B|Bogmf`bET9i=(GSlP@ee<#gF=?EOje5K@K#z?1 zRvD~Dj^8Jo(ZX6(cJbdP3Vgb=F%4VRmHOtr5A$9dFfZ2_FI6ghg^!s!NcgWQGg07w zYIx`Ixu9(3osNH$v5ha?{Pe<19NOr&IsY4qALUpdAcw63JOI^uXC%JIqlzeu(MCk1 zA8BnVr6WI-gZ1z$&=oNsVZ9~>w{hec?87!KFK@Q;jynE5`+aAl->FXARmuMG_t9qX a`JXuga|GrH%n_I)Fh^jHz#M^l2>chrFIM~j diff --git a/assets/Powerplans/Jackpot2026.pow b/assets/Powerplans/Jackpot2026.pow deleted file mode 100644 index 3b62603fa1e0dfa1fdc34981d1653c58c16b68fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 BD8K*! diff --git a/assets/Powerplans/Kaisen V4.pow b/assets/Powerplans/Kaisen V4.pow deleted file mode 100644 index 31852719cc045157026f6c667faa7efb218a0971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHMJ#1Y`6}~TIVS(Kw%g^EjiiZ@WEf_I>cYY8OL9A9mpj9L!KvbE(n>BGvltdv= zIR%o7EnF;;3#3h%f+7vb#TFKoB`8t`r2wH65e?qX73Mqly_>veU&rq$RLdLrzPUd$ zbH4MPGiT0>ZUV#5JfQne;i5wKL%P8a-M?&E`-OY+w@bTk+c^Qfg%jmS~67`0{E+Q5QLg(XuOpN);aiEVSpxOsIn9*y}8Tu*Qf zs*~$~Mg0gD6&m|QwN<^^J}p&e@iZVXRrSgcKVPT&bA+N=JM_Lf+L-;(|6k$hMs>Yf!MBkk;N>T_XtN7mH^I~P$Tro;zlYVgfAgpJHpc!vg#P2t6_JcC z`$P%VAO&V$p~i$`1t);( z@JQ-2@~2ZY)*5}MF$b0Q-~0ZL%dK0>t5<%on#-NXgFW;+gO7c}oBT@>(&irDT!Inh6!G(~Yq{S{j<`fEr7Zi=v*<}y9 z$=D=%zW!P8hf87%(svs{xR?J|XoOKAOjL-A9gxxC>%JfK8|{jT7T!|xrbc{rl7%{J zR;w6Y!)=k$P~S=Z=y}BRpCqt9$SY1i>InI8->UdPiW_$Rz1gX-gW(#}}fD93E@f$11AKVsvULR5%F_*`@w zx5)qB`pP&CpzgQ-u{UC?Z9?@xG&&+R|qQ=n&ojwQc?Tz;)Ce8w83s9EC zyi}2yMhjV$Fu=_f?Y zY+p=wr6fX-!-4}pl}JrYLPWCB@Mty9yvZs!Nt^=D9y>fxzr`;x2?PY2`m^Z7jKk4NF%fZrTv-x=^ei$mMM zNqG0hxbK~w#{HfD5$?@daHmv9gRNB(xnbHU3!X(_xg=F5C0y;={G#9g&i;AY|L%W0 z*^Ue};(vK{y4{t*JpOV4JRQsb@p`oDWk0?v2l9~p{dw?RoB^MTTxX5dR3utg8>v`` zBC#x#vQGGfrHf|DB);`8cKjXYc@O?`8Gh5&*jQ3sq5Wik8gIn^LH(xNJ-1Wh({_rC z#@!jqxrg!F{XgyfU%3CD-X9$`uP)8No90a{4JeZZDUi-c?E{>W@zh|2w>o0mLVC_) zuU+VKoImO4Wwy0rbwJ3|4iPYD%b62(wl0(+M4LCxBX@lkxmiXoYRPP_6Vu*B=3J3X zX@yAaB@RE@{A<$A&*NObpRB(zZEq~EW52k&Ic@L1e?a!$Li>62+L%Ev8>Q6FDHc_N zUfFt3iACFCcLQ}(EH;rHC-r*nmzGWA)OsF#n={~ZUgc6;VOZu62StIYeKIT}`Q=_> z@zyWEcW`~_-wzx$5B6rjhuv**DH*Wq6)&Fj??)+SmrcgFP^VgW}C zzlgPw>ZhnFW)2Z&CB>xg}1ySEUVh@&0UgykXf9Ll7LlNXhF z{OBLE@Bo=EI>BVFkuMqNU?&rB9wD_-wK27B<9wgoA%If6rm}-Q3aFYnPqVc!(bo-Y ztTo7&jAky?ig6 zAz&x3>c;4dTT$A)s*lg3YT?&>Q4(D{?m~Y-HhTVluG2!@SbRI_Wasym+ z`(X|~>X74P93$Pyu7k?O={PnYU)wX_b_JP)3Nw?py=()!{5}tXlJ!`Q1 ziX6x~hw`PLKjT>+STFkXxnXM){Gcq&Ip4_lqZfu1j#C-z-yHMN7?wkErg7XD?`YgU zzofa-6`BiFXg)lI?;OVq`BrRVV%%!PmmF}O6>$8KBaX97qyu9`WB1$b@IH4BvhPD~ zAI>4hAzV~;&dnE(C?;_2GK&qCD%}W)BW;|!xhT0ca6>N|8n;g_#gwkJFL LfdvEqPYnDQ8m>AS diff --git a/assets/Powerplans/Kaisen V5 fps.pow b/assets/Powerplans/Kaisen V5 fps.pow deleted file mode 100644 index 9c1df19a55c69a2bf215bc2847aaa842bf9b7942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNON?blc|Nu=8L)vi7}9oPasi_Z;DUOcdJrTJii3tAK}(UtC<|~s@yO%JXzW-M zMT&ZbMgpN(&LWFhu$UcAB&6OT4FSosY>7o$N)(NuBozWh^?YfUTRbTz@|F61QzEdA+nucCK{q(c1{`O!0^C5cw2wv3a{e<4|{yn{YkoK+L z{O^lzJ+t@3cm1#b>ZgzYcR2c)=Kl7PF;`!G{nZCq^Yq!p6nN{kU;NSHUrxV0rNAi# zPAPCofl~^cQs9&VrxZA)z$pbzDR4@GKQs!w94}t(_O!NmXV>rFzkm6a=bGm~{CuF= z0FA;|_dhTle)GBh^TYVOhJQDwzn`D}zK;G+r|+LdFIpo_6)m$#Tc)c~%!Oi^3AvTJ z$Y@QW;p*H{Jl}k%=?Wy6|HCxv(}bW|TkzfH^t-NM1G;XmabmB^7_TU@7c45akaV9yoTStrvK}U{d13Zw7oa?+*ht% zESK}8fBbrQwWH%Up8Hx8nu~a{G?$x6^S4cl|FgNSHXF?){NAt9G_=kp=G(%HTF?JU z^Dn>t>JR>J%Kr(z?@8P=JJ=l_xld!MCtguM<3D{rYs7!fg)9ZE_go96W1E?e*0NT$ zH3k=j){@2(j!URa-F{EgDDLw@95WCYPis;m*cX6lhJ)s!Mly)0x<)vRRj$aSS#hCd zI%vtFFo6}Wd9lXZwwJ?w%(;j8sGmHF{i1*4l@HQfn=~2CNo#)jFaM^z{`$qs-}&n0 zT(0%wIi6bu_hba_nyj)i8Wy6=Osi6uv)(e%7VosEGNnMcc7gL!eYm*|8qr=~!rb)i zSo{ldPxngm-^9FFVm#lo%`p_owDg*3E&~I*3zNoLTby<-Wtx}hybfii{@%2I>Aj2T zxK6~MHo`)UcyV?F9Z9BA@sY(+fkz0>yqAIn*NPg2th{QP`a$Uhk?GpxeXG$+Dwli> zj`0w{XHhb93P`<;MQWK`m8i&0`9q88cYX#A^Yql~>30is z9nv4!<{E_dtj!sEY?WcL4UyDI+1N%WoF#no^dsIZ)0ai^whZ5m5%_FOI>_o-b~Q1r zjc1YD$doG4x;BIq-lpFsj4#RC)>Pga&}|+!)cHhk-yDJ4>yS*Ao>`R&_#O;%+*f9l zQ87pnwe9TsJU*gxPuIs@JZy)4^iT8SPKy5IY=`6{#F}Iatx|?NrW5qt>k^o-BJz@3 zZ9*j6?*_gzBk;wnq7^PMZX9Pid*~NTDk~z(2p%|YGU2-exwupxZFZq6B=gr{i%7Q4 zVGZKd8ORRp^)`B%lb)Gxi{yGTH(;iBFsIGg_Yc!m>NdL;u2XrfAlDLpi_4Y?6|6%z zW#LU}`muCfHtvNZ{*3(b4s2KhjMSFx3#PYgcVLTXZ}frsnY=8E3uJ&_)7Y2r3jBbB zU@jvrh%%NKgW|9&G}k`n+J-%&e&-{H_epE_dXRp3SP!21F^#_i?2B-_>7HnQ4C@-{ z$~JgD!%e?YI~qrD*Q#KgVA3YYx!|0^>_C_#7piy*@#=8T)0yV!aUPEwR>5~?1U~JG zi56C*l(h#0mymb?KfP_2~y>5Wc?*{I>BXDPpc%~}B+FD@; zQxWjg_$Z=s_|u7VPq+!+rTR#-2ObhHZov1^p3g)6Xbu`f?Lqc2!Sge@J_nkRfY6-O z&*WpNTo=QIfJh_2g`e!~3}Q?sTj`C7A@jD2GZyiEZI)zB*P``EF4sobx1>zvC1N4( zAeX^%<_dyE?qDU7Oj4@{mdj=Mc1G|wX{35S1Qvn{OgkM}0K=I~Rml)M57H5hAB1nq z@ZB4MFSlG)3xbK9kf#=?bZC*RRIa0`Z35fc89tJ~>);j9{48Pz+S^_9GzX2LHg+HL z$^cPrx4;?OsAM>W%mF&%cwu-^cSekh*sHKXksK*Mhc4E+-gAb5lFB zqMg^ySXq^0HhAzo!sWVH9aHdXu?U}wE;R4Lb>}dWE>I&J>%cJ6Lwc6lQ9DgGO=`r0 zZ3#$192YRrLSbEGC0sxXedq5Nu8aA|KU3RUQU9@|6~%d0N<L*@BU(}; zdhWuO4$+fjuGFAd&K~h~Q3dh8>D-K$UO6Kjr@2>I_stROl8l>};ANp*@Mk44FI8lw zYGfQ5Xi67@&DQHN`!i1;*qt$Qy*UPV4XGvr z>)quiF}2K-8*8~PiK8k5n?yM0=}ON3B=~-P1U|%b;Jc}aQY7V1aB|?aVAWQb$5tpE z#Zi1=1im+(9<~d2K>s1WtH^cMh@wQIcnY9U!4!#Qp_FyPCxik=@%`P~_!jg1#`PkBlcC^?Z73_prP_^DCmmn;1Wn_c3(X z9YY6{$GB)Ev$;jw=UrqD2PsTxg$T*ZAXAqYt+MVug7qQ#LmCX`#sQ5(@Q3mcEFDY- zlLC$zBGkG-2pt?<9bH)*~Yr7;Jo$BFir?U$^l18#v*3 z&dwdhc_1f?abCl^tKdA3Aa{tKBXAzmyCHf`uDg7%-Px)A(82fu79HJ1IBp^=Yv^n@m>Q-yX&f(KWl0 zOT;;yZxiD3>fv8;G=icxl3JWPd6hguoH~#5z<+(?TZir9?|wphe|JTkJ7f3&3_uuI z6&!qUh;Jf1FDqV!;@YZBT-h$}{@E~noL9LNI!HwrLg$2Voj%cFT$?#Eac^|T|9Se5 zp9p*(jY`1Z%((<-@y^K?@^ z{JKPH9kR3FTTrziw0HTKefiP};oF1$4aq-MryNdG8C)Fvi9smh4z}`b~#KzB-%Oly7b*#Gz&hwLDoFnX> zBb;0RPj%prHyg-(sP;k^qNv}Z9yN_k)L1Czo*-ACeusMGve!^+p`3Aj9rtUHo9&^e zT;>LHXpNkKBZj8fe5dPkxCa}E>?U47%tWzRgP4S3h}+YC13ncNIqpyUE6_diP5am@ z+2qD`)g2j=Y_Shm#ek(_N}-BoaI zoE^qVv<$c)#3V=cR#zN`2ae)KhF3ujD`GuvpNDXs#kz}dPO!g6rVQKq>}vH_+X@qX zTT#%kz^RR9F0~4NL>OB&MBR7s>Y{Zo0MD#}j9sHxX7e+{^bt0MAQ6AKNayVlmzP4o zi6pM88I3@{ic)Cq&JJKt)Zart&)0vzrkD9!8h-&eR>6IK1a6f$DpI)6lpHP*>B8aH z5HB%<8+Ius9IN;DNM`50o1cSTha3sdKHkscr~NI%zY6Y+5x8AJB}h^JK34VH6Fg6H(zO-kmCjtE7X}v! zaoP)&cev*W4aj z8DW?*kuHuYntPrud-y!W-}S#Zr~^(g{%t+RSruW#SEJ6uao`oWcA3SBP)k>VI;ACd z93{uqUx%W5S4X*mIWN@@G<5Hl?u^o1KaM+ubSI4N#=Z1D@?W?M^M3Tm21>P6-l#T3XE$U6$c7MYi8qtynuf5P!I>GZBM^%3jRnP8ym2@2NmODN?~{F6{j zNj7>Y5N>ACp62BPELcrGmf*WF0$)tIWREH!PV;~d*CSX=$ZT;IkK1I1<5F3tH-wM$ z|18cq=g&LOK^|!i+5@%ueGqR}mGf>A{Og!Id%=zjM#N_u>Eg(| z>E(m8fByG>ef_UKdH18g?Y{ZmE1&!Q?<~Hjx&LKh%-e6h`__Z3x&Cc81>&=>ztR28 z`qMQ9))ZJ%U`>HF1=bW;Q(#SjH3ilbSW{q4f&Xt5xDYO0Zuhj&y|cZ0_wHSO^QG$Q z%^UyrpNI|6D13D9*~#z=pBuk_4DZk4Kl_vKwd^^546Mg{AIVL`;ebab2r zYc!50Xl`iuCf0c8&GCFR=U4G}3xB7oCw}*R^xwrFwU6WPvFZ=257C>A&FVS4 zJ4Ils>d6uQ^8&qoo={Y~$3E{EKUy-r{e0u&)fcOeRBeC+^M4=B`aB`1Hab4roqX1Y zQf9xOeSI7I{Q8?uRfO<5s7uQek$)z?6W_kL^X|p3joEX6ahIyERlk8~%%#d#?^e0G zT*c}e82hE_SMllD>dVzv@Xu@2tJN=5KZ{RZZ9jhvpS*_m=kWdbHGWc!*L}L>4ef2Z z?$5n_F<(xXzVVCxtxV%?Vcnm{dKasA+7(CDFIRPofv_whsj9mezk8~x4)I5AEI*^_ zkN@c9Z~fB2Sbj$M{7L!}&3?~Ve&{uRdXIQb{ZxMF^Jydb;atd^wPB8H!E~q-bHNx^ ztGWblgV0*ic*1cBk*(7Z48>jQ!f~E9J!!NiHG;hlj!kh)zyBe;cw+K~a5P5QEF%Qh z`kHC4B_z7>EOX7XX`HE>mVSqrljDcfAEF=A{aKo8m!?DC^81x9eI>v9?#0V*ymmR| zE93Dyz%c~(`5w5FN_Cw}Vo{XBwA7io6cy82glw!*TyVlgc=y31>Tdxg^}C>DU;IOG zU+9CoQLYvi1g@LJw9+-RzJTbiC|QDR1b2kH8{a3k=IQ(1H@nAG)%>_&^xp)XR>@6? zMj06z=7Xet=fXNbm1fd;MEASLwmi^_O7Nq&9*N27-7IfZB(~0FP6ARzoC9g z*QI(P;r{ShLZqDrcCljfv(WIo>`!?nmD{?(d-Q!gB?>Y1#+_HNv;m zgN~$gVs?RrT!2Ri$DEUbd0UGTge<&hntN6bX>Ls2sSmpFjWBlF#^}cQ?gICeUeoUv z^%uD7nven$oP*gWK_X?USusf_?*XzF^xJNH=MU!3$?I`;9Q|(SJ|HG-+j@E!-=(tA z6>k~$9{UiPtFB|^(Ljs|N+3r?Y3mh`@8Ib>jo!c@+3Idf*F51w;2L zZ!BjzIh-F{O)QHf19)J0lL+5^eUCFkvVRq_O0u<$HHcRmkR96V0eYH~ely#;R=%-V`8sL%2O-$PO_s7DJjCD8 z#zfyu`a2(;=l4mtm+fy+E{5>qu+RRSja+NbK!5npje<#0L-^|m>Bvdv##q8l_%4+v zs$1Ya@naWr6K&3eKN@pvW6v1vTK^xfEBfnbv-_Nt|M~MWOzz-9ujC_Pvjw}WOM(86 zS-_IQTM?ASzdG`h?EQXr@(BASxuUiQXP(Xmy{3LDXWR6_LVFSKWp20-IErvQasRh^ z6TTmlwRBAreByO$-*xf-&J3+-EowyD(>>^-1ZI!W0|xYAI&;N>f)ke`COe zlJ9HS6ZO{-qL}3)ZD+`NT!!~H&dZceG$*x1J2TZ>76UIwqzHe4JWpT4X)heUMX4jm z)cOW@fb&v$tU8Z5X^$JgPQQH++#}$DThg{|+yPjkH-EKlj4aABz2;bIKv_0V6{)78*lgha`t0Kaf&;iuPUJuCw`rOdCa%HFLa-)o1o3K(VnQa z`n=D*N%n|_Jy>TCXUTE_RW20v1@DOq@0Ck5cbD8QTla$=asV?fEoMr8B%9L#oFNre3K7!j+ zN7$fBNt>dT~t3BxI8VCP9!Wx5?1T}MHPO89~qTzXJ>?XH1_$)rU>&ANj@BVTA z{{HN@X2;QfSKSY@a=DED`+fG|N)Z%l0(jh`ksIb6JnA|s3D?6QEU5|4qrkTXey);V z4-2NC=zV|TT7`CkX=33ZK+j8rM4CvEiqPwxB%e2v&)Y|j@{AzmfCi+xBpa#|`^b9;p>!e{Zn@}9jLDlX3(wCoySo;dr9fFhh z;A;<@M|Kp>IpMfHIroR3d@y-jMqk?pcZ_vtkpGAx;XZ1V0eyvMDMy7fBW!I?I4{rr z<-)oDm03OzV}_jjW&0R`POHw9ke>UXH7i-djx8Q>DMdFEHdnNE4fpLCnZ-vk`7rQp zJsf<7@XX?)Gcv|^oX#XaXCOD!U;B}9e-r&6x$c9z_*i0t+r5nwgjh3VNG#l84Hp4X zQQR4exE~hZZ~X9TzDupZcbHP}S}BeJBNV(Ah&vbD0JTs$h(&z#ei`41p8HsL2pung z53A%;rj%-r#B}Wqw5BpJl_0Y$1s-fP)*98?tF!z+x?h*@AN=kf|2v2C=kid}zIGPI zpG1e*d5`4qxLrx}?!7RUzw19*RjvO&!pt*1DXlYYL+HBGgRUxYoiw~a5y>9}(~$`i zks-UJj1?}zHK4VJtb3)$x|$bcVz8vl2ytpy?YP2i&3G*E=!^~sHxFI+F8H%bj(V(n zf*v`}zaezF&N%Fze(XN|A51=WUhE;i!O3I*sP>QwjqD}!+CWG|os9K4BeO|#nbkk^{v>_9jdh3c zZ}Z3c;7mwcXXLpAoOKP)0XIzHjQlqtMI)MAhT^J;W4FqUS!=oznByU;683{(e$tv&=p_i}SNeZ-KiFu%O-o z@n*`WUbwghmCq+jj~#JSspo(TFn=t`HFRq z=?xO7ljM9C>kh$r_9y$`M53_fFa$WFCpsfv)TWORL6I&hWEspcdvq1fEv!2P=i$S_ zdCVSNh4a=xoYxSHSa}`=r{ugqU>C&^u(K#{V>I)e7X{zHMm%D<-Z*}r(RsXrb%)S% z`=@%~3{s*fh_WXUdN>(}D-FR(i!3YDa|G!2z8`Y0jj-+zoOk=+OcJ)KHwa=)Y5Pipbsr$az#JVJ>d(dcYkN4ej^X0G3-#683 zH2&Pu@z1r zMGyNmA#MYdEW>~0NHlO1vMu7H_YVW#VGn#!*H$3@jc7QkFp+0OTpXbb=Aw%fXXYpi zTEutena3XrzV~6dueu*2>QOnW(wMY(_(dnwVY-AOE|doP8qvkX$ML7x^ZnQf^rQ28 z73&V+^LbWjSNIG_oPFN63@I4L7B1m|gZz^ib=XG%Gs zzS`9hd644Z_aWa-PL*(|#&uA?i~L@tFFzQF^Wfp&Jmv?j!nucahtP8$cGOCG76eWb zL=)QxwWfL$=o6&reW2 z={|TswA=ufXm1DTX^yjygMuephS2Yz2R@p!Bm_u3(uAl#MrP9$7)LeSH{*oBGd9Qa z#Azt~CbULZo%z@>dA6ifoM`aiAF4m0Dp4O2aA_u=Q80$;dAKPw?+#@3QhBzbXAbEZ zMtZi0TvNi6V2PT zU!v8t&F=SVkNr}urlSX!OS@l#iflaEg~Nk~s_+a@;>x#tpS9;`twHA+;~^$(+k0i0 zToUiOMoKRfxSqNQP-aBy zQY5fg&k^QsaM{z`WEYFGw;{Z_e1Ek4DXdMtd?68&}2{94HQPe?m=pX{Dz2R z2X1c%1&1ee2oK@Cb7tI+CjFUL9}Vu^9=P#*8J>eeX>vw68uWHTofS-WCbZ88j|gFS zEB7N{KdH6;{~3%};{SKc@1Ono{Jr#a=^oeb{#wSrEy%|zz2kh-Bs>WN0YkJ3_2sA| zLaGw!N+n^QN;s*lJ@F{;@gDdB%AOORTxO`sgnZ$#02U%5&Zvop>(_8R9M=h*hZO>=YnKN(m|xZE@q6M5gj z-Qv*bDBHoaG_ZjC%l|&^vvpfjU`>HF1=bW;Q(#SjH3ilbSW{q4fi(rz6!_nx!2bY3 C=pqLI diff --git a/assets/Powerplans/Kizzimo's Extreme Low Latency.pow b/assets/Powerplans/Kizzimo's Extreme Low Latency.pow deleted file mode 100644 index a41dad901128e878ffb5d4eb3390a5ce6fb50005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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 elw%`@2yfkvGJ`l`PAroK7h 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 H$btU`<8S>u diff --git "a/assets/Powerplans/LLG-C\316\236RT1F1\316\236D-FOR-PARKING+E-CORES-FIX.pow" "b/assets/Powerplans/LLG-C\316\236RT1F1\316\236D-FOR-PARKING+E-CORES-FIX.pow" deleted file mode 100644 index 577f301068edca35523e3c0ab7d31e4db9a81b9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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ȑIG^<~1y?|K)GP8JwPf%6#cQXJMhv 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 diff --git a/assets/Powerplans/LLG.pow b/assets/Powerplans/LLG.pow deleted file mode 100644 index 015d8c5d46f3f41e83bad75775cfedd07fa55532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 H$btU`<8S>u diff --git a/assets/Powerplans/MaxOS Low Latency Powerplan v1.pow b/assets/Powerplans/MaxOS Low Latency Powerplan v1.pow deleted file mode 100644 index 1623907b1023abe2ebe166a43f9d2629473f667e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 Ai2wiq diff --git a/assets/Powerplans/MaxOS Low Latency Powerplan v2.pow b/assets/Powerplans/MaxOS Low Latency Powerplan v2.pow deleted file mode 100644 index 6ed68dc0040e6040a5f6ab95152e220df1db97f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/assets/Powerplans/ancel.pow b/assets/Powerplans/ancel.pow deleted file mode 100644 index d5c397a276d475cc9a920d7143b43c1e23bcce24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 diff --git a/assets/Powerplans/arsenza low latency.pow b/assets/Powerplans/arsenza low latency.pow deleted file mode 100644 index c11d5b07cfc1a0da3c8c85b5872f06837dac839c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/assets/Powerplans/atlas.pow b/assets/Powerplans/atlas.pow deleted file mode 100644 index 58b61f1ca30941d5846e2d6108fac6283053d497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 HB?Es0{bP3U diff --git a/assets/Powerplans/cactusOS.pow b/assets/Powerplans/cactusOS.pow deleted file mode 100644 index 956373bdad7c412d5ae98481e34742d33c966386..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/assets/Powerplans/calypto.pow b/assets/Powerplans/calypto.pow deleted file mode 100644 index cddc1aab80451c496e7dc459a9e3c8d4824467e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 aSH+8QT#2?hpH^A~S_E1IS_J+(1pWqk#7_JG diff --git a/assets/Powerplans/exmfree.pow b/assets/Powerplans/exmfree.pow deleted file mode 100644 index d9c4a5d17ff9d50025343f04f76b4f48156c0b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHMO^6)F6|R-6wG!FVDsjSEm@qQI*@H@{->&LY>_`zZiIW9eKgV=cS6PcjE3sPJ z61nVA2Omswh>i;QAaV%0ILMHI2q7$nfQ}-DprbE=C6~yTY`)hsgLYHv_-;*TcW208{h208{h208{h208{h z208{h208}*9~rn5R#qFk7TT@5wY|N)diezV!>fP!>nYp~P%RW~9~@TS{MO)oAKsU6 zX>fb^{p|4jBGOle7YE-(-WXG8DK#&Y5Zol0cx7eHohx$|&Kr|0HC;p>*DnwBk|^#ky(}!Um+>}7U>G~l!_RTbA0rfOV^?`g{oa)NP5Hu0 z><8=!Yc5Ej{~M(B7$IN_EoB?SvgRsf=l7lYN3iq#%ZD0{?t&-kevX}sr_=SgwsLKK z#MYhHgtJrn?US~bFjC74G=54&cUeoFdyVmqcI^Jv05RR+R*29;p4U&G-J~nTC z)Fvd$>=gSRd%NlH9BS4>6!h(9K(db7q0!u9iU~ZXsrwe{)hO@bE1~)kyU5;R@30HV zy}^DAjlTnD10G*sCz0O*i31+z_nlc=Nvn1L=1;3DX&$l(z6Tn5>`a56G%us?4~Bg& zvp#wxYtFL*+StY)KR9uG3+*=M7~3Spkiop@jm?W5$`8;-$O0S^O|~gdDfuv^qj^E) zBcXXAgj6XR$4g-(H^J7t49;<@Z4Q+W(ilbcpFqdL*9Pg*p>`a8ba{vR)F%m`vun>i zou8zO=RGCE}uP^?z-Cklr2QzldPgj-Rn{{O6DE1^4SS;I4ITZOS!|GG}g-NxZD1 z2JPF_tHwVlK0QKQU|%1^k|%h7JS9FXH;d%}HDMv4_&~wyS@TTUI#<$^+}1VX zgVO~MwhA=uvVsr54uo0(bEdSC~3NSuS;jO;Ii!Rs&K^<9g@tAiaNNkTSf}`1kRjoYzsNLXJD_ps|G;BOZ$h zJBqP!dRp%jc6uysZ*RAaQx7^vOU=d$d-UrH^ASOg%Ti;Uj8NRySnq-gDTGQ3_!HE( zt`ke}@sW&pChYfT@DJgwt_m-?a?xWxVG~*@gkP_O)TwlEo2Fml`7Ugtbm8bUe~x@S zZmB)teKdn#7@vyZs)AdQv939|sGWX5 zoDKZo#R)&y8_$b~E6?)h+90lGExFA(aTAl|A>ma9?eS-#c)A|+^L}=R;ugkc8M?{l zgW#TYjK;a$j$DuPANe#t9mU^G=qH~cy_AmZn6@udsSr4>2-=7t-Zk+AdkU_sDvKgi zwXlYCjppCdx50lDQ{u?EIF9$TljL6)F=lPJAA*CC5LOcM^9P9YBiy6!lW~xIAVkbB zhjG9;OK2W6HWw+vkFp9%`b2HpdEJe3FZk}wfRB7LJFLR8jt=-R1uKh9Zx$vL*+$UX zoCDkOt*nmoc(|3n9_%B&NH&3q_@g|fBmSn1yYYonS$poPvci5GONbBIbB!n+k}T_F z8vfdN*~Hu%3H3$N#HSf}q1dfV#`>Bn#f=vdp$W%jU56?OSyj4h)~}tsVA&qd>)pJN ze{CXuQF;qURZ5p|X2){ZNOS&QK$e~sX|u0~dZR7G!*A}5R}8Dx3RB4=(8E53txOSV zClLw}oDsEX_A{;h?!X8$8X;bLGsGiN#H!9B@xovWWej!*zEqCK_nTYdK z*6}I0@4;`Li91Fc3Y=S`tZ{xRv;(iQ;&qDJMlHP^tfxEi5di~UU;fkhJpTTLo%NpD zF}ZJSkC(kEcHE!A4yh_p1!H(l3h^>mCE{g(r@*+3V{jp=W}W?C;CnCwJ{^Rq4Wgus z6fd*VILXM!YpJ#KvWy5(#Onk2K|epwZi5T*DG%M0Zc&P{x({C=TQ99jn8B|}ckQg_w!&059y7l(PH-=6?R=Gzl)KJ_)5krPd%?Fg13t3Zcu%Wi zj9A}Y320@;Ae|MU3Kgj3~h3=B*3`J*0k2Oc(Y(aZwg*`XzDQHhaYZR?lmrL&Pz_HSzA}z~4#7 XK*vDGK*vDGK*vDGK*zv;kAeRH3;PKX diff --git a/assets/Powerplans/gora.pow b/assets/Powerplans/gora.pow deleted file mode 100644 index adee821f7f24c9ecb9621bc31aa63a01618f2475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 zcmeHPU5q8iRqpkAoi+ZOBsQKkkX$EAJb_eFRbAax1tggeD_R~vBOubgfVQfuDzn

    Vp^6qr+BPJuZE<`kGyU`~NK1?Ci(Q(#Vk|8Epn^_O3+_p~s5XY232`|itE zK9>F4J0H+g8=$-J(YsHKZ@=`(=KVu>zl(1-$KPKVf4_+FedE{XF{bgwXgu;y`yJiB zh&8@=rJ0ZB^!U4tzf;-6U)jR=9sJStH2xmS{w#YBy;)ey&f(oD0+VHDM)>D>di@-s z$kvX1KIQ(=jQi`)7oN^OojsM+1rp3(@9Q~2kS$F4Y;F8mT}qk!e)9Dl?DMrNj{$YI zMibHUMC2Fa7pqq;UwifPZ#C>`?t8qZTdQMvNGoSsn`0A^dU;e@`y&U58=KizzU5oqcKm3z3e=(-tEZqBGRu}G& zhoXonuu4ELlvI(~P~}W1;iEQr&IKo2gqMSMG+uh78J8gZeen;$O+~;?++}VHVL;%b z3{2&!V8$g7-KJb7FH6BK;U;`n)5F;sXhA$On49*zMPMWX?<4M~uv9tC=XGHA*B|Rj%E~YgfAEq^0vDz7Zy9Mf)1)0Fw0Aub_i>Q9?AV zVv0-0pjMH|QfnQJGNuZIkK|(iY%^{@+KkJ1KMl`C$WeO{7P<)ERu6iS?pD!y=3@dL zAuO|23g%29k{2@Zq-gF*e$w1vb4`PzdNmE-2=}&EgRa51-2)$#-IhLhCO8K_bpU5& zC|J@#2Il~>5H$C6e3xz>#`pPZ@;>_A(0xEvo9nS*e3!YYY;uNi=dceE12Z`&Znck6 z$;u>I+l6WLTdAF5v+N}OcEI;8y_Q8tPAJQY5Ma-BUNT=ePi8gOzVJpEO*0Rr%adPw z-(#)4oQ3ap4}98J%E@F|FsXu-EG_d~dzRkAXrQZ+HyS*N`X>Lval$VAx z6)f}}E{R1Eqz4|u%i7KlrR({(565|govzj{z#V1Vk9YH3sv?*IAzp43MJE!joLWn#a?{Pazzgq>4$@?e$#*0VdF^VTC_}|2D=xX_KbiZ&J z^~IkWXn!5z0t8`9*c|+T<7FlwuJzJK?_JJe4{73Q>)sw?qVHQe(_Z$GJay?8H%0DB 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 XDKMwNoC0$S%qcLZz?=gAHx&490vzEq diff --git a/assets/Powerplans/hybred.pow b/assets/Powerplans/hybred.pow deleted file mode 100644 index 916825001be70309001249a8f111d8e586aef008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 D%$B|Y diff --git a/assets/Powerplans/imribiy2026.pow b/assets/Powerplans/imribiy2026.pow deleted file mode 100644 index c3ed95ce00144551b57fe1ddba99367d5f9b2874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 zcmeHOZ>S~7Rqr?1jT3j>eM#2%c1-l{W;afBD^^!mcUNn4N3-ZNf%w#2eISNc)m6Ro z*x9#_*-0{ys1Ksc5QGf*5FP>9AqbA(;t)ujh{zBm3_@T&$U24<=7ZpT5HfyyWX0$2 z*M0B2+xPaJ+n3BIxi!@TbAIR4sZ*y;pA9coD^V2j__Kfc&R=|J=dBf9zXJyg zuLr!?Xs&tr!<4uG;NvfR@89mc`>)r}{q9G9{Xd_byl310Gg0U4%jaJHVftLY+l_$Q z9{hdxFUzM(1eORa5m+LyL|}=)5`iTGO9Yk(ED=~D@c#{g({6jG=4rK?vkQlZhdVDl z6Mf{{U-}Yb1FVHdhokD(vgZC6o?pVB{o(KHtcbFP30|Kd717?*^N#w18TISutB*y`Mvq2yfCTNohpnC<1<`89v%TT7I+Qa0 z`}p-u@cEgS9;z|A40PH3O7!?Qo(r#*XSa9HZNIV;eZqh0#A(!fJ~|z3N3S9tvm3n< zeKrcwSzMioY_x-C+xT1J?$eRSFRaC1&ehlFTJMxm6}^ZjCEDY=FAnSPqCLJD@QiPK z7HytGok8?_b?d(Fl`Y5k_YqLKz0=VDa3pbe8pJpBzaIVC+3m37&wTEa_T>Q553l3c zj$TF&+mXZZIkckimWnc5ZQSLD*9}K#5akZu+gpjEQ*0Qe(Z@lwqQY;D^l^aaqj=TE zgN;72F8ihK@I2B-J|7k8qm;3NKIWp3Iu_ccUKB3RMVh3Qv&O|*E7m6+XAmh{duJ3S zvhZDWTp7~H`s|a1k5(Tz8W;SH<^4GDxGtn4%M%k+sYNh0720YgT%1`Eq?RGiiagB% zD<7cED|nIT^We3?{}Hye$KP>={@Cy~`TfB6+x-6E^NY}ZwGZ7{QlzngK++6$E77Siwt|p~Dp8eFSu6|EP5RDM z?}!ZAq)Z182zkEAGumJsmTo?xsLjW0eJ9>5C(#eOJmfXcBm8ITyU)F|K>_+g3oVru zQ1c*Emgjje+L+R_tuFj7LElD&eX&r#Z(&S~`W^i~DR+*UG89g@P@&&AE<{nNSXh(B zm5Ws+tJ>~&<6Jvj@tVCYOOyPLElvzEM0sJ>R*~a4OfSUY;zxt&f^P% zv&fuxB9;<*k^4+oCsv${Hc91s`$n!X%JXk-MO@Dov&8aXG?oyx*(!?6;MIg!b_29mxU_H4Rn$%kK@AoM&6&Ez~z}%y(65X3B73S%4N`Z0|(0@d|m3H z7b^9YjddYX?=i3BNhVxs9nE`^yA&>u$=NUM+l3#6?ZiPW4sgHm&@6uc@pxNbo^0{U z_8MG1Ho>o0h`&83(LB9ZMU|B?^xkCN3T?_%6cuhO<+9wxmDb*po^H8)@hfdU9(tj> zp3v=jQg+vSeS%+L3LJM{8btH-lsa;;2fw*1wN+Iiys1j)X;ug)b0?A{xZI@HmbM-r z-Sn9WJ$8>c)mOeZOhE7LgYyqFn(<&j4UdVC0XLEik;4D|Dl_{M<(cN^zsh$ z@EYt$;d65UJhvWg=H)HuYF~V7m*~fO(2qXi6jbN%#)K~NAPkB~@ld9fR7rLZJ1{wK zer<-{y)mUH9Di4U?@b&mi|}=`2VYjZxJWB_3rfMS%e{eIVg;v1#|hjzlZD#99GAz6>%P8 ziRV+DS;u}a0pBy#yCMlYOZ#>lV~w`)HqWpjH=#=$Tj!x`)M10Zsc);Go7mmv8GYS` z9y*`YZL-}_8OP%Yw=aIB?FT&cLSO#b#>pQ1la`$Rpv;UE+83BFty3bzUODn1Gfx`F z>EnGPuStD<=Yw7J4fw*a0LHp-JY86wKc19My-Bg8NeWHxTESJ7(7-scxzSaYW0k|E z>-9g{i+FUD1N3_PCz^48Wv$H*T+bmt(|!!!yLzHs|42TsPU!1yt*@uyM{Eu0n1u)N zV;Q`6LI1|)NsdK^h>HaBg5xWU$2!j`7o4++#JtRQyZYT9!={l!;~!po_k1}>lO{Gp zfJ5aa#tFPc_=i~j7$xH*6gkwV?w59G69I)i9DJu+Z~k_|PCrzyllDPJU%G4k=|Q(P z@W*o4<5a?U>D(w`Q?IcucFt5X4@x2O)65g=ki{+z(oMPV{bXD2tk>xMzfRD9c-YP7 zw7<3pf2V-qJpV-(rj%M+0Xe|$%n~d`QVf!`gq8%aLzWxTP5RDM4@9fLjQm~4nb=%L zA8cbEe4}1i~RNykLD)(|e`G#O8LYo$F8wfQ)b?=&COYlO`rgM+1uuK}JD3zn@PUvON9OvW*WGy*p8vuity zn2AuSDzeO3kB}nU?do@TNE3etnRVg#xCR>L;+aZS!B-KnFLR+8(Xc6kN0r3FrAkY5 zo3dT<&$!WT^yTr+xSsI$W?W4A!%zS7c)cS%IXhuDf;FG~5#|ijCbVSD1CWU9awUGqryQviW9qHQu0hkbCbpT-Y zaXrq*pF$ZLK3<=)$BWQ?vIpHBV^9|oz?uy4zEYL&ldw)qORPzfL>aH@aYFhSH@ggZ zQ#PBxkvtwGX#p29s;C69wC zL2_8m;eX-EatieAT^*j1~GH#ZZ7D3T07g<2a zQKwkaS%r0{&NCN#8J9&;&%@ogyfPu*S@=!b?YCB_N7o;RKH*^L%NO-|vxi<3S%J7& z32z8i5!{4Q6e@8dt281b+WR6n_Im(2PXAPMmOnl8Lq9N!kHf>sd1?{5H+uLD79Lxc zr3t*p3~>O7h*=R!1g#M0(+=}!9$Nam0sJV#laMuezJ)W}Aa5+=a-&Xk>+|+b7as%E zC*CYKFkYxvyykhNSF`jvg^kl522U%CafxU!<2Q`Qs@Rk&!)AnJTV4HL#@HDZ_QgUv zZh?kTzoXwL^_e!QDr6?Sg7>X4TMEYrQb-XlvuU3B>MnlMe#mV3{`;S_9gGz(Tl^)|}UB2+wc5*~WA0 z*f{QduhDPYnMZIO^hq2ni|{3%p3fI$87i=(0z$7Es|dJYCKa-*urkfH!*&S!9jA9T z?x(&xUhjzizj}XrUHV7Is86@R({a$q(w8sxePeK6__~Lk>9&toLF+hwC1`2nHa%Vr zz~Ake^$%2AAO863tiOh_)fWe1d+W&_IAm#nOD*9Y##|pH7J8dvds_Nf=D9DiOh8jD zzPPq)`1rFh0`b2ES{I@7N*_A09VFva ziQK1HFBS$n=2%;agegQxp{y#W);rhl()r0xwDEuY80ox#eixzhRu6j$ZOA|i7Gj8t zGcO391f~d~;?!uUP>QGx@$1I3+wRDpU5w7?=jO}ZNgr&5RFSkGohjxsV-XoCZC-(D z?C``I!f)l#9F4mle7=q6^S?j2)ZczUc$$gx5TKYqU z>K>2ndLO-8Z!%7WH4NmpOZsrI^yQ0oW>@s!t5Q&ZmkF%?5d}yC{EUF$U!ErwQsofZ z3HRXZ;}h|>!$a!ZI{NKPC-FapRNHy_1~(tO4wV&EEP=nlxNw+3MJN&*Oj_y8P1zaZ z)!_g8$J*nfjsH=-KNM|$sEHHa0Y7V?k)8$nt=jY>JB+ej^RU#jtz`EAM#b%y6Zn2$M zNLiZc_|1`BdTc^Z-dY*w=fN?4+V~IkpY-8i>3;8PQ|(g^Z{VGJ{m+QjeOUh=^ub9d zr71a{s)E5sgt)9XIrP*fRS2atzFw#Hl@DdT3Hv>7d=xnb2b@NsRE%{{4vj+osTWy{ z9Pc8}%R<(E_0|97KE#ueL5!I(xtqiDMZ^dggW1Gdoaey+`7DTK+#H_IKY@Jiyy>2)?lZfYSy2pFc)*}vJP9W;p5&Oo-e}p)9}?!!v{e^q+P`vk5!Gk ziZkctS2RPH_-hkc1*w^PV25AE}pxYcX2RKtF2aqi?K+1idfx#BA;vBk( z-6EG|MTAv1cf2m+TcQn2x?LZSJx`BQdq4N?jnoB3JH2k0iE)(Yc3@L2Z zBaa^h>m*6Bb)X$V93Q7gbWV=bLB0QR9{nyt=Q?CJk50-uM*I`eP-LZIUkP#1pfD)P zqGWtdBK>2M&I|7y+12fx_I%OMIY7T7I>+Pjv*Jc~`p^kol*m>R%5dCzxOOP0!p1@pUp5F0RKLf#>hNr;+eZ> z^-Q%I@!K1I%foLJB))OD^G=+Ro6p>I=C)sWl=eCG%;i#$40Aseaz~g$z#Iqe(Q=QM zdt2Naqs}t#U>&@XmJQ4fc^YS%zW{p}OtSZj*k4z9b{WnoHh=Ai&sjJyHowGX#FlE$zIwX)Hkeg?S>t+-cwjZHZ8CN`IS=4&f)h}rt752qK{4bgL_$Q^r z?kqmgC=H<3L1LbU9t-R`>(Z4-n``ok=|`Lb1w3y8lX1JozDIso+i#gwPs_G`r8)ik z4bXcY2TNZ*Ikryq;L{dma0VNYrPsu_a^Mq-bbJ_7Wz25L6s&KPS8*J&mpF(G`Q3x; zyZP0o%}1{L(oOlC1fKgiql;Qk*gw><#*)|63+s_&8<3Uf3Rz&DslTVe=LQv=h1gq4 z&#^A)V_wB|=mP1!0!+yBY4pK1Schet4?b+ z5l*|%G1AL6c%Fw7ZBmGl7?hU|)-oya-H8IdSgxk{04phqc0SzrJWZQ6D(s7ebeKN+ z7-N0L1n9yih%*M5D1JVP@5++G6-XvPP@Zj%a5_L=7VnJXL>t-QbTE}~I14A%XW4po zL7ZT-r8Zu;3QG`OF(p5zI|Q_Vpur|_#df>;rOh9e2BpTX9{ke$ahrPQu-K@O4+Uoy z=>+T->ZL1V@o99GVR68=iPQcsBld!W?~LQb-$&!Ftxr$?c6YrK|Ii+vMZJ%48T8)3 z!LkUS`#t!?MtiV~B03l%@EPL^2z=j)pdwZm2;Dh+A;5mg=LN{_3J&slfcu-c?&jlH z?-{3{u8weN^ZSj57vXOYn2*L8X=ItSzYghm9$$nCWGjI`q?rm=BJzctP`IX<#K#e^ zE+hN&@|cY`@|6jSsi^wXHZkT%fzS zwA(xN-Fp2G8s@G4$L&Oy{*&g5J#ZthQsLA8(#M!@nT&5O!nuX?$ez*`x#hM0c^dxO nvMdo;BCteYiNF$pB?3zXmIy2nSR$}QV2QvIfh7X>2Z8?s0jta5 diff --git a/assets/Powerplans/jiNN GoKu.pow b/assets/Powerplans/jiNN GoKu.pow deleted file mode 100644 index c8512026eddfa397e696e93342a7225aa7eb676e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 C=pqLI diff --git a/assets/Powerplans/khorvie.pow b/assets/Powerplans/khorvie.pow deleted file mode 100644 index d53490d8e9d962acc26fb25c5a56af294095c6b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 diff --git a/assets/Powerplans/lawliet.pow b/assets/Powerplans/lawliet.pow deleted file mode 100644 index 2eb13fc866a79d1d987f8f30db065b8abe5eea19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Dmi{}j diff --git a/assets/Powerplans/melody LowestLatency.pow b/assets/Powerplans/melody LowestLatency.pow deleted file mode 100644 index 1614e0aeb5ef066b9f738772ad16d00137a86c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Y3``lAGB9Oe%D|L?DFagm{_hz054P;gQvd(} diff --git a/assets/Powerplans/n1kobg GPU_Booster_Power_Plan.pow b/assets/Powerplans/n1kobg GPU_Booster_Power_Plan.pow deleted file mode 100644 index d3814acf649905ebdda4585be8cf3dc2c07b9385..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNZHykrU0)|Ibx5(Vq-ifMkS8P%muAB3?Cj30kcc56bv`t8f|49ki9NG3YoB~~ zIc$@Z$^%gp(e>;6i*GEx_N4=Ke2LO*?sH(D1N$7<=fFM(_BpW6fqf3_b6}qX`yANk!2dT6oVCkq6-^7%DcjuJ+gm&L zNObSlPaUM(0JXxSy~CmT!}aew@Ou;ghNJf(Tu~sFl>REMvnQ*Ey5M#Y{Vu zGpCBU)QQ(dd1}6hIWC-wqK$*~Me}XrIuIS)xQhBUTvXnH>yGGC(Oc=q!eVqEejOk% zQS_Dp{yjkVM+rr=am({5?FTd3SI-yT5j_?iiK+w%#{YI2^(Y~T7N$Jg7(J^}Db4rI z`yJ5v^0~V!9$f)x7hfDAaFJiqMM+{%ZaHmiR4%8lst3g^k_IgIeb7~v(% zMPty2C-Lh;l|7>+PfdzzaHJ=z7PfP>yq`3_uA;i?dhOeNZjLNaK23jLRY**G)IbIHBR za+PM4{u7QBWab7Klls*BKTKn7EWj9O%mbMHhaUe?fAQk-+L@=;oQI&A?P$`v-P!1g zR=cwmomVjSHZCfG&OiUpHoxn)Z8{gwX9EKh-Qj(gP7sr4)>#&F?wC|AV@9}?mC6Zc zOd6MIT=m5mWaq>;x)`oEaFLyV0rd_pDz%+ojSf}6zCk;WZf$>CJI8Eu**V%({-##S zrazd=_KB1r=gn`4qF7kF3x1ruYnB|}=*ZDOIbGh@qqbgrU_Hq93lBa&)t)w>??Ika z2l>vjr#LUH)umynfcKUu_be|>!L&(ST6*VrQOUQ7kJwb}qsrU(bTJLzO<)RzFi{~p zI|*kW@P+qX{Ucs_>ob;WsGiJ{jOD4dED^EtrOvS280y=^N59D&2xr?~+?na^UheSu zu1cP?7#*t?q={Yq<4?5t9$biqtcfm~n`*KFs%Pu43<)PD;sgWxbH1 z(4|18elqW~Kk)DW@#4sDogQJL_cR9;!m$OT3iHxCDqVhxyv&Li_N+5!nAAlIdE;j( zY^H2nO6e+ol0Kh?F7t1VBI?uR+r)1@_f%W{oHyIi{I#Au(~-kt6@O0y?U4^wEy-oVu$W<8;UZ;mViY2-OkuU7p?5Lni6f&L zF<%oe#5UslS_ki1)h~ifo9&6GwVb}vk<;E@pzp(vz5d%FZXBR}(EI3ZZM_e2Ie|9a z@(>;fqY@=SUz{f#^l?FPqheOT%&kc{91r!IHt!N}hf*;W{|NiW-MByiJqz!Pgd=hfFs~;#@VxQ zpO^!;lRnpF60@`{J(Goxnf3S?+eG6}7M$mV>n8A$9&dw3MC&HTroK%%Pw;p3Sd4Ms z^YHL9?;7n72IxTirNY4rOfmLvf!{Ob>@yz65HSKX#Az;ve?x42>PB!^?ru|QXN-?cYk%RiZ}sX)_5L6I=Q31fuFy0X?e`gS@XV$HMVbFl@!ir(qSVi;9rQJMrWKA zDosu46@rHG{@^$^erIu|h0$d1!*{m%weWDT_p)Q}@fi0#4Lz8Jdv^}p4mKfk4hHG0 zgq;ft!LTl;g@CCiLOYQXzp8cl?cf_ODuny=yFdr+|Dk);RlRBdBYjyZ?~IOP&q1=e zikf(}jx~hl4y~JdbrVWm`@7lx;{LyH$3wvm4&Cz&+CiDC*dvwTy+u4E(-d-Z2u6L1 zogQ`}iLBPWpfCSDoXopUbdL(itO~79H$hvUzL4ybBvUN&66->mm)PGZixncXvEy-( zC)K*pKZmdN)4}JULuK&#rAe4`dBLPlJhN$5EqA%dp;SV1 zViD;NhisN`1--w1Z(Hw4hV#%jX?LST-_s_@si_~cKH>H2e5 zi=UHr=3<+lwVrMO?-g8B0-YD$`jH=O#wUyQ>*(48ZT^OR&`kcy6kZjfiALaw^+{ms zg^dw3%Vyjv$sKR;_ox2#iO;=r6c=3|VWO#P?$+y~o0BsQ zcxAzNZ5i(_@b69j-iP-!e?PI+=G&(~7x?r?n@{)RJwAtDnFDVXpAg<9 z0Hb<$RDTlqo46?_RO7zb@fR1y@;#nT>}M9AcY!;|mv}{`tH-=3Qkx-9h|MnSCrcFg zOzCQ0Bx#YvI@JmFYvP;u>-#?2=IfPzZnh%<)pX3xf1G&y`Ck5S!|!fjAkrbiLgjx! zhopYf@qM(z=X}iP_r7wf7vIht_=IyVH5wZ!qhLJ=_StzXz-P;?E|k_P5nX(=jjQ>$ z+`+eA>CgJRYdu;3Gj_q7E!07;e{cJ2FYXP*aeaJEESFA}j>Sa*KUa!`85w>bwsnWY}NRSxeP(|U)^jIk-wMcl<)DObq2 zTFaVpCm&zqd+gn_@cq+~kM`obJP$sb3#R}mHE^9$!;>1RI789}*%N~$;Z}TZjPHXT zxvy4o9v+>g$KCiduG+tj_JQwzar9%obiEFL)TbBHI#Xib3`IaNE;FZ)Cn!0i_$d}~ z7H7UBJ!tZM;*W3j8v);mo13!o}7(t-Ji2 z=!NU(g&xcI-dBIM7vDALL!W%-z;}yXP2~I9ueJHNxJUl!oS(eEAE$~rHr~in7E0n= z#0ko~Daj1yWr7$jMcmlcuBxL5A?@%WDDMF&k(jFu8TdEoV>`e*-ahCPB+hFHE)y86TbajXMeZ1NBiL&(7S-S zsRTY9djFsF^63(6v(Miki(lx%X4t6aw3$PwZ=6=l=O!t=FSvG^2=41Wx-=2$~E-_h5*`b`iJHh#t@xn4Moh~!1f|;t;=P>WTocT#V>a;~0FGKu@($id zD?Qo5ya8u3|1k^a#`pH~pKR6OgA^t>vV^kK$gFV~lY@8VMH$<&&O83+rG!hYb9(EQ z|2!PgH$C*d&ml}m->%TN2lR~toh8$m`z7S!18wfMtcr5?bQVK7N*r4# z%ArvXj(Ch9HrWJigyq`z!4IZ+MjyD8SzhH3YRcOG10R0wixa;`V}wGqQ=xV55YBY^ z?1j#JjK~q~TRIoEIYJSfXE1#Bgwqb(#@^G|w4S{QS{9MtrxI{9zaN-|<2w2c(T8wV zo$(LLMx~qdo6IIDII^&ah6;_37o_J{&vK{{vgNX{1&(p+@BRqK5VF38i?AOW^=<0Y zA;_fG`|fuxv+{(#WA}bc-^X|R`Fwc}KIa_LbvSj0(?mW4KAss`xozRKPK|>P9sAFf z@?dlsXGBEbBE}}(?4qVIZh~&(ylc`+Jgn*6+q>Pl!K9th?R7)4AkU_K&64L9bhS^O zgfXq6f1t*C5hKr>BjSbmtJoQm_L$z6&(+_pxiKAwJAPo6zdqcN+l@+3PXpg3E-Hbp z&#$)q2H6Ld;Ug2hB>fC@ov2^8{*#`Pjh0s6YavbN1u-%`rof>{sS1dRo6^TW_t0lXkiz2UhX-+Iw*ZhKov|v&r9CbZ((f;BVb~iXV`LLi|%A z9?Fo%#x4NgaUhdsGdM-7bm7Y?FL@Jm(sv0OV-lSM(3_xdlU|zRPF(m(vO~v@x9FX; z>wZ5soxTBe7!{Hk75YhaSB{|_)ucb<+e>6x@O>weT(acI#0idNDB(EmfL&xRqqg*| N^nTgr!2dM|{s*}sG@}3j diff --git a/assets/Powerplans/nexus.pow b/assets/Powerplans/nexus.pow deleted file mode 100644 index 3dc19fddb56332f965862599d8fe8169dd32f479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHMPlz2!8LyX3*0_JNlXcZ33O?6>QMRPIySl3y54t485!~Iu1fn)vtcvpZcn@5>Ce+V~qZO_Xjg`{|E2%==ll!QK9EPJ>Z9)AGiGe$Fi5v?cj&s`X}xNs27?xo*HzY z{Y3M=2k&#ZG*}yapB;QZgxU_CkD_+E%F9e>o@dH&SvkvVAp*Br>pH4vGm%sGTOV$0 zTsX_v{*N-Y4!Jb(G5qw{-Z$yx(+LSv?t&EgmB-q#i4H zGHf+{B`GnDJ(naod}D+0eYBJ8X5?9nIFA`g=5a{+68c?0?>^?Ex#=mOKS?~z-bmlS z&zf~Tlit=h*Y(q%oLpH5OMdZA4co*MvY{HNc0CQUKMH`w;}Wb5$0r> z3Q7NqxKX|SBx8lBeV6{{lP4#_ldehMMAr<)wEAzpBF^Dq@8E^>U#UWe+({m^DY-N< z=QgVh4?>Eds#=v5Iou|WdDs_?Y5e8@$+}G6NoJ27U@sqkJ*=)SES>)Pk`I?QHXZ=W zJ&ftX-A`ligEF^UyY6J!(pz0=ao__XsNaHB)8@7{zn+gOCJf(nf={( z4uP+>5QkKV$61WsiAU0n3$^7oMBvG?n%8xnaihx&n@}D_lq7qYHg9`Q&O6}P3aWS)hxrPY~MBzu@gdT)5t zBRrlT%O8!Q(xBVepzwMLNeIO@YD*vSGwLt7EWIufDvMec9KjL(BJz@Fg;83@N+EjE z*t>&xN&29enRJaGikI)={Q-4CY2xK=29sp$|0u2v>+hi-oEXvHYg_dEu-{wk#FjYo zR`T;>(BIr3k?gX|J}4e+qwExHyVWz*JNk`Lg_6*FRu=+#7dh7+`=rfnu+|g;_DL!v zf4PLzkLuYY3^4ew+Hwz`we1UulzL$VazSh>P_J;*!*%vdUDv6cO=V>71L= zOYHB~>L^sm^NMf}>x14KfBM3RKDzyB9KPEV;PW!nIu;o(V+>rnkRgKNHM51rKk0<1 z3C}&OdNJ-{Uj;|Brn{(VY&Y)S2<{&}+r?`ia*0POcY&3NrDv*lw1-fMEQ2W^Q9_*Z zHR34tOrDo{T~*e2QKop`HSb!J9MM!;^m%6zz7TVx3V~oh$BwvauGy7UgC>u>2fiGX7}H zFi#KT%iM_loJ{_F12`tdO>yShB)FX`ZH4^XWj^BkS}5So4EMnmr7JRB>dm;ahBNg8 zaH0=3^)0Mn7(Xqr@!NO)wl%)|aIL!^8;PU6G4i(C4dJ+ogD2GjHbV6}aHaDEaZvZwI{>R!A@51(_p%hemDQH);>IT@_Z!mty$NuWY*h*nDGG}?h zbJF{~b_I3~m5t(llz+6m4#&Z9dcQvbK4tS9hmeBX!r@-Zs~VKn5y`faS(!TJ6rK8*2rUXgi7PJ;-NN048aNQ6MxsBzs2|zJBCsaKywM$12*>J0qP){J%H9fDeoz7gUp@c z0nMRs$l=1nBxEKlZt4mdTLkg7hiSWQ=LeGA#Dh_L-WoTC`)$oXcejpPxJcY-9mJ6; zkYB`7*U%3(H6sPmB=2#h8I&%4+84Ux8r#1${@?D6={FMpoAcc=@U78hCrX!o`e;X3 zPGt_cE=*+Nyh)W=W$QBXs8of0x{_SGvf!f1DitM6t4{HzwL7}opgSr$n+u%z>1;`7 z*sC}&(OHag&m6fq>mQ!nc0{{g%dC8v#ftiF1HAIM*43Wp8n; zt1MkKrTBFZYo>GEA=o0V=_YC#+l_ngNL=gYwU2cZk5tycCGkqnRJXj2()Mp&WQT(eX|LHHE`_8|e(eFoz3i>_LkInIK z{d}14FRyHU^T|i=fAAZlzd84x-#Yi-^Vcf-U+40?`TDijAEwUJcb9YEi=R&3S^nho z?kNXOIdIB>Qx2SR;FJTW9605`DF;qDaLR#G4*Y-Pz@_}vD-EW#<;Zp(Ja};Bwa++z zGWzHv@(m~#w;nt-$$s&r@%1BI-{a4X$@2@7=jTZGC%>N|jVHlXI`?P#Oxe#-$6K$B z%Tt+uK)gph<2?3_+oazkDu|9poWFK{L>Fu4oTs@uBVruq@ezMMq2C`770&j;{U!NF z9r>I4Yfm|!bDne>2MOi>m`eRf!-=&e_qHeZ8dpmDdHeSsINyHliH1kF;I66{lV7Ob zD&Bnc>a|zj7&njj@g*m7wwza;*PTBkj-0Db<-F*^}+UgOzia=qgG0>7Sb@{f2oka-I$vt;KksZf zFLPfdJjau3{1Y{!rq1#2H!1Hb_ut~~r3qD+o9C}^=i21n$a&lGDQ6tU{CHo}uD4;v zlpmje^VRA~dHIjOoV{Kt=K=iKfT}-gYQ0E#Z#x0^?{k0qjN@F_i-fWKj+}r0ho|3_ z-x2rE>LKCWkB;S6zj^h6WKHQ*eszBuB)^{L2UTSfH}#C~nmj7qG*1#Y3ZpvDZ0;K) zG8#HA<5@fVUdJ&-k}jiTe?p`3t4;;oI{(;FKhiUWj}p1vgochhDC4wD+$_kT!=#0q z#@2J|)Grb*3j8AWlv(`P=f$&+Lp$$``TGHtwXNr*jl4bk{7cofYp-5;L%&k1*RY{yCQQXMG zA#~gWqtdJI8K<|n?!xhd;_ZtM5p?dtlU4YvSA{fH<>q;6z*ky+Ri5jWp`S)oUBq!H z-n4Pt<$Bz1(G#=n@!|D$KD{?>-`RZq+etX?^}tbvWdymUTljVDn!r?US{5Oa>E~5q z!_e~^d2G{n52bw)^zHSbFAmelw+K!Ym#zs-O6>jFBQMq^yzv`-y)w6 zk+U`ESGr9fS9<4(VSK&M`>W)m%<|X^V=0)ra!s8Vt_`BfrH7Xu3Lr31+)X#*$XtIF zop-5sh#cQQS+1lrFVZRqts9qB>YB6)-83jl*A_u;QWNJUY4qYA^}qevqW)P%=T+(* zLZ|J)&$>vXtTu=M>I40aFxW84T%^Je{W34;kmBb}=)7E?buOW!q&GJZ1nD9VouWQ_ zNGh4Xfvzc$tqtl{TOBHe7dN3@b*ZdnVHvIw8P(quE>bTfJkW2YQ~qDjjk)j)*IrOt zKguIFiwgQ*VU3&Df#=31E&V!)pw;R%>1&Nk7m(G^OH0Ya{r4~D^A=;{G>8TT(RaQF zpEc%%RZ=oO#pt!5@?D#hp_^o08Prh_7DcJD+w!2Y$Ng`sDyk1ayY(n1-QK1Xhv>%O-b750n zrK|dppB8y;YZO9|pvNLc=CsaGx*46luFBFY8eF2|;K!MA`~-c^Mq!)&n}5zMh5F7o z?|gff{+EkG-rM7yWpv+}V4Bh@dK(zVV%j3=+lMLDSch~iJ_r@k=FIH40-V@>0Kl{ zP4X%*L19r=Dr*^E&V4{n#zA!{h%e`9+iAVi=L>wvLX*o7Nvb%<8VM>lOH1j+Jg(|6 zvGjGl+vbbPp2}$-zI4&&^`I|^$~yB+>PBUW9iPx{d6eZccf%x)a_ief^fhw-LHI-T z!6Z4lf&S@BxAO1PW-4dO)A$C+=!cA zRC_@fFUVD!zF8cz?by!uF!Fc12adc9^F(&Br`e+^Q~G6=2X5t;7;YKnP+W?hJIKxD z`aRBd`l95|qio6U2)PMp(*siRWEc5VnU|2Y(u{Sb-X9`I2R-Ok*+lD>QBh#eV_M`k ztlYYY{J@Wj+%pZ`4Pv%S#*KA_!BXSx~@K!wVwU53|IYI!^E! zsOUC*ZM}1xe29i2az2{mCvkQedjv$kl}_cnQ*UQUm@tWR{WL^AFqB+d;_t`qETX_ywuT=9}B2%34I+F|R%%wLGYc*ynbr)T9%^i6Th>z6j( zcD{MMeep@AulB*0+QKs?bKyVZbR1&pMs%8}K>DiERB>WOkLbHxKjz%R?J9g1;kS5W zk!wR44!FskwsExk)jZz5I3!p1ddQXPwl&m8wdU&u^Paro($7Q7e^YqJ`56}FzKuip zr|s6KJx1i0eW!5oBLn+=6??u*OtEzH6%ji%9MPR~r^=dO;|4DGhetHO9 zclh1LA^N6x=W+CO<@!F-4Fa+lw@2$dFqGL^p_6uz+e_kLL1oNb*2pCGjz?MPN&kmsDa{Y+2NtwcV z0ebXq8;9uYl8df<^LUrx8&U3be6gPxC_iiXLz|vkvWIz~d(-FhcBpLSQ2zb6VoAb8X^kD4U;!m@j)&hb z(s4f*Jr}WgwuuV5-h}5nM3r&K_4-fu*Qd(A@yW^je?)-;=Ko!IFF@NWyh)6;R%bB0 zWXaN0Oxf~?odB4%X^N7?uTA^ZHH3)Mzt__|T z1JzYNrBCCVN15XPXoP%#?GCBRP#%RY9P|CFD_jD})qn|Xl%nHHzrpgb^obsY^T?bC)NiFzdFh&esxKOrX7JNz=s~>o@)yYu zjwM(GF^j{Eye#XN8}x^1P+bb5cwsuFxxd)H!f>MT0X>Gmqkfj){XvE zKa_oTm%8-MP(HQw+6da-HHLDOrE3hHB%20_TU1F7|EfHUN|h}>UHTOJGKhMo%_p_V zbbLClU$pbh_Y0N31-& z4#Bqp&sX9riYSlS*MeJ(einxb?TA_^t0Ihw(6`Z|Kjf%Ap8oD^d))ed8*d3yA0sON zaqZjAH(TDY_Ph$ePXMoxEOg`sDJYLD^2>LD%6^69q=K5+}evo-tZj4)30rSc_ zOPN2*!lH3;uBWj#p0Bj&6&>UDS!~Bc=)L;$juL0Qh&(?@c!*uKK+(HAVV zD-6MFfA&Q1Hg;qi?{V~Y<(qGB;W_}*8Z-{Ywf1wXaf!!K#wvc4C1~-G^@WtSb<5n# zZIM`;gw0UVruVr1)0J1Gc-6UMPk>J*1gsQp}JUbCO8EL=ZgsIcr> zvy1zkj@oNcKHIp|4r4j~`r$0D|9DF6bpyWNAsVmF`^ur}9`)#VJ#a1PlOuW;{eFGv z(>T4}hdwQc7`!!pA-_!>gl?Amg^Ov$A}GEFrqZHkIX@Ta>&iFF_hJ2g-Cf-;)OPHO zOWdGhsmd@5b~6Si*DGo~4~faMV!WTi!2r!L&yd4Q+lLz4!O$XZi7Ge|JcK+Q9-I!iTe;?a{tWK`=O&591EN z@4-wA6CY!?%Id_+)3^$bmD73oYvWP7jrGH#JWD^^W)t%MWFztrT>B@3s}Ox%^gax( z>(F6z`}hO;Rf=mBCeQw zM+@`KBRO1bw>H1p`R4i67l(Af4m*5S*^efUD)u;e%nE(^2|_%?dBpY>uk^hnDOtj> zVrH8@>FO@|J4F6AsdosS@}i#roeTVK(>c#a(Rr47`_iehw7GvJop~CR2@H%fdb?ql zo0}Oeiue(`3NohFi++eBef{)zXX(84ebKo)kj|UGw3^N&$1`HBR;9G>pk$L6qi4-# zro{MBP_Ws#U{vbRqaXXPSv~r_?}*Nw&kf_}I+nz0ewJ)=Wx)V(#Ca0yqyXDeT>017 zAQAiQep1uyQU7#5?s5G`dSgwxv9V%?(d#fytfUv7c`(pT*wDd#8p{qL6u%p4t9F=anax&J3yI|TIh)c3(d&o7?8$&yeBi6UI&lLYICYQ?|6>AXr z2(SKpJLr0fYo6XA{ca0OXcgZPghKl@-I&t`_@8k?rwKdsQdAhezq~|G&(n9DoV5Ag z&NnOfW4^CL-$rAt4U?x0ETI#?wV?Of^v?5r2rdWu)*EYW7_N0Vy&4xAhav_{&%-Ni zD)xai+d}Y62P_z}yC7i{>F(F_?a+m59>4nko-j4iFbtOir%wRa4{g4?3#Pq+xYYl5 z`{1%POpQY{V=oBp<>R3>HgUrwHI?!4j@H?Hdp*vLuKs_h@q&8$>H*QY*TYUoSo!jE z_Fb^whJDW^Tg@5DjGK909YSSTbQ_x$@Go$&u3|9Q3_{Lh~*&-b-6 zv$$UTef5{K(B~0Tw*Bb((gpnAM9v*}?Q)LzxHv!6dl%UWvPC%xecN69+4|+x{f_PW z%$c*q#jPZ}%fpm09{!lzOH9aaC3fAY-Zs74TzAQ5SH4;PO!PnWZ4ecP;M(|=lfX4T zAK69kY`b^kUxv$pzIEbITvbLg52y86^7`CtIw{cBMsTW72|m35GCs* zC9cp^JNdns?WU>c6?VLC+2(h9Tt1H9?R@k67OoNWT_6s{b>X=lxKP@*kbbCBEt<>n zD6u!HG~)m%yC`jWtbI67ZyWz{aw%MgU>ZT=5L{=-eAo+D$$o8LyM$8glZgz{clD1$=)Fh1L*(l2^F8>_SYM-|U3LvN>){rPYbXwETyWT_jEi3d@P7;XZW0xS;JW$3iQvjr?+*jl2J~$a6^7v2`nA=#WQ$o&S-DKbvCm^R<7Oq_ z7w|*vz-4DrWEOC>PxifbENd6k~ci^vOY%{ocQP^xub_Jgp0 zB@DAXtD`iG#&*KmJKDbzIQKs}*_ZLmIKBNTQuYMgV(nJxHtW?|TfWL#lhO;U4{D8a z#M*||z78kp4c3Z7)|xh1E0H~KC+iC5@s${S`{(cxD;?o;Hu!=Ml;TUhj#g4?nX4Fl zfjf+?3<<1&lHwa$!}}v&$}XvV7CZP2lx{LwuvIpfmqO_pb0gXFw@Edp*{3}D>~^uA zW$W%>Zz|oymPxRsEaSe$=rzU}rK9ttj8V5pHAZYdONvgth^|OY8S=T5#-87sq`Sza zWN3$W6wj~IHkxzX|8-K%Hr~eGFE}@P{R`~Nv{iZOi{teCZ;;l$IcU<-zw?{yAM!l! z#+NuZo`j9Bs}YP7{xhWiT!Lq-P#V)RnMtx{_a|nUuEHf9oba_8w~pAH&T(oc=!;8oWxu={m&TNg511fVs5Vn` z*f;YqqDyAo?49s2Ox2xd^uT+$p5mIPS8}yRz02qvsh~+9TN4`j??GqGS9$o{ip~X~ zs!YNc1FV)=`2t47*(lm3UzoqBswtiG{BPv{7&`Ty!rk8*w%=A~0rE7e`QSyOc`P3} z;VgT|{LyD7f(NY_?*U)Np9AQbhADs4?+#vE-Hv{eWm$kex4F(0>!VQ_=U!YsKgOvT ze)?6Vvei!&%WHS>SnTWfAF{Au?~J?!FhSH5|<8N!df9{j*X z$!>kT)rCb=I4{V2mvPPI^n@w$f@8|byZpHR74|_8#Sh`%`n_3s|G&hi{&3g>U(9?m ztgxywgE5aLLe7$i?Gt!T5=<sj?pB)>N|LOSiiTL zWTbw~2k1Br%TQyRlY}w!gCzncD{MM%kYgRW$L|4*d}U6 z{Z@Kol6J|DbUEu}?COqU&WrmTmdo&5Xq$ad=z9%(l}%+Wt5;*eG^j2GVLR+GuKV~* z_<{lFO%lG+U=pUPe4>tFo{z)v4Xe@%Gpn*CKRPFOU-H8{ZGNi5PW8+@pEfnQJq@QE PIOV`82TnO~;vD#2eVjkj diff --git a/assets/Powerplans/sapphire.pow b/assets/Powerplans/sapphire.pow deleted file mode 100644 index c2a0909c2dba2f19ead4bcc2ff9276e2ddc631c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 H6bAkWpp2bp diff --git a/assets/Powerplans/void-v1.pow b/assets/Powerplans/void-v1.pow deleted file mode 100644 index 3b0c6c398017e76834c248e4224080a4979efcb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 Pk^)N#EGh7RLxKMR!@aw0 diff --git a/assets/Powerplans/vtrl.pow b/assets/Powerplans/vtrl.pow deleted file mode 100644 index 91bd6a61e4cf939a6993b3d4f8b2539e47775537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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

    5k-_n;@^oB|H&c^DjW?sh$BI6>cOJ^sb* zC-3{f3hS>U7pmk&axEuUuvW+lNisGD9vi4$}(@>ch|92uU-^< zOY)t>w-Dc0ci}6%?|DaP+@*|38ZnW+Mc<_D(Dt^VC-)+*Hfhs~bAnJ83hiza+y%Wt y{}XnH7+WeG$`xmMtPGQJ6MBW(0P%l`qR)z{?! diff --git a/assets/Powerplans/xos.pow b/assets/Powerplans/xos.pow deleted file mode 100644 index 3420af362a9bd32734dcdac5412b7b3e65c4c25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/build/build-installer.ps1 b/build/build-installer.ps1 index 21b400d..41967cb 100644 --- a/build/build-installer.ps1 +++ b/build/build-installer.ps1 @@ -1,5 +1,5 @@ param( - [string]$Version = "1.6.0", + [string]$Version = "1.7.0", [string]$Configuration = "Release", [switch]$SkipPublish ) diff --git a/build/build-release.ps1 b/build/build-release.ps1 index aa50b73..1b63660 100644 --- a/build/build-release.ps1 +++ b/build/build-release.ps1 @@ -1,5 +1,5 @@ param( - [string]$Version = "1.6.0", + [string]$Version = "1.7.0", [string]$Configuration = "Release", [string]$Runtime = "win-x64" ) @@ -62,6 +62,7 @@ echo [1/4] Closing running ThreadPilot processes... taskkill /IM "ThreadPilot.exe" /F >nul 2>&1 echo [2/4] Removing startup task and startup registry entry... +schtasks /Delete /TN "ThreadPilot_Launch" /F >nul 2>&1 schtasks /Delete /TN "ThreadPilot_Startup" /F >nul 2>&1 reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "ThreadPilot" /f >nul 2>&1 diff --git a/build/package-release-zips.ps1 b/build/package-release-zips.ps1 index 1b69016..2aa575a 100644 --- a/build/package-release-zips.ps1 +++ b/build/package-release-zips.ps1 @@ -1,5 +1,5 @@ param( - [string]$Version = "1.6.0" + [string]$Version = "1.7.0" ) $ErrorActionPreference = "Stop" @@ -35,6 +35,7 @@ echo [1/4] Closing running ThreadPilot processes... taskkill /IM "ThreadPilot.exe" /F >nul 2>&1 echo [2/4] Removing startup task and startup registry entry... +schtasks /Delete /TN "ThreadPilot_Launch" /F >nul 2>&1 schtasks /Delete /TN "ThreadPilot_Startup" /F >nul 2>&1 reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "ThreadPilot" /f >nul 2>&1 diff --git a/chocolatey/threadpilot.nuspec b/chocolatey/threadpilot.nuspec index 45336c6..f1388b7 100644 --- a/chocolatey/threadpilot.nuspec +++ b/chocolatey/threadpilot.nuspec @@ -2,7 +2,7 @@ threadpilot - 1.6.0 + 1.7.0 ThreadPilot Prime Build https://github.com/PrimeBuild-pc/ThreadPilot @@ -15,7 +15,7 @@ false Advanced Windows process and power plan manager with rules automation and performance controls.

    ThreadPilot process and power plan manager. - https://github.com/PrimeBuild-pc/ThreadPilot/releases/tag/v1.6.0 + https://github.com/PrimeBuild-pc/ThreadPilot/releases/tag/v1.7.0 threadpilot process powerplan performance windows diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 4de73e1..cff1927 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,6 +2,28 @@ All notable changes to this project are documented in this file. +## v1.7.0 - Gaming and device tuning + +### Added + +- Added Game Mode, USB selective suspend, pointer precision, Ethernet power saving, interrupt moderation, and supported GPU MSI Mode controls. +- Added guided links for Memory Integrity, hardware-accelerated GPU scheduling, and windowed-game optimizations so Windows retains control over security-sensitive settings. +- Added per-process I/O priority and persistent-rule support for memory priority, I/O priority, and preventing system sleep while a process is running. +- Added device-driver registry backups before supported Ethernet or GPU properties are changed. + +### Changed + +- Replaced the previous process idle-server action with a real Windows power request that is released automatically when the process exits or ThreadPilot closes. +- Game Mode is now an explicit system tweak and is no longer changed implicitly when affinity is applied. +- Removed unverified third-party `.pow` files from the repository and release packages while preserving local imports and previously installed Windows plans. +- Added user-initiated Discord links for community power plans and support, plus a direct GitHub Issues link. + +### Safety and compatibility + +- ThreadPilot changes only driver properties already exposed by the installed Ethernet or display driver; it does not create unsupported properties. +- Device-level tweaks require administrator privileges. Driver and firmware behavior varies, and some changes require a restart. +- Disabling Memory Integrity is intentionally left to the user in Windows Security because it reduces system protection. + ## v1.6.0 - CPU assignment strategies ### Added diff --git a/docs/CODE_SIGNING_POLICY.md b/docs/CODE_SIGNING_POLICY.md new file mode 100644 index 0000000..3770320 --- /dev/null +++ b/docs/CODE_SIGNING_POLICY.md @@ -0,0 +1,47 @@ +# Code-Signing Policy + +Free code signing provided by [SignPath.io](https://signpath.io), certificate by [SignPath Foundation](https://signpath.org). + +ThreadPilot releases remain unsigned until the SignPath Foundation application is approved and the integration is enabled. + +## Scope + +Only official ThreadPilot release executables and installers produced from the public GitHub repository may be signed. Pull-request builds, local builds, forks, scripts, and third-party binaries are not signed by the project. + +## Authorized releases + +- A signed build must originate from a protected release tag in the official repository. +- The commit must pass the repository's required build, test, analyzer, and packaging checks. +- Signing requests must be created by the GitHub release workflow through the approved SignPath integration. +- Maintainer or SignPath approval is required wherever configured by the signing policy. +- Checksums are generated only after signing and are published with the release. + +## Team roles and approval + +The current repository team consists of one maintainer: + +- **Authors:** `@PrimeBuild-pc` may contribute directly to the official repository. +- **Reviewers:** `@PrimeBuild-pc` reviews contributions from people who are not Authors. +- **Approvers:** `@PrimeBuild-pc` manually approves or rejects every SignPath signing request. + +No signing request is auto-approved. If another maintainer is added, this section and `.github/CODEOWNERS` must be updated before granting repository or SignPath access. A person must not approve an unreviewed artifact whose source they cannot trace to the approved release commit. + +## Account security + +Every Author, Reviewer, and Approver must enable multi-factor authentication on both GitHub and SignPath before access is granted and must keep it enabled. MFA status is verified manually when access is created and during each release-access review; it is not inferred from repository API output. Accounts that no longer satisfy this requirement are removed from the project until MFA is restored. + +## Key protection + +ThreadPilot maintainers do not download, export, or commit the signing private key. SignPath controls the signing key. Integration credentials are restricted to a protected GitHub environment and are never exposed to pull requests from forks. + +## Verification and transparency + +Release notes identify whether artifacts are signed. Users can inspect the Authenticode signature with `Get-AuthenticodeSignature` and compare the published SHA-256 checksums. The source revision used for a release is represented by its public Git tag. + +## Revocation and incidents + +If credentials are exposed, an unauthorized signing request is suspected, or a signed artifact differs from the published source build, maintainers will disable release signing, revoke or rotate affected credentials, withdraw the artifact, publish an incident notice, and coordinate certificate revocation with SignPath when necessary. + +## Policy changes + +Changes to signing scope, identity, or approval requirements are reviewed as repository changes before taking effect. diff --git a/docs/POWER_PLAN_LICENSING.md b/docs/POWER_PLAN_LICENSING.md new file mode 100644 index 0000000..c076151 --- /dev/null +++ b/docs/POWER_PLAN_LICENSING.md @@ -0,0 +1,36 @@ +# Bundled Power Plan Licensing Audit + +## Result + +**Resolved for 1.7.0:** the 89 unverified `.pow` files were removed from the repository and release artifacts. + +The files were obtained from public YouTube descriptions or forum posts and were available at no charge. Public availability and zero price do not grant redistribution rights and do not make a component open source. File names that refer to Microsoft or third-party projects are not evidence of authorship, origin, or license. + +Under the SignPath Foundation terms, every component of the project must be distributed under an OSI-approved license and the project must not contain proprietary components. ThreadPilot therefore no longer bundles third-party power-plan files. + +## Evidence reviewed + +- All 89 `.pow` files under `assets/Powerplans`. +- Repository license, notices, documentation, and file history. +- The pull request and commits that introduced or expanded the bundle. +- Build, publish, installer, and release-workflow paths that copy every `.pow` file into release artifacts. + +No per-file source URL, author permission, license text, SPDX identifier, or provenance record was found. Every removed file remains classified as **unverified** unless contrary evidence is recorded. + +## Implemented remediation + +- ThreadPilot retains its local `.pow` import feature. +- Windows plans that users previously imported or activated are not deleted or changed. +- Upgrade installs do not delete old local `.pow` files from users' machines. +- The Power Plans page offers an explicit user-initiated link to the ThreadPilot Discord community for additional plans; no third-party plan is downloaded automatically or included in signed artifacts. + +An informal statement such as “free to download/use,” a public post, a video description without license terms, or attribution alone is insufficient. + +## Admission checklist for future power plans + +- Original source URL and author/rights holder identified. +- Exact OSI-approved license identified and preserved. +- Redistribution and modification are permitted. +- SHA-256 hash recorded for the reviewed file. +- Any attribution or notice requirements are included in the release. +- The file is reviewed before being added to any release asset directory. diff --git a/docs/PRIVACY.md b/docs/PRIVACY.md new file mode 100644 index 0000000..6531831 --- /dev/null +++ b/docs/PRIVACY.md @@ -0,0 +1,13 @@ +# Privacy + +ThreadPilot runs locally and does not include advertising, analytics, telemetry, user accounts, or automatic log uploads. + +The application reads local process, CPU, power, device, and Windows configuration information to provide its features. Settings, rules, tweak backups, activity history, and diagnostic logs are stored locally under the current Windows user profile. Users can inspect or remove those files locally. + +When update checks are enabled, ThreadPilot contacts the GitHub API for the official repository's release metadata. If the user chooses to download an update, the release artifact is downloaded from GitHub. GitHub receives ordinary connection information such as the user's IP address and user agent under GitHub's own privacy terms. + +ThreadPilot does not transmit the local process list, executable paths, hardware inventory, settings, rules, or logs to the project maintainers. Information is shared only when a user chooses to include it in a GitHub issue or another support request. + +The Power Plans and Settings pages contain links to Discord and GitHub Issues. ThreadPilot opens these links only after an explicit user click; the destination then receives ordinary connection information under its own privacy terms. ThreadPilot does not automatically download community power plans. + +This policy describes ThreadPilot 1.7.0. Material changes to data collection or network behavior will be documented before release. diff --git a/docs/README.md b/docs/README.md index 6d1c8e8..094ae98 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,7 +18,11 @@ This folder contains release and engineering documentation for ThreadPilot. - Packaging guide: release/PACKAGING.md - Release runbook: release/RELEASE_RUNBOOK.md - Release notes template: release/RELEASE_NOTES_TEMPLATE.md -- Go/No-Go matrix: release/GO_NO_GO_MATRIX.md +- Go/No-Go matrix: release/GO_NO_GO_MATRIX.md +- Release signing guide: RELEASE_SIGNING.md +- Code-signing policy: CODE_SIGNING_POLICY.md +- Bundled power-plan licensing audit: POWER_PLAN_LICENSING.md +- Privacy policy: PRIVACY.md ## Release and Governance - Gitleaks scan report: audits/GITLEAKS_REPORT_2026-04-15.json diff --git a/docs/RELEASE_SIGNING.md b/docs/RELEASE_SIGNING.md index 8d629b8..6d79ed5 100644 --- a/docs/RELEASE_SIGNING.md +++ b/docs/RELEASE_SIGNING.md @@ -1,35 +1,33 @@ # Release Signing Guide -This document describes how to prepare ThreadPilot for signed production releases. +ThreadPilot releases are currently unsigned. An application for SignPath Foundation code signing is pending; the release workflow remains fully automated and unchanged until the project is approved. -## Objectives -- Authenticate official binaries. -- Reduce SmartScreen friction. -- Provide traceability for shipped artifacts. +## Intended signing model -## Recommended Strategy -1. Use an Authenticode code-signing certificate from a trusted CA. -2. Store signing secrets in GitHub Environments with required approvals. -3. Sign binaries only in protected release workflows triggered by tags. +- Sign the published executable and installer with Authenticode through SignPath. +- Use the publisher identity assigned by SignPath Foundation. +- Submit signing requests only from the protected GitHub release workflow. +- Keep SignPath project identifiers and organization secrets in GitHub environment secrets. +- Require an explicit SignPath approval when the selected policy requires it. -## Local Signing Example -```powershell -signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a "ThreadPilot.exe" -``` +Signing will be inserted between artifact creation and checksum generation. Builds, tests, packaging, GitHub Release creation, and artifact upload remain automated; no private certificate or PFX will be stored in the repository or on a GitHub runner. + +## Status and rollout -## CI Signing Steps -1. Decode PFX from encrypted secret at workflow runtime. -2. Import certificate into current user certificate store. -3. Sign release binaries and installer artifacts. -4. Publish SHA256 checksums and signature verification instructions. +1. Complete the SignPath Foundation application. +2. Wait for approval and the SignPath organization/project invitation. +3. Configure the SignPath project and trusted build policy. +4. Add the identifiers and token supplied by SignPath as protected GitHub secrets. +5. Integrate signing on a separate change and test it with a prerelease tag. +6. Verify the Authenticode publisher, timestamp, checksums, and installer before publishing a stable release. + +Until those steps are complete, release artifacts must be described as unsigned. Do not enable the legacy PFX signing path without a separately acquired certificate and a reviewed secret-storage procedure. ## Verification + ```powershell Get-AuthenticodeSignature .\ThreadPilot.exe Get-FileHash .\ThreadPilot.exe -Algorithm SHA256 ``` -## Operational Notes -- Never commit certificates or private keys. -- Rotate secrets periodically. -- Require maintainer approval for release jobs. +See the public [code-signing policy](CODE_SIGNING_POLICY.md) for scope, approvals, and incident handling. diff --git a/docs/release/RELEASE_NOTES.md b/docs/release/RELEASE_NOTES.md index 777c205..60c7f62 100644 --- a/docs/release/RELEASE_NOTES.md +++ b/docs/release/RELEASE_NOTES.md @@ -1,26 +1,42 @@ -## ThreadPilot v1.6.0 +## ThreadPilot v1.7.0 -ThreadPilot 1.6.0 adds explicit CPU assignment strategies while keeping the established ThreadPilot automatic behavior as the persistent default. +ThreadPilot 1.7.0 expands Windows gaming and device controls, adds persistent per-process I/O and power behavior, and prepares the release pipeline for trusted Authenticode signing. ### Highlights -- Choose between ThreadPilot automatic, Affinity Mask, Ideal Processor, and CPU Sets. -- Save a global default or override the strategy for individual process rules. -- Apply topology-aware affinity across processor groups and processor indexes above 63. -- Distribute Ideal Processor preferences deterministically across existing process threads. -- Inspect reserved CPU Sets without changing global Windows configuration. -- Use the new controls and explanations in all seven supported languages. +- Control Game Mode, CPU Core Parking, supported CPU C-State behavior, USB selective suspend, pointer precision, supported Ethernet power-saving properties, interrupt moderation, and GPU MSI Mode. +- Open the correct Windows pages for Memory Integrity, HAGS, and windowed-game optimizations without silently weakening Windows security. +- Set memory and I/O priority per process and preserve them in persistent rules. +- Prevent system sleep while a selected process is running through a Windows power request that is released automatically. +- Restore backed-up device-driver values when supported tweaks are turned off. +- Open community power-plan and support links on demand, or report a problem directly through GitHub Issues. +- Use every new control and support action in all seven supported languages: English, Italian, German, Spanish, French, Russian, and Simplified Chinese. + +### Power-plan distribution change + +ThreadPilot no longer bundles the 89 third-party `.pow` files previously shipped with the application. Those files were publicly available, but no reliable per-file license or redistribution permission could be verified. Removing them keeps the signed release payload compatible with the SignPath Foundation requirement that distributed components have clear open-source redistribution rights. + +This does not remove functionality or user data: + +- Power plans already imported into Windows remain installed and active. +- An upgrade does not delete `.pow` files left by an earlier ThreadPilot installation. +- Manual `.pow` import remains available. +- The new **More plans?** action opens the ThreadPilot community Discord only when the user clicks it; no plan is downloaded automatically or included in the signed package. ### Compatibility and safety -- Existing settings and rules remain compatible and continue in ThreadPilot automatic mode. -- Explicit CPU Sets and Ideal Processor modes do not silently fall back to affinity. -- ThreadPilot never widens an existing hard affinity restriction; switching to a soft mode can require restarting the target process. -- With automation monitoring disabled, Ideal Processor and multi-group Affinity apply only to threads that exist at apply time. -- Reserved CPU Sets remain read-only in this release. +- Existing rules remain compatible; all new persistent options default to off. +- Ethernet and GPU controls only modify properties already exposed by the installed driver and require administrator privileges. +- Hardware and driver behavior varies. GPU MSI Mode and some Windows graphics or security changes may require a restart. +- Memory Integrity remains a user-controlled Windows Security setting. ### Validation -- 689 automated tests passed in Debug and Release configurations. -- All four strategies passed hardware smoke tests on a Windows 11 Hyper-V guest with four logical processors. -- Multi-group and processor indexes above 63 passed synthetic topology tests. +- 701 automated Release tests pass, including XAML compilation and localization-key coverage for all seven languages. +- The final portable and installer artifacts contain zero `.pow` files. +- A Windows 11 Hyper-V gate passed portable launch, clean install, normal launch, system-tweak apply/restore, upgrade, and uninstall checks without ThreadPilot application errors. +- A real 1.6.0 to 1.7.0 installer upgrade preserved all 89 legacy `.pow` files byte-for-byte and did not change the active Windows power plan. + +### Signing status + +Release artifacts remain unsigned while the SignPath Foundation application is pending. The automated build, test, packaging, checksum, SBOM, and publishing flow remains in place, including its existing optional Authenticode path. The SignPath-specific integration will be added and tested separately after approval. diff --git a/sonar-project.properties b/sonar-project.properties index 49dd148..f8e466f 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,6 +1,6 @@ sonar.projectKey=threadpilot sonar.projectName=ThreadPilot -sonar.projectVersion=1.6.0 +sonar.projectVersion=1.7.0 sonar.sourceEncoding=UTF-8 sonar.sources=.

    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 CO$)&Q diff --git a/assets/Powerplans/MaxPower.pow b/assets/Powerplans/MaxPower.pow deleted file mode 100644 index 197587cce5394c2cd7959aa85827f3e5f7d68ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHMPlzQ)8LwHh$!cPDq7lXz;RO{&*jlQ({&j)qNLJY#l!ysVJZ)E3_0D5w-z+l| zGdVeehXo_daZ$tt1^1%yAhM9liXwYUf(MhEEEsZ$ZZ5JX$KTiQwcGRNy_xq&PTB?a zs=NBD@6Yf1zN)YLZKjLW0%MH&tMC2s&YQ2jy+GF=L8nI7J-WaTU4PKF`mK{ce(DSV zcx?B~lVASf_sjRj?}`5lV>FwWw=aKCx!wB12=rd~*{=@Ib~7CU9ReK!9ReK!9ReK! z9ReK!9ReK!9RmN02&{$vptfsqvUOMY_xA^v&ahVoU;Edc-@jdd0>IS%LnHE2rx>IA z6S!Z(M}un^>Hhra`4Yx=M%SOmm?|G*t^)T$mRy@c@FFWS9<{2JvO$zu5cv{#Y+V}i zBc7i@e*=AiJ@Cp+jDJF>_Bi?p_Dfdlv$(`Qjk^U>hOv`9{5(b1PmmUD_t5+V`rZ`! zdVcY7_7!%T)gMT}{}aUZ3DSTqPMF&r&DEb$+Rxk9Z^6#*U3$32=myXw@dWa@v{i2Q zuWa`>M(zRK^K8J@Sz-m-Vrv+;SdU%C-45$xd=b6Ju3&zXRcr&l^lZRN%+UM>+s4%Z zzkSTFvon|tShbCD3v(CotdEs_te|zzn;Fi0dzZv$&k_h}{4#-@xh}_H50UtnV?7{ycb-t%L$u-UG!XY#19~Pkir!@9qNP zj|8I)^PtCm`ja2LIvC|a5Az_Y+wud$xThN|-KUtPvB`s)X!JvQAcV|P(hhl`CD*}3 z?t^pOC{u+Z4^r!l$VrdolZ-u!PHQIVvD|#D13k&4MrvP$PK_SKi`tXun64Y?VV%lT zR%)K|!f;*aj0b58o`e?3S?`RkaV9<1@ul#$kVR{T{&|#m?GiKMNmzXK>2Ig)?f&56 zGlQ6R*vOBE>CTPO5&s-aE)XNMNp|+?C&M4Iks8@~y|wQ&B;$6%7;i%iTnZ7ncF|(r ziH27$X0a%Ytc;|!q{q^OjIE#(-uH07hRx-}ws#);7UBEj{FrGIbAwP)UMr5^fgeR? zxKxG9b!8o*i|iwNu77kmu6%50?=9@%@1heAdVcGXgZ7eNXYnujqM;l2?=*Xx{8*LT(BZIEuyH;+gre3y?ThzUP5ty4UVLo*#RaL7lavM zz6U=M&$Ul7=8Uwrar~vs*+%c*EdBj#qc_nutp*uC^>zwgjencxhw{~yMXW^PRwv}E z&I_LV%<(e0PeZD3x-#^ra4g=4=L3yzJvtnBusO}6_u>rsuT3aRp*4?rj(t`o?C(|>o{~tVO*qSqAJ_YST-|v8 zVEp~{&OG{En;}26H3>C?;K53qKTZ|E)#M!2g%r-kQp~CA?o^R9=Xeiv*YAC6GV{|NlVCAQ{X%+ zbI(g}r7SZf^RN!O0$kRs)9gIzVLFEwu@}&In?{_8H|c!FxQG3k_SW-=3EHdPr4f6= zRh-$Bdl#S+#VQqUR{GEbzGV9~jHJtT)N#32aS0z0LQ?8B#w3P1wB0Zd4y!ZZKr&Ox z6Gu6Sb6on!SHs}ave zae<(7l}3pA`h0BUe(AZZ&wOrFCsFO*G?GcJ_9JvS&W}Y*(bT(|7r+If&ArziFhwV0 zQHoI3^~8VQe;|w2wEa5ke%Gd(b^)E!j~3 diff --git a/assets/Powerplans/Microsoft High performance.pow b/assets/Powerplans/Microsoft High performance.pow deleted file mode 100644 index 6225a5cee4f660232c8b86dba423008bae284458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHLO=ule6h1E|w&GuuEMid@MX_LRnV&m<8?C4%E|h3M3%20=+({mJc?~bm+AhQ_ zyAVNKG@#2aiga(5SqQrF2Nk-g#bp;RQddQU_) z^IoQBmWq~$u>EoIsqdcOzSiRSJ~Rr)76;RVF^6{}-&^m!_SXwHAG>sVcKeO%6Nl<^ z?)^i}r?=W)y_=ZL+R+I3-==SkwlvxXfd+vFfd+vFfd+vFfd+vFfd+vFfd+wl4T0sf z-7Rav|M#Qh!tU;FcV$ktk3RF|7hhlF>i~gjcXH^wb^l;Kf%z?5Hi!24p?wzpSHtnM z=%dUxVUZ`wL}{UP5(g?yB3~tealItU0?*IrK8qOZD z&}|HL<*Ssv_Pyh)sPpW~gC$0nfiA~g}MoMd0| zeBd>>lIN}$WpR;2%1)A8X~*O$@(QiuFg31rv#4-wdRIK>eZxi`4|qO#Pw||1?@Xay zJTHjND7+7scM1T25L*h5X94Rfyh|f4Pom*SN+I5H9!8Fz1S&K}D;=Q%9qngLHA;a;Rexo1n>m6u;xH2r?NyYzZDH|I<~+7I{XKEL&Z`wQ|t zibkpGe5d={PuH*fTGGiXErSbdq_ECqBtZ^vUb)okbhV#HzIK!sYfowIx+=9@UpZb9 zM!E>XI1Ra$dCVUcSwqv232tG&`9O7F*6Wp8z2p7%*E@T=zR&;s`C|3`U?KkSwh|lh zt9sa1=Q#GhNkT8wsLzQ#8}-?)it;d2shgTKO*}hFJl4na=oFJe&X7;<18-t;oczKb zn}{3wPEg_h;zz&S&W}EoFeeK0y^Nc$%CEB5@h6sP2%hrvMAs?nVE|qQTH&XNr|iH9!b00w7MJynic2n4!dMjMapM5E zdYPSOw(F=Y!k2+IcBqm#^i+^KI!iOqIyBt7dM-_)F0R>&6YY33p!QQW{w&H~F4M1( R27v~F27v~F27!Yh@DCG_N_zkR diff --git a/assets/Powerplans/Microsoft Ultimate Performance.pow b/assets/Powerplans/Microsoft Ultimate Performance.pow deleted file mode 100644 index ed6ebc0f490d42eeaaed9c1c8ce8a47c685f31b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeHLJ!~CC5T0jjVh92grFa++hhzj2S?hlGZtn_&qZkwlA}a{-icl0$P=OBa8$1}v$2`0r`oVbTl|Ns+_4uXt>Km{B zJaDLg&boi>lW8rs7w_lHYHv9L?i-&@m#F2djHP)D_#m`Fbem{38eCmR z|2-PhQM3WNM2C1XQl}>{tFbZIW#I8Fk4M=GTG_)dkvH~{&-f!p>1BG1vJWKCe}uJ; zvIR6!!dvO^vQH`9>)qom_<3&raE8%WK$nlN(RVbdm*Q6AY`bx$Nf-5HItjT6dXA=P znU<(cnilCaoxx8V+;_p- zbGd&{e*0>xp_|FV@~Lo9-~4H!vGOnb7r?(a_jof^>J8Cl+Q#`SHKO;~K(-b0=Da~y z-IuO>{c#@m2KW%ksE&Yy$PQ1q?~nUjDu0flGfm6ZS}GBk(h@Rq6A?s83Dj-}9k=pz55 zEh5Vcg*K(Bl@}=2(=1%raS>J0M>8pFVL{5VKMUzlN-2x;j= z_)aQCpdxKcJN8rC%;cei>kQ+@jqAuSXk2HmqTfPe%InNJ4QI1|SZ8Rjd{$3N>QctX zY4=oTAeYs<9Hj1gbWgR1UEzCPgVXD19HX}}pE|sIA9t2_>;7uzu6Q5BGUB+qfmr1l z%?w^+>W@2)Wy=jcp^yba21*MbBwR2}H#Kd?lf17y&Sv`JY-V4%vN&6Ved}x^sED)v zyv|p9{UYq)nD{%tZ0RPxiWE0RDEUoNoX5S{d>h9q;phyvKjOgIo?3wd=?YiVZw%k;z#=0 zixlF=HB;0r<=Y~36N&m6MSf~3ZQCB}W}G*n?=~9m>Bf`SbDXBG_13M=ZgG;*PgO`F_2HJlh5y_QoA8r5ZlVc zIX1$z;edPLoQ+M}60wh$iqxhOVW1r0;msXKF~VPI)?JQ2_2G}WVZbY@5U3ES5cm%f F_zP+VvQ7X1 diff --git a/assets/Powerplans/Mitstas IDLE ENABLED.pow b/assets/Powerplans/Mitstas IDLE ENABLED.pow deleted file mode 100644 index 3556f583d231c774ee3c8e7f5e21d9fac0307632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 a3kobKu%N(#0t*T(D6pWwf&xEZ3j8ks;@BMk diff --git a/assets/Powerplans/NovaOS.pow b/assets/Powerplans/NovaOS.pow deleted file mode 100644 index a03a935d072767a36656fa5325b00282991fd7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 diff --git a/assets/Powerplans/Reticle v2.pow b/assets/Powerplans/Reticle v2.pow deleted file mode 100644 index 21f71ed78226a3250e51e0f5cdbc081896a4bab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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 R2d+7A&4FtU{NKWX{{v-y-M;_; diff --git a/assets/Powerplans/RevisionPowerPlanV2.8.pow b/assets/Powerplans/RevisionPowerPlanV2.8.pow deleted file mode 100644 index f0b6a902af46d762b5dae899891d296ed6f9b699..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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 GB=Elx#!{C6 diff --git a/assets/Powerplans/Rosca Tweaks v2.pow b/assets/Powerplans/Rosca Tweaks v2.pow deleted file mode 100644 index 61c1aa023de032e169de7a2fc97c72444ca616e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 b_TzF)fny3BQ{b2a#}qiGz%d2xL4p4Rs}!Tr diff --git a/assets/Powerplans/Slower.pow b/assets/Powerplans/Slower.pow deleted file mode 100644 index 132b910a70dba3d07d7633080bc3d48a80ca7df2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/assets/Powerplans/TrinityOS.pow b/assets/Powerplans/TrinityOS.pow deleted file mode 100644 index 5d3d2f3783e6b83dc54a3b8aed6b56785e5a2888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 CFM8kr diff --git a/assets/Powerplans/VainOS.pow b/assets/Powerplans/VainOS.pow deleted file mode 100644 index 1e33fd0fa2ae61755d82ab20e8b27d0350dcae6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 TYX;T~tQlA{ux8+w&%pl!X%eR^ diff --git a/assets/Powerplans/VantageOS Power Plan.pow b/assets/Powerplans/VantageOS Power Plan.pow deleted file mode 100644 index 4ce723157ae4514a9dcffb7b1076556e23d67800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/assets/Powerplans/Velo's Power Plan.pow b/assets/Powerplans/Velo's Power Plan.pow deleted file mode 100644 index 39dcba4f281bd9620c56bd126770c3975f47abb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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