Compare commits

..

15 Commits

Author SHA1 Message Date
Chris Titus
e4dd305084 fix release drafter 2026-04-02 15:49:39 -05:00
Gabi
01c808ab42 Fixed AmbieWhiteNoise's id (#4298)
* Removed AmbieWhiteNoise from applications.json

* Update applications.json
2026-04-02 15:31:40 -05:00
Chris Titus
d2c9bc8751 formatting fixes 2026-04-02 15:30:12 -05:00
Gabi
7f105a58bb Update Invoke-WinUtilRemoveEdge.ps1 (#4291)
* Update Invoke-WinUtilRemoveEdge.ps1

* Update Invoke-WinUtilRemoveEdge.ps1

* Merge branch 'ChrisTitusTech:main' into patch-12
2026-04-02 15:24:18 -05:00
Chris Titus
838b0c1a1b chore: Update generated dev docs (#4301) 2026-04-02 15:17:58 -05:00
Gabi
e0118aabe5 Added WPFFixesNTPPool (#4290)
* Added WPFFixesNTPPool

* Create Invoke-WPFFixesNTPPool.ps1

* Update Invoke-WPFFixesNTPPool.ps1

* Update Invoke-WPFFixesNTPPool.ps1

* Update Invoke-WPFFixesNTPPool.ps1

* Merge branch 'ChrisTitusTech:main' into patch-11

* Update NTP server to pool.ntp.org for improved synchronization
2026-04-02 15:17:27 -05:00
Gabi
9535302e6d Fix issue #4285 (#4289)
* Update Invoke-WPFFeatureInstall.ps1

* Merge branch 'ChrisTitusTech:main' into patch-10
2026-04-02 15:08:51 -05:00
Gabi
1eba305fab Update Invoke-WPFUpdatesdisable.ps1 to not require a restart (#4288)
* Update Invoke-WPFUpdatesdisable.ps1 to not require a restart

* Update Invoke-WPFUpdatesdisable.ps1

* Update Invoke-WPFUpdatesdefault.ps1

* Merge branch 'ChrisTitusTech:main' into patch-9
2026-04-02 15:07:34 -05:00
makhlwf
74f990028f fix: improve screen reader accessibility by naming control containers (#4287) 2026-04-02 15:06:39 -05:00
Chris Titus
e94742a77d chore: Update generated dev docs (#4300) 2026-04-02 14:53:03 -05:00
Gabi
fb6ef49a83 Remove not recommended from WPFTweaksDeBloat tweak (#4276)
* Update tweaks.json

* Update tweaks.json

* fix typo

* Merge branch 'ChrisTitusTech:main' into patch-2
2026-04-02 14:52:37 -05:00
Pere Gomila
ab00ff2710 Add 'foss' key to NodeJS LTS in applications.json (#4272)
Added 'foss' key to NodeJS LTS application entry.
2026-04-02 14:51:05 -05:00
Gabi
50d8a8656b Make Security Updates tell the truth (#4269)
* Make Security Updates tell the truth

* Merge branch 'ChrisTitusTech:main' into patch-6
2026-04-02 14:36:26 -05:00
Gabi
1cd918cbe1 Remove OneDrive startup entry (#4253)
* Remove Onedrive startup entry

* Merge branch 'ChrisTitusTech:main' into patch-1

* Merge branch 'ChrisTitusTech:main' into patch-1

* Merge branch 'main' into patch-1
2026-04-02 14:28:06 -05:00
Sean (ANGRYxScotsman)
bc2f6ce8f7 fix win11 Creator 404 error and site update (#4296)
* Update _index.md

* theme update
2026-04-02 14:23:20 -05:00
36 changed files with 126 additions and 32 deletions

View File

@@ -11,6 +11,8 @@ on:
jobs:
build-runspace:
runs-on: windows-latest
outputs:
version: ${{ steps.extract_version.outputs.version }}
env:
CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
steps:
@@ -57,6 +59,7 @@ jobs:
run: |
$version = (Get-Date -Format "yy.MM.dd")
echo "VERSION=$version" >> $env:GITHUB_ENV
echo "version=$version" >> $env:GITHUB_OUTPUT
shell: pwsh
- name: Create Tag
@@ -79,6 +82,24 @@ jobs:
}
shell: pwsh
- name: Upload compiled script
uses: actions/upload-artifact@v4
with:
name: winutil-ps1
path: ./winutil.ps1
release:
needs: build-runspace
runs-on: ubuntu-latest
steps:
- name: Download compiled script
uses: actions/download-artifact@v4
with:
name: winutil-ps1
- name: Set version from build job
run: echo "VERSION=${{ needs.build-runspace.outputs.version }}" >> $GITHUB_ENV
- name: Generate Release Notes
id: generate_notes
uses: release-drafter/release-drafter@v7

View File

@@ -1720,7 +1720,8 @@
"content": "NodeJS LTS",
"description": "NodeJS LTS provides Long-Term Support releases for stable and reliable server-side JavaScript development.",
"link": "https://nodejs.org/",
"winget": "OpenJS.NodeJS.LTS"
"winget": "OpenJS.NodeJS.LTS",
"foss": true
},
"nomacs": {
"category": "Multimedia Tools",
@@ -3275,7 +3276,7 @@
"content": "Ambie White Noise",
"description": "Ambie is the ultimate app to help you focus, study, or relax. We use white noise and nature sounds combined with an innovative focus timer to keep you concentrated on doing your best work.",
"link": "https://ambieapp.com/",
"winget": "9P07XNM5CHP0",
"winget": "JeniusApps.Ambie",
"foss": true
},
"magicwormhole": {

View File

@@ -11,6 +11,16 @@
"InvokeScript": [],
"link": "https://winutil.christitus.com/dev/features/features/dotnet"
},
"WPFFixesNTPPool": {
"Content": "Configure NTP Server",
"Description": "Replaces the default Windows NTP server (time.windows.com) with pool.ntp.org for improved time synchronization accuracy and reliability.",
"category": "Fixes",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300",
"function": "Invoke-WPFFixesNTPPool",
"link": "https://winutil.christitus.com/dev/features/fixes/ntppool"
},
"WPFFeatureshyperv": {
"Content": "HyperV Virtualization",
"Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",

View File

@@ -1674,8 +1674,8 @@
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/xboxremoval"
},
"WPFTweaksDeBloat": {
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft Store apps.",
"Content": "Remove all Microsoft Store apps",
"Description": "This will remove a bunch of Windows pre-installed applications which most people dont want on there system.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"appx": [

View File

@@ -3,7 +3,7 @@ title: "Disable Legacy F8 Boot Recovery"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=100}
```json {filename="config/feature.json",linenos=inline,linenostart=110}
"WPFFeatureDisableLegacyRecovery": {
"Content": "Disable Legacy F8 Boot Recovery",
"Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",

View File

@@ -3,7 +3,7 @@ title: "Enable Legacy F8 Boot Recovery"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=89}
```json {filename="config/feature.json",linenos=inline,linenostart=99}
"WPFFeatureEnableLegacyRecovery": {
"Content": "Enable Legacy F8 Boot Recovery",
"Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",

View File

@@ -3,7 +3,7 @@ title: "Enable Daily Registry Backup Task 12.30am"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=72}
```json {filename="config/feature.json",linenos=inline,linenostart=82}
"WPFFeatureRegBackup": {
"Content": "Enable Daily Registry Backup Task 12.30am",
"Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.",

View File

@@ -3,7 +3,7 @@ title: "Windows Sandbox"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=111}
```json {filename="config/feature.json",linenos=inline,linenostart=121}
"WPFFeaturesSandbox": {
"Content": "Windows Sandbox",
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",

View File

@@ -3,7 +3,7 @@ title: "HyperV Virtualization"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=14}
```json {filename="config/feature.json",linenos=inline,linenostart=24}
"WPFFeatureshyperv": {
"Content": "HyperV Virtualization",
"Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",

View File

@@ -3,7 +3,7 @@ title: "Legacy Media (WMP, DirectPlay)"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=27}
```json {filename="config/feature.json",linenos=inline,linenostart=37}
"WPFFeatureslegacymedia": {
"Content": "Legacy Media (WMP, DirectPlay)",
"Description": "Enables legacy programs from previous versions of Windows.",

View File

@@ -3,7 +3,7 @@ title: "NFS - Network File System"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=53}
```json {filename="config/feature.json",linenos=inline,linenostart=63}
"WPFFeaturenfs": {
"Content": "NFS - Network File System",
"Description": "Network File System (NFS) is a mechanism for storing files on a network.",

View File

@@ -3,7 +3,7 @@ title: "Windows Subsystem for Linux"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=41}
```json {filename="config/feature.json",linenos=inline,linenostart=51}
"WPFFeaturewsl": {
"Content": "Windows Subsystem for Linux",
"Description": "Windows Subsystem for Linux is an optional feature of Windows that allows Linux programs to run natively on Windows without the need for a separate virtual machine or dual booting.",

View File

@@ -0,0 +1,27 @@
---
title: "Configure NTP Server"
description: ""
---
```powershell {filename="functions/public/Invoke-WPFFixesNTPPool.ps1",linenos=inline,linenostart=1}
function Invoke-WPFFixesNTPPool {
<#
.SYNOPSIS
Configures Windows to use pool.ntp.org for NTP synchronization
.DESCRIPTION
Replaces the default Windows NTP server (time.windows.com) with
pool.ntp.org for improved time synchronization accuracy and reliability.
#>
Start-Service w32time
w32tm /config /update /manualpeerlist:"pool.ntp.org,0x8" /syncfromflags:MANUAL
Restart-Service w32time
w32tm /resync
Write-Host "================================="
Write-Host "-- NTP Configuration Complete ---"
Write-Host "================================="
}
```

View File

@@ -3,7 +3,7 @@ title: "Computer Management"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=186}
```json {filename="config/feature.json",linenos=inline,linenostart=196}
"WPFPanelComputer": {
"Content": "Computer Management",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Control Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=175}
```json {filename="config/feature.json",linenos=inline,linenostart=185}
"WPFPanelControl": {
"Content": "Control Panel",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Network Connections"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=197}
```json {filename="config/feature.json",linenos=inline,linenostart=207}
"WPFPanelNetwork": {
"Content": "Network Connections",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Power Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=208}
```json {filename="config/feature.json",linenos=inline,linenostart=218}
"WPFPanelPower": {
"Content": "Power Panel",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Printer Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=219}
```json {filename="config/feature.json",linenos=inline,linenostart=229}
"WPFPanelPrinter": {
"Content": "Printer Panel",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Region"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=230}
```json {filename="config/feature.json",linenos=inline,linenostart=240}
"WPFPanelRegion": {
"Content": "Region",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Windows Restore"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=241}
```json {filename="config/feature.json",linenos=inline,linenostart=251}
"WPFPanelRestore": {
"Content": "Windows Restore",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Sound Settings"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=252}
```json {filename="config/feature.json",linenos=inline,linenostart=262}
"WPFPanelSound": {
"Content": "Sound Settings",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "System Properties"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=263}
```json {filename="config/feature.json",linenos=inline,linenostart=273}
"WPFPanelSystem": {
"Content": "System Properties",
"category": "Legacy Windows Panels",

View File

@@ -3,7 +3,7 @@ title: "Time and Date"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=274}
```json {filename="config/feature.json",linenos=inline,linenostart=284}
"WPFPanelTimedate": {
"Content": "Time and Date",
"category": "Legacy Windows Panels",

View File

@@ -1,12 +1,12 @@
---
title: "Remove ALL MS Store Apps - NOT RECOMMENDED"
title: "Remove all Microsoft Store apps"
description: ""
---
```json {filename="config/tweaks.json",linenos=inline,linenostart=1676}
"WPFTweaksDeBloat": {
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
"Description": "USE WITH CAUTION!!! This will remove ALL Microsoft Store apps.",
"Content": "Remove all Microsoft Store apps",
"Description": "This will remove a bunch of Windows pre-installed applications which most people dont want on there system.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"appx": [

View File

@@ -37,7 +37,7 @@ New to Winutil? Start here:
2. **[Applications Guide](application/)** - Learn to install, upgrade, and uninstall software
3. **[Tweaks Guide](tweaks/)** - Optimize your system
4. **[Features & Fixes](features/)** - Troubleshoot common issues
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
5. **[Win11 Creator](win11creator/)** - Build a custom debloated Windows 11 ISO
## Main Features

View File

@@ -2,4 +2,4 @@ module github.com/ChrisTitusTech/WinUtil
go 1.26
require github.com/imfing/hextra v0.12.0 // indirect
require github.com/imfing/hextra v0.12.1 // indirect

View File

@@ -4,3 +4,5 @@ github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI=
github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
github.com/imfing/hextra v0.12.0 h1:f6y35hW/WDJEcx9S0dOmbICOBxYE0PmP6IJFsTUgVyY=
github.com/imfing/hextra v0.12.0/go.mod h1:YAv8XRNSmcqjieFwI7fVQK1AoY2Do+45DO9HGqxSGu4=
github.com/imfing/hextra v0.12.1 h1:3t1n0bmJbDzSTVfht93UDcfF1BXMRjeFojA071ri2l8=
github.com/imfing/hextra v0.12.1/go.mod h1:vi+yhpq8YPp/aghvJlNKVnJKcPJ/VyAEcfC1BSV9ARo=

View File

@@ -31,6 +31,7 @@ function Initialize-InstallCategoryAppList {
$categoryContainer.Orientation = "Vertical"
$categoryContainer.Margin = New-Object Windows.Thickness(0, 0, 0, 0)
$categoryContainer.HorizontalAlignment = [Windows.HorizontalAlignment]::Stretch
[System.Windows.Automation.AutomationProperties]::SetName($categoryContainer, $Category)
# Bind Width to the ItemsControl's ActualWidth to force full-row layout in WrapPanel
$binding = New-Object Windows.Data.Binding

View File

@@ -199,6 +199,9 @@ function Invoke-WinUtilISOScript {
& icacls "$ScratchDir\Windows\System32\OneDriveSetup.exe" /grant "$($adminGroup.Value):(F)" /T /C | Out-Null
Remove-Item -Path "$ScratchDir\Windows\System32\OneDriveSetup.exe" -Force -ErrorAction SilentlyContinue
# Remove OneDrive from startup registry
Remove-ISOScriptReg 'HKLM\zNTUSER\Software\Microsoft\Windows\CurrentVersion\Run\OneDrive'
# ── 4. Registry tweaks ────────────────────────────────────────────────────
& $Log "Loading offline registry hives..."
reg load HKLM\zCOMPONENTS "$ScratchDir\Windows\System32\config\COMPONENTS"

View File

@@ -24,7 +24,7 @@ function Invoke-WPFFeatureInstall {
$x = 0
$Features | ForEach-Object {
Invoke-WinUtilFeatureInstall $Feature
Invoke-WinUtilFeatureInstall $_
$X++
Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -value ($x/$CheckBox.Count) }
}

View File

@@ -0,0 +1,20 @@
function Invoke-WPFFixesNTPPool {
<#
.SYNOPSIS
Configures Windows to use pool.ntp.org for NTP synchronization
.DESCRIPTION
Replaces the default Windows NTP server (time.windows.com) with
pool.ntp.org for improved time synchronization accuracy and reliability.
#>
Start-Service w32time
w32tm /config /update /manualpeerlist:"pool.ntp.org,0x8" /syncfromflags:MANUAL
Restart-Service w32time
w32tm /resync
Write-Host "================================="
Write-Host "-- NTP Configuration Complete ---"
Write-Host "================================="
}

View File

@@ -157,6 +157,7 @@ function Invoke-WPFUIElements {
switch ($entryInfo.Type) {
"Toggle" {
$dockPanel = New-Object Windows.Controls.DockPanel
[System.Windows.Automation.AutomationProperties]::SetName($dockPanel, $entryInfo.Content)
$checkBox = New-Object Windows.Controls.CheckBox
$checkBox.Name = $entryInfo.Name
$checkBox.HorizontalAlignment = "Right"
@@ -241,6 +242,7 @@ function Invoke-WPFUIElements {
$horizontalStackPanel = New-Object Windows.Controls.StackPanel
$horizontalStackPanel.Orientation = "Horizontal"
$horizontalStackPanel.Margin = "0,5,0,0"
[System.Windows.Automation.AutomationProperties]::SetName($horizontalStackPanel, $entryInfo.Content)
$label = New-Object Windows.Controls.Label
$label.Content = $entryInfo.Content
@@ -313,6 +315,7 @@ function Invoke-WPFUIElements {
# Create a StackPanel for this group
$groupStackPanel = New-Object Windows.Controls.StackPanel
$groupStackPanel.Orientation = "Vertical"
[System.Windows.Automation.AutomationProperties]::SetName($groupStackPanel, $entryInfo.GroupName)
# Add the group container to the ItemsControl
$itemsControl.Items.Add($groupStackPanel) | Out-Null
@@ -346,6 +349,7 @@ function Invoke-WPFUIElements {
default {
$horizontalStackPanel = New-Object Windows.Controls.StackPanel
$horizontalStackPanel.Orientation = "Horizontal"
[System.Windows.Automation.AutomationProperties]::SetName($horizontalStackPanel, $entryInfo.Content)
$checkBox = New-Object Windows.Controls.CheckBox
$checkBox.Name = $entryInfo.Name

View File

@@ -25,6 +25,7 @@ function Invoke-WPFUpdatesdefault {
Set-Service -Name wuauserv -StartupType Manual
Write-Host "Restored UsoSvc to Automatic"
Start-Service -Name UsoSvc
Set-Service -Name UsoSvc -StartupType Automatic
Write-Host "Restored WaaSMedicSvc to Manual"

View File

@@ -26,6 +26,7 @@ function Invoke-WPFUpdatesdisable {
Set-Service -Name wuauserv -StartupType Disabled
Write-Host "Disabled UsoSvc Service"
Stop-Service -Name UsoSvc -Force
Set-Service -Name UsoSvc -StartupType Disabled
Remove-Item "C:\Windows\SoftwareDistribution\*" -Recurse -Force

View File

@@ -1,7 +1,8 @@
function Invoke-WinUtilRemoveEdge {
Write-Host "Unlocking The Offical Edge Uninstaller And Removing Microsoft Edge..."
$Path = Get-ChildItem -Path "$Env:ProgramFiles (x86)\Microsoft\Edge\Application\*\Installer\setup.exe" | Select-Object -First 1
$Path = (Get-ChildItem "C:\Program Files (x86)\Microsoft\Edge\Application\*\Installer\setup.exe")[0].FullName
New-Item "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
Start-Process $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile'
New-Item -Path "$Env:SystemRoot\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
Start-Process -FilePath $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile' -Wait
Write-Host "Microsoft Edge was removed" -ForegroundColor Green
}

View File

@@ -1325,6 +1325,8 @@
- Feature updates delayed by 365 days
<LineBreak/>
- Security updates installed after 4 days
<LineBreak/>
- Prevents Windows Update from installing drivers
<LineBreak/><LineBreak/>
<Run FontWeight="SemiBold">Feature Updates:</Run> New features and potential bugs
<LineBreak/>