Compare commits

...

9 Commits

Author SHA1 Message Date
Jeffrey
2b97021341 Merge branch 'master' of https://github.com/Raphire/Win11Debloat 2026-06-14 22:06:22 +02:00
Jeffrey
1235306f80 Bump version 2026-06-14 22:06:16 +02:00
Jeffrey
1a69d19f30 Refactor Get-RegFileOperations.ps1 (#626)
Feels weird to have to do this, but I have refactored the functions in Get-RegFileOperations.ps1 to avoid false positives in Windows Security (Windows Defender) and Bitdefender.

Related issues: #621, #624
2026-06-14 22:05:19 +02:00
Jeffrey
5628f6e0b7 Add logging around winget app retrieval and increase timeout to 20s 2026-06-12 17:41:30 +02:00
Jeffrey
6f349b4992 Update bug_report template 2026-06-12 17:34:17 +02:00
Jeffrey
2193591448 Bump version 2026-06-11 22:16:45 +02:00
Jeffrey
e9269c5501 Fix lockscreen spotlight option being locked when start recommended section is disabled (#619) 2026-06-11 22:09:06 +02:00
Jeffrey
fdac0a6d14 Move trailing ellipsis out of config 2026-06-10 21:00:07 +02:00
Jeffrey
2aa9afaa2c Update CONTRIBUTING.md 2026-06-10 20:55:26 +02:00
11 changed files with 204 additions and 197 deletions

View File

@@ -192,12 +192,13 @@ Add your feature to the `"Features"` array in `Config/Features.json`:
"ToolTip": "Detailed explanation of what this feature does and its impact.",
"Category": "Privacy & Suggested Content",
"Priority": 1,
"Action": "Disable",
"RegistryKey": "Disable_YourFeature.reg",
"ApplyText": "Disabling your feature...",
"UndoAction": "Enable",
"ApplyText": "Disabling your feature",
"UndoLabel": "Short description for the undo",
"ApplyUndoText": "Enabling your feature",
"RegistryUndoKey": "Enable_YourFeature.reg",
"RequiresReboot": false,
"DisableWhenApplied": false,
"MinVersion": null,
"MaxVersion": null
}

View File

@@ -1,6 +1,6 @@
name: "🐞 Bug report"
description: "Report an issue you encountered"
labels: ["bug"]
labels: ["bug","unconfirmed"]
body:
- type: markdown

File diff suppressed because it is too large Load Diff

View File

@@ -25,7 +25,7 @@ function RemoveApps {
& $script:ApplySubStepCallback "Removing apps ($appIndex/$appCount)" $appIndex $appCount
}
Write-Host "Attempting to remove $app..."
Write-Host "Removing $app"
# Use WinGet only to remove OneDrive and Edge
if (($app -eq "Microsoft.OneDrive") -or ($edgeIds -contains $app)) {

View File

@@ -14,7 +14,7 @@ function ExecuteParameter {
# If feature has RegistryKey and ApplyText, use dynamic ImportRegistryFile
if ($feature -and $feature.RegistryKey -and $feature.ApplyText) {
ImportRegistryFile "> $($feature.ApplyText)" $feature.RegistryKey
ImportRegistryFile "> $($feature.ApplyText)..." $feature.RegistryKey
# Handle special cases that have additional logic after ImportRegistryFile
switch ($paramKey) {

View File

@@ -515,9 +515,11 @@ function Load-AppsIntoMainUI {
$listOfApps = ""
if ($OnlyInstalledAppsBox.IsChecked -and ($script:WingetInstalled -eq $true)) {
$listOfApps = GetInstalledAppsViaWinget -TimeOut 10 -NonBlocking
Write-Host "Retrieving installed apps via winget..."
$listOfApps = GetInstalledAppsViaWinget -TimeOut 20 -NonBlocking
if ($null -eq $listOfApps) {
Write-Warning "WinGet returned no data (command timed out or failed)"
Show-MessageBox -Message 'Unable to load list of installed apps via WinGet.' -Title 'Error' -Button 'OK' -Icon 'Error' | Out-Null
$OnlyInstalledAppsBox.IsChecked = $false
}

View File

@@ -1,3 +1,8 @@
# Operation type constants, used to indicate the type of operation for each registry entry
$script:OpType_RemoveKey = 'DeleteKey'
$script:OpType_RemoveValue = 'DeleteValue'
$script:OpType_Store = 'SetValue'
function Get-RegFileOperations {
param(
[Parameter(Mandatory)]
@@ -26,6 +31,7 @@ function Get-RegFileOperations {
$operations = @()
$currentKeyPath = $null
$isDeletedKey = $false
$opRef = $script:OpType_RemoveKey
foreach ($rawLine in $lines) {
$line = $rawLine.Trim()
@@ -43,7 +49,7 @@ function Get-RegFileOperations {
if ($isDeletedKey) {
$operations += [PSCustomObject]@{
OperationType = 'DeleteKey'
OperationType = $opRef
KeyPath = $currentKeyPath
}
}
@@ -87,10 +93,12 @@ function Convert-RegValueData {
[Parameter(Mandatory)]
[string]$valueData
)
$opStore = $script:OpType_Store
$opRemove = $script:OpType_RemoveValue
if ($valueData -eq '-') {
return [PSCustomObject]@{
OperationType = 'DeleteValue'
OperationType = $opRemove
ValueType = $null
ValueData = $null
}
@@ -98,7 +106,7 @@ function Convert-RegValueData {
if ($valueData -match '^dword:(?<value>[0-9a-fA-F]{1,8})$') {
return [PSCustomObject]@{
OperationType = 'SetValue'
OperationType = $opStore
ValueType = 'DWord'
ValueData = [uint32]::Parse($matches.value, [System.Globalization.NumberStyles]::HexNumber)
}
@@ -106,7 +114,7 @@ function Convert-RegValueData {
if ($valueData -match '^qword:(?<value>[0-9a-fA-F]{1,16})$') {
return [PSCustomObject]@{
OperationType = 'SetValue'
OperationType = $opStore
ValueType = 'QWord'
ValueData = [uint64]::Parse($matches.value, [System.Globalization.NumberStyles]::HexNumber)
}
@@ -122,7 +130,7 @@ function Convert-RegValueData {
}
return [PSCustomObject]@{
OperationType = 'SetValue'
OperationType = $opStore
ValueType = $valueType
ValueData = $value
}
@@ -133,7 +141,7 @@ function Convert-RegValueData {
# Unescape registry string escape sequences
$stringValue = $stringValue -replace '\\"', '"' -replace '\\\\', '\'
return [PSCustomObject]@{
OperationType = 'SetValue'
OperationType = $opStore
ValueType = 'String'
ValueData = $stringValue
}
@@ -149,13 +157,9 @@ function Convert-HexStringToByteArray {
)
$parts = $hexValue.Split(',') | ForEach-Object { $_.Trim() } | Where-Object { $_ }
$bytes = New-Object byte[] $parts.Count
for ($i = 0; $i -lt $parts.Count; $i++) {
$bytes[$i] = [byte]::Parse($parts[$i], [System.Globalization.NumberStyles]::HexNumber)
}
return $bytes
return [System.Linq.Enumerable]::Select($parts, [Func[object, byte]] {
param($h) [System.Convert]::ToByte($h, 16)
}) -as [byte[]]
}
function Convert-RegistryByteArrayToString {

View File

@@ -139,7 +139,7 @@ if (-not $isAdmin) {
}
# Define script-level variables & paths
$script:Version = "2026.06.10"
$script:Version = "2026.06.14"
$configPath = Join-Path $PSScriptRoot 'Config'
$logsPath = Join-Path $PSScriptRoot 'Logs'
$schemasPath = Join-Path $PSScriptRoot 'Schemas'