Skip to content

Commit 25ecb54

Browse files
committed
Make Windows 11 first-class, add security policy
Update project to emphasize Windows 11 support and add a security policy, plus small runtime and packaging fixes. Changes: - README: simplify Windows badge and update requirements to Windows 11 (Build 22000+). - Installer (setup.iss): set MinVersion=10.0.22000. - app.manifest: remove legacy Windows supportedOS IDs and keep PerMonitorV2 DPI setting. - docs/TROUBLESHOOTING.md: remove Windows 10-specific startup troubleshooting (Windows 11-first messaging). - Add SECURITY.md pointing to docs/SECURITY.md for the full policy and disclosure process. - .gitignore: ignore FINAL_RELEASE_PLAN.md and RELEASE_PLAN.md. - Services/SecurityService.cs: introduce MaxLogTokenLength constant and replace hard-coded 200 when truncating log tokens. - App.xaml.cs: await settingsService.LoadSettingsAsync() with ConfigureAwait(false) and adjust service activations.
1 parent efb757d commit 25ecb54

8 files changed

Lines changed: 13 additions & 23 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ coverage*.info
3535
*.coverage
3636
*.coveragexml
3737
*.trx
38+
FINAL_RELEASE_PLAN.md
39+
RELEASE_PLAN.md
3840

3941
# .NET / NuGet
4042
*.deps.json

App.xaml.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,7 @@ private async Task<int> RunSmokeTestAsync(ILogger logger)
283283
logger.LogInformation("Starting ThreadPilot smoke test");
284284

285285
var settingsService = this.ServiceProvider.GetRequiredService<IApplicationSettingsService>();
286-
await settingsService.LoadSettingsAsync();
287-
288-
_ = this.ServiceProvider.GetRequiredService<MainWindow>();
286+
await settingsService.LoadSettingsAsync().ConfigureAwait(false);
289287
_ = this.ServiceProvider.GetRequiredService<ProcessViewModel>();
290288
_ = this.ServiceProvider.GetRequiredService<PowerPlanViewModel>();
291289

Installer/setup.iss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ SolidCompression=yes
4040
WizardStyle={#MyWizardStyle}
4141
ArchitecturesInstallIn64BitMode=x64compatible
4242
ArchitecturesAllowed=x64compatible
43+
MinVersion=10.0.22000
4344
UninstallDisplayIcon={app}\{#MyAppExeName}
4445

4546
[Languages]

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![Release](https://img.shields.io/github/v/release/PrimeBuild-pc/ThreadPilot?sort=semver)](https://github.com/PrimeBuild-pc/ThreadPilot/releases)
55
[![Coverage](https://codecov.io/gh/PrimeBuild-pc/ThreadPilot/branch/main/graph/badge.svg)](https://codecov.io/gh/PrimeBuild-pc/ThreadPilot)
66
[![winget](https://img.shields.io/winget/v/PrimeBuild.ThreadPilot)](https://github.com/microsoft/winget-pkgs)
7-
[![Windows](https://img.shields.io/badge/Windows-11%20official%20%7C%2010%20best--effort-blue?logo=windows)](https://www.microsoft.com/windows)
7+
[![Windows](https://img.shields.io/badge/Windows-11-blue?logo=windows)](https://www.microsoft.com/windows)
88
[![.NET](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet&logoColor=white)](https://dotnet.microsoft.com/)
99
[![License](https://img.shields.io/badge/License-AGPLv3-blue.svg)](LICENSE)
1010

@@ -21,15 +21,15 @@ The project targets users who need Process Lasso style capabilities in a modern
2121
- I/O and scheduling related tuning utilities.
2222
- Rule-driven power plan switching based on process start/stop events.
2323
- Conditional profiles, system tray controls, and runtime monitoring.
24-
- Windows 11 first-class support; Windows 10 support is best effort.
24+
- Windows 11 first-class support.
2525

2626
## Screenshots
2727

2828
<img width="2470" height="1696" alt="Gemini_Generated_Image_xzgtdpxzgtdpxzgt" src="https://github.com/user-attachments/assets/e535e496-8b7d-4d38-883b-e0c7f68a610f" />
2929

3030
## ⚙️ Requirements
3131

32-
- Windows 11 (official support), Windows 10 22H2+ (best effort).
32+
- Windows 11 (Build 22000+).
3333
- .NET 8 SDK for source builds.
3434
- Administrator privileges are required only for advanced process and power operations.
3535

SECURITY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Security Policy
2+
3+
See [docs/SECURITY.md](docs/SECURITY.md) for the full security policy, supported versions, and vulnerability disclosure process.

Services/SecurityService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public class SecurityService : ISecurityService
7070

7171
private const uint ProcessQueryLimitedInformation = 0x1000;
7272
private const int ProcessProtectionInformationClass = 61;
73+
private const int MaxLogTokenLength = 200;
7374

7475
[StructLayout(LayoutKind.Sequential)]
7576
private struct ProcessProtectionInformation
@@ -294,8 +295,8 @@ private static string SanitizeForLog(string value)
294295
.Replace('\t', ' ')
295296
.Trim();
296297

297-
return sanitized.Length > 200
298-
? sanitized[..200]
298+
return sanitized.Length > MaxLogTokenLength
299+
? sanitized[..MaxLogTokenLength]
299300
: sanitized;
300301
}
301302
}

app.manifest

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,12 @@
1515
<application>
1616
<!-- Windows 10 and 11 -->
1717
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
18-
<!-- Windows 8.1 -->
19-
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
20-
<!-- Windows 8 -->
21-
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
22-
<!-- Windows 7 -->
23-
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
2418
</application>
2519
</compatibility>
2620

2721
<!-- DPI awareness -->
2822
<application xmlns="urn:schemas-microsoft-com:asm.v3">
2923
<windowsSettings>
30-
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
3124
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
3225
</windowsSettings>
3326
</application>

docs/TROUBLESHOOTING.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,6 @@ What to do:
3232
- Ensure Performance Logs and Alerts services are healthy.
3333
- Validate that perflib counters are enabled on the machine.
3434

35-
## App Does Not Start on Windows 10
36-
ThreadPilot officially targets Windows 11; Windows 10 support is best effort.
37-
38-
What to do:
39-
- Install latest Windows 10 updates (22H2+ recommended).
40-
- Install .NET 8 runtime/SDK if running from source.
41-
- Check %TEMP%\ThreadPilot_Debug.log for startup diagnostics.
42-
4335
## Smoke Test Command
4436
For CI or local validation:
4537

0 commit comments

Comments
 (0)