Compare commits

...
513 Commits
Author SHA1 Message Date
Kobi HikriandGitHub 5f37ef4a80 ci: read the PR body from env instead of interpolating it into the shell (#4880) 2026-07-28 14:11:17 -05:00
OmarandGitHub d790118546 Add DNS-over-HTTPS (DoH) support (#4856)
* feat: Add DoH templates for DNS providers in configuration

* feat: Implement DoH support for DNS configuration and management

* feat(pester): enhance DNS tests to include DoH server address handling and template application

* fix: address codex feedback

* fix: update existing DoH server entries

* fix: enable DoH auto-upgrade

* fix: handle DNS setup failures

* fix: remove DoH state on DHCP reset
2026-07-28 14:09:44 -05:00
OmarGitHubChris Tituscoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
5ebb24b107 Refactor Win11 Creator ISO workflow (#4862)
* refactor: simplify Win11 Creator ISO workflow

Keep no-driver ISO generation on the fast copy-only path.

Inject exported drivers with one selected-index WIM mount, one Add-Driver pass, and one commit.

Limit WinPE staging to boot-storage drivers and improve workflow validation coverage.

* refactor: stage Win11 setup script fallback

Copy the prepared setup script payloads into sources/$//Setup/Scripts so setup media does not depend solely on answer-file extension extraction.

Keep the existing autounattend execution path unchanged and cover the fallback files in the Win11 Creator tests.

* refactor: address codex feedback

* refactor: run ISO verification in runspace

Rename the ISO logger to Write-WinUtilISOLog so the shared runspace pool imports it automatically. Run Mount & Verify off the WPF thread with dispatcher-safe UI updates, and add Pester coverage for the runspace and logger contract.

* refactor: address ISO review feedback

Keep the selected ISO stable during background verification. Apply ContentDeliveryManager settings to both the first account and the default profile. Block FAT32 USB creation when install.esd exceeds the supported file size.

* refactor: address ISO setup edge cases

Set BypassNRO before OOBE so local account setup is available during Windows Setup.

Detect registered DISM mounts during driver-injection cleanup so partial mount failures are discarded.

* refactor: address ISO review edge cases

Use the actual FAT32 file limit for install.esd USB checks.

Disable ISO modification while mount verification is running.

Apply unsupported-hardware notice suppression to the first user profile.

* refactor: stage ISO setup safeguards earlier

Set device encryption and reserved-storage registry guards before OOBE.

Enable the OEM configuration-set fallback when setup scripts are staged there.

* Update functions/private/Invoke-WinUtilISOUSB.ps1

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-07-28 14:08:56 -05:00
Chris TitusandGitHub fae58d73c4 Update sponsors in README (#4881) 2026-07-28 11:10:13 -05:00
Chris TitusandGitHub 9e2989964e Update sponsors in README (#4878) 2026-07-27 11:14:18 -05:00
OmarandGitHub 50be7390e5 fix: restore WindowStyle to SingleBorderWindow for proper window framing (#4868) 2026-07-22 12:42:25 -05:00
Chris TitusandGitHub 8ab02ae756 chore: Update generated dev docs (#4873) 2026-07-22 12:42:13 -05:00
OmarandGitHub 7d1a03dcc9 bugfix(tweaks): fix OneDrive uninstall path (#4864)
* bugfix(tweaks): fix OneDrive uninstall path

* bugfix(tweaks): use SystemRoot for OneDrive path
2026-07-22 12:41:48 -05:00
Paweł GwozdowskiandGitHub 5a4c9c883d Revert "Rework contributing.md (#4567)" (#4855) 2026-07-22 12:34:14 -05:00
Chris Titus 5c104d02e2 Update automated update PR workflows and filter release notes 2026-07-16 13:39:33 -05:00
Chris TitusandGitHub 06f33e88ba Fix Show Installed Apps reliability and selection (#4850)
* Fix Windows PowerShell runspace cleanup callback

* Fix installed app package ID matching

* Synchronize installed app selection UI

* Streamline installed app detection

* Avoid installed app UI runspace deadlock
2026-07-16 13:30:12 -05:00
b9dee86694 refactor: style and align Install tab filter chips (#4848)
* refactor: implement FilterChipStyle for Install tab category filters

- Created a dedicated FilterChipStyle style block with custom padding, cursor, and height definitions

- Applied FilterChipStyle to all category filter buttons

- Added a new 'Filters' TextBlock section title aligned with the sidebar actions

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-16 10:37:25 -05:00
OmarandGitHub 3d1904ebbe fix: wrap Tweaks header buttons to prevent layout clipping (#4847) 2026-07-16 10:29:16 -05:00
Chris TitusandGitHub 70f1c50bdd chore: Update generated dev docs (#4846) 2026-07-15 23:37:16 -05:00
2e5df82979 Update sponsors in README (#4820)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-07-15 23:37:06 -05:00
Chris TitusandGitHub 29595f90e2 Fix progress, update profiles, and documentation links (#4845)
* Improve O&O ShutUp10++ download flow

* Refine Windows Update profile behavior and docs

* Fix documentation link regressions

* Restore updates when applying recommended profile
2026-07-15 23:36:46 -05:00
Chris TitusandGitHub 9ed06e793a Replace install progress overlay with shared indicator (#4844)
* Use shared progress for app workflows

* Remove legacy install progress overlay

* Document shared app progress indicator

* Address progress review feedback

* Track all Win11 ISO progress

* Restore Win11 Creator work on relaunch
2026-07-15 22:35:58 -05:00
51cb3811dd Add category search chips to Install tab for improved filtering (#4826)
* Add Quick Category Search Chips to Install tab

Add category shortcut chips on the Install tab that insert the category
name into the existing search box. Append each app's category as a
description tag so the existing description search filters by category.
Reuses the standard button style and existing search; no search, install,
or preset logic is changed.

* Fix install category chip filtering

* Fix category filter refresh behavior

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-15 20:54:22 -05:00
975616b58f Fix search bar overflowing behind icon buttons at narrow window sizes (#4831)
* fix(search): make search bar stretch instead of overflowing at narrow window sizes

* fix(ui): sync runtime MinWidth override with XAML value

Add_Loaded was hardcoding $sync.Form.MinWidth back to 1000 after
load, overriding the 1150 set in inputXML.xaml and letting the
window shrink below the space the search bar/toolbar layout needs.

* fix(ui): address responsive search review feedback

* fix(ui): enforce usable toolbar width

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-15 20:41:41 -05:00
11783c75a8 fix(dns): scope leaked ToggleButton style and theme the ComboBox dropdown popup (#4835)
Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-15 17:09:10 -05:00
13a18eeeb2 Add maximaze button (#4841)
* Add maximize button logic and update assets

* Add maximize button with theming

* delelte logo

* Center and restyle the window control buttons

* Fix window state test setup

---------

Co-authored-by: aran628 <aran2014+@gmail.com>
Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-15 16:59:51 -05:00
Chris TitusandGitHub 822003d87f Fix AppX detection and add package restore support (#4842)
* Fix installed AppX package detection

* Add AppX package restore workflow

* Add AppX operation progress feedback

* Fix AppX operation launch race

* Handle AppX workflow failures
2026-07-15 15:57:56 -05:00
c8c3c7869f Add window-level progress indicator for Run Tweaks and Undo (#4830)
* feat(tweaks): add window-level progress indicator for Run Tweaks and Undo

* Hide completed tweaks progress on next action

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-15 14:17:42 -05:00
Paweł GwozdowskiandGitHub 157a66b14d Update Invoke-WPFUIElements.ps1 (#4824) 2026-07-13 13:20:53 -05:00
9791386f53 fix: resolve silent failures in AppX removal and PS7 DISM bugs (#4822)
* fix: resolve silent failures in AppX removal and PS7 DISM bugs

- Fixed a bug where Remove-AppxPackage failed silently in PowerShell 7 due to pipeline binding issues. We now explicitly loop through Get-AppxPackage results and pass PackageFullName directly.
- Added wildcard matching to Get-AppxPackage and Get-AppxProvisionedPackage to reliably locate packages regardless of short name vs family name variations.
- Offloaded Get-AppxProvisionedPackage and Remove-AppxProvisionedPackage execution to Windows PowerShell 5.1 (powershell.exe) to bypass PowerShell 7 DISM COM exceptions ("Class not registered") and performance hangs.
- Deduplicated AppX removal logic by calling Remove-WinUtilAPPX directly from Invoke-WPFAppxRemoval instead of copying the implementation.

* refactor(Remove-WinUtilAPPX): use script block to improve readability

* feat: enhance AppX removal process and add provisioned package removal function

* fix(tests): update AppX removal tests

This also adds tests for the new Remove-WinUtilProvisionedAPPX functionality

* Move AppX removal under Tweaks

* Address AppX removal review feedback

* Complete AppX removal error handling

* Prevent AppX cleanup confirmation prompts

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-13 13:16:35 -05:00
Chris TitusandGitHub c8e756dc11 chore: Update generated dev docs (#4838) 2026-07-13 11:40:20 -05:00
Sean (ANGRYxScotsman)andGitHub 9e21c8f4a7 Updated ConsumerFeatures description and small dev doc edit (#4817)
* Update tweaks.json

* Update _index.md

* Update _index.md
2026-07-13 11:39:49 -05:00
Chris TitusandGitHub 8cd8679512 chore: Update generated dev docs (#4837) 2026-07-13 11:37:52 -05:00
ac11c73b64 feat(legacy-panels): add Firewall, Security, Programs, and Mouse to L… (#4809)
* feat(legacy-panels): add Firewall, Security, Programs, and Mouse to Legacy Windows Panels

- Added `firewall.cpl`, `wscui.cpl`, `appwiz.cpl`, and `main.cpl` to `config/feature.json`

* chore(legacy-panels): alphabetize panel entries

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-13 11:37:22 -05:00
KarimandGitHub 9d67514bf9 feat(apps): add gsudo (#4810)
- Added gsudo to the Pro Tools category to provide a native sudo equivalent for Windows terminals.
2026-07-13 10:26:44 -05:00
Chris TitusandGitHub fea9f4e869 chore: Update generated dev docs (#4836) 2026-07-13 10:26:33 -05:00
1aa0dd90ef prevent-automatic-download-of-applications-associated-with-device-metadata (#4827)
* add tweak

* add devdocs

* add devdocs

---------

Co-authored-by: matthewkasiski <matt@matthewkasiski.me>
2026-07-13 10:25:58 -05:00
Yayo RazoandGitHub 90a19685f5 fix(install): use correctly-scoped $app instead of undefined $Apps in app entry rendering (#4834) 2026-07-13 04:23:24 -05:00
007995c112 Improve install app card UI (#4771)
Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-11 11:21:59 -05:00
Chris Titus 0dcd361c51 Remove slash commands for contributors 2026-07-09 14:25:50 -05:00
eduardodepaivaandGitHub aeaef46e30 Fix names in applications.json. (#4819) 2026-07-08 10:25:15 -05:00
Ivan LepekhaandGitHub e0dfeb4f4d Remove Lightshot entry from applications.json (#4808)
Removed Lightshot application entry from applications.json
2026-07-04 09:52:55 -05:00
Chris Titus 1c7ee06bbe chore: skip automated updates in changelog 2026-07-04 00:58:24 -05:00
ed6de94c46 Update sponsors in README (#4544)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-07-04 00:52:10 -05:00
Chris TitusandGitHub 640b02868a fix(iso): resolve windows update re-enabling failures on first boot (#4807)
* fix iso update service reenable

* test allow font scale sync state
2026-07-04 00:50:45 -05:00
29b269201d Add font scaling keyboard and mouse shortcuts (#4781)
* Add font scaling shortcuts

* Fix font scaling shortcut modifiers

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-04 00:32:39 -05:00
GabiandGitHub 9fed8d1c4c Reapply font scaling after theme change (#4782) 2026-07-04 00:29:22 -05:00
Chris TitusandGitHub 4ae3549b8a chore: Update generated dev docs (#4806) 2026-07-04 00:21:28 -05:00
Ivan LepekhaandGitHub e72ac75d13 feat(github): Add version context for issues (#4803)
* Create app suggestion discussion template

Add a discussion template for app suggestions with rules and input fields.

* Add application suggestion link to issue template

Added a link for suggesting applications to the issue template.

* Update app suggestion discussion template

* Add checkbox for WinGet application presence check

* Changed name of file, didn't change name of link XD

* Add WinUtil version input to bug report template

Added input field for WinUtil version in bug report template.

* whoops :^)

* Someone forgot that label is single value parameter

* GH Wiki is a liar

* GH Docs are looking awful
2026-07-04 00:21:26 -05:00
LKmXrandGitHub 9846dd7b49 Fix Multiplane Overlay toggle (#4768)
* Fix MPO values

DisableOverlays should be 0

* Update tweaks.json
2026-07-04 00:20:48 -05:00
eduardodepaivaandGitHub 466d32e690 Add MiniTool Partition Wizard and fix Everything sorting. (#4766) 2026-07-04 00:10:40 -05:00
Chris TitusandGitHub dce1536be0 chore: Update generated dev docs (#4805) 2026-07-04 00:06:25 -05:00
894d62ca68 Added WPFToggleWindowSnapping to tweaks.json (#4748)
* Added WPFToggleWindowSnapping to tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Add Window Snapping tweak docs

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-04 00:05:56 -05:00
27e590577b fix: make tweak/feature link (?) follow font scaling (#4700)
* Update Invoke-WPFUIElements.ps1

* Update Invoke-WPFUIElements.ps1

* Update Invoke-WPFUIElements.ps1

Update Invoke-WPFUIElements.ps1

* Fix tweak link margin scaling

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-03 23:51:11 -05:00
Chris TitusandGitHub 8147903ff2 chore: Update generated dev docs (#4801) 2026-07-02 15:26:16 -05:00
GabiandGitHub 7a72c73906 Talk about "PowerShell 7 from the Microsoft Store" inside of KnownIssues.md (#4758)
* Talk about "PowerShell 7 from the Microsoft Store" inside of KnownIssues.md

* Update Invoke-WinUtilInstallPSProfile.ps1

* Update KnownIssues.md

* Update KnownIssues.md

* Update KnownIssues.md
2026-07-02 15:25:08 -05:00
Chris TitusandGitHub 32891ada55 Fix DHCP DNS reset handling (#4800) 2026-07-02 15:24:14 -05:00
Chris TitusandGitHub e2d6f8534e chore: Update generated dev docs (#4798) 2026-07-02 13:29:34 -05:00
299b68e82d Added winget uninstall of Copilot. Line 968 Remove-AppxPackage is not working when Copilot is installed back after Windows Updates and the only option that works is using winget (#4797)
Co-authored-by: gepardjaro <192244662+gepardjaro@users.noreply.github.com>
2026-07-02 13:28:57 -05:00
de6652adc0 Remove local file preference storage and cleanup Invoke-WinutilThemeChange (#4617)
* Remove local file preference storage

* Update main.ps1

* Update main.ps1

* Update Set-Preferences.ps1

* Update main.ps1

* Update Set-Preferences.ps1

* Update main.ps1

* Delete functions/private/Set-Preferences.ps1

* simplify Invoke-WinutilThemeChange.ps1

* fix foss highlight in Invoke-WinutilThemeChange.ps1

* Update Invoke-WinutilThemeChange.ps1

* Update Invoke-WinutilThemeChange.ps1

* Update main.ps1

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-02 13:04:50 -05:00
727ba52a4d Deleted Test-WinUtilPackageManager.ps1 + custom winget and choco installs + remove winget/choco enums and exeptions (#4606)
* Update Invoke-WPFGetInstalled.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Delete functions/private/Test-WinUtilPackageManager.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilChoco.ps1

* Update Invoke-WPFGetInstalled.ps1

* Update Invoke-WPFGetInstalled.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilChoco.ps1

* Update Install-WinUtilWinget.ps1

* Fixed lastrun.json

* refactor: remove PackageManagers enum and unused custom exception classes

* Update Invoke-WPFUIElements.ps1

* Update Get-WinUtilSelectedPackages.ps1

* Update Set-Preferences.ps1

* Update main.ps1

* Complete package manager enum removal

Use string package-manager preferences throughout the remaining helpers and focused tests. Restore the existing Winget install flow and package-manager probe helper so PR 4606 keeps the current WinGet repair method.

* Fix string keyed package split

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-02 12:50:57 -05:00
d45c62e470 Cleanup start.ps1 (#4587)
* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Update start.ps1

* Fix startup logging regression

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-07-02 12:20:38 -05:00
Chris Titus 492d5b57d7 cleanup 2026-07-02 12:06:36 -05:00
Chris TitusandGitHub 58d37bb461 Clean up analyzer warnings across app search and ISO workflows (#4794)
* Clean up analyzer warnings

* Align analyzer warning cleanup policy

* Run PSScriptAnalyzer directly in unittests workflow

* Bind lazy-rendered buttons to click handlers

* Remove WinUtil performance tracing

* Fix Win11 ISO creator temp directory reuse
2026-07-02 12:05:25 -05:00
Sean (ANGRYxScotsman)andGitHub b72bfb03ba Update pre-release.yaml (#4746) 2026-07-02 11:01:18 -05:00
Chris Titus cc2be2d5e8 cleanup 2026-07-02 10:21:41 -05:00
Chris TitusandGitHub 93dc23dd66 Speed up runspace and tab initialization (#4793)
* Add startup performance tracing

* Lazy initialize non-default tabs

* Render install app entries incrementally

* Defer and cache toggle status checks

* Clean up runspace invocation ownership

* Defer GUI runspace pool startup

* Defer status taskbar asset rendering

* Record final speed verification

* Fix deferred install render timer callback

* Add dispatcher smoke coverage for install rendering

* Replace install render timer with dispatcher callbacks

* Gate performance tracing behind compile switch

* Clean up analyzer warnings in speed changes

* Speed up runspace and tab initialization
2026-07-01 23:34:59 -05:00
GabiandGitHub 916dc761ba remove useless xaml changes (#4632) 2026-07-01 21:59:43 -05:00
Chris TitusandGitHub 2cb20893fc Expand Pester coverage across install, tweaks, and UI workflows (#4792)
* Harden Pester CI and discard runspace return values

* Add prioritized test backlog

* Add WinUtil action logging

* Add config integrity tests

* Add XAML control wiring tests

* Add registry and service helper tests

* Add package manager tests

* Add runspace behavior tests

* Add tweak orchestration tests

* Add install workflow tests

* Add update profile tests

* Add AppX removal tests

* Log package installer output

* Add UI state helper tests

* Pin Pester test runner version

* Expand Win11 Creator tests

* Add preferences and theme tests

* Add search filter tests

* Add compile contract tests

* Use single WinUtil session log

* Remove installer output logging helper

* Handle locked WinUtil transcript log

* Avoid appending to active transcript log

* Log install uninstall package identities
2026-07-01 21:49:15 -05:00
Chris TitusandGitHub c3b4f85fce Handle Microsoft Store winget sources (#4790) 2026-07-01 17:15:44 -05:00
Chris TitusandGitHub 104c763132 Fix Win11 Creator product-key validation failures (#4791)
* feat: Enhance Win11 Creator with edition ID handling and update autounattend.xml generation

* Strengthen Pester coverage for config and function files
2026-07-01 17:15:26 -05:00
Chris Titus 8062815655 Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-07-01 13:03:33 -05:00
Chris Titus 58be808823 feat: Add AGENTS.md and SPEC.md for project guidelines and instructions 2026-07-01 13:03:30 -05:00
Chris TitusandGitHub 77dc64cbea chore: Update generated dev docs (#4787) 2026-07-01 12:24:30 -05:00
Sean (ANGRYxScotsman)andGitHub 72d47ba020 Update preset configuration (#4744)
* Update preset.json

* Update preset.json
2026-07-01 12:22:17 -05:00
GabiandGitHub b6b479685a Stop hardcoding C:\ (#4725)
* Stop hardcoding C:\

* Update tweaks.json
2026-07-01 12:21:21 -05:00
Chris TitusandGitHub c7dfbeb7fe chore: Update generated dev docs (#4786) 2026-07-01 12:14:00 -05:00
GabiandGitHub 7c71a39f7a Feature/appx removal tab (#4729)
* feat: add config-driven AppX package removal tab

- Add config/appx.json with curated list of removable AppX packages

- Add AppX Removal tab (WPFTab6) with Select All, Clear, and Remove buttons

- Reuse existing Invoke-WPFUIElements engine for minimal code footprint

- Add Invoke-WPFAppxRemoval.ps1 for background runspace package removal

- Add theme colors for the new tab button in light and dark modes

* yep

* yep

* yep

* yep

* Update inputXML.xaml

* Update Invoke-WPFButton.ps1

* Update Invoke-WPFButton.ps1

* Update Invoke-WPFSelectedCheckboxesUpdate.ps1

* Update appx.json

* Update appx.json

* Update appx.json

* Update tweaks.json

* Update appx.json

* Update appx.json

* Update appx.json

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFButton.ps1

* Delete functions/public/Invoke-WPFAppxRemoval.ps1

* Revert "Update Invoke-WPFButton.ps1"

This reverts commit d8705cc08e.

* Revert "Delete functions/public/Invoke-WPFAppxRemoval.ps1"

This reverts commit 9e45d1ad99.

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFButton.ps1

* yep

* Update appx.json

* Update appx.json

* Update tweaks.json

* Update start.ps1

* Update preset.json

* Update tweaks.json

* yep

* yep

* yep

* yep

* yep

* yep

* Update Invoke-WPFAppxRemoval.ps1

* Update Update-WinUtilSelections.ps1

* Update Update-WinUtilSelections.ps1

* yep

* Update Invoke-WPFAppxRemoval.ps1

* yep

* yep

* Update Invoke-WPFAppxRemoval.ps1

* Update appx.json

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update appx.json

* Update Invoke-WPFGetInstalled.ps1

* Update Invoke-WPFAppxRemoval.ps1

* yep

* yep

* Update Invoke-WPFSelectedCheckboxesUpdate.ps1

* yep

* yep

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* yep

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update appx.json

* Update Invoke-WPFImpex.ps1

* Update Invoke-WPFImpex.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update preset.json

* Update preset.json

* Update Invoke-WPFSelectedCheckboxesUpdate.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update tweaks.json

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* Update Invoke-WPFAppxRemoval.ps1

* yep

* yep

* Update Invoke-WPFAppxRemoval.ps1

* yep

* Delete functions/private/Find-AppxByNameOrDescription.ps1

* yep

* Update Invoke-WPFButton.ps1

* Update main.ps1

* Update Invoke-WPFTab.ps1

* yep

* yep

* Update themes.json
2026-07-01 12:13:32 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0c42b9e458 chore(deps): bump actions/cache from 5 to 6 (#4775)
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 12:03:27 -05:00
Chris TitusandGitHub 26f89adf95 chore: Update generated dev docs (#4779) 2026-06-29 10:34:21 -05:00
GabiandGitHub 5003f14e0a update edge uninstall (#4666)
* yep

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-06-29 10:33:31 -05:00
Chris TitusandGitHub 8b6098b36a chore: Update generated dev docs (#4778) 2026-06-29 10:32:35 -05:00
GabiandGitHub 1f0756336f Update tweaks.json (#4774) 2026-06-29 10:32:01 -05:00
Chris TitusandGitHub 0f39648de6 chore: Update generated dev docs (#4763) 2026-06-26 19:34:10 -04:00
GabiandGitHub 7f0d2183e3 fix import not working (#4762) 2026-06-26 18:33:38 -05:00
Sean (ANGRYxScotsman)andGitHub 6ae24d071d Fix doc gen (#4743)
* edit 1

* Update devdocs-generator.ps1
2026-06-23 12:08:21 -05:00
Ivan LepekhaandGitHub af900dab3a feat(github): Create a discussion template for app suggestion (#4741)
* Create app suggestion discussion template

Add a discussion template for app suggestions with rules and input fields.

* Add application suggestion link to issue template

Added a link for suggesting applications to the issue template.

* Update app suggestion discussion template

* Add checkbox for WinGet application presence check

* Changed name of file, didn't change name of link XD
2026-06-22 18:22:59 -05:00
Chris TitusandGitHub 31425a5520 chore: Update generated dev docs (#4739) 2026-06-22 14:47:09 -05:00
GabiandGitHub 47f06e34e3 Deleted lastrun.json (#4714)
* Update Invoke-WPFtweaksbutton.ps1

* Update main.ps1

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-06-22 14:46:38 -05:00
Chris TitusandGitHub ae4c787545 chore: Update generated dev docs (#4738) 2026-06-22 14:35:13 -05:00
NotDecidedandGitHub b2a258a45f Add option to disable lock screen in tweaks.json (#4721) 2026-06-22 14:34:11 -05:00
GabiandGitHub d7cc5981e0 allow uninstallation of edge trough install tab (#4716)
* unlock edge uninstall whenever the user trys to uninstall edge trough install tab

* Update Invoke-WPFUnInstall.ps1
2026-06-22 14:33:09 -05:00
GabiandGitHub 9bfba35788 Correct old infromation in CONTRIBUTING.md (#4709) 2026-06-22 14:30:23 -05:00
GabiandGitHub 51d7350e35 Fix Add-SelectedAppsMenuItem's spaces (#4707) 2026-06-22 14:28:39 -05:00
GabiandGitHub 652ea6368c Removed useless logic from main.ps1 (#4706) 2026-06-22 14:27:16 -05:00
GabiandGitHub 57be85b566 Added lightshot and KeePassXC to applications.json (#4702)
* Added lightshot to applications.json

* Added keepassxc to applications.json
2026-06-22 14:26:24 -05:00
4hm3dn3d41andGitHub 376156f072 Rework foss filtering (#4696)
* Replace FOSS highlight toggle with inline label

Remove the separate "Highlight FOSS" toggle and its theming logic, and instead append an inline "- FOSS" label to FOSS app entries. Changes: remove WPFToggleFOSSHighlight from app navigation and related event handlers, delete FOSSColor resource updates in theme code and button handler, simplify checkbox setup in Invoke-WPFUIElements by removing the special-case toggle logic, and update Initialize-InstallAppEntry to build a horizontal panel containing the app name plus a small green "- FOSS" TextBlock for FOSS items. This consolidates FOSS indication into the item UI and cleans up toggle/theme handling.

* Add inline FOSS label to app entries

Replace the separate StackPanel/TextBlock used for the FOSS indicator with an inline System.Windows.Documents.Run appended to the app name. The run is styled (green RGB(76,175,80) and FontSize=10) and the checkbox content assignment was moved outside the conditional so the appName (with optional FOSS run) is always used. Cleaned up related comments to reflect the FOSS label change.

* Add FOSS note type with green bullet

Added FOSS notes in the UI and FOSS labels with a green bullet instead of the text '#FOSS'

* Use larger circle glyph; remove italic text

Replaced the FOSS and list bullet glyphs with a larger circle for better visual consistency and removed the italic styling

* Update FOSS/bullet glyphs, colors and sizes

Updated FOSS/list bullet styling by switching glyphs from U+2B24 to U+25CF, increasing size (10→11.5), and adjusting bullet/text colors for better visibility and consistency across.
2026-06-22 14:23:09 -05:00
Chris TitusandGitHub cc40fdf42a chore: Update generated dev docs (#4737) 2026-06-22 14:21:05 -05:00
1b8a834d5d Simplify WPFTweaksRevertStartMenu (#4694)
Co-authored-by: Chris Titus <contact@christitus.com>
2026-06-22 14:20:31 -05:00
Chris TitusandGitHub 7ffb396786 chore: Update generated dev docs (#4736) 2026-06-22 14:17:57 -05:00
DiegoandGitHub 1d4fa15f7e Add pnpm package manager (#4681) 2026-06-22 14:17:50 -05:00
Paweł GwozdowskiandGitHub aefbf1a847 standardize console message punctuation and capitalization (#4680) 2026-06-22 14:17:23 -05:00
Chris TitusandGitHub edca5207ec chore: Update generated dev docs (#4735) 2026-06-22 14:17:10 -05:00
3307e88f2c Update tweaks.json (#4679)
Co-authored-by: Chris Titus <contact@christitus.com>
2026-06-22 14:16:28 -05:00
Paweł GwozdowskiandGitHub 36dc2e73ff Update applications.json (#4678) 2026-06-22 14:14:51 -05:00
Paweł GwozdowskiandGitHub c5ed3a9773 fix typos in .github folder (#4677)
* .yaml

* Update feature_request.yaml

* Update compile-check.yaml

* Update close-old-issues.yaml
2026-06-22 14:14:10 -05:00
Paweł GwozdowskiandGitHub d268bb721b correct "WinUtil" in docs (#4676)
* Update _index.md

* Update architecture.md

* Update faq.md

* Update KnownIssues.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update hugo.toml
2026-06-22 14:13:16 -05:00
Chris TitusandGitHub b9e324b01a chore: Update generated dev docs (#4734) 2026-06-22 14:08:57 -05:00
910c9f698c feat: add advanced tweak to disable reserved storage (#4664)
Co-authored-by: Dev <dev@localhost>
2026-06-22 14:08:18 -05:00
Chris TitusandGitHub dbab51061d chore: Update generated dev docs (#4733) 2026-06-22 14:03:36 -05:00
GabiandGitHub 8eadd527ad Stop using temp varible (#4645)
* Update Invoke-WPFOOSU.ps1

* Update Invoke-WPFPanelAutologin.ps1
2026-06-22 14:03:00 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7745364e66 Bump actions/checkout from 6 to 7 (#4730)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 13:59:59 -05:00
GabiandGitHub ac0982f9f5 Removed Get-ComputerInfo from main.ps1 (#4634) 2026-06-22 13:59:37 -05:00
GabiandGitHub 298542e4f7 Removed icons from release-drafter.yml (#4590) 2026-06-22 13:52:59 -05:00
Chris TitusandGitHub 9d75eadf16 chore: Update generated dev docs (#4732) 2026-06-22 13:52:03 -05:00
36f39091ec Make WIndowsAI tweak more understandable in tweaks.json (#4684)
* Make WIndowsAI tweak more understandable in tweaks.json

* Update config/tweaks.json

why not

Co-authored-by: Breaking Changes <107767789+HopeItBuilds@users.noreply.github.com>

---------

Co-authored-by: Breaking Changes <107767789+HopeItBuilds@users.noreply.github.com>
2026-06-22 13:51:36 -05:00
GabiandGitHub 58a81b106c Added back VoidTools Everything to applications.json (#4693) 2026-06-11 23:15:05 -05:00
Paweł GwozdowskiandGitHub a280ddb1fa correct case of "WinUtil" in GUI / user-facing messages (#4675)
* WinUtil in .ps1

* WinUtil in GUI

* Update KnownIssues.md
2026-06-09 12:22:56 -05:00
Paweł GwozdowskiandGitHub 01c0e999c1 Update CODE_OF_CONDUCT.md (#4674) 2026-06-09 12:21:34 -05:00
Paweł GwozdowskiandGitHub 5efef2c0f3 Update SECURITY.md (#4673) 2026-06-09 12:21:05 -05:00
Chris TitusandGitHub ea1cff0724 Add 'Refactor' option to PR template 2026-06-08 10:19:47 -05:00
Chris TitusandGitHub 09569162a1 chore: Update generated dev docs (#4672) 2026-06-08 10:10:56 -05:00
Neac0andGitHub bced250ae1 Fix Remove Home and Gallery (#4654)
Fixes the deletion of "Home" and "Gallery" in File Explorer. Now it correctly deletes both.
2026-06-08 10:10:19 -05:00
Chris TitusandGitHub 80aa6af30a chore: Update generated dev docs (#4671) 2026-06-08 10:05:32 -05:00
5a233b3422 fix: add registry tracking to WPFTweaksRightClickMenu for drift detection (#4636)
* fix: correct false-positives and service tracking in drift detection

* Update Invoke-WPFtweaksbutton.ps1

* Update Invoke-WPFtweaksbutton.ps1

* Update Invoke-WPFtweaksbutton.ps1

---------

Co-authored-by: Dev <dev@localhost>
2026-06-08 10:04:20 -05:00
GabiandGitHub 01ef78915a Remove -NoUi (#4572)
* Made -NoUi not exit the window

* Update start.ps1

* Update main.ps1

* Update main.ps1

* Update Set-WinUtilProgressbar.ps1

* Update Invoke-WPFImpex.ps1

* Update Invoke-WPFUIThread.ps1

* Update start.ps1

* Update Invoke-WPFUIThread.ps1

* Update main.ps1

* Update main.ps1
2026-06-08 10:02:35 -05:00
Chris TitusandGitHub 7dfebba70f chore: Update generated dev docs (#4670) 2026-06-08 10:01:26 -05:00
0a018e0405 Update WPFTweaksRevertStartMenu (#4615)
* Update tweaks.json

* Update preset.json

* Update preset.json

* Update tweaks.json

* Update KnownIssues.md

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-06-08 10:00:43 -05:00
Chris TitusandGitHub e50621a9dc chore: Update generated dev docs (#4669) 2026-06-08 09:49:20 -05:00
3ef100a083 Fixed bug merged in #4577 that breaks Taskbar Search Icon tweak (#4649)
Co-authored-by: gepardjaro <266757713+drzewjaro@users.noreply.github.com>
2026-06-08 09:48:41 -05:00
Chris TitusandGitHub eebb56ac5a chore: Update generated dev docs (#4668) 2026-06-08 09:45:11 -05:00
GabiandGitHub daf045390d fix dev branch not working (#4651)
* fix dev branch not working

* Update start.ps1
2026-06-08 09:44:14 -05:00
GabiandGitHub 6214012fd1 Added -NoRestart to WPFTweaksWindowsAI (#4639) 2026-06-08 09:43:20 -05:00
CodingWondersandGitHub 297b3079e5 Fix slop remains (#4640)
* Fix slop remains

Chris likes to vibe code. AI likes to use different types of dashes (em-dashes, en-dashes), instead of regular dashes (-).

On PowerShell 7 this appears to work. The parser doesn't care. But, what about PowerShell 5? It begins throwing errors about the ampersand. Loading it in the ISE reveals how it stops parsing the syntax correctly when it encounters em-dashes. Rather than displaying them as such, the ISE displays them as —.

Chris, if you want to vibe code, I don't mind. But at least use regular dashes.

Anyway, I won't fix the AI code. I just want to make it work on my beloved powershell 5.

* Apparently this file is important
2026-06-08 09:43:04 -05:00
Chris TitusandGitHub 9fdf944ef9 chore: Update generated dev docs (#4667) 2026-06-08 09:43:02 -05:00
GabiandGitHub 6b5a9bcb9b Added -Recurse for Onedrive Remove-Item command (#4642) 2026-06-08 09:42:25 -05:00
e4d305284b feat: detect reverted tweaks on startup (#4582)
Co-authored-by: vyas-devgna <vyas-devgna@users.noreply.github.com>
2026-06-04 15:28:37 -05:00
GabiandGitHub 78593cc58d Fixed irfanview's and openvpn's foss selection (#4546)
* Fixed irfanview's foss selection

* Update applications.json

* Update applications.json
2026-06-04 13:42:08 -05:00
GabiandGitHub e83033a122 Update KnownIssues.md (#4537)
* Update KnownIssues.md

* Update KnownIssues.md

* Update KnownIssues.md
2026-06-03 16:12:02 -05:00
Chris TitusandGitHub 5832f0df81 chore: Update generated dev docs (#4631) 2026-06-03 16:09:54 -05:00
GabiandGitHub 26f3284919 Show ctt logo instantly (#4603)
* Update main.ps1

* Delete functions/public/Show-CTTLogo.ps1

* Update main.ps1

* Update main.ps1
2026-06-03 16:09:44 -05:00
GabiandGitHub 1f8455e90d Removed WPFTweaksWidget's UndoScript (#4608) 2026-06-03 16:08:12 -05:00
Chris TitusandGitHub 62c43e6e82 chore: Update generated dev docs (#4630) 2026-06-03 16:07:49 -05:00
GabiandGitHub a1949ed917 Update feature.json (#4612) 2026-06-03 16:07:01 -05:00
Chris TitusandGitHub 74a3ddad1c chore: Update generated dev docs (#4629) 2026-06-03 16:06:49 -05:00
GabiandGitHub d7b0389a93 Removed WPFTweaksPowershell7Tele and added it to WPFTweaksTelemetry (#4613)
* Update tweaks.json

* Update preset.json
2026-06-03 16:06:03 -05:00
GabiandGitHub 23f197b644 Update main.ps1 (#4604) 2026-06-03 13:50:51 -05:00
Chris TitusandGitHub b2eeda9eb2 chore: Update generated dev docs (#4627) 2026-06-03 13:46:17 -05:00
GabiandGitHub ceec8aeb53 Update Invoke-WPFPanelAutologin.ps1 (#4596) 2026-06-03 13:45:16 -05:00
GabiandGitHub 6b125346cd Simplify Invoke-WPFFixesNetwork.ps1 (#4594)
* Update Invoke-WPFFixesNetwork.ps1

* Update Invoke-WPFFixesNetwork.ps1
2026-06-03 13:44:21 -05:00
Chris TitusandGitHub 5f8e493536 chore: Update generated dev docs (#4626) 2026-06-03 13:43:59 -05:00
GabiandGitHub 4db0248911 Simplify Invoke-WPFOOSU.ps1 (#4593)
* Simplify Invoke-WPFOOSU.ps1

* Update Invoke-WPFOOSU.ps1
2026-06-03 13:43:15 -05:00
GabiandGitHub 2bee0d6f2c Update Invoke-WinUtilSponsors.ps1 (#4589) 2026-06-03 13:36:42 -05:00
Chris TitusandGitHub 58df36841f chore: Update generated dev docs (#4625) 2026-06-03 13:35:59 -05:00
GabiandGitHub 5ba840f87f refactor WPFTweaksBlockAdobeNet (#4585)
* Update tweaks.json

* Update tweaks.json
2026-06-03 13:35:21 -05:00
GabiandGitHub fe2dd829b8 Removed RustDesk from applications.json (#4584) 2026-06-03 13:33:07 -05:00
AlfyusandGitHub 5cdb6c6e22 Italian README in ".github" (#4623)
* Create READMEITALIAN.md for Italian users

Added Italian translation for the README file, detailing the functionality and usage of WinUtil.

* Fix formatting in READMEITALIAN.md

* Rename READMEITALIAN.md to .github/READMEITALIAN.md
2026-06-03 13:29:51 -05:00
Chris TitusandGitHub 4bda00ec2d chore: Update generated dev docs (#4624) 2026-06-03 13:29:11 -05:00
462cc40a6a better explanation for toggle description (#4577)
* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-06-03 13:28:32 -05:00
GabiandGitHub 0e061692ba Made "Upgrade all applications" not exit after completion (#4575)
* Update Invoke-WPFInstallUpgrade.ps1

* Update Test-WinUtilPackageManager.ps1

* Update Test-WinUtilPackageManager.ps1
2026-06-03 13:23:46 -05:00
GabiandGitHub ffec7a8a8f Added nomacs to applications.json (#4566) 2026-06-03 13:18:29 -05:00
GabiandGitHub 6e4b1d26c6 Removed WPFTweaksDVR from preset.json (#4565) 2026-06-03 13:15:30 -05:00
Chris TitusandGitHub 32cec06ed6 chore: Update generated dev docs (#4622) 2026-06-03 13:15:11 -05:00
GabiandGitHub a24193ce18 Update tweaks.json (#4564) 2026-06-03 13:14:20 -05:00
PChaicotandGitHub 8f919be14b Add Playnite to applications.json (#4588) 2026-06-03 13:13:12 -05:00
GabiandGitHub ad5d103df9 Cleanup .gitignore (#4563)
* Update .gitignore

* Update .gitignore

* Update .gitignore

* Update .gitignore

* Update .gitignore
2026-06-03 13:11:49 -05:00
Chris TitusandGitHub b5160d9e24 chore: Update generated dev docs (#4621) 2026-06-03 13:09:04 -05:00
GabiandGitHub 614eb949db Remove OneDrive left overs (#4561)
* Update tweaks.json

* Update tweaks.json
2026-06-03 13:08:18 -05:00
GabiandGitHub d1edd5b2ba Delete overrides directory (#4554) 2026-06-03 13:07:34 -05:00
GabiandGitHub 333937d2fa Made Compile.ps1 not load the script into memory and use -Raw (#4536)
* Made Compile.ps1 not load the script into memory

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1
2026-06-03 13:04:04 -05:00
Chris TitusandGitHub 3ca87648b4 chore: Update generated dev docs (#4619) 2026-06-03 13:01:02 -05:00
Jarosław Drzewiecki de OgańczykandGitHub 4894a545f0 Fixed Json for Scrollbars Always Visible (#4528) 2026-06-03 13:00:22 -05:00
Jarosław Drzewiecki de OgańczykandGitHub 9f55bced01 Added Delivery Optimization tweak to Standard-Advanced Tweaks preset (#4548)
* Added Delivery Optimization tweak to Standard Tweaks preset

* Added Delivery Optimization tweak to Standard Tweaks preset and Advanced preset to match Gabi PR
2026-06-03 12:59:05 -05:00
Chris TitusandGitHub 56e0541113 chore: Update generated dev docs (#4618) 2026-06-03 12:59:00 -05:00
Jarosław Drzewiecki de OgańczykandGitHub 7607b92e21 Added Delivery Optimization disable tweak (#4527) 2026-06-03 12:58:23 -05:00
Sean (ANGRYxScotsman)andGitHub 153900a77b fix pics not loading in app page (#4614) 2026-06-03 12:57:33 -05:00
GabiandGitHub 691224f465 Rework README.md (#4586)
* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2026-06-03 12:56:58 -05:00
Chris TitusandGitHub 893dca4055 chore: Update generated dev docs (#4579) 2026-05-28 13:14:28 -05:00
GabiandGitHub 2ebc9bd6c4 fix WPFTweaksWindowsAI (#4578) 2026-05-28 13:13:54 -05:00
GabiandGitHub 076ef02b2c Rework contributing.md (#4567)
* Delete docs/assets/images/Complie.png

* Delete docs/assets/images/Commit-GHD.png

* Delete docs/assets/images/Discard-GHD.png

* Delete docs/assets/images/Push-Commit.png

* Delete docs/assets/images/Fork-Button-Dark.png

* Delete docs/assets/images/Fork-Button-Light.png

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md
2026-05-28 12:32:27 -05:00
GabiandGitHub c99114e9e1 Added -Preset for automation (#4539)
* Update start.ps1

* Update main.ps1

* Update start.ps1

* Update start.ps1

* Update main.ps1

* Update main.ps1

* Update _index.md

* Update _index.md

* Update _index.md

* Update README.md

* Update main.ps1

* Update start.ps1

* Update main.ps1

* Update main.ps1

* Update start.ps1

* Update main.ps1

* Update main.ps1

* Update main.ps1

* Update main.ps1
2026-05-26 15:22:28 -05:00
GabiandGitHub 9b72c1e2de Added advanced preset to tweaks (#4538)
* Update preset.json

* Update Invoke-WPFButton.ps1

* Update inputXML.xaml
2026-05-26 15:21:12 -05:00
Chris TitusandGitHub b379574574 chore: Update generated dev docs (#4558) 2026-05-26 15:17:54 -05:00
Sean (ANGRYxScotsman)andGitHub 565597a906 Update documentation and images across multiple pages (#4549)
* Update CONTRIBUTING.md

* updated the apps page and pics

* updated tweaks tab pic

* updated features page with pic

* updated update page with pic

* update win 11 page with pic

* update pics for app page

* deleted old pics

* fix favicon from not showing

* added forums link in help

* Update hugo.toml

* updated title screen pic and added it to the main screen

* Update _index.md

* added the recommended section to the user guild tweeks

* Update _index.md

* added the new advance preset

* clean up pages

* fix links

* fixed wikipedia link

* Update _index.md
2026-05-26 15:17:26 -05:00
GabiandGitHub 62ccf80856 Cleanup gitignore (#4526)
* Clean Up .gitignore

* Update .gitignore

* Clean Up .gitignore

* Update .gitignore

* Update .gitignore

* Update .gitignore
2026-05-26 15:14:35 -05:00
GabiandGitHub 70cdacb9f9 replaced some choco "na" packages with there package name in applications.json (#4523) 2026-05-26 15:08:58 -05:00
GabiandGitHub 459d0fd1b2 Fixed Get-WinUtilToggleStatus.ps1 displaying incorrect infromation for tweaks (#4522)
* Fixed Get-WinUtilToggleStatus.ps1 displaying incorrect infromation of tweaks

* Update Get-WinUtilToggleStatus.ps1

* Update Get-WinUtilToggleStatus.ps1

* Update Get-WinUtilToggleStatus.ps1

* Update Get-WinUtilToggleStatus.ps1
2026-05-26 15:05:25 -05:00
Chris TitusandGitHub 48e94f71bc chore: Update generated dev docs (#4555) 2026-05-26 15:01:09 -05:00
GabiandGitHub 2582f094ff Powerplan fix (#4521)
* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFButton.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update KnownIssues.md

* Update KnownIssues.md

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update tweaks.json
2026-05-26 15:00:33 -05:00
Chris TitusandGitHub 5aa099f6e2 Fix missing dism metadata (#4516)
* Fix product key invalid and missing metadata on some isos

* Fix Gabi's broken light mode pr
2026-05-19 14:11:27 -05:00
9d85eea4e5 Update sponsors in README (#4489)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-05-19 13:27:33 -05:00
Sree Sankar SandGitHub c765ffb317 Add minimize button to WinUtil window (#4508) 2026-05-19 13:26:54 -05:00
Chris TitusandGitHub 82f51b4bf1 chore: Update generated dev docs (#4515) 2026-05-19 13:26:45 -05:00
GabiandGitHub d44c013464 Changes windev.ps1's syntax (#4506)
* Changes windev.ps1's syntax

* Update windev.ps1
2026-05-19 13:26:32 -05:00
Chris TitusandGitHub 753d47b9bc Merge branch 'main' into pr/gepardjaro/4503 (#4514) 2026-05-19 13:26:07 -05:00
GabiandGitHub 8034e85521 Remove Write-Debug (#4498)
* Update Invoke-WinUtilCurrentSystem.ps1

* Update Invoke-WinUtilFontScaling.ps1

* Update Invoke-WinUtilTweaks.ps1

* Update Reset-WPFCheckBoxes.ps1

* Update Set-Preferences.ps1

* Update Update-WinUtilSelections.ps1

* Update Invoke-WPFSelectedCheckboxesUpdate.ps1

* Update Invoke-WPFtweaksbutton.ps1

* Update main.ps1

* Update main.ps1

* Update main.ps1

* Update main.ps1

* Update main.ps1

* Merge branch 'main' into Remove-Write-Debug
2026-05-19 13:16:06 -05:00
GabiandGitHub a09736f9a8 Cleanup Get-WinUtilToggleStatus.ps1 (#4497)
* Cleanup Get-WinUtilToggleStatus.ps1

* Update Get-WinUtilToggleStatus.ps1

* Merge branch 'main' into patch-9

* Update Get-WinUtilToggleStatus.ps1
2026-05-19 13:13:27 -05:00
GabiandGitHub 24aaf9a3cf Cleanup Get-WinUtilSelectedPackages.ps1 and remove annoying messages (#4496)
* Cleanup Get-WinUtilSelectedPackages.ps1 and remove annoying messages

* Update Get-WinUtilSelectedPackages.ps1

* Update Get-WinUtilSelectedPackages.ps1

* Update Get-WinUtilSelectedPackages.ps1

* Merge branch 'main' into patch-8

* Update Get-WinUtilSelectedPackages.ps1

* Update Get-WinUtilSelectedPackages.ps1

* Update Get-WinUtilSelectedPackages.ps1

* Update Get-WinUtilSelectedPackages.ps1
2026-05-19 13:07:10 -05:00
Chris TitusandGitHub f57b5f4ffa chore: Update generated dev docs (#4513) 2026-05-19 13:01:00 -05:00
Pinak DhabuandGitHub 32d24c8024 Add Game Mode toggle and fix MPO overlay for 25H2 (#4495) 2026-05-19 13:00:07 -05:00
Nazrul IslamandGitHub 743f9e3783 Refactor: Secure literal search and defensive scope handling (#4492)
* Refactor: Secure literal search and defensive scope handling

* Refactor: Secure literal search for Tweaks Tab

* Merge branch 'ChrisTitusTech:main' into fix-search-security
2026-05-19 12:56:58 -05:00
Chris TitusandGitHub 522c4471c0 chore: Update generated dev docs (#4512) 2026-05-19 12:42:19 -05:00
GabiandGitHub ea698f3791 Added WPFTweaksDisableBitLocker to tweaks.json (#4486)
* Added WPFTweaksDisableBitLocker to tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Merge branch 'main' into patch-6
2026-05-19 12:41:49 -05:00
GabiandGitHub 8ffd15c9f3 simplify Compile.ps1 by alot (#4484)
* Update Compile.ps1

* Delete tools/Invoke-Preprocessing.ps1

* Update .gitignore

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update .gitignore

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Merge branch 'main' into patch-5
2026-05-19 12:40:02 -05:00
GabiandGitHub 6c1cb0caab Deleted unused functions (#4482)
* Delete functions/private/Get-LocalizedYesNo.ps1

* Delete functions/private/Get-WPFObjectName.ps1

* Merge branch 'main' into patch-4
2026-05-19 12:36:49 -05:00
GabiandGitHub bcafbe6234 CleanUp Invoke-WinUtilFeatureInstall.ps1 and fix typo (#4481)
* CleanUp Invoke-WinUtilFeatureInstall.ps1

* Update Invoke-WinUtilFeatureInstall.ps1

* Update feature.json
2026-05-19 12:34:04 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fb54380b8b Bump actions/github-script from 7 to 9 (#4510)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-19 10:56:12 -05:00
GabiandGitHub 39f26133f4 Update pre-release.yaml (#4487) 2026-05-15 09:02:05 -05:00
GabiandGitHub 09695f10aa Fixed mpc-qt's description in applications.json (#4480) 2026-05-15 08:54:44 -05:00
tacostrangeandGitHub d1becc5310 Fixed typo - 'there' to 'their' (#4477)
* Fixed typo - 'there' to 'their'

* fix typo in tweaks.json from 'there' to 'their'
2026-05-15 08:54:03 -05:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>ChrisTitusTech
543b8958ef Fix Actions script injection vulnerability in issue-slash-commands.yaml (#4493)
* Initial plan

* Fix Actions script injection vulnerability in issue-slash-commands.yaml

Agent-Logs-Url: https://github.com/ChrisTitusTech/winutil/sessions/94895aac-198f-40b6-af42-27fe0c646587

Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-05-14 18:13:02 -05:00
Sean (ANGRYxScotsman)andGitHub c39c54c7c1 update theme (#4490) 2026-05-14 14:22:33 -05:00
Chris TitusandGitHub d8193fd8ac chore: Update generated dev docs (#4475) 2026-05-12 13:07:48 -05:00
Chris Titus 25adabd622 update bug 2026-05-12 13:07:27 -05:00
GabiandGitHub 2d605f1875 Make WPFTweaksServices do what it says (#4466)
* Update tweaks.json

* Update tweaks.json
2026-05-12 13:06:46 -05:00
GabiandGitHub d46d324df8 Cleanup programs install (#4465)
* Cleanup programs install

* Update Install-WinUtilProgramChoco.ps1
2026-05-12 13:06:13 -05:00
Chris TitusandGitHub 3e16817640 chore: Update generated dev docs (#4474) 2026-05-12 13:03:58 -05:00
Chris TitusandGitHub d0b91d190a chore: Update generated dev docs (#4473) 2026-05-12 13:03:01 -05:00
GabiandGitHub bdbfdb6681 Fixed WPFTweaksRemoveGallery and WPFTweaksRemoveHome (#4464)
* Fixed WPFTweaksRemoveGallery not setting explorer launchto

* Update tweaks.json

* Update tweaks.json
2026-05-12 13:02:54 -05:00
GabiandGitHub 0154b749a4 Added WPFTweaksWindowsAI (#4461)
* Added WPFTweaksWindowsAI

* Update tweaks.json
2026-05-12 13:02:26 -05:00
e6e44e3e04 Add Deskflow to applications (#4450)
* Add Deskflow to applications

* add: Include Deskflow in applications list

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-05-12 13:01:42 -05:00
GabiandGitHub e6d8fdff75 fix import (#4447)
* Made -Config use Runspaces main.ps1

* Fix no-UI config autorun

* Skip empty no-UI autorun sections

* Update Invoke-WinUtilAutoRun.ps1

* Ignore blank DNS selection during autorun

* Update main.ps1

* Update Invoke-WPFRunspace.ps1

* Update Invoke-WPFRunspace.ps1

* Update Invoke-WinUtilAutoRun.ps1

* Update Invoke-WinUtilAutoRun.ps1

* Update Invoke-WPFtweaksbutton.ps1

* Update start.ps1

* Update main.ps1

* Update Invoke-WPFtweaksbutton.ps1

* Update Invoke-WPFRunspace.ps1

* Update _index.md

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

* Merge branch 'ChrisTitusTech:main' into patch-3
2026-05-12 12:58:46 -05:00
GabiandGitHub 6ba184bdeb Hide Windows Updates from setting menu when disabling updates (#4445)
* Update Invoke-WPFUpdatesdisable.ps1

* Update Invoke-WPFUpdatesdefault.ps1

* Update Invoke-WPFUpdatesdefault.ps1

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

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

* Update Invoke-WPFUpdatesdisable.ps1

* Update Invoke-WPFUpdatesdisable.ps1
2026-05-12 12:57:07 -05:00
6d6defc206 improve: Clearing Applications list (#4451)
* Less radical removal of apps

* Moving some applications to Selfhosted category

* Some more chess-boxing

* Document section is too small

* TG forks are too niche

* Floorp should be good

* feat: Add new multimedia tools and update existing application entries in applications.json

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-05-12 12:54:23 -05:00
Chris TitusandGitHub fa073f8475 chore: Update generated dev docs (#4472) 2026-05-12 12:19:19 -05:00
GabiandGitHub 63aecc0bee Make WPFTweaksDeBloat an essential tweak and add it to presets (#4458)
* Update tweaks.json

* Update preset.json
2026-05-12 12:18:42 -05:00
GabiandGitHub a0887783f8 fix allowing everyone to close issues (#4454)
* Update issue-slash-commands.yaml

* Update issue-slash-commands.yaml

* Update issue-slash-commands.yaml
2026-05-07 16:23:43 -05:00
Ivan LepekhaandGitHub f3880b66bb feat: Update GH issue template for known issues (#4455)
* Add checkbox for known issues acknowledgment

Some people do not check the link

* typo fix

Updated checkbox type to checkboxes in bug report template.

* :zombie_sound:

* :zombie_sound_2:

* AAAAAAAAAAAAAAA

* I'm tired of testing commits

* :zombie_sound_1337:

Added a description to the read issues checkbox.

* my bad
2026-05-07 15:56:01 -05:00
Chris TitusandGitHub aa636926fa chore: Update generated dev docs (#4457) 2026-05-07 15:53:01 -05:00
GabiandGitHub ec3166bdc6 Update Invoke-WinUtilInstallPSProfile.ps1 (#4456)
* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilUninstallPSProfile.ps1

* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilUninstallPSProfile.ps1
2026-05-07 15:52:20 -05:00
GabiandGitHub a3f57532b6 Cleanup winget upgrade (#4410)
* Update Update-WinUtilProgramWinget.ps1

* Delete functions/private/Update-WinUtilProgramWinget.ps1

* Delete functions/private/Get-WinUtilInstallerProcess.ps1

* Update Invoke-WPFInstallUpgrade.ps1

* Update Invoke-WPFInstallUpgrade.ps1

* Update Invoke-WPFInstallUpgrade.ps1

* Update Invoke-WPFInstallUpgrade.ps1

* Update Invoke-WPFInstallUpgrade.ps1

* Update Invoke-WPFInstallUpgrade.ps1
2026-05-05 15:16:39 -05:00
3a7851b0f4 Update sponsors in README (#4387)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-04-30 15:19:09 -05:00
GabiandGitHub 6fa73db245 Removed anythingllm from applications.json (#4428) 2026-04-30 15:18:07 -05:00
184fe22a35 Cleanup: Delete all Scheduled Tasks related things (#4435)
* Delete functions/private/Set-WinUtilScheduledTask.ps1

* Update Invoke-WinUtilTweaks.ps1

* Update Invoke-WinUtilCurrentSystem.ps1

* waste of time

---------

Co-authored-by: Gabi <218829269+GabiNun2@users.noreply.github.com>
2026-04-30 15:16:27 -05:00
GabiandGitHub 9d4613d838 Strip unneccary surpassion from win11 creator (#4422)
* Update Invoke-WinUtilISO.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOUSB.ps1

* Merge branch 'ChrisTitusTech:main' into patch-8
2026-04-30 14:58:07 -05:00
GabiandGitHub 10d83c5b20 Added tweaks_applied to issue temeplate (#4416)
* Update bug_report.yaml

* Merge branch 'ChrisTitusTech:main' into patch-5
2026-04-30 14:37:34 -05:00
Chris TitusandGitHub 4065759ca0 chore: Update generated dev docs (#4434) 2026-04-30 12:46:57 -05:00
97d5f7b850 feat: Add Brave debloat settings to tweaks.json (#4427)
Co-authored-by: Copilot <copilot@github.com>
2026-04-30 12:46:12 -05:00
GabiandGitHub bf542af426 Fix TranslucentTB not installing (#4424) 2026-04-29 12:26:07 -05:00
GabiandGitHub ea9c7de722 Add a reminder that docs are auto-generated (#4421)
* Update PULL_REQUEST_TEMPLATE.md

* Update PULL_REQUEST_TEMPLATE.md
2026-04-29 12:24:24 -05:00
GabiandGitHub d2e5886b02 Update docs images (#4419)
* Delete docs/assets/images/Install/Install-apps.png

* Add files via upload

* Delete docs/assets/images/Tweaks-Tab-Light.png

* Delete docs/assets/images/Tweaks-Tab-Dark.png

* Delete docs/assets/images/Settings-Export-Light.png

* Delete docs/assets/images/Settings-Export-Dark.png

* Delete docs/assets/images/Install-Tab-Light.png

* Delete docs/assets/images/Install-Tab-Dark.png

* Delete docs/assets/images/Get-Installed-Light.png

* Delete docs/assets/images/Get-Installed-Dark.png

* Add files via upload
2026-04-29 12:22:26 -05:00
Chris TitusandGitHub d43c26e314 chore: Update generated dev docs (#4433) 2026-04-29 12:18:13 -05:00
GabiandGitHub 4297d69f2c Added WPFToggleBatteryPercentage to tweaks.json (#4412)
* Added `WPFTweaksBatteryPercentage` to tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-04-29 12:17:16 -05:00
GabiandGitHub 36e4b27872 Update autounattend.xml (#4409) 2026-04-29 12:00:54 -05:00
Chris TitusandGitHub ec5c7a4639 chore: Update generated dev docs (#4432) 2026-04-29 11:59:52 -05:00
GabiandGitHub f2ca10e8c9 Changed Some names (#4406)
* Changed Some names in tweaks.json

* Update feature.json

* Update tweaks.json

* Update tweaks.json
2026-04-29 11:59:03 -05:00
Chris TitusandGitHub 51cf62cdba chore: Update generated dev docs (#4403) 2026-04-21 15:32:37 -05:00
Jarosław Drzewiecki de OgańczykandGitHub 415d1864d7 Add WPFToggleScrollbars tweak to Always show scrollbars (#4402) 2026-04-21 15:32:05 -05:00
GabiandGitHub b463d9d460 Make sure to disable AppCaptureEnabled (#4401) 2026-04-21 15:20:04 -05:00
adakkusu-sanandGitHub 8fa354dec2 added IrfanView to applications.json (#4393) 2026-04-21 14:57:26 -05:00
Graham DavidandGitHub 683f9ee811 Added Dangerzone to Utilities (#4392) 2026-04-21 14:56:44 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
31d3c29447 Bump actions/upload-pages-artifact from 4 to 5 (#4391)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 14:50:23 -05:00
VasoandGitHub 68aa6e31bd Added BlurAutoClicker (#4383)
* Added YASB and Modrinth

* Added BlurAutoClicker
2026-04-21 14:50:03 -05:00
Chris TitusandGitHub cdf8727911 chore: Update generated dev docs (#4399) 2026-04-21 14:40:29 -05:00
CodingWondersandGitHub 21273bd3a8 [Tweaks] New tweak for unsigned RDP files (#4374)
* [Tweaks] New tweak for unsigned RDP

* Merge branch 'main' into tweaks-unsigned-rdp
2026-04-21 14:39:58 -05:00
potatoandGitHub 67910df019 style: normalize themes.json spacing & uppercase hex values (#4346)
* style: normalize themes.json spacing

* style: uppercase theme hex values

* Merge branch 'main' into fix/themes-json-spacing
2026-04-21 14:37:02 -05:00
Chris Titus dee694b166 Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-04-21 14:20:14 -05:00
Chris Titus 87a5779f0b tweak service reduction 2026-04-21 14:20:08 -05:00
GabiandGitHub 9d777842f7 Changes policyplus category to Utilities (#4375) 2026-04-17 09:05:15 -05:00
99b7d94b08 Update sponsors in README (#4361)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-04-17 09:04:52 -05:00
Chris TitusandGitHub f31e5eb2ac chore: Update generated dev docs (#4382) 2026-04-17 09:04:35 -05:00
GabiandGitHub a8efcc9c96 Rename (and reorder) everything (#4372)
* Standardize tweak names to 'Target - Action' format

* Rename Microsoft Store Apps tweak to Unwanted Pre-Installed Apps - Remove

* Update tweaks.json

* Rename and reorder customize preference tweaks

* Standardize config feature labels

* Update feature.json
2026-04-17 09:04:03 -05:00
GabiandGitHub 747b6f8ca1 Added restriction policy error (#4370)
* Added restriction policy error

* Update KnownIssues.md

* Update KnownIssues.md

* Update KnownIssues.md

* Update KnownIssues.md
2026-04-17 09:02:27 -05:00
Chris TitusandGitHub 26959b0e63 chore: Update generated dev docs (#4381) 2026-04-17 09:01:16 -05:00
Sean (ANGRYxScotsman)andGitHub c5fc9490a8 fixed a lie (#4368) 2026-04-17 09:01:04 -05:00
GabiandGitHub 5902b0bd64 Move SvcHostSplitThresholdInKB tweak into WPFTweaksServices tweak (#4364) 2026-04-17 09:00:39 -05:00
VasoandGitHub 5dc8547dad Added YASB and Modrinth (#4353) 2026-04-17 08:58:47 -05:00
Chris TitusandGitHub d736bc4305 chore: Update generated dev docs (#4380) 2026-04-17 08:58:38 -05:00
a4d0f36ed5 Add toggler for Acrylic effect on login screen (#4348)
* Update applications.json

* Remove Borderless Gaming

* Update UniGetUI code for their link and winget

* Add login blur toggler

* hidden -> removed / sorry!

---------

Co-authored-by: Vaso <92270244+VasoHD@users.noreply.github.com>
2026-04-17 08:58:06 -05:00
GabiandGitHub e1e077c69b Added Notion and Todoist and Morgen and Helium to applications.json (#4345)
* Added Notion and Todoist and Morgen to applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Added helium to applications.json

* Update applications.json

* Added netspeedtray to applications.json
2026-04-17 08:57:01 -05:00
GabiandGitHub 8e2dc21823 Update Invoke-WinUtilRemoveEdge.ps1 (#4358)
* Replce Get-ChildItem with Resolve-Path inside of Invoke-WinUtilRemoveEdge.ps1

* Update Invoke-WinUtilRemoveEdge.ps1

* Update Invoke-WinUtilRemoveEdge.ps1
2026-04-14 11:03:07 -05:00
GabiandGitHub 8378fd5377 Removed onedrivesetup removal from Invoke-WinUtilISOScript.ps1 (#4350)
* Removed onedrivesetup removal Invoke-WinUtilISOScript.ps1

* Added OneDrive removal to autounattend.xml
2026-04-14 10:04:16 -05:00
Tommi PöntinenandGitHub eb08eae357 Remove Xtreme Download Manager from applications.json (#4352)
Removed Xtreme Download Manager entry from applications.
2026-04-14 09:39:56 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4783e71750 Bump softprops/action-gh-release from 2 to 3 (#4355)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2...v3)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-14 09:39:29 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
805a004a3a Bump actions/github-script from 8 to 9 (#4356)
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-14 09:39:06 -05:00
780ea84e9e Update sponsors in README (#4359)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-04-14 09:38:39 -05:00
YusufKhalifadevandGitHub f47dcb01d2 Fix a ton of typos and still (#4347) 2026-04-14 09:38:16 -05:00
GabiandGitHub 4ab1681eb8 Added dorion to applications.json (#4340) 2026-04-08 12:33:12 -05:00
GabiandGitHub ed6ee897d5 Added language support warning to CONTRIBUTING.md (#4342) 2026-04-08 11:19:10 -05:00
Chris TitusandGitHub 5516be2464 chore: Update generated dev docs (#4338) 2026-04-07 14:10:34 -05:00
Chris Titus 9f972fdac1 Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-04-07 14:09:40 -05:00
Chris TitusandGitHub c453f260cf Revert "Revert "Simplfy Invoke-WPFUltimatePerformance.ps1"" (#4335)
* Revert "Revert "Simplfy Invoke-WPFUltimatePerformance.ps1 (#4319)" (#4333)"

This reverts commit 419b150220.

* Refactor Invoke-WPFUltimatePerformance function to use "ChrisTitus - Ultimate Power Plan" naming and improve power plan management

* add message for laptop users

* Remove activation of "ChrisTitus - Ultimate Power Plan" during setup
2026-04-07 14:09:31 -05:00
Chris Titus 98eba09986 formatting 2026-04-07 13:07:36 -05:00
Chris TitusandGitHub 61bce6afda chore: Update generated dev docs (#4334) 2026-04-07 13:04:43 -05:00
Chris TitusandGitHub 419b150220 Revert "Simplfy Invoke-WPFUltimatePerformance.ps1 (#4319)" (#4333)
This reverts commit e30c0a4c27.
2026-04-07 13:04:02 -05:00
Chris TitusandGitHub 372fa0159a chore: Update generated dev docs (#4332) 2026-04-07 13:00:56 -05:00
GabiandGitHub 406d6fdfc4 oopsy (#4330) 2026-04-07 12:59:59 -05:00
GabiandGitHub e30c0a4c27 Simplfy Invoke-WPFUltimatePerformance.ps1 (#4319)
* Simplfy Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFButton.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFButton.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1

* Update Invoke-WPFUltimatePerformance.ps1
2026-04-07 12:59:37 -05:00
Chris TitusandGitHub 3d300f6634 chore: Update generated dev docs (#4331) 2026-04-07 12:58:59 -05:00
Sean (ANGRYxScotsman)andGitHub a72c0770dd removed redundant appx packages (#4308)
* updated appx list

* kept camera

* kept dolby

* removed copilot as we have another tweak for this

* Update tweaks.json

* undo last commits

* removed likedin

* other tweaks do this.

* remove copilot tweak does this

* Update tweaks.json

* removed redundant packages

* removed AppUp.IntelManagementandSecurityStatus

* updated content

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-04-07 12:58:27 -05:00
Chris TitusandGitHub 811cc126e6 chore: Update generated dev docs (#4329) 2026-04-07 12:51:25 -05:00
GabiandGitHub 3ceea1b9c1 Disable GeoLocation service in WPFTweaksLocation (#4307)
* Disable GeoLocation service in WPFTweaksLocation

* Update tweaks.json

* Update tweaks.json
2026-04-07 12:50:50 -05:00
GabiandGitHub 0cd971d992 Update Install-WinUtilWinget.ps1 (#4302)
* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilWinget.ps1

* Update Install-WinUtilWinget.ps1
2026-04-07 12:50:05 -05:00
Chris TitusandGitHub e077fc7e21 chore: Update generated dev docs (#4328) 2026-04-07 12:47:42 -05:00
Jarosław Drzewiecki de OgańczykandGitHub 0abac833ce Fixed InitialKeyboardIndicators to be String instead of Dword (#4306) 2026-04-07 12:47:12 -05:00
Sean (ANGRYxScotsman)andGitHub a0fdf2cb80 removed redundant appx packages from win11 creator (#4321)
* redundant

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* Update Invoke-WinUtilISOScript.ps1

* removed notes aswell
2026-04-07 10:48:52 -05:00
GabiandGitHub b8f1671ff7 Removed some old code from Invoke-WPFButton.ps1 (#4318) 2026-04-07 10:47:42 -05:00
GabiandGitHub 0536047200 Fix: onedrivesetup not being removed (#4317)
* Removed onedrive removal from Invoke-WinUtilISOScript.ps1

* Update autounattend.xml

* Update Invoke-WinUtilISOScript.ps1
2026-04-07 10:47:24 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2a4bff017d Bump actions/download-artifact from 4 to 8 (#4316)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-07 10:46:57 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
68d6ca7edc Bump actions/upload-artifact from 4 to 7 (#4315)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-07 10:46:37 -05:00
Chris TitusandGitHub 00fbd0e86d chore: Update generated dev docs (#4326) 2026-04-07 10:46:13 -05:00
GabiandGitHub c24ea5e53b Update Invoke-WinUtilISO.ps1 (#4314) 2026-04-07 10:46:11 -05:00
GabiandGitHub 786c7c677d Make WPFTweaksRemoveCopilot only remove copilot (#4310) 2026-04-07 10:45:44 -05:00
c9e9214fd6 added next and previous (#4323)
Co-authored-by: Chris Titus <contact@christitus.com>
2026-04-07 10:38:37 -05:00
Sean (ANGRYxScotsman)andGitHub b7f6a8cebe fixed more 404 errors (#4322)
* fixed 404 errors

* updated page

* Update _index.md
2026-04-07 10:37:37 -05:00
GabiandGitHub 355bd17b88 Added veravrypt and cryptomator and hugo to applications.json (#4305)
* Added veravrypt to applications.json

* Added hugo to applications.json

* Update applications.json
2026-04-07 10:36:14 -05:00
potatoandGitHub 6198bb2cdd feat: add uv to installable applications (#4304) 2026-04-07 10:35:37 -05:00
Chris TitusandGitHub 6a495411e8 chore: Update generated dev docs (#4325) 2026-04-07 10:31:58 -05:00
GabiandGitHub 8f830a59df Update tweaks.json (#4303) 2026-04-07 10:31:25 -05:00
Chris Titus e4dd305084 fix release drafter 2026-04-02 15:49:39 -05:00
GabiandGitHub 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
GabiandGitHub 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 TitusandGitHub 838b0c1a1b chore: Update generated dev docs (#4301) 2026-04-02 15:17:58 -05:00
GabiandGitHub 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
GabiandGitHub 9535302e6d Fix issue #4285 (#4289)
* Update Invoke-WPFFeatureInstall.ps1

* Merge branch 'ChrisTitusTech:main' into patch-10
2026-04-02 15:08:51 -05:00
GabiandGitHub 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
makhlwfandGitHub 74f990028f fix: improve screen reader accessibility by naming control containers (#4287) 2026-04-02 15:06:39 -05:00
Chris TitusandGitHub e94742a77d chore: Update generated dev docs (#4300) 2026-04-02 14:53:03 -05:00
GabiandGitHub 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 GomilaandGitHub 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
GabiandGitHub 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
GabiandGitHub 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)andGitHub bc2f6ce8f7 fix win11 Creator 404 error and site update (#4296)
* Update _index.md

* theme update
2026-04-02 14:23:20 -05:00
c1fe9c6b88 Update sponsors in README (#4283)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-03-31 10:40:09 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d0899b4f29 Bump actions/configure-pages from 5 to 6 (#4281)
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 5 to 6.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-31 10:39:41 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3c8459f31f Bump actions/deploy-pages from 4 to 5 (#4280)
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-31 10:39:16 -05:00
GabiandGitHub 0c38d420ee Removed WaaSMedicSvc from Invoke-WPFUpdatesdisable.ps1 (#4267) 2026-03-31 10:38:49 -05:00
Chris TitusandGitHub e63d75e398 chore: Update generated dev docs (#4293) 2026-03-31 10:35:12 -05:00
GabiandGitHub 01d24bdf31 They added more widget services so... (#4262) 2026-03-31 10:34:33 -05:00
12abc7f281 Removing Borderless Gaming and updating UnigetUI (#4259)
* Update applications.json

* Remove Borderless Gaming

* Update UniGetUI code for their link and winget

---------

Co-authored-by: Vaso <92270244+VasoHD@users.noreply.github.com>
2026-03-31 10:33:47 -05:00
Chris TitusandGitHub 10906e037e chore: Update generated dev docs (#4292) 2026-03-31 10:33:09 -05:00
Paweł GwozdowskiandGitHub b43a712e9b Update UniGetUI winget id (#4231)
* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json
2026-03-31 10:32:51 -05:00
B1ack3yeandGitHub ed74dc51b5 Update tweaks.json (#4256)
Disable Edge default browser campaign via policy
2026-03-31 10:32:32 -05:00
Paweł GwozdowskiandGitHub 6b83f1da51 Update UniGetUI winget id (#4231)
* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json

* Update applications.json
2026-03-31 10:29:33 -05:00
GabiandGitHub 24c6706ab2 Update Invoke-WinUtilSSHServer.ps1 (#4254)
* Update Invoke-WinUtilSSHServer.ps1

* fix: correct ssh-agent restart, use USERPROFILE path, add sshd_config idempotency check

* Cleanup for Invoke-WinUtilSSHServer.ps1

* Update Invoke-WinUtilSSHServer.ps1

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

* Update Invoke-WinUtilSSHServer.ps1

* Update Invoke-WinUtilSSHServer.ps1

* Merge branch 'main' into patch-2

* Update Invoke-WinUtilSSHServer.ps1

* typo
2026-03-27 08:26:36 -05:00
Chris TitusandGitHub f4703284ef chore: Update generated dev docs (#4264) 2026-03-26 15:26:48 -05:00
0028e439b5 Cleaned up typos, fixes grammatical errors and other related fixes (#4215)
* cleaned up typo, fixes, grammatical and other related fixes (#2)

* typo in Lightshot app name

* remove trailing comma in applications.json

* consistent capitalization of Windows, WinGet - only user-facing text

	- includes update to devdocs-generator.ps1, so docs for tweaks modifying registry will have `Windows settings` rather than `windows settings`

* various fixes for typos, style, punctuation and capitalization

* capitalize 'AM'

* Update README.md

change formatting for GitHub UI interaction form code format (` `) to bold md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* typos and wording in docs

---------

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>
2026-03-26 15:26:21 -05:00
GabiandGitHub 37529a5659 Added mpc-qt and qview and TeamSpeak 3 and ecm to applications.json (#4211)
* Added mpc-qt and qview to applications.json

* Update applications.json

* Added teamspeak3

* added ecm
2026-03-26 15:23:35 -05:00
Chris TitusandGitHub 2dbf3d71c0 chore: Update generated dev docs (#4258) 2026-03-25 21:29:07 -05:00
Chris TitusandGitHub ef226ac272 chore: Update generated dev docs (#4257) 2026-03-25 21:22:41 -05:00
Ivan LepekhaandGitHub 1f7f653568 Typo fix WPFTweaksXboxRemoval (#4248) 2026-03-25 21:22:06 -05:00
MochiandGitHub 9bd5a2541d Add Ruby and Lua entries (#4240)
* Add Opera, OperaGX, Ruby and Lua entries

Update applications.json to include two new browser entries (Opera, OperaGX) and two development runtime entries (Ruby, Lua).

* Remove Opera and OperaGX from applications.json

Removed entries for Opera and OperaGX from applications list.
2026-03-25 21:21:35 -05:00
c2dbcda2d5 Update sponsors in README (#4238)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-03-25 21:20:39 -05:00
VasoandGitHub 0bd333dd47 Update applications.json (#4217) 2026-03-25 21:17:46 -05:00
Sean (ANGRYxScotsman)andGitHub 6188447348 updated docs (#4203)
* updated docs

* Update KnownIssues.md

* Update faq.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update faq.md

* Update faq.md

* Update faq.md
2026-03-25 21:17:09 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
edfed488e8 Bump release-drafter/release-drafter from 6 to 7 (#4226)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6 to 7.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v6...v7)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 23:30:33 -05:00
Chris TitusandGitHub 8d1f7d509a chore: Update generated dev docs (#4234) 2026-03-19 23:29:25 -05:00
GabiandGitHub 0a642be3b4 opps (#4220) 2026-03-19 23:28:56 -05:00
d3f9584892 Update sponsors in README (#4212)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-03-19 23:22:54 -05:00
GabiandGitHub a05034381d Update Win11 Creator (#4196)
* Update autounattend.xml

* Update autounattend.xml

* Updated autounattend.xml to disable reccomened section

* Update autounattend.xml
2026-03-13 10:18:36 -05:00
Chris TitusandGitHub b1d4eb022c Fix mount disk error (#4204)
* wait for mounting to assign disk letter

* update

* Gabi fixing my slop with a comment
2026-03-12 15:45:42 -05:00
GabiandGitHub 3dbd993cb4 Update bug_report.yaml (#4206) 2026-03-12 15:27:37 -05:00
GabiandGitHub ec17c085df Fix: Prevent Win11 Creator UI reset when switching tabs during ISO Creation (#4199)
* Fix: Prevent Win11 Creator UI reset when switching tabs during ISO modification

* Update Invoke-WinUtilISO.ps1
2026-03-12 15:09:52 -05:00
Chris TitusandGitHub 7da4e78d4b chore: Update generated dev docs (#4205) 2026-03-12 15:09:30 -05:00
GabiandGitHub 1943b30ec9 Make WPFTweaksRevertStartMenu more understandable and move it to essential tweaks (#4202)
* Make WPFTweaksRevertStartMenu more understandable

* Update tweaks.json
2026-03-12 15:08:56 -05:00
Chris TitusandGitHub 6df8ae900c chore: Update generated dev docs (#4192) 2026-03-11 16:30:50 -05:00
GabiandGitHub a16f4b7d07 Update WPFTweaksXboxRemoval (#4170)
* Update WPFTweaksXboxRemoval

* Update tweaks.json
2026-03-11 16:30:00 -05:00
Chris TitusandGitHub adaab0ab36 chore: Update generated dev docs (#4191) 2026-03-11 16:26:43 -05:00
GabiandGitHub c270d25460 Added WPFTweaksDisableStoreSearch (#4173)
* Added WPFTweaksDisableStoreSearch

* Update tweaks.json
2026-03-11 16:26:06 -05:00
ErenandGitHub 2bb007b6ff Fix import / export config issue (#4189)
* apply toggle fix

* apply fix that disables all toggles outside of config
2026-03-11 16:23:32 -05:00
GarrattandGitHub 34f29dd04c - Added AI-Automation download section. (#4159)
* - Added AI-Automation download section
- Fixed typo in CONTRIBUTING.md teminal -> terminal

* Move Cursor to Development

* Move AutoHotkey back to Utilities
2026-03-11 10:31:33 -05:00
GabiandGitHub ccb43bfe91 Added some apps to applications.json (#4146)
* Add Overwolf and Logitech G Hub to applications.json

* Added citrixworkspaceapp and pdf-xchange to applications.json

* Added visualstudio2026
2026-03-11 10:30:15 -05:00
Chris TitusandGitHub 1d401b2e02 initial fix (#4178) 2026-03-11 10:29:38 -05:00
GabiandGitHub d8f6a8c50b Cleanup alot of old issues in KnownIssues.md (#4181)
* Cleanup alot of old issues in KnownIssues.md and add Windows Version

* Update KnownIssues.md

* Update KnownIssues.md
2026-03-11 10:25:34 -05:00
Sean (ANGRYxScotsman)andGitHub 3da0221fb4 removed windows 10 reference and pages edits (#4185)
* removed any windows 10 reference

* update links

* page clean up

* Update _index.md

* clean up getting started page

* clean up more pages

* Update faq.md

* Update _index.md

* more clean up
2026-03-11 10:24:46 -05:00
Sean (ANGRYxScotsman)andGitHub a30664002b added doc link to settings menu (#4156) 2026-03-06 08:29:20 -06:00
Chris TitusandGitHub 5e78391518 chore: Update generated dev docs (#4163) 2026-03-06 08:29:10 -06:00
Sean (ANGRYxScotsman)andGitHub 2d2497408f Website updated to latest version (#4157)
* updated theme to latest version

* updated tabs to the new way

* added missing frontmatter to pages

* updated hugo version

* edited the file structure

* revert back to old way

* Update _index.md

* fix typo and made sure it was upto date

* updated docs

* clean up navbar

* Update en.yaml
2026-03-06 08:28:34 -06:00
GabiandGitHub d2dbf03572 Update Invoke-WPFFixesWinget.ps1 (#4160) 2026-03-05 16:39:50 -06:00
Chris Titus 88c68fd411 update bug report 2026-03-04 15:50:00 -06:00
Chris Titus e82aaf03f0 update bug report 2026-03-04 15:46:18 -06:00
Chris Titus 9a77fed09b minimize feature request template 2026-03-04 15:29:48 -06:00
Chris TitusandGitHub 336ac6fb8f remove key flag from unattended (#4154) 2026-03-04 15:14:16 -06:00
GabiandGitHub 72ad35bbd8 Remove product key from autounattend.xml (#4152) 2026-03-04 12:26:53 -06:00
Chris TitusandGitHub df17ca4695 Fix offline mode (#4153)
* Fix usb error on drive with no existing partitions

* fix offline mode

* Add offline banner
2026-03-04 12:21:18 -06:00
Chris TitusandGitHub 7f46e8d60d Fix usb error on drive with no existing partitions (#4151) 2026-03-04 11:44:10 -06:00
Chris TitusandGitHub 9769cafa7d change willshow ui (#4150) 2026-03-04 09:25:54 -06:00
Chris Titus 42dfc8c82b fix write failure on letter assignment from failed usb format 2026-03-04 09:21:39 -06:00
GabiandGitHub d13295bdd8 Update start.ps1 (#4141) 2026-03-03 14:25:14 -06:00
Sean (ANGRYxScotsman)andGitHub 5fc566b46f Winutil website edit (#4140)
* updated the iso creator docs

* added creator info to the arch docs
2026-03-03 09:17:19 -06:00
Chris TitusandGitHub b493737982 Win11 Creator USB and Log Fixes (#4139)
* initial usb fixes

* fix full button width

* Cleanup and Verbose output for copy

* expand ui and fix clean and reset

* Add minimal driver injection

* initial driver support

* fix verbage

* fix syntax error

* create log file on iso generation

* inject to boot.wim for install

* fix single driver install issues

* fix first run probs

* cleanup injection

* improve clean up

* Fix OSCDIMG output and cleanup comments

* Fix Scrollviewer in Status Log

* large drive support and change to Exfat

* Fix BOOT for older UEFI and Add error checks for small usb drives

* fix single usb drive error
2026-03-03 00:19:37 -06:00
Chris TitusandGitHub 7ceb303f00 chore: Update generated dev docs (#4138) 2026-03-02 13:08:27 -06:00
Paweł GwozdowskiandGitHub 30c9812d37 Fix typos and inconsistent punctuation in tweaks & apps descriptions (#4136)
* Update tweaks.json

* Update applications.json

* Update feature.json

* Update tweaks.json

* Update tweaks.json

* more typos

* Update applications.json
2026-03-02 13:07:54 -06:00
KamaleiZestriandGitHub ddc10b0935 Unite preferences (#4133)
* One preference file

* Set default before converting types
2026-03-02 13:05:43 -06:00
Chris TitusandGitHub a2e2395ce9 chore: Update generated dev docs (#4137) 2026-03-02 13:05:08 -06:00
ce5e407a76 Add WPFToggleStandbyFix (#4132)
* Add WPFToggleStandbyFix

* Update config/tweaks.json

Co-authored-by: Paweł Gwozdowski <kernea.g@proton.me>

---------

Co-authored-by: Paweł Gwozdowski <kernea.g@proton.me>
2026-03-02 13:04:34 -06:00
ErenandGitHub 3fb5c04693 Fix import/export functionality (#4131)
* fix: cast selections to string to prevent PSCustomObject type issues

* fix(presets): clear existing selections before importing to replace state instead of merging

* refactor(impex): warn user when exporting empty selections or importing empty config
2026-03-02 13:02:48 -06:00
Sean (ANGRYxScotsman)andGitHub 58dacd5b0b New win 11 Creator page (#4115)
* made Win 11 Creator page

* update store to application
2026-02-25 13:50:36 -06:00
Chris TitusandGitHub 14ad9f7fea Win11 iso (#4113)
* Tab creation

* scaffold outline for the iso tab

* autounattended creation

* inital modification success

* iso save success

* cleanup and iso improvements

* fix startmenu on new 26h2

* remove old first startup

* Fix run for use

* fix unapproved verb

* Keep step 4 output expanded

* update auto-merge

* Cleanup

* remove out-null and trailing whitespace

* explain modify and creator button

* fix scroll to end

* remove workflow change

* fix home updates
2026-02-24 15:50:41 -06:00
GabiandGitHub 52afab2252 Remove edge (#4112) 2026-02-24 15:40:41 -06:00
Chris TitusandGitHub 2ba3a5d324 Win11 ISO Creator (#4110)
* Tab creation

* scaffold outline for the iso tab

* autounattended creation

* inital modification success

* iso save success

* cleanup and iso improvements

* fix startmenu on new 26h2

* remove old first startup

* Fix run for use

* fix unapproved verb

* Keep step 4 output expanded

* update auto-merge

* Cleanup

* remove out-null and trailing whitespace

* explain modify and creator button

* fix scroll to end

* remove workflow change
2026-02-24 15:28:49 -06:00
Chris TitusandGitHub f854d14117 chore: Update generated dev docs (#4105) 2026-02-23 18:28:56 -06:00
Chris TitusandGitHub 19204534a2 Add --admin flag to auto-merge command 2026-02-23 18:28:25 -06:00
Chris TitusandGitHub a9d9b148db Change GH_TOKEN to use AUTO_MERGE secret 2026-02-23 18:26:20 -06:00
Chris Titus Tech d5d0bf25f0 automerge docs 2026-02-23 14:53:46 -06:00
Chris Titus Tech da3fd87f9a revise approval 2026-02-23 14:46:15 -06:00
Chris Titus Tech 9e8cefc973 fix automerge 2026-02-23 14:43:52 -06:00
a532e9ec9d Remove WPFTweaksDisableExplorerAutoDiscovery From Minimal Preset (#4081)
* WPFTweaksDisableExplorerAutoDiscovery Shouldn't not be deafult

* Update preset.json

* Update tweaks.json

* Update config/tweaks.json

Co-authored-by: Paweł Gwozdowski <kernea.g@proton.me>

---------

Co-authored-by: Paweł Gwozdowski <kernea.g@proton.me>
2026-02-23 10:17:01 -06:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
844979fee7 Bump peter-evans/create-pull-request from 6 to 8 (#4104)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 8.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v8)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 09:23:33 -06:00
Sean (ANGRYxScotsman)andGitHub 78302934ef updated workflows for automation (#4102)
* updated workflows for automation

* added back the debug logs

* Update docs.yaml

* Update pre-release.yaml
2026-02-22 21:25:59 -06:00
GabiandGitHub 349889b194 Minor format changes for Invoke-WPFSystemRepair.ps1 (#4100)
* Format changes

* Update Invoke-WPFSystemRepair.ps1
2026-02-22 17:31:54 -06:00
RaphaëlandGitHub c619f3a830 Add more development tools to applications.json (#4093)
* Add .NET Desktop Runtime 10 to applications.json

* Add LLVM to applications.json

* Add NASM to applications.json
2026-02-22 17:30:43 -06:00
d005a225a2 NoUI mode and Concurrency edits (#4092)
* Autorun changes

* Missed a handle

* Remove todo

---------

Co-authored-by: Chris Titus <dfm.titus@gmail.com>
2026-02-22 17:28:55 -06:00
GabiandGitHub e79e946e76 Remove incorrect infromaiton from WPFTweaksRazerBlock (#4082) 2026-02-22 17:23:19 -06:00
3b957e1a77 Update sponsors in README (#4095)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-02-22 17:21:52 -06:00
GabiandGitHub d078d67b1d Remove debug option (#4094)
* Remove debug option

* Remove debug option
2026-02-22 17:21:32 -06:00
GabiandGitHub 191fe95572 Update-KnownIssues.md (#4096)
* Update KnownIssues.md

* Update KnownIssues.md
2026-02-22 17:20:39 -06:00
Sean (ANGRYxScotsman)andGitHub d10c9413ac Update devdocs-generator (#4091)
* Update devdocs-generator.ps1

* made new dir

* Update devdocs-generator.ps1

* Update devdocs-generator.ps1
2026-02-22 17:19:43 -06:00
Chris TitusandGitHub e93753e5c9 Json-Cleanup-Expansion (#4090)
* initial cleanup

* remove winutilgpu
2026-02-22 17:19:04 -06:00
GabiandGitHub 5eec99df1c Fix title screen image url (#4087) 2026-02-18 15:29:41 -06:00
GabiandGitHub 7e2ba41b8b Update inputXML.xaml (#4089) 2026-02-18 15:29:14 -06:00
Chris Titus d3dc3e7976 Merge branches 'main' and 'main' of https://github.com/ChrisTitusTech/winutil 2026-02-18 14:44:33 -06:00
GabiandGitHub 5a4d822710 Fix more images in CONTRIBUTING.md (#4086) 2026-02-18 14:44:19 -06:00
Chris Titus 2625478ef3 assign docs label 2026-02-18 14:41:00 -06:00
956a544c2e Update generated documentation (#4084)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-02-18 14:33:39 -06:00
GabiandGitHub 50dbf5bd05 Fix fork image (#4085) 2026-02-18 14:32:29 -06:00
GabiandGitHub 338c3e7e57 Add warning to WPFToggleStartMenuRecommendations (#4083) 2026-02-18 14:31:38 -06:00
GabiandGitHub 1a0e084d7e Add Undoscript to WPFToggleTaskbarAlignment (#4079) 2026-02-18 14:23:09 -06:00
GabiandGitHub 89147414a0 Fix WPFTweaksRemoveCopilot's InvokeScript (#4077) 2026-02-18 14:22:23 -06:00
GabiandGitHub ae4b3f3ac7 Remove file missing error from running complie.ps1 (#4078)
* Remove Validatsion of the ExcludedItems List From complie.ps1 and remove annoying warning

* Update Invoke-Preprocessing.ps1
2026-02-18 14:21:45 -06:00
Chris Titus 043ec9abe0 Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-02-18 14:18:55 -06:00
Chris Titus 5c92fcbde5 delete branch after it merges 2026-02-18 14:18:53 -06:00
b1094c9177 chore: Update Generated Dev Docs (#4076)
* Update generated documentation

* trigger workflow

---------

Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
Co-authored-by: Chris Titus <contact@christitus.com>
2026-02-18 20:17:33 +00:00
Chris Titus 9ab1c6bbd3 automerge pat 2026-02-18 14:16:07 -06:00
Chris Titus 97d3ada895 update auto merge 2026-02-18 14:11:15 -06:00
Chris Titus 8212b3ed5e Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-02-18 13:57:50 -06:00
Chris Titus d410667c6d auto approve docs 2026-02-18 13:57:48 -06:00
GabiandGitHub e51e345438 Update tweaks.json (#4074) 2026-02-18 12:40:53 -06:00
3404f185f1 Update generated documentation (#4075)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-02-18 12:37:09 -06:00
Chris Titus f15c212df5 no persist on perms workflow 2026-02-18 12:34:23 -06:00
Chris Titus 152c157b51 fix docs to create pr 2026-02-18 12:31:08 -06:00
Sean (ANGRYxScotsman)andGitHub 80e54a0ea5 updated doc workflow (#4069)
* updated workflow

* changed the commit message

* fixed spacing in copyright

i will notice these issues before committing in future lol

* Update devdocs-generator.md
2026-02-18 11:51:44 -06:00
GabiandGitHub 7fb1643378 Someone touched my perfect code for WPFTweaksRemoveCopilot (#4068) 2026-02-18 11:45:05 -06:00
ErenandGitHub f6c0c9682c apply escaping (#4071) 2026-02-18 11:44:42 -06:00
b7ef73cb10 Update sponsors in README (#4073)
Co-authored-by: ChrisTitusTech <7896101+ChrisTitusTech@users.noreply.github.com>
2026-02-18 11:17:51 -06:00
Chris Titus 0b76ab3aa4 verbose checks for if PR is needed 2026-02-18 11:14:52 -06:00
Chris Titus 436e3c353e persist creds 2026-02-18 11:10:57 -06:00
Chris Titus 50ca97575b update perms 2026-02-18 11:08:56 -06:00
Chris Titus 618561e5cf update to pr for sponsors 2026-02-18 10:59:30 -06:00
Chris Titus 725244c28e change to issue pr 2026-02-18 10:52:46 -06:00
Chris Titus d4c768315b update sponsors 2026-02-18 10:45:21 -06:00
GabiandGitHub e909d1a847 Delete WPFTweaksLaptopHibernation (#4066) 2026-02-17 14:24:29 -06:00
GabiandGitHub dcfa68476a Add-WPFTweaksRevertStartMenu (#4023)
* Add WPFTweaksRevertStartMenu

* Create revertstartmenu.md

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update revertstartmenu.md

* Update tweaks.json

* Update tweaks.json

* Update revertstartmenu.md

* Update tweaks.json
2026-02-17 13:49:54 -06:00
ErenandGitHub 60d31a1fe0 Hightlight FOSS Apps (#4065)
* add foss tag functionality

* update applications

* update

* update

* fix

* update

* update

* fix formatting
2026-02-17 13:35:26 -06:00
GabiandGitHub 5476cd928f Fix WPFTweaksEdgeDebloat block copilot not working (#4063)
* Fix WPFTweaksEdgeDebloat block copilot not working

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-02-17 13:31:44 -06:00
GabiandGitHub 84f2046912 Update-WPFTweaksWidget (#4058)
* Update WPFTweaksWidget how did you miss this chris?

* Fix WPFTweaksWidget not working
2026-02-17 13:30:37 -06:00
GabiandGitHub 586fd56603 Update-Invoke-WPFSystemRepair.ps1 (#4043)
* Update Invoke-WPFSystemRepair.ps1

* Update Invoke-WPFSystemRepair.ps1

* add chkdsk back in to tell users if there disk is broken

* Merge branch 'Update-Invoke-WPFSystemRepair' of https://github.com/gabinun/winutil into pr/GabiNun/4043

* add doc
2026-02-17 12:55:51 -06:00
KamaleiZestriandGitHub 70a94abe02 Decoupled UI and data (#4051)
* Decoupled UI and data

* Fix bad variable naming

* Fix mistype

* Fix mistype v2

Editing from mobile is hard
2026-02-17 12:39:44 -06:00
KamaleiZestriandGitHub 0e41122d89 More microwin files to delete (#4050) 2026-02-17 12:31:23 -06:00
GabiandGitHub 4e7416a2dc Remove Adobe Creative Cloud (#4048)
* Delete functions/public/Invoke-WPFRunAdobeCCCleanerTool.ps1

* Update feature.json
2026-02-17 12:30:38 -06:00
GabiandGitHub 61a6265cf9 Fix WPFTweaksBlockAdobeNet (#4042)
* Fix WPFTweaksBlockAdobeNet

* Update tweaks.json
2026-02-17 12:29:41 -06:00
Sean (ANGRYxScotsman)andGitHub 5582c3cb44 More winutil docs update (#4038)
* updated the gen to add a blackline under the frontmatter and added .md file in the same location with breakdown on what the script does

* copyright fix.

found out the reason why it rendered correctly on my pc and not with site builder. it was because we use --minify for the site builder and i have not been using that on the local instance

* Update pre-release.yaml

* Update en.yaml
2026-02-17 12:28:36 -06:00
GabiandGitHub 08b24c7187 Change 'Get Installed' to 'Show Installed Apps' (#4027)
* Update appnavigation.json

* Update _index.md

* Update inputXML.xaml

* Update Invoke-WinUtilCurrentSystem.ps1

* Update Invoke-WinUtilCurrentSystem.ps1
2026-02-12 14:37:11 -06:00
KamaleiZestriandGitHub 5fcc288037 Disable Sticky Keys shortcut added to toggle (#4028)
* disable sticky keys shortcut

* Merge branch 'main' into sticky
2026-02-12 14:36:17 -06:00
GabiandGitHub 8e8b0bb296 Make WPFToggleTaskbarAlignment restart explorer (#4034) 2026-02-12 14:35:31 -06:00
ErenandGitHub be8d20d478 export and import toggle switch states in config JSON (#4037)
* feat: add support for importing and exporting WPFToggle checkbox states.

* feat: add export and import

* remove unnecessary buttons from tweaks tab

* Merge branch 'main' into feature/import-export

* Merge branch 'main' into feature/import-export
2026-02-12 14:34:28 -06:00
Sean (ANGRYxScotsman)andGitHub 9b03b94435 more winutil website update and new features (#4030)
* updated theme to the latest version

* Update en.yaml

* removed all the order from the docs

* add the store link

* update homepage

* add filename and line number to all the code blocks and also removed pages

* auto pull the code from the json files

* Merge branch 'main' into winutil-new-features

* the script updated linenostart=

* Delete LaptopHibernation.md
2026-02-12 14:33:11 -06:00
ErenandGitHub 9d841687e3 Fix winget package uninstallation issues (#4036)
* refactor: refine Program parameter type to string

* refactor: rename `Invoke-WPFRunspace` parameter `ArgumentList` to `ParameterList`
2026-02-12 13:52:09 -06:00
20046d4b73 Delete-WPFTweaksLaptopHibernation (#4031)
* Update tweaks.json

* Delete docs/content/dev/tweaks/Essential-Tweaks/LaptopHibernation.md

---------

Co-authored-by: Chris Titus <dfm.titus@gmail.com>
2026-02-11 09:31:05 -06:00
ErenandGitHub b2ccb3669b Content-based Automatic Sorting (#4022)
* Implement Auto-sorting instead of manually defining order

* ffix visual bugs
2026-02-11 09:28:09 -06:00
Sean (ANGRYxScotsman)andGitHub aaed116798 added frontmatter to pages (#4024)
* added frontmatter to widget.md

* update more pages

* updated copyright to automatically pull the year
2026-02-10 17:59:31 -06:00
GabiandGitHub 354b09ec0d Fix-WPFTweaksWidget (#4025)
* Fix WPFTweaksWidget

* Update Widget.md
2026-02-10 17:56:10 -06:00
Sean (ANGRYxScotsman)andGitHub cfde1b5a92 Edited some things i forgot to do (#4019)
* move debloat edge to z--advanced-tweaks---caution

* updated frontmatter on the pages i have the shortcodes
2026-02-10 14:32:17 -06:00
GabiandGitHub 4ebe1a3535 Update WPFTweaksRemoveOneDrive to remove OneSyncSvc Service (#3991)
* Update tweaks.json

* Update RemoveOneDrive.md

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md
2026-02-10 14:22:32 -06:00
GabiandGitHub 6708756574 Add xbox removal tweak (#4013)
* Update tweaks.json

* Create XboxRemoval.md

* Update tweaks.json

* Update XboxRemoval.md

* Update tweaks.json
2026-02-10 14:21:33 -06:00
GabiandGitHub 301059fd3f Add/remove a few packages to WPFTweaksDeBloat (#4012)
* Add/remove a few packages from WPFTweaksDeBloat

* Update DeBloat.md

* Update DeBloat.md

* Update tweaks.json

* Update tweaks.json

* Update DeBloat.md
2026-02-10 14:19:35 -06:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
df8d92cf11 Bump actions/github-script from 7 to 8 (#4011)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 14:18:42 -06:00
Chris Titus Tech 6cda509604 fix formatting 2026-02-10 14:18:09 -06:00
KamaleiZestriandGitHub 8a8fed517c Unify $winutildir (#4004) 2026-02-10 14:14:20 -06:00
GabiandGitHub 681f0ec3b9 Change WinUtilInstallPSProfile to use pwsh (#3998)
* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilInstallPSProfile.ps1

* Update Invoke-WinUtilInstallPSProfile.ps1

* Mention that ps profile is pwsh only
2026-02-10 14:10:04 -06:00
GabiandGitHub 4a31af4faf Added WSAIFabricSvc to WPFTweaksServices (#3992)
* Added WSAIFabricSvc to WPFTweaksServices

* Update Services.md
2026-02-10 14:07:39 -06:00
GabiandGitHub 4ddb2795ff Update-WPFTweaksTelemetry (#3974)
* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update Telemetry.md

* Update tweaks.json

* Update Telemetry.md

* Update tweaks.json

* Update Telemetry.md

* Update tweaks.json
2026-02-10 14:03:02 -06:00
GabiandGitHub d5b5784492 Added More apps (#3961)
* Added sendme

* Update applications.json

* Update applications.json

* Update applications.json

* Added potplayer

* Update applications.json

* Update applications.json
2026-02-10 13:53:39 -06:00
GabiandGitHub 15d0b42165 Add links to tweaks without links (#3969)
* Create WPBT.md

* Create RazerBlock.md

* Update tweaks.json

* Update tweaks.json

* Create RemoveEdge.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/RemoveEdge.md

* Create RazerBlock.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/RazerBlock.md
2026-02-10 13:52:59 -06:00
Sean (ANGRYxScotsman)andGitHub 8fc7d30112 more winutil website updates (#3967)
* changed autolinks to now use frontmatter instead off #heading

* updated all docs with front matter names

* Update DisableLegacyRecovery.md

this was the same as EnableLegacyRecovery file

* made sure pages have got the corrects scripts on them

* Update default.md

updated the archetype default to make sure every new page had the title and description automatically on the front matter

* Create BraveDebloat.md

* added brave debloat link to tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-02-10 13:49:36 -06:00
QuadFeedandGitHub a12ea71adb Update winget identifier for Zed application (#3966)
Changed from Zed.Zed to Zedindustries.Zed to fix install.
2026-02-10 13:48:00 -06:00
GabiandGitHub b00c7b1ea2 Add Remove widgets (#3962)
* Update tweaks.json

* Create Widget.md

* Update tweaks.json

* Update Widget.md

* Update tweaks.json

* Update Widget.md

* Update Widget.md

* Update tweaks.json

* Update tweaks.json

* Update Widget.md
2026-02-10 13:42:45 -06:00
Chris Titus Tech ef29ab9ffc remove hotfix 2026-02-10 13:41:42 -06:00
Chris Titus Tech 7219329d2c fix pr template to be clearer 2026-02-10 13:41:14 -06:00
27b0a59abb Zeus-toggle-fix (#4017)
* Fix Get Installed toggle detection and multiple config bugs

Fixes the issue where "Get Installed" in the Tweaks tab was not correctly
pulling all toggle states, plus several additional config bugs discovered
during investigation.

Changes:
- Unified toggle detection logic using Get-WinUtilToggleStatus
- Fixed registry value detection (0 values were incorrectly treated as missing)
- Added DefaultState support for missing registry keys
- Fixed WPFTweaksUTC registry type (QWord → DWord)
- Fixed WPFTweaksServices startup types (TermService, VaultSvc: Automatic → Manual)
- Fixed duplicate order collisions in tweaks
- Fixed FFmpeg display name
- Improved OneDrive removal script reliability
- Improved Copilot removal script with wildcard pattern and null check
- Fixed code formatting (added spaces after if/Foreach statements)

Files changed:
- functions/private/Invoke-WinUtilCurrentSystem.ps1
- functions/private/Get-WinUtilToggleStatus.ps1
- config/tweaks.json
- config/applications.json

Fixes #3762
Fixes #3189
Fixes #3876
Potentially fixes #3008
Potentially fixes #3815

* Fix toggles

---------

Co-authored-by: Akhil Achanta <akhilachanta8@gmail.com>
2026-02-10 13:37:37 -06:00
Chris TitusandGitHub 457f1820c4 Revert "Fix Get Installed toggle detection and multiple config bugs (#3959)" (#4016)
This reverts commit 414cd139e2.
2026-02-10 13:33:07 -06:00
Akhil Kumar AchantaandGitHub 414cd139e2 Fix Get Installed toggle detection and multiple config bugs (#3959)
Fixes the issue where "Get Installed" in the Tweaks tab was not correctly
pulling all toggle states, plus several additional config bugs discovered
during investigation.

Changes:
- Unified toggle detection logic using Get-WinUtilToggleStatus
- Fixed registry value detection (0 values were incorrectly treated as missing)
- Added DefaultState support for missing registry keys
- Fixed WPFTweaksUTC registry type (QWord → DWord)
- Fixed WPFTweaksServices startup types (TermService, VaultSvc: Automatic → Manual)
- Fixed duplicate order collisions in tweaks
- Fixed FFmpeg display name
- Improved OneDrive removal script reliability
- Improved Copilot removal script with wildcard pattern and null check
- Fixed code formatting (added spaces after if/Foreach statements)

Files changed:
- functions/private/Invoke-WinUtilCurrentSystem.ps1
- functions/private/Get-WinUtilToggleStatus.ps1
- config/tweaks.json
- config/applications.json

Fixes #3762
Fixes #3189
Fixes #3876
Potentially fixes #3008
Potentially fixes #3815
2026-02-10 13:29:50 -06:00
GabiandGitHub e68e190ff3 Update-Compile (#3922)
* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1

* Update Compile.ps1
2026-02-10 13:19:46 -06:00
Chris TitusandGitHub 86097572b0 fix adobe hosts (#3955) 2026-02-10 12:53:16 -06:00
titus 94d45a30fa fix docs to only run on main branch and not forks 2026-02-09 12:30:07 -06:00
fcc5481477 Remove microwin (#3999)
* Delete microwin functions

* Update main.ps1

* Remove oscdimg.exe which is used by microwin

* Delete config/autounattend.xml

* Update .gitignore

* Update bug_report.yaml

* Update themes.json

* Update Invoke-WinUtilFontScaling.ps1

* Update Invoke-AutoConfigDialog.ps1

* Update Invoke-WPFButton.ps1

* Update inputXML.xaml

* Delete docs/assets/images/microwin directory

* Delete docs/assets/images/MicroWinScreen.png

* Delete docs/assets/images/Microwin-Dark.png

* Delete docs/assets/images/Microwin-Light.png

* Update faq.md

* Update KnownIssues.md

* Update getting-started.md

* Update _index.md

* Delete docs/content/userguide/microwin directory

* Update architecture.md

---------

Co-authored-by: Chris Titus <dfm.titus@gmail.com>
2026-02-06 10:29:10 -06:00
Chris TitusandGitHub ac116d7083 New install gui (#3995)
* cleanup and checkbox addition

* Make collapsable categories

* finish new install GUI

* Fix search
2026-02-06 10:26:29 -06:00
Pádraic SlatteryandGitHub 68ab69a19c chore: Update outdated GitHub Actions version (#3980) 2026-02-04 18:51:28 -06:00
GabiandGitHub 29efb989bd Fix Links (#3965)
* Fix Links

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json
2026-01-30 15:32:11 -06:00
SeanandGitHub 99eb70d81b Docs, Winutil website update (#3947)
* Updated winutil website

add git ignore to not upload unnecessarily file. i have also updated microwin docs and added a copyright info to the footer

* Update _index.md

* Update KnownIssues.md

* Update links

update all the links for github to the corresponding pages. i have kept the original links aswell but commented out

* update hugo workflow to use version 0.147.0

* Update en.yaml

* update hugo toml to get rid off powered by

* Update docs.yaml

* Update KnownIssues.md

* Update KnownIssues.md

* Update KnownIssues.md

* Update compatibility note for MicroWin and Ventoy

* removed quad 9 dns

* fixed all the incorrect code block in markdown file

* Replace hardcoded page lists with auto-discovery shortcode

Created a new shortcode at docs/layouts/shortcodes/autolinks.html. This enables auto-discovery when creating new Markdown files, streamlining the workflow for future documentation updates.

* updated os requirements
2026-01-29 13:59:26 -06:00
GabiandGitHub 9013753d88 Remove snap assists toggles (#3954)
* Remove snap assists toggle

* Remove more snap stuff
2026-01-28 16:03:26 -06:00
GabiandGitHub 8ad96a9b6e Update tweaks.json (#3956) 2026-01-28 16:01:35 -06:00
titus 8ed3a31424 auto format and make categories for releases 2026-01-28 12:32:40 -06:00
titus 424d4030c1 add Gabi to close issues command 2026-01-28 12:14:01 -06:00
titus f88c9be70d u 2026-01-28 11:49:50 -06:00
titus bc4cd84127 update label pr 2026-01-28 11:47:41 -06:00
titus 54b4bcdda1 fix perms 2026-01-28 11:44:38 -06:00
GabiandGitHub c5c23d8d18 Update Compile.ps1 (#3914) 2026-01-28 11:37:53 -06:00
GabiandGitHub 28e84af33d Update tweaks.json (#3910) 2026-01-28 11:33:14 -06:00
GabiandGitHub 832af914e9 Update Microwin-NewFirstRun.ps1 (#3938) 2026-01-28 11:26:44 -06:00
Bagus Nugroho Budi NurtomoandGitHub 6d9ed9026d Disable Brave Stats Ping (#3951)
Signed-off-by: Bagus Nurtomo <bagusthanatos@gmail.com>
2026-01-28 11:23:33 -06:00
GabiandGitHub 9e877afe0e Update Services.md (#3950) 2026-01-28 11:21:56 -06:00
titus 0c0ced381a UPDATE CODEOWNERS 2026-01-28 11:21:06 -06:00
Chris TitusandGitHub 8ebd127857 add flush dns (#3953) 2026-01-28 11:17:06 -06:00
SeanandGitHub 25a392877f Update inputXML.xaml (#3943) 2026-01-28 11:09:01 -06:00
GabiandGitHub ef2c91b616 Add some apps from #1782 (#3948)
* Add imhex (Hex Editor)

* Add ffmpeg
2026-01-28 11:06:47 -06:00
GabiandGitHub b52ead87f4 Delete orig-services.txt (#3949) 2026-01-28 11:05:29 -06:00
titus 2dcfc2b109 auto-label and fix pr template 2026-01-28 11:03:02 -06:00
59a9c59064 Fix/issue 3815 (#3836)
* Fix: retry password prompt on failure to prevent script halting

* Update Invoke-WPFInstall.ps1

* format fix

* fix: change RealTimeIsUniversal to QWord for correct UTC time sync

---------

Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: Chris Titus Tech <dfm.titus@gmail.com>
2026-01-27 13:31:55 -06:00
GabiandGitHub fcc57fde50 Add back Remove OneDrive (#3920)
* Update tweaks.json

* Create RemoveOneDrive.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md
2026-01-27 13:24:17 -06:00
GabiandGitHub 06e5477d0e Remove-Edge (#3913)
* Update tweaks.json

* Create Invoke-WinUtilRemoveEdge.ps1

* Update and rename EdgeUninstall.md to RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md
2026-01-27 13:11:30 -06:00
CodingWondersandGitHub a5271597e9 [Fix] Force WinGet source (#3918)
* [Fix] Force WinGet source

* Force WinGet source for uninstall
2026-01-27 13:03:56 -06:00
Chris Titus d841792f8d add orig-services post tweaks 2026-01-27 12:30:40 -06:00
132260ab96 Fix #3876 Maybe (#3929)
* Update tweaks.json

* Update tweaks.json

* Update config/tweaks.json

Co-authored-by: Chris Titus <contact@christitus.com>

* Update tweaks.json

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-01-27 12:29:21 -06:00
ChrisTitusTech 919b2e0b8f Deploying to main from @ ChrisTitusTech/winutil@22e083182d 🚀 2026-01-22 15:40:54 +00:00
regularentropyandGitHub 22e083182d fix: change feature update delay from 2 years to 365 days (#3927) 2026-01-21 22:55:50 -06:00
GabiandGitHub 2ec37f952a Update _index.md (#3912) 2026-01-21 22:54:20 -06:00
374 changed files with 19089 additions and 14992 deletions
+2 -59
View File
@@ -1,59 +1,2 @@
# This is a comment. # Chris rules EVERYTHING (including paths listed below)
# Each line is a file pattern followed by one or more owners. * @ChrisTitusTech
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @ChrisTitusTech
# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
# *.js @js-owner #This is an inline comment.
# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
# *.go docs@example.com
# Teams can be specified as code owners as well. Teams should
# be identified in the format @org/team-name. Teams must have
# explicit write access to the repository. In this example,
# the octocats team in the octo-org organization owns all .txt files.
# *.txt @octo-org/octocats
# In this example, @doctocat owns any files in the build/logs
# directory at the root of the repository and any of its
# subdirectories.
# /build/logs/ @doctocat
# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
# docs/* docs@example.com
# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
# apps/ @octocat
# In this example, @doctocat owns any file in the `/docs`
# directory in the root of your repository and any of its
# subdirectories.
# /docs/ @doctocat
# In this example, any change inside the `/scripts` directory
# will require approval from @doctocat or @octocat.
# /scripts/ @doctocat @octocat
# In this example, @octocat owns any file in a `/logs` directory such as
# `/build/logs`, `/scripts/logs`, and `/deeply/nested/logs`. Any changes
# in a `/logs` directory will require approval from @octocat.
# **/logs @octocat
# In this example, @octocat owns any file in the `/apps`
# directory in the root of your repository except for the `/apps/github`
# subdirectory, as its owners are left empty.
# /apps/ @octocat
# /apps/github
+2 -2
View File
@@ -2,7 +2,7 @@
## Our Pledge ## Our Pledge
We as members, contributors, and leaders pledge to make participation in our We, as members, contributors, and leaders, pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status, identity and expression, level of experience, education, socio-economic status,
@@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban ### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community **Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals. individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within **Consequence**: A permanent ban from any sort of public interaction within
+15 -9
View File
@@ -21,12 +21,14 @@
* Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub. * Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub.
* If you're doing code changes, then you can submit a PR to `main` branch, but I am very selective about these. * If you're doing code changes, then you can submit a PR to the `main` branch.
!!! warning "Important" !!! warning "Important"
Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST! Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST!
Do not open a pull request that adds support for other languages to WinUtil for now, until we decide how we want to move forward with language support.
* When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied. * When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied.
* By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented. * By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented.
@@ -68,9 +70,9 @@ graph TD
### Fork the Repo ### Fork the Repo
* Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your repository list. * Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your repository list.
![Fork Image](assets/Fork-Button-Dark.png#only-dark#gh-dark-mode-only) ![Fork Image](/docs/assets/images/Fork-Button-Dark.png#gh-dark-mode-only)
![Fork Image](assets/Fork-Button-Light.png#only-light#gh-light-mode-only) ![Fork Image](/docs/assets/images/Fork-Button-Light.png#only-light#gh-light-mode-only)
### Clone the Fork ### Clone the Fork
!!! tip !!! tip
@@ -87,31 +89,35 @@ graph TD
### Testing your changes ### Testing your changes
* To test to see if your changes work as intended run following commands in a powershell terminal as admin: * To test to see if your changes work as intended, run the following commands in a PowerShell terminal as admin:
* Change the directory where you are running the commands to the forked project. * Change the directory where you are running the commands to the forked project.
* `cd {path to the folder with the compile.ps1}` * `cd {path to the folder with the compile.ps1}`
* Run the following command to compile and run WinUtil: * Run the following command to compile and run WinUtil:
* `.\Compile.ps1 -run` * `.\Compile.ps1 -run`
![Compile](assets/Compile.png) ![Compile](/docs/assets/images/Complie.png)
Open PowerShell as Administrator.
* After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below. * After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below.
### Committing the changes ### Committing the changes
* Before committing your changes, please discard changes made to the `winutil.ps1` file, like the following: * Before committing your changes, please discard changes made to the `winutil.ps1` file, like the following:
![Push Commit Image](assets/Discard-GHD.png) ![Push Commit Image](/docs/assets/images/Discard-GHD.png)
* Now, commit your changes once you are happy with the result. * Now, commit your changes once you are happy with the result.
![Commit Image](assets/Commit-GHD.png) ![Commit Image](/docs/assets/images/Commit-GHD.png)
* Push the changes to upload them to your fork on github.com. * Push the changes to upload them to your fork on github.com.
![Push Commit Image](assets/Push-Commit.png) ![Push Commit Image](/docs/assets/images/Push-Commit.png)
### Making a PR ### Making a PR
* To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is not a WinUtil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build. * To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is no WinUtil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build.
* If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public. * If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public.
* Congratulations! You just submitted your first PR. Thank you so much for contributing to WinUtil. * Congratulations! You just submitted your first PR. Thank you so much for contributing to WinUtil.
@@ -0,0 +1,28 @@
title: "[App Suggestion] "
body:
- type: input
attributes:
label: "Application Link"
description: "Provide a link where this application can downloaded officially"
- type: checkboxes
attributes:
label: "Rules Checklist"
description: "You should agree with next rules"
options:
- label: "This application is popular enough, so is not considered as niche"
required: true
- label: "This application is not considered bloatware"
required: true
- label: "This application is free to access"
required: true
- label: "This application should be included on majority of fresh installed systems"
required: true
- label: "This application is present on WinGet (check winstall.app or do 'winget search your-app' in terminal)"
required: true
- type: checkboxes
attributes:
label: "Check for denied applications"
options:
- label: "Yes, I checked PRs, issues and discussions for existing suggestions and their result"
required: true
+27 -29
View File
@@ -6,57 +6,55 @@ body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
# 🐞 **Issue Report** - Remember, we only support Windows 11. If you encounter problems on Windows 10, please consider upgrading to Windows 11.
Thank you for taking the time to report an issue! Please provide as much detail as possible to help us address the problem efficiently. - For general questions, join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
## ⚠️ **IMPORTANT**
- 🛠️ **Supported environments only:** We only support Windows 11. Custom ISOs that are not made using Microwin are not supported.
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
- type: checkboxes - type: checkboxes
id: read_issues
attributes: attributes:
label: ⚙️ Issue Checklist label: "I have read the known issues"
description: "You [better do](https://winutil.christitus.com/knownissues/), cause your issue can be already there"
options: options:
- label: I have read the guidelines. - label: Yes, I did
- label: I checked for duplicate issues. required: true
- label: I searched for existing discussions.
- label: I checked for an existing pull request that addresses this issue. - type: input
id: winutil_version
attributes:
label: "Version of WinUtil"
description: "Provide a version that you are using when issue submitted (it can be found in right corner of app)"
validations: validations:
required: true required: true
- type: input - type: dropdown
id: affected_part id: affected_part
attributes: attributes:
label: 📜 What part of Winutil are you having issues with? label: What part of WinUtil are you having issues with?
placeholder: "e.g., Microwin, Tweaks, etc." options:
- Program Install Tab
- Tweaks Tab
- Config Tab
- Updates Tab
- Win11 Creator Tab
validations: validations:
required: true required: false
- type: textarea - type: textarea
id: issue_description id: issue_description
attributes: attributes:
label: 📝 Provide a clear and concise description of the issue. label: Provide a clear and concise description of the issue.
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: steps_to_reproduce id: tweaks_applied
attributes: attributes:
label: 🔄 Steps to reproduce the issue. label: List the tweaks you applied before the issue occurred.
placeholder: "e.g., Step 1: ..., Step 2: ..."
validations: validations:
required: true required: false
- type: textarea - type: textarea
id: error_output id: error_output
attributes: attributes:
label: Paste the full error output (if available). label: Paste the full error output (if available) or Screenshot or Video.
placeholder: "Include any relevant logs or error messages." placeholder: "Include any relevant logs or error messages."
- type: textarea
id: additional_context
attributes:
label: 🖼️ Additional context.
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
validations:
required: false
+4 -1
View File
@@ -2,4 +2,7 @@ blank_issues_enabled: false
contact_links: contact_links:
- name: 💻 Community Discord - name: 💻 Community Discord
url: https://discord.gg/RUbZUZyByQ url: https://discord.gg/RUbZUZyByQ
about: Join our Community Discord server to chat with other users in the Winutil community. about: Join our Community Discord server to chat with other users in the WinUtil community.
- name: Suggest an application
url: https://github.com/ChrisTitusTech/winutil/discussions/new?category=app-suggestion
about: If you want to suggest an application to be added, create a discussion with given template
+2 -37
View File
@@ -11,47 +11,12 @@ body:
## ⚠️ **IMPORTANT** ## ⚠️ **IMPORTANT**
- 🛠️ **Supported environments only:** We only support Windows 11. - 🛠️ **Supported environments only:** We only support Windows 11.
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ). - 💡 For general questions, use the [Discussions section](https://github.com/ChrisTitusTech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
- type: checkboxes
attributes:
label: ⚙️ Issue Checklist
options:
- label: I have read the guidelines.
- label: I checked for duplicate issues.
- label: I searched for existing discussions.
- label: I checked for an existing pull request that addresses this request.
validations:
required: true
- type: textarea
id: problem_statement
attributes:
label: ❓ Is your feature request related to a problem?
placeholder: "Provide a clear and concise description of the issue you're facing. Example: 'I'm always frustrated when [...]'"
validations:
required: false
- type: textarea - type: textarea
id: proposed_solution id: proposed_solution
attributes: attributes:
label: 💡 Describe the solution you'd like label: 💡 Describe the solution you'd like
placeholder: "Provide a clear and concise description of what you want to happen." placeholder: "Provide a clear and concise description."
validations: validations:
required: true required: true
- type: textarea
id: alternatives
attributes:
label: 🔄 Describe alternatives you've considered
placeholder: "Provide details on any alternative solutions or features you've thought about."
validations:
required: false
- type: textarea
id: additional_context
attributes:
label: 🖼️ Additional context
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
validations:
required: false
+6 -12
View File
@@ -1,24 +1,18 @@
<!--Before you make this PR have you followed the docs here? - https://winutil.christitus.com/contributing/ --> <!--Before you make this PR have you followed the docs here? - https://winutil.christitus.com/contributing/ -->
<!--Documentation is auto-generated from configs - no manual documentation updates needed -->
## Type of Change ## Type of Change
- [ ] New feature - [ ] New feature
- [ ] Bug fix - [ ] Bug fix
- [ ] Documentation update - [ ] Documentation update
- [ ] Refactoring - [ ] Refactor
- [ ] Hotfix
- [ ] Security patch
- [ ] UI/UX improvement - [ ] UI/UX improvement
<!-- This automatically adds labels to your PR based on the selections above. -->
## Description ## Description
<!--[Provide a detailed explanation of the changes you have made. Include the reasons behind these changes and any relevant context. Link any related issues.]--> <!--[What does this PR do? Provide Screenshots when possible.]-->
## Issue related to PR ## Issue related to PR
<!--[What issue/discussion is related to this PR (if any)]--> <!--[List any ISSUES this is related to as it AUTO-CLOSES Them!]-->
- Resolves # - Resolves #
## Checklist
- [ ] My code adheres to the coding and style guidelines of the project.
- [ ] I have performed a self-review of my own code.
- [ ] I have commented my code, particularly in hard-to-understand areas.
- [ ] I have made corresponding changes to the documentation.
- [ ] My changes generate no errors/warnings/merge conflicts.
+105
View File
@@ -0,0 +1,105 @@
# Chris Titus Tech's Windows Utility
[![Version](https://img.shields.io/github/v/release/ChrisTitusTech/winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/ChrisTitusTech/winutil/releases/latest)
![GitHub Downloads (specific asset, all releases)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/winutil.ps1?label=Total%20Downloads&style=for-the-badge)
[![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ)
[![Static Badge](https://img.shields.io/badge/Documentation-_?style=for-the-badge&logo=bookstack&color=grey)](https://winutil.christitus.com/)
Questa utility è una raccolta di attività Windows che eseguo personalmente su ogni sistema che utilizzo. È progettata per snellire le *installazioni*, rimuovere i componenti superflui tramite *ottimizzazioni*, risolvere problemi tramite la *configurazione*, e riparare *aggiornamenti* di Windows. Sono estremamente selettivo riguardo ai contributi per mantenere questo progetto pulito ed efficiente.
![screen-install](/docs/assets/images/Title-Screen.png)
## 💡 Come usarlo
Winutil deve essere eseguito con privilegi di amministratore, poiché apporta modifiche all'intero sistema. Per farlo, avvia PowerShell come amministratore. Ecco alcuni modi per procedere:
1. **Metodo del menu di Start:**
- Fai clic con il tasto destro sul menu Start.
- Scegli "Windows PowerShell (esegui come Amministratore)" (per Windows 10) o "Terminale (esegui come Amministratore)" (per Windows 11).
2. **Metodo tramite ricerca:**
- Premi il tasto Windows.
- Digita "PowerShell" o "Terminal" (per Windows 11).
- Premi `Ctrl + Shift + Invio` oppure fai clic con il tasto destro e seleziona "Esegui come amministratore" per avviarlo con privilegi elevati.
### Comando di avvio
#### Branch stabile (Consigliato)
```ps1
irm "https://christitus.com/win" | iex
```
#### Branch Sviluppatore
```ps1
irm "https://christitus.com/windev" | iex
```
### Automazione
Winutil supporta anche preset predefiniti che applicano automaticamente configurazioni comuni:
- `Standard`
- `Minimal`
- `Advanced`
Esempio:
```powershell
& ([ScriptBlock]::Create((irm "https://christitus.com/win"))) -Preset Standard
```
Per vedere esattamente cosa fa ogni preset, consulta:
https://github.com/ChrisTitusTech/winutil/blob/main/config/preset.json
In caso di problemi, consulta i [Problemi noti](https://winutil.christitus.com/knownissues/) o [Apri una segnalazione](https://github.com/ChrisTitusTech/winutil/issues)
## 🎓 Documentazione
### [Documentazione ufficiale di WinUtil](https://winutil.christitus.com/)
### [Tutorial su YouTube](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
### [Articolo su ChrisTitus.com](https://christitus.com/windows-tool/)
## 🛠️ Build & Sviluppo
> [!NOTE]
> Winutil è uno script piuttosto esteso, per questo è suddiviso in più file che vengono combinati in un unico file `.ps1` tramite un compilatore personalizzato. Questo rende la manutenzione del progetto molto più semplice.
Ottieni una copia del codice sorgente. Puoi farlo tramite l'interfaccia di GitHub (**Code** > **Download ZIP**), oppure clonando (scaricando) la repo tramite git.
Se git è installato, esegui i seguenti comandi in una finestra PowerShell per clonare e accedere alla directory del progetto:
```ps1
git clone --depth 1 "https://github.com/ChrisTitusTech/winutil.git"
cd winutil
```
Per compilare il progetto, esegui lo script di compilazione in una finestra PowerShell (i permessi di amministratore NON sono richiesti):
```ps1
.\Compile.ps1
```
Troverai un nuovo file chiamato `winutil.ps1`, creato dallo script `Compile.ps1`. Ora puoi eseguirlo come amministratore e apparirà una nuova finestra. Goditi la tua versione compilata di WinUtil :)
> [!TIP]
> Per ulteriori informazioni sull'utilizzo di WinUtil e su come contribuire allo sviluppo, ti invitiamo a leggere le [Linee guida per i contributi](https://winutil.christitus.com/contributing/). Se non sai da dove iniziare o hai domande, puoi chiedere sul nostro [Server Discord della community](https://discord.gg/RUbZUZyByQ); i membri attivi del progetto risponderanno appena possibile.
## 💖 Supporto
- Per sostenere il progetto moralmente e mentalmente, non dimenticare di lasciare una ⭐️!
- Wrapper EXE a 10$ su https://www.cttstore.com/windows-toolbox
## 💖 Sponsor
Questi sono gli sponsor che aiutano a mantenere vivo il progetto con contributi mensili.
<!-- sponsors --><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="Avatar utente: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="Avatar utente: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="Avatar utente: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="Avatar utente: RMS" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="Avatar utente: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="Avatar utente: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="Avatar utente: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="Avatar utente: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="Avatar utente: DursleyGuy" /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="Avatar utente: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="Avatar utente: Kiera Meredith" /></a><a href="https://github.com/andrewpayne68"><img src="https:&#x2F;&#x2F;github.com&#x2F;andrewpayne68.png" width="60px" alt="Avatar utente: Andrew P" /></a><!-- sponsors -->
## 🏅 Grazie a tutti i collaboratori
Un ringraziamento speciale per aver dedicato il vostro tempo ad aiutare Winutil a crescere. Grazie mille! Continuate così 🍻.
[![Contributori](https://contrib.rocks/image?repo=ChrisTitusTech/winutil)](https://github.com/ChrisTitusTech/winutil/graphs/contributors)
## 📊 Statistiche GitHub
![Alt](https://repobeats.axiom.co/api/embed/aad37eec9114c507f109d34ff8d38a59adc9503f.svg "Immagine analisi Repobeats")
+4 -2
View File
@@ -1,5 +1,7 @@
# Security Policy # Security Policy
If you find a security issue please make post it in the issues tab. If you think it should be private you can email me at contact@christitus.com. If you find a security issue, please post it in the Issues tab. If you think it should be private, you can email me at contact@christitus.com.
For immediate response check out our discord server @ [![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ) For immediate response check out our Discord server:
[![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ)
+8 -10
View File
@@ -1,18 +1,19 @@
tag-prefix: '' tag-prefix: ''
categories: categories:
- title: '🚀 Features' - title: 'Features'
labels: labels:
- 'feature' - 'feature'
- 'enhancement' - 'enhancement'
- title: '🐛 Bug Fixes' - 'new feature'
- title: 'Bug Fixes'
labels: labels:
- 'fix' - 'hotfix'
- 'bugfix' - 'bugfix'
- 'bug' - 'bug'
- title: '📚 Documentation' - title: 'Documentation'
label: 'documentation' label: 'documentation'
- title: '🔒 Security' - title: 'UI/UX Improvements'
label: 'security' label: 'ui update'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)' change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: | template: |
## Changes ## Changes
@@ -31,7 +32,7 @@ autolabeler:
- '/fix\/.+/' - '/fix\/.+/'
title: title:
- '/fix/i' - '/fix/i'
- label: 'enhancement' - label: 'new feature'
branch: branch:
- '/feature\/.+/' - '/feature\/.+/'
body: body:
@@ -40,9 +41,6 @@ autolabeler:
files: files:
- '**/*.md' - '**/*.md'
- 'docs/**/*' - 'docs/**/*'
- label: 'security'
branch:
- '/security\/.+/'
replacers: replacers:
- search: /"/g - search: /"/g
replace: '' replace: ''
+31
View File
@@ -0,0 +1,31 @@
name: Auto-merge Automated Update PRs
on:
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
jobs:
auto-merge:
if: (github.event.pull_request.head.ref == 'docs-update' || github.event.pull_request.head.ref == 'sponsors-update') && (github.event.pull_request.user.login == 'ChrisTitusTech' || github.event.pull_request.user.login == 'github-actions[bot]')
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: write
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Auto-approve PR
if: github.event.pull_request.user.login == 'github-actions[bot]'
run: gh pr review "$PR_NUMBER" --approve
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
GH_TOKEN: ${{ secrets.AUTO_MERGE }}
- name: Enable auto-merge
run: gh pr merge "$PR_NUMBER" --squash --delete-branch --admin
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
GH_TOKEN: ${{ secrets.AUTO_MERGE }}
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Check if PR was merged - name: Check if PR was merged
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true
@@ -18,10 +18,11 @@ jobs:
- name: Extract Discussion Number & Close If any Were Found - name: Extract Discussion Number & Close If any Were Found
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_BODY: ${{ github.event.pull_request.body }}
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true
id: extract-discussion id: extract-discussion
run: | run: |
pr_body="${{ github.event.pull_request.body }}" pr_body="$PR_BODY"
discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+') discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+')
if [ -z "$discussion_ids" ]; then if [ -z "$discussion_ids" ]; then
+4 -4
View File
@@ -14,14 +14,14 @@ jobs:
contents: none contents: none
steps: steps:
- name: Close inactive issues - name: Close inactive issues
uses: actions/stale@v8 uses: actions/stale@v10
with: with:
# A list of labels to reference when looking through issues, # A list of labels to reference when looking through issues,
# and only when one (or even more) of these labels are found.. # and only when one (or even more) of these labels is found.
# then skip this issue, and never try to stale and/or close it. # then skip this issue, and never try to stale and/or close it.
exempt-issue-labels: "Keep Issue Open" exempt-issue-labels: "Keep Issue Open"
# Split it into two weeks, after one week the issue will be marked as stale, # Split it into two weeks, after one week, the issue will be marked as stale,
# after another week have pasted without any update.. the issue will then be closed. # after another week have passed without any update, the issue will then be closed.
days-before-issue-stale: 90 days-before-issue-stale: 90
days-before-issue-close: 365 days-before-issue-close: 365
# NEVER mark PRs as Stale or Close + this workflow should never have write permissions on PRs, EVER! # NEVER mark PRs as Stale or Close + this workflow should never have write permissions on PRs, EVER!
+2 -2
View File
@@ -13,9 +13,9 @@ jobs:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Checkout Sources - name: Checkout Sources
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Compile and Syntaxcheck winutil.ps1 - name: Compile and Syntax check winutil.ps1
shell: pwsh shell: pwsh
run: | run: |
Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1 Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1
+47 -19
View File
@@ -1,40 +1,36 @@
# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages name: Deploy Hugo site to Pages
on: on:
# Runs on pushes targeting the default branch
push: push:
branches: branches:
- main - main
paths: paths:
- 'docs/**' # ONLY triggers if files in the 'docs' folder are changed - "docs/**"
- "config/tweaks.json"
# Allows you to run this workflow manually from the Actions tab - "config/feature.json"
- "functions/**"
workflow_dispatch: workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions: permissions:
contents: read contents: read
pages: write pages: write
id-token: write id-token: write
pull-requests: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency: concurrency:
group: "pages" group: "pages"
cancel-in-progress: false cancel-in-progress: false
# Default to bash
defaults: defaults:
run: run:
shell: bash shell: bash
jobs: jobs:
# Build job
build: build:
if: github.repository == 'ChrisTitusTech/winutil'
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
HUGO_VERSION: 0.145.0 HUGO_VERSION: 0.156.0
HUGO_ENVIRONMENT: production HUGO_ENVIRONMENT: production
TZ: America/Chicago TZ: America/Chicago
steps: steps:
@@ -43,24 +39,55 @@ jobs:
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb && sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
with: with:
submodules: recursive submodules: recursive
fetch-depth: 0 fetch-depth: 0
persist-credentials: false
- name: Setup Pages - name: Setup Pages
id: pages id: pages
uses: actions/configure-pages@v5 uses: actions/configure-pages@v6
- name: Generate Dev Docs from JSON
shell: pwsh
run: |
Set-Location tools
./devdocs-generator.ps1
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.AUTO_MERGE }}
commit-message: 'chore: Update generated dev docs'
title: 'chore: Update Generated Dev Docs'
body: 'Automated update of generated documentation from JSON sources'
branch: docs-update
delete-branch: true
add-paths: |
docs/content/dev/
config/tweaks.json
config/feature.json
labels: |
automated
documentation
skip-changelog
- name: Check outputs
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
- name: Install Node.js dependencies - name: Install Node.js dependencies
run: "cd docs && [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" run: "cd docs && [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Cache Restore - name: Cache Restore
id: cache-restore id: cache-restore
uses: actions/cache/restore@v5 uses: actions/cache/restore@v6
with: with:
path: | path: |
${{ runner.temp }}/hugo_cache ${{ runner.temp }}/hugo_cache
key: hugo-${{ github.run_id }} key: hugo-${{ github.run_id }}
restore-keys: restore-keys: hugo-
hugo-
- name: Build with Hugo - name: Build with Hugo
run: | run: |
hugo \ hugo \
@@ -71,17 +98,18 @@ jobs:
--cacheDir "${{ runner.temp }}/hugo_cache" --cacheDir "${{ runner.temp }}/hugo_cache"
- name: Cache Save - name: Cache Save
id: cache-save id: cache-save
uses: actions/cache/save@v5 uses: actions/cache/save@v6
with: with:
path: | path: |
${{ runner.temp }}/hugo_cache ${{ runner.temp }}/hugo_cache
key: ${{ steps.cache-restore.outputs.cache-primary-key }} key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- name: Upload artifact - name: Upload artifact
uses: actions/upload-pages-artifact@v4 uses: actions/upload-pages-artifact@v5
with: with:
path: ./docs/public path: ./docs/public
deploy: deploy:
if: github.repository == 'ChrisTitusTech/winutil'
environment: environment:
name: github-pages name: github-pages
url: ${{ steps.deployment.outputs.page_url }} url: ${{ steps.deployment.outputs.page_url }}
@@ -90,4 +118,4 @@ jobs:
steps: steps:
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
id: deployment id: deployment
uses: actions/deploy-pages@v4 uses: actions/deploy-pages@v5
-115
View File
@@ -1,115 +0,0 @@
name: Issue slash commands
on:
issue_comment:
types: [created, edited]
jobs:
issueCommands:
# Skip this job if the comment was created/edited on a PR
if: ${{ !github.event.issue.pull_request }}
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: none
contents: read
steps:
- run: echo "command=false" >> $GITHUB_ENV
- name: Check for /label command
id: check_label_command
run: |
if [[ "${{ contains(github.event.comment.body, '/label') }}" == "true" ]]; then
echo "command=true" >> $GITHUB_ENV
LABEL_NAME=$(echo "${{ github.event.comment.body }}" | awk -F"/label" '/\/label/ { match($2, /'\''([^'\'']*)'\''/, arr); if (arr[1] != "") print arr[1] }')
echo "label_command=true" >> $GITHUB_ENV
echo "label_name=${LABEL_NAME}" >> $GITHUB_ENV
else
echo "label_command=false" >> $GITHUB_ENV
fi
- name: Check for /unlabel command
id: check_unlabel_command
run: |
if [[ "${{ contains(github.event.comment.body, '/unlabel') }}" == "true" ]]; then
echo "command=true" >> $GITHUB_ENV
UNLABEL_NAME=$(echo "${{ github.event.comment.body }}" | awk -F"/unlabel" '/\/unlabel/ { match($2, /'\''([^'\'']*)'\''/, arr); if (arr[1] != "") print arr[1] }')
echo "unlabel_command=true" >> $GITHUB_ENV
echo "unlabel_name=${UNLABEL_NAME}" >> $GITHUB_ENV
else
echo "unlabel_command=false" >> $GITHUB_ENV
fi
- name: Check for /close command
id: check_close_command
run: |
if [[ "${{ contains(github.event.comment.body, '/close') }}" == "true" ]]; then
echo "command=true" >> $GITHUB_ENV
echo "close_command=true" >> $GITHUB_ENV
echo "reopen_command=false" >> $GITHUB_ENV
else
echo "close_command=false" >> $GITHUB_ENV
fi
- name: Check for /open or /reopen command
id: check_reopen_command
run: |
if [[ "${{ contains(github.event.comment.body, '/open') }}" == "true" ]] || [[ "${{ contains(github.event.comment.body, '/reopen') }}" == "true" ]]; then
echo "command=true" >> $GITHUB_ENV
echo "reopen_command=true" >> $GITHUB_ENV
echo "close_command=false" >> $GITHUB_ENV
else
echo "reopen_command=false" >> $GITHUB_ENV
fi
- name: Check if the user is allowed
id: check_user
if: env.command == 'true'
run: |
ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders")
if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then
echo "user=true" >> $GITHUB_ENV
else
exit 0
fi
- name: Close issue
if: env.close_command == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo Closing the issue...
if [[ "${{ contains(github.event.comment.body, 'not planned') }}" == "true" ]]; then
gh issue close $ISSUE_NUMBER --repo ${{ github.repository }} --reason 'not planned'
else
gh issue close $ISSUE_NUMBER --repo ${{ github.repository }}
fi
- name: Reopen issue
if: env.reopen_command == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo Reopening the issue...
gh issue reopen $ISSUE_NUMBER --repo ${{ github.repository }}
- name: Label issue
if: env.label_command == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo Labeling the issue...
gh issue edit $ISSUE_NUMBER --repo ${{ github.repository }} --add-label "${{ env.label_name }}"
- name: Remove labels
if: env.unlabel_command == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo Unlabeling the issue...
gh issue edit $ISSUE_NUMBER --repo ${{ github.repository }} --remove-label "${{ env.unlabel_name }}"
+45
View File
@@ -0,0 +1,45 @@
name: Label PRs by Type of Change
on:
pull_request_target:
types: [opened, edited, synchronize]
jobs:
label-pr:
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
contents: read # Often needed for github-script
steps:
- name: Check PR body for Type of Change
uses: actions/github-script@v9
with:
script: |
const prBody = context.payload.pull_request.body || '';
const labelsToAdd = [];
if (/\[x\]\s*New feature/i.test(prBody)) {
labelsToAdd.push('new feature');
}
if (/\[x\]\s*Bug fix/i.test(prBody)) {
labelsToAdd.push('bug');
}
if (/\[x\]\s*Documentation update/i.test(prBody)) {
labelsToAdd.push('documentation');
}
if (/\[x\]\s*Hotfix/i.test(prBody)) {
labelsToAdd.push('hotfix');
}
if (/\[x\]\s*UI\/UX improvement/i.test(prBody)) {
labelsToAdd.push('ui update');
}
if (labelsToAdd.length > 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: labelsToAdd
});
}
+71 -5
View File
@@ -3,6 +3,7 @@ name: Pre-Release WinUtil
permissions: permissions:
contents: write contents: write
actions: read actions: read
pull-requests: write
on: on:
workflow_dispatch: # Manual trigger added workflow_dispatch: # Manual trigger added
@@ -10,11 +11,19 @@ on:
jobs: jobs:
build-runspace: build-runspace:
runs-on: windows-latest runs-on: windows-latest
outputs:
version: ${{ steps.extract_version.outputs.version }}
env: env:
CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }} CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Generate Dev Docs and Update JSON Links
shell: pwsh
run: |
Set-Location tools
./devdocs-generator.ps1
- name: Compile project - name: Compile project
shell: pwsh shell: pwsh
@@ -22,11 +31,35 @@ jobs:
Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1 Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1
continue-on-error: false # Directly fail the job on error, removing the need for a separate check continue-on-error: false # Directly fail the job on error, removing the need for a separate check
- name: Create Pull Request for Updated JSON Links
id: cpr
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.AUTO_MERGE }}
commit-message: 'chore: Update documentation links in JSON configs'
title: 'chore: Update documentation links in JSON configs'
body: 'Automated update of documentation links in JSON configs from pre-release build'
branch: docs-update
delete-branch: true
add-paths: |
config/tweaks.json
config/feature.json
labels: |
automated
skip-changelog
- name: Check outputs
shell: bash
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
- name: Set Version to Todays Date - name: Set Version to Todays Date
id: extract_version id: extract_version
run: | run: |
$version = (Get-Date -Format "yy.MM.dd") $version = (Get-Date -Format "yy.MM.dd")
echo "VERSION=$version" >> $env:GITHUB_ENV echo "VERSION=$version" >> $env:GITHUB_ENV
echo "version=$version" >> $env:GITHUB_OUTPUT
shell: pwsh shell: pwsh
- name: Create Tag - name: Create Tag
@@ -49,23 +82,56 @@ jobs:
} }
shell: pwsh shell: pwsh
- name: Upload compiled script
uses: actions/upload-artifact@v7
with:
name: winutil-ps1
path: ./winutil.ps1
release:
needs: build-runspace
runs-on: ubuntu-latest
steps:
- name: Download compiled script
uses: actions/download-artifact@v8
with:
name: winutil-ps1
- name: Set version from build job
run: echo "VERSION=${{ needs.build-runspace.outputs.version }}" >> $GITHUB_ENV
- name: Generate Release Notes - name: Generate Release Notes
id: generate_notes id: generate_notes
uses: release-drafter/release-drafter@v6 uses: release-drafter/release-drafter@v7
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
config-name: release-drafter.yml config-name: release-drafter.yml
version: ${{ env.VERSION }} # Pass the version variable version: ${{ env.VERSION }}
- name: Remove Automated Updates from Release Notes
id: filter_notes
shell: pwsh
env:
RELEASE_NOTES: ${{ steps.generate_notes.outputs.body }}
run: |
$filteredNotes = ($env:RELEASE_NOTES -split '\r?\n' | Where-Object {
$_ -notmatch '(?i)Update (Generated Dev Docs|Sponsors)'
}) -join "`n"
$delimiter = [guid]::NewGuid().ToString()
"body<<$delimiter" >> $env:GITHUB_OUTPUT
$filteredNotes >> $env:GITHUB_OUTPUT
$delimiter >> $env:GITHUB_OUTPUT
- name: Create and Upload Release - name: Create and Upload Release
id: create_release id: create_release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v3
with: with:
tag_name: ${{ env.VERSION }} tag_name: ${{ env.VERSION }}
name: Pre-Release ${{ env.VERSION }} name: Pre-Release ${{ env.VERSION }}
body: | body: |
${{ steps.generate_notes.outputs.body }} ${{ steps.filter_notes.outputs.body }}
![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/${{ env.VERSION }}/winutil.ps1) ![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/${{ env.VERSION }}/winutil.ps1)
append_body: false append_body: false
+1 -1
View File
@@ -11,7 +11,7 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Check if winutil.ps1 exists - name: Check if winutil.ps1 exists
id: check_existence id: check_existence
+21 -5
View File
@@ -5,13 +5,16 @@ on:
- cron: 30 15 * * 0-6 - cron: 30 15 * * 0-6
permissions: permissions:
contents: write contents: write
pull-requests: write
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: (github.event_name == 'schedule' && github.repository == 'ChrisTitusTech/winutil') || (github.event_name != 'schedule') if: (github.event_name == 'schedule' && github.repository == 'ChrisTitusTech/winutil') || (github.event_name != 'schedule')
steps: steps:
- name: Checkout 🛎️ - name: Checkout 🛎️
uses: actions/checkout@v6 uses: actions/checkout@v7
with:
persist-credentials: false
- name: Generate Sponsors 💖 - name: Generate Sponsors 💖
uses: JamesIves/github-sponsors-readme-action@v1 uses: JamesIves/github-sponsors-readme-action@v1
@@ -19,8 +22,21 @@ jobs:
token: ${{ secrets.PAT }} token: ${{ secrets.PAT }}
file: 'README.md' file: 'README.md'
- name: Deploy to GitHub Pages 🚀 - name: Create Pull Request 🚀
uses: JamesIves/github-pages-deploy-action@v4 id: cpr
uses: peter-evans/create-pull-request@v8
with: with:
branch: main token: ${{ secrets.AUTO_MERGE }}
folder: '.' commit-message: 'Update sponsors in README'
title: 'chore: Update Sponsors README'
body: 'Automated update of sponsors section'
branch: sponsors-update
delete-branch: true
labels: |
automated
skip-changelog
- name: Check outputs
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
+23 -12
View File
@@ -8,32 +8,43 @@ jobs:
name: PS Script Analyzer name: PS Script Analyzer
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: lint - name: Install PSScriptAnalyzer
uses: devblackops/github-action-psscriptanalyzer@master run: |
with: Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
sendComment: false Install-Module -Name PSScriptAnalyzer -RequiredVersion 1.20.0 -Scope CurrentUser -Force
settingsPath: lint/PSScriptAnalyser.ps1 Import-Module PSScriptAnalyzer -RequiredVersion 1.20.0 -Force
failOnErrors: false Get-Module PSScriptAnalyzer | Select-Object Name, Version, Path
failOnWarnings: false shell: pwsh
failOnInfos: false - name: Run PSScriptAnalyzer
run: |
$results = Invoke-ScriptAnalyzer -Path . -Settings ./lint/PSScriptAnalyser.ps1 -Recurse
if ($results) {
$results | Format-Table -AutoSize | Out-String -Width 4096 | Write-Host
} else {
Write-Host "PSScriptAnalyzer found no diagnostics."
}
shell: pwsh
test: test:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Install Pester - name: Install Pester
run: | run: |
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
Install-Module -Name Pester -Force -SkipPublisherCheck -AllowClobber Install-Module -Name Pester -RequiredVersion 5.8.0 -Force -SkipPublisherCheck -AllowClobber
Import-Module Pester -RequiredVersion 5.8.0 -Force
Get-Module Pester | Select-Object Name, Version, Path
shell: pwsh shell: pwsh
- name: Run Pester tests - name: Run Pester tests
run: | run: |
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed Import-Module Pester -RequiredVersion 5.8.0 -Force
Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed -CI
shell: pwsh shell: pwsh
env: env:
+14 -52
View File
@@ -1,58 +1,20 @@
### VSCode ### # winutil
# Configuration folder
.vscode/
.idea/
### Visual Studio ###
# Visual Studio user-specific files
.vs/
winutil.pdb
### Preprocessor Hashes ###
.preprocessor_hashes.json
### Windows ###
# Folder config file
[Dd]esktop.ini
# Ignore Generated XAML Files
xaml/inputApp.xaml
xaml/inputFeatures.xaml
xaml/inputTweaks.xaml
# Executables and Configs
winget.msixbundle
pester.ps1
*.psd*
ooshutup10.cfg
winutil.exe.config
Microsoft.UI.Xaml*
license1.xml
winutil.ps1
# Libraries
System.Management.Automation.dll System.Management.Automation.dll
Microsoft.PowerShell.ConsoleHost.dll Microsoft.PowerShell.ConsoleHost.dll
# Compressed files winutil.exe.config
*.zip
### MacOS ###
# General
.DS_Store
microwin.log
True
test.ps1
winutil.ps1 winutil.ps1
# temporary excludes for docs
.github/site/
binary/ binary/
testResults.xml
.preprocessor_hashes.json # general software/os specific
desktop.ini
.DS_Store
.vscode/
.idea/
# hugo files
docs/public/
docs/.hugo_build.lock
docs/resources/
+194
View File
@@ -0,0 +1,194 @@
# AGENTS.md
Drop-in operating instructions for coding agents. Read this file before every task.
**Working code only. Finish the job. Plausibility is not correctness.**
This repository follows the AGENTS.md convention: these instructions are for Codex, Claude Code, Cursor, Windsurf, Copilot, Aider, Devin, Amp, and other coding agents that read `AGENTS.md`.
## 0. Non-Negotiables
These rules override everything else in this file when in conflict:
1. **Do not edit `winutil.ps1` directly.** It is generated build output. Change source files and compile.
2. **Do not commit `winutil.ps1`.** It is ignored locally and generated by GitHub Actions for releases.
3. **Never fabricate.** Do not invent file paths, function names, command output, test results, commit hashes, or API behavior. Read the file or run the command.
4. **Disagree when the premise is wrong.** Say what is wrong before acting on it.
5. **Stop when genuinely ambiguous.** If two interpretations would produce materially different diffs, ask before editing.
6. **Touch only what the task requires.** No drive-by refactors, formatting sweeps, or unrelated cleanup.
7. **Verify before saying done.** A plausible-looking diff is not proof.
## 1. Project Context
WinUtil is a Windows PowerShell utility with a WPF interface. The repository is maintained as modular source, but the distributed artifact is one compiled PowerShell script.
### Stack
- Language: Windows PowerShell / PowerShell.
- UI: WPF via `xaml/inputXML.xaml`.
- Configuration: JSON files under `config/`.
- Tests: Pester tests under `pester/`.
- Lint: PowerShell Script Analyzer with settings in `lint/PSScriptAnalyser.ps1`.
- Docs: Hugo site under `docs/`.
- Release artifact: generated root `winutil.ps1`.
### Key Commands
- Compile:
```powershell
.\Compile.ps1
```
- Compile and run GUI:
```powershell
.\Compile.ps1 -Run
```
- Run tests:
```powershell
Import-Module Pester -RequiredVersion 5.8.0 -Force
Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed
```
- Run Script Analyzer with project settings when available:
```powershell
Invoke-ScriptAnalyzer -Path . -Settings .\lint\PSScriptAnalyser.ps1 -Recurse
```
Prefer the narrowest useful verification while iterating. Use the full relevant check before finishing.
## 2. Source Of Truth
Make durable changes only in files consumed by `Compile.ps1` or in documentation/test files:
- `scripts/start.ps1` for startup/bootstrap code.
- `functions/public/*.ps1` for UI-facing and user-facing workflows.
- `functions/private/*.ps1` for internal helpers.
- `config/*.json` for applications, tweaks, features, DNS, presets, navigation, themes, and related declarative data.
- `xaml/inputXML.xaml` for the WPF UI layout.
- `tools/autounattend.xml` for the embedded unattended Windows setup template.
- `scripts/main.ps1` for the final entrypoint and GUI initialization logic appended during compile.
- `pester/*.Tests.ps1` for automated checks.
- `docs/` for Hugo documentation.
If behavior changes require the compiled script to change, update these source files and run `.\Compile.ps1` only to verify generation.
## 3. Build Model
`Compile.ps1` combines the repository sources into `winutil.ps1` in this order:
1. Read `scripts/start.ps1` and replace `#{replaceme}` with the current `yy.MM.dd` build date.
2. Append every file under `functions/` recursively.
3. Convert each `config/*.json` file into embedded `$sync.configs` objects.
4. Special-case `config/applications.json` so keys receive the `WPFInstall` prefix in compiled config.
5. Embed `xaml/inputXML.xaml` into `$inputXML`.
6. Embed `tools/autounattend.xml` into `$WinUtilAutounattendXml`.
7. Append `scripts/main.ps1`.
8. Write the result to root `winutil.ps1`.
Because the final script is concatenated, do not rely on runtime module imports or source-relative dot-sourcing unless the compiled script will also contain the required code/data.
## 4. Before Editing
- State the plan in one or two sentences before editing. For non-trivial work, include the verification you intend to run.
- Read the files you will touch and the files that call them.
- Match existing patterns even when a different greenfield design would be cleaner.
- Surface assumptions when they affect behavior, compatibility, or user data.
- If two approaches have meaningful tradeoffs, name them before choosing. Trivial tasks can proceed directly.
## 5. Coding Guidelines
- Prefer the minimum code that solves the stated problem.
- Keep PowerShell functions in one function file when practical, with the file name matching the primary function name.
- Use approved PowerShell verb-noun names and follow the existing `WPF` / `WinUtil` naming conventions.
- Keep UI event handler names aligned with XAML element names. A button named `WPFExampleButton` is typically handled by `Invoke-WPFExampleButton`.
- Use `$sync` for shared state and UI references, consistent with the existing runspace model.
- Update WPF controls through the UI dispatcher when running work in a background runspace.
- Keep config-driven features in JSON when they fit the existing schema instead of hard-coding lists in PowerShell.
- Preserve undo/original-state data for tweaks so users can reverse changes.
- Do not add abstractions, configurability, hooks, or "future extensibility" unless the task needs them now.
- Clean up orphans created by your own changes, such as unused variables or functions made obsolete by the edit.
- Avoid broad formatting-only edits, especially in JSON config files, XAML, docs, and generated output.
## 6. Runtime And Safety Rules
- WinUtil performs system-level Windows changes. Treat registry, services, AppX removal, package manager, Windows Update, ISO, and unattended setup changes as high-risk.
- Prefer existing helper functions for WinGet, Chocolatey, registry, services, progress, and UI updates.
- Keep tweaks reversible where the schema supports it by including original values or original states.
- Never modify a user's original ISO in-place; follow existing copy/mount/export patterns.
- Avoid storing credentials, secrets, or machine-specific paths in repo files.
- Preserve logging and user feedback patterns for long-running or destructive operations.
## 7. Surgical Changes
- Do not improve adjacent code, comments, formatting, imports, or docs unless required.
- Do not refactor working code because you are already in the file.
- Do not delete pre-existing dead code unless asked; mention it in the summary if relevant.
- Keep diffs reviewable. Every changed line should trace to the user's request.
- If a change starts spreading across unrelated areas, pause and reassess the plan.
## 8. Verification
Define success in terms that can be checked, then check it.
- For compile/build changes, run `.\Compile.ps1`.
- For GUI behavior changes, run `.\Compile.ps1 -Run` when practical and verify the affected path manually.
- For config changes, run the compile check and relevant Pester tests.
- For function changes, run the relevant Pester tests or add/update focused tests when practical.
- For docs-only changes, proofread the changed files and skip runtime tests unless docs generation is affected.
- Read command output. Do not report tests as passing unless they actually passed.
- If verification fails, fix the cause rather than weakening the test.
If a check cannot be run, say exactly why and what residual risk remains.
## 9. Generated Files And Git Hygiene
- Treat local `winutil.ps1` changes as disposable compile output.
- Never stage or commit `winutil.ps1`, `docs/public/`, `docs/resources/`, `binary/`, editor folders, or other ignored build artifacts.
- Do not remove `.gitignore` rules that keep generated artifacts out of Git.
- Before finishing, check `git status --short` and separate your changes from pre-existing user changes.
- Do not revert user changes unless explicitly asked.
- Commit messages, when requested, should be descriptive: short subject under 72 characters, body explaining why when needed.
## 10. Documentation Expectations
- Update `docs/content/` when user-facing behavior changes.
- Update developer docs when architecture, build flow, config schema, or contribution workflow changes.
- Keep README changes brief and high-level.
- Put detailed user and developer documentation under `docs/`.
- Keep `SPEC.md` aligned with build/runtime contract changes.
## 11. Communication Style
- Be direct and concise. Start with the answer or action.
- No flattery, filler, ceremonial closings, or fake certainty.
- Use bullets only when they improve scanning.
- Report what changed, how it was verified, and anything not done.
- If the user asks for a review, lead with findings and file/line references.
## 12. When To Ask
Ask before proceeding when:
- The request has two plausible interpretations and the choice materially changes behavior or files touched.
- The change affects release generation, generated artifacts, migrations, or high-risk Windows behavior in a way the user did not specify.
- You need credentials, secrets, production resources, or access you do not have.
- The user's stated goal conflicts with the literal request.
Proceed without asking when:
- The task is trivial and reversible.
- Ambiguity can be resolved by reading the code or running a local command.
- The user already answered the question in this session.
## 13. Project Learnings
When the user corrects an agent approach, add or tighten one concrete rule here before ending the session. Keep this section short and prune rules that no longer matter.
- Keep `winutil.ps1` generated-only: change source files, compile to verify, and never stage the generated script.
- Keep WinUtil runtime logging in the existing timestamped `%LocalAppData%\winutil\logs\winutil_*.log` session file; do not create a separate root `winutil.log`.
- Import Pester 5.8.0 before running tests so `Invoke-Pester -Output Detailed -CI` does not resolve to Windows' inbox Pester 3.4.0.
- Keep package install/uninstall process launches simple unless explicitly requested; do not add a separate stdout/stderr process logging helper for winget or Chocolatey.
- When the active log file is owned by `Start-Transcript`, do not call `Add-Content` against that file; write to host output so the transcript captures the line in the same log file without recording a terminating-error diagnostic.
- Log install/uninstall package names and package-manager IDs before queuing background runspace work; do not rely on runspace host output for the package identity.
- For Win11 Creator, start each new ISO modification in a fresh `WinUtil_Win11ISO_*` temp directory; existing-work detection is only for resuming/exporting already modified media.
- For Win11 Creator driver injection, keep offline WIM servicing to one mount, one `/Add-Driver`, and one commit; do not export editions or run unrelated WIM cleanup, and reject damaged metadata before ISO export.
- For Script Analyzer cleanup, fix actionable source warnings first and do not globally suppress accepted convention warnings such as plural names, `ShouldProcess` on UI helpers, `$global:sync`, or compile-time cross-file false positives.
- For DNS DHCP reset, keep the cmdlet reset and explicitly set IPv4 and IPv6 DNS source to DHCP.
+22 -138
View File
@@ -1,162 +1,46 @@
param ( param (
[switch]$Debug, [switch]$Run
[switch]$Run,
[string]$Arguments
) )
if ((Get-Item ".\winutil.ps1" -ErrorAction SilentlyContinue).IsReadOnly) {
Remove-Item ".\winutil.ps1" -Force
}
$OFS = "`r`n" $OFS = "`r`n"
$scriptname = "winutil.ps1"
$workingdir = $PSScriptRoot
Push-Location
Set-Location $workingdir
# Variable to sync between runspaces # Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{}) $sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $workingdir
$sync.configs = @{} $sync.configs = @{}
function Update-Progress { $script = (Get-Content -Path scripts\start.ps1) -replace '#{replaceme}', (Get-Date -Format 'yy.MM.dd')
param (
[Parameter(Mandatory, position=0)]
[string]$StatusMessage,
[Parameter(Mandatory, position=1)] $script += Get-ChildItem -Path functions -Recurse -File | ForEach-Object {
[ValidateRange(0,100)] Get-Content -Path $_.FullName -Raw
[int]$Percent,
[Parameter(position=2)]
[string]$Activity = "Compiling"
)
Write-Progress -Activity $Activity -Status $StatusMessage -PercentComplete $Percent
} }
$header = @" Get-ChildItem config | ForEach-Object {
################################################################################################################ $obj = Get-Content -Path $_.FullName -Raw | ConvertFrom-Json
### ###
### WARNING: This file is automatically generated DO NOT modify this file directly as it will be overwritten ###
### ###
################################################################################################################
"@
if ($_.Name -eq "applications.json") {
Update-Progress "Pre-req: Running Preprocessor..." 0 $fixed = [ordered]@{}
foreach ($p in $obj.PSObject.Properties) {
# Dot source the 'Invoke-Preprocessing' Function from 'tools/Invoke-Preprocessing.ps1' Script $fixed["WPFInstall$($p.Name)"] = $p.Value
$preprocessingFilePath = ".\tools\Invoke-Preprocessing.ps1"
. $preprocessingFilePath
$excludedFiles = @()
# Add directories only if they exist
if (Test-Path '.\.git\') { $excludedFiles += '.\.git\' }
if (Test-Path '.\binary\') { $excludedFiles += '.\binary\' }
# Add files that should always be excluded
$excludedFiles += @(
'.\.gitignore',
'.\.gitattributes',
'.\.github\CODEOWNERS',
'.\LICENSE',
"$preprocessingFilePath",
'*.png',
'*.exe',
'.\.preprocessor_hashes.json'
)
$msg = "Pre-req: Code Formatting"
Invoke-Preprocessing -WorkingDir "$workingdir" -ExcludedFiles $excludedFiles -ProgressStatusMessage $msg
# Create the script in memory.
Update-Progress "Pre-req: Allocating Memory" 0
$script_content = [System.Collections.Generic.List[string]]::new()
Update-Progress "Adding: Header" 5
$script_content.Add($header)
Update-Progress "Adding: Version" 10
$script_content.Add($(Get-Content "scripts\start.ps1").replace('#{replaceme}',"$(Get-Date -Format yy.MM.dd)"))
Update-Progress "Adding: Functions" 20
Get-ChildItem "functions" -Recurse -File | ForEach-Object {
$script_content.Add($(Get-Content $psitem.FullName))
}
Update-Progress "Adding: Config *.json" 40
Get-ChildItem "config" | Where-Object {$psitem.extension -eq ".json"} | ForEach-Object {
$json = (Get-Content $psitem.FullName -Raw)
$jsonAsObject = $json | ConvertFrom-Json
# Add 'WPFInstall' as a prefix to every entry-name in 'applications.json' file
if ($psitem.Name -eq "applications.json") {
foreach ($appEntryName in $jsonAsObject.PSObject.Properties.Name) {
$appEntryContent = $jsonAsObject.$appEntryName
$jsonAsObject.PSObject.Properties.Remove($appEntryName)
$jsonAsObject | Add-Member -MemberType NoteProperty -Name "WPFInstall$appEntryName" -Value $appEntryContent
} }
$obj = [pscustomobject]$fixed
} }
# Line 90 requires no whitespace inside the here-strings, to keep formatting of the JSON in the final script. $json = $obj | ConvertTo-Json -Depth 10
$json = @"
$($jsonAsObject | ConvertTo-Json -Depth 3)
"@
$sync.configs.$($psitem.BaseName) = $json | ConvertFrom-Json $sync.configs[$_.BaseName] = $obj
$script_content.Add($(Write-Output "`$sync.configs.$($psitem.BaseName) = @'`r`n$json`r`n'@ `| ConvertFrom-Json" )) $script += "`$sync.configs.$($_.BaseName) = @'`r`n$json`r`n'@ | ConvertFrom-Json"
} }
# Read the entire XAML file as a single string, preserving line breaks $xaml = Get-Content -Path xaml\inputXML.xaml -Raw
$xaml = Get-Content "$workingdir\xaml\inputXML.xaml" -Raw $script += "`$inputXML = @'`r`n$xaml`r`n'@"
Update-Progress "Adding: Xaml " 90 $autounattendXml = Get-Content -Path tools\autounattend.xml -Raw
$script += "`$WinUtilAutounattendXml = @'`r`n$autounattendXml`r`n'@"
# Add the XAML content to $script_content using a here-string $script += Get-Content -Path scripts\main.ps1 -Raw
$script_content.Add(@"
`$inputXML = @'
$xaml
'@
"@)
$script_content.Add($(Get-Content "scripts\main.ps1")) Set-Content -Path winutil.ps1 -Value $script
if ($Debug) { if ($Run) {
Update-Progress "Writing debug files" 95 .\Winutil.ps1
$appXamlContent | Out-File -FilePath "xaml\inputApp.xaml" -Encoding ascii
$tweaksXamlContent | Out-File -FilePath "xaml\inputTweaks.xaml" -Encoding ascii
$featuresXamlContent | Out-File -FilePath "xaml\inputFeatures.xaml" -Encoding ascii
} else {
Update-Progress "Removing temporary files" 99
Remove-Item "xaml\inputApp.xaml" -ErrorAction SilentlyContinue
Remove-Item "xaml\inputTweaks.xaml" -ErrorAction SilentlyContinue
Remove-Item "xaml\inputFeatures.xaml" -ErrorAction SilentlyContinue
} }
Set-Content -Path "$scriptname" -Value ($script_content -join "`r`n") -Encoding ascii
Write-Progress -Activity "Compiling" -Completed
Update-Progress -Activity "Validating" -StatusMessage "Checking winutil.ps1 Syntax" -Percent 0
try {
Get-Command -Syntax .\winutil.ps1 | Out-Null
} catch {
Write-Warning "Syntax Validation for 'winutil.ps1' has failed"
Write-Host "$($Error[0])" -ForegroundColor Red
Pop-Location # Restore previous location before exiting...
exit 1
}
Write-Progress -Activity "Validating" -Completed
if ($run) {
$script = "& '$workingdir\$scriptname' $Arguments"
$powershellcmd = if (Get-Command pwsh -ErrorAction SilentlyContinue) { "pwsh" } else { "powershell" }
$processCmd = if (Get-Command wt.exe -ErrorAction SilentlyContinue) { "wt.exe" } else { $powershellcmd }
Start-Process $processCmd -ArgumentList "$powershellcmd -NoProfile -Command $script"
break
}
Pop-Location
+59 -59
View File
@@ -1,88 +1,88 @@
# Chris Titus Tech's Windows Utility # Chris Titus Tech's Windows Utility
[![Version](https://img.shields.io/github/v/release/ChrisTitusTech/winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/ChrisTitusTech/winutil/releases/latest) [![Version](https://img.shields.io/github/v/release/ChrisTitusTech/winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/ChrisTitusTech/winutil/releases/latest)
![GitHub Downloads (specific asset, all releases)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/winutil.ps1?label=Total%20Downloads&style=for-the-badge) ![Downloads](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/winutil.ps1?label=Total%20Downloads&style=for-the-badge)
[![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ) [![Discord](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ)
[![Static Badge](https://img.shields.io/badge/Documentation-_?style=for-the-badge&logo=bookstack&color=grey)](https://winutil.christitus.com/)
This utility is a compilation of Windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky about any contributions to keep this project clean and efficient. A curated compilation of Windows system tasks streamline **installs**, debloat with **tweaks**, troubleshoot with **config**, and configure **Windows updates**. Run it fresh on every new Windows install.
![screen-install](https://raw.githubusercontent.com/Chris-Titus-Docs/winutil-docs/refs/heads/main/assets/images/Title-Screen.png) ![Title Screen](/docs/assets/images/Title-Screen.png)
## 💡 Usage ---
Winutil must be run in Admin mode because it performs system-wide tweaks. To achieve this, run PowerShell as an administrator. Here are a few ways to do it: ## Quick Start
1. **Start menu Method:** > **WinUtil must be run as Administrator** Because it performs system-wide changes.
- Right-click on the start menu.
- Choose "Windows PowerShell (Admin)" (for Windows 10) or "Terminal (Admin)" (for Windows 11).
2. **Search and Launch Method:** Open PowerShell or Terminal as admin, then run:
- Press the Windows key.
- Type "PowerShell" or "Terminal" (for Windows 11).
- Press `Ctrl + Shift + Enter` or Right-click and choose "Run as administrator" to launch it with administrator privileges.
### Launch Command
#### Stable Branch (Recommended)
**Stable Branch (recommended)**
```ps1 ```ps1
irm "https://christitus.com/win" | iex irm https://christitus.com/win | iex
```
#### Dev Branch
```ps1
irm "https://christitus.com/windev" | iex
``` ```
If you have Issues, refer to [Known Issues](https://winutil.christitus.com/knownissues/) or [Create Issue](https://github.com/ChrisTitusTech/winutil/issues) **Development Branch**
## 🎓 Documentation
### [WinUtil Official Documentation](https://winutil.christitus.com/)
### [YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
### [ChrisTitus.com Article](https://christitus.com/windows-tool/)
## 🛠️ Build & Develop
> [!NOTE]
> Winutil is a relatively large script, so it's split into multiple files which're combined into a single `.ps1` file using a custom compiler. This makes maintaining the project a lot easier.
Get a copy of the source code, this can be done using GitHub UI (`Code -> Download ZIP`), or by cloning (downloading) the repo using git.
If git is installed, run the following commands under a PowerShell window to clone and move into project's directory:
```ps1 ```ps1
git clone --depth 1 "https://github.com/ChrisTitusTech/winutil.git" irm https://christitus.com/windev | iex
cd winutil
``` ```
To build the project, run the Compile Script under a PowerShell window (admin permissions IS NOT required): ### How to open an admin terminal
```ps1
.\Compile.ps1 - **Start menu:** Right-click Start → *Windows PowerShell (Admin)* or *Terminal (Admin)*
- **Search:** Press the `Windows key`, and type `PowerShell` or `Terminal`, then `Ctrl + Shift + Enter`
---
## Automation / Presets
Apply a predefined configuration without manual selection:
```powershell
& ([ScriptBlock]::Create((irm https://christitus.com/win))) -Preset Standard
``` ```
You'll see a new file named `winutil.ps1`, which's created by `Compile.ps1` script, now you can run it as admin and a new window will popup, enjoy your own compiled version of WinUtil :) | Preset | Description |
|--------|-------------|
| `Standard` | Balanced defaults for most users |
| `Minimal` | Minimal changes to suit every user |
| `Advanced` | Deep tweaks for power users |
> [!TIP] To view exactly what each preset does, see:
> For more info on using WinUtil and how to develop for it, please consider reading [the Contribution Guidelines](https://winutil.christitus.com/contributing/), if you don't know where to start, or have questions, you can ask over on our [Discord Community Server](https://discord.gg/RUbZUZyByQ) and active project members will answer when they can. https://github.com/ChrisTitusTech/winutil/blob/main/config/preset.json
## 💖 Support ---
- To morally and mentally support the project, make sure to leave a ⭐️!
## Build & Develop
See https://github.com/ChrisTitusTech/winutil/blob/main/.github/CONTRIBUTING.md
---
## Resources
- [Official Documentation](https://winutil.christitus.com/)
- [YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
- [ChrisTitus.com Article](https://christitus.com/windows-tool/)
- [Known Issues](https://winutil.christitus.com/knownissues/)
- [Report an Issue](https://github.com/ChrisTitusTech/winutil/issues)
---
## Support
- Leave a ⭐ to show support!
- EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox - EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
## 💖 Sponsors ## Sponsors
These are the sponsors that help keep this project alive with monthly contributions. These are the sponsors that help keep this project alive with monthly contributions.
<!-- sponsors --><a href="https://github.com/markamos"><img src="https:&#x2F;&#x2F;github.com&#x2F;markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https:&#x2F;&#x2F;github.com&#x2F;KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https:&#x2F;&#x2F;github.com&#x2F;quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/TaNorbs"><img src="https:&#x2F;&#x2F;github.com&#x2F;TaNorbs.png" width="60px" alt="User avatar: Norbs" /></a><a href="https://github.com/andrewpayne68"><img src="https:&#x2F;&#x2F;github.com&#x2F;andrewpayne68.png" width="60px" alt="User avatar: Andrew P" /></a><!-- sponsors --> <!-- sponsors --><a href="https://github.com/ysaito8015"><img src="https:&#x2F;&#x2F;github.com&#x2F;ysaito8015.png" width="60px" alt="User avatar: Yusuke Saito" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/andrewpayne68"><img src="https:&#x2F;&#x2F;github.com&#x2F;andrewpayne68.png" width="60px" alt="User avatar: Andrew P" /></a><a href="https://github.com/seanh1995"><img src="https:&#x2F;&#x2F;github.com&#x2F;seanh1995.png" width="60px" alt="User avatar: Sean (ANGRYxScotsman)" /></a><a href="https://github.com/Abs313a"><img src="https:&#x2F;&#x2F;github.com&#x2F;Abs313a.png" width="60px" alt="User avatar: Abs" /></a><!-- sponsors -->
## 🏅 Thanks to all Contributors ---
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
## Contributors
[![Contributors](https://contrib.rocks/image?repo=ChrisTitusTech/winutil)](https://github.com/ChrisTitusTech/winutil/graphs/contributors) [![Contributors](https://contrib.rocks/image?repo=ChrisTitusTech/winutil)](https://github.com/ChrisTitusTech/winutil/graphs/contributors)
## 📊 GitHub Stats Thanks to everyone who has contributed time and effort to this project. Keep rocking 🍻
![Alt](https://repobeats.axiom.co/api/embed/aad37eec9114c507f109d34ff8d38a59adc9503f.svg "Repobeats analytics image")
+105
View File
@@ -0,0 +1,105 @@
# SPEC.md
## Project Contract
WinUtil is a Windows PowerShell utility with a WPF interface. The repository is maintained as modular source files, but the released artifact is a single generated `winutil.ps1` script.
The compiled `winutil.ps1` is not source code for editing or review. It is generated by `Compile.ps1` and produced during release automation. All durable changes must be made to the source files that feed the compiler.
## Goals
- Provide a single-script Windows utility that can be launched from PowerShell.
- Keep development modular enough for contributors to work on functions, config, UI, docs, and tooling independently.
- Make install, tweak, feature, repair, update, and ISO workflows discoverable from the WPF UI.
- Keep common lists and options declarative in JSON config where possible.
- Preserve a repeatable compile process so local builds and GitHub Actions builds produce the distributable script from the same inputs.
## Non-Goals
- `winutil.ps1` is not hand-maintained.
- The project is not structured as a PowerShell module at runtime.
- The GUI is not a separate packaged desktop application in this repository's normal release path.
- Generated files should not be reviewed as source changes.
## Repository Layout
- `Compile.ps1`: build script that creates `winutil.ps1`.
- `scripts/start.ps1`: startup/bootstrap segment used at the beginning of the compiled script.
- `scripts/main.ps1`: main entrypoint appended at the end of the compiled script.
- `functions/public/`: public/UI-facing PowerShell functions.
- `functions/private/`: internal helper PowerShell functions.
- `config/`: JSON configuration consumed at compile time and embedded into `$sync.configs`.
- `xaml/inputXML.xaml`: WPF UI markup embedded into the compiled script.
- `tools/autounattend.xml`: unattended setup XML embedded for Windows ISO workflows.
- `pester/`: Pester tests for config and function checks.
- `lint/PSScriptAnalyser.ps1`: PowerShell Script Analyzer settings.
- `docs/`: Hugo documentation site.
- `winutil.ps1`: ignored generated build artifact.
## Compile Specification
`Compile.ps1` must produce a standalone root `winutil.ps1` by combining all required project files.
The compile flow is:
1. Initialize shared state with `$sync = [Hashtable]::Synchronized(@{})` and `$sync.configs = @{}`.
2. Read `scripts/start.ps1`.
3. Replace `#{replaceme}` in startup code with the current `yy.MM.dd` build date.
4. Append raw content from all files under `functions/` recursively.
5. For every file in `config/`, parse JSON and embed it into `$sync.configs.<basename>`.
6. Special-case `config/applications.json` so application keys are emitted with the `WPFInstall` prefix.
7. Embed `xaml/inputXML.xaml` as `$inputXML`.
8. Embed `tools/autounattend.xml` as `$WinUtilAutounattendXml`.
9. Append `scripts/main.ps1`.
10. Write the combined script to `winutil.ps1`.
11. If `-Run` is supplied, execute the generated script.
The generated script must have everything it needs from repository sources embedded or appended by this process.
## Runtime Model
- WinUtil runs in PowerShell on Windows and uses WPF for the UI.
- Shared mutable state is stored in `$sync`, including configs, UI element references, runspace state, selections, and progress.
- Long-running operations should use runspaces or existing async patterns so the UI remains responsive.
- UI updates from background work must be dispatched back to the WPF UI thread.
- Declarative features such as apps, tweaks, presets, DNS providers, and navigation should stay in `config/*.json` unless code is required.
## UI And Event Contract
- UI layout lives in `xaml/inputXML.xaml`.
- Named WPF controls are discovered and stored in `$sync`.
- Button/action wiring follows existing naming conventions, where an element named like `WPFThingButton` maps to a function named like `Invoke-WPFThingButton`.
- When adding controls, ensure the XAML name, config key, and PowerShell function names line up with the existing event system.
## Configuration Contract
Config files must remain valid JSON and compile cleanly through `ConvertFrom-Json`.
`config/applications.json` defines installable applications. Each application entry should include the fields expected by tests and UI code, such as package manager IDs, category, display content, description, and link.
`config/tweaks.json` defines Windows tweaks. Registry and service changes should include original values or original states when applicable so undo workflows can restore user systems.
Preset and navigation files should reference valid config keys. Avoid renaming config keys unless all presets, UI references, docs, and code paths are updated together.
## Safety Requirements
- Registry, service, package manager, Windows Update, AppX removal, and ISO operations can affect the host system. Changes must be explicit, reversible where practical, and consistent with existing logging and confirmation patterns.
- Tweak changes should include undo metadata when the schema supports it.
- Package installation should prefer existing WinGet and Chocolatey helper functions.
- ISO workflows must not modify the user's original ISO file; they should work on copied/mounted content following existing patterns.
## Testing And CI
Expected validation for source changes:
- `.\Compile.ps1` verifies the compiler can generate `winutil.ps1`.
- `.\Compile.ps1 -Run` compiles and launches the generated utility for manual GUI verification.
- `Install-Module -Name Pester -RequiredVersion 5.8.0 -Scope CurrentUser -Force -SkipPublisherCheck` installs the supported Pester version.
- `Import-Module Pester -RequiredVersion 5.8.0 -Force; Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed -CI` runs the Pester suite.
- GitHub Actions also runs a compile check and PowerShell Script Analyzer with `lint/PSScriptAnalyser.ps1`.
The generated `winutil.ps1` may appear locally after compile. It remains ignored build output and must not be committed.
## Release Artifact
GitHub Actions is responsible for producing the release `winutil.ps1` from repository sources. A release should be considered valid only if the generated script came from the compile process, not from direct manual edits to `winutil.ps1`.
+686 -1788
View File
File diff suppressed because it is too large Load Diff
+27 -6
View File
@@ -21,13 +21,13 @@
"Description": "Upgrade all applications to the latest version" "Description": "Upgrade all applications to the latest version"
}, },
"WingetRadioButton": { "WingetRadioButton": {
"Content": "Winget", "Content": "WinGet",
"Category": "__Package Manager", "Category": "__Package Manager",
"Type": "RadioButton", "Type": "RadioButton",
"GroupName": "PackageManagerGroup", "GroupName": "PackageManagerGroup",
"Checked": true, "Checked": true,
"Order": "1", "Order": "1",
"Description": "Use Winget for package management" "Description": "Use WinGet for package management"
}, },
"ChocoRadioButton": { "ChocoRadioButton": {
"Content": "Chocolatey", "Content": "Chocolatey",
@@ -38,25 +38,46 @@
"Order": "2", "Order": "2",
"Description": "Use Chocolatey for package management" "Description": "Use Chocolatey for package management"
}, },
"WPFCollapseAllCategories": {
"Content": "Collapse All Categories",
"Category": "__Selection",
"Type": "Button",
"Order": "1",
"Description": "Collapse all application categories"
},
"WPFExpandAllCategories": {
"Content": "Expand All Categories",
"Category": "__Selection",
"Type": "Button",
"Order": "2",
"Description": "Expand all application categories"
},
"WPFClearInstallSelection": { "WPFClearInstallSelection": {
"Content": "Clear Selection", "Content": "Clear Selection",
"Category": "__Selection", "Category": "__Selection",
"Type": "Button", "Type": "Button",
"Order": "1", "Order": "3",
"Description": "Clear the selection of applications" "Description": "Clear the selection of applications"
}, },
"WPFGetInstalled": { "WPFGetInstalled": {
"Content": "Get Installed", "Content": "Show Installed Apps",
"Category": "__Selection", "Category": "__Selection",
"Type": "Button", "Type": "Button",
"Order": "2", "Order": "4",
"Description": "Show installed applications" "Description": "Show installed applications"
}, },
"WPFselectedAppsButton": { "WPFselectedAppsButton": {
"Content": "Selected Apps: 0", "Content": "Selected Apps: 0",
"Category": "__Selection", "Category": "__Selection",
"Type": "Button", "Type": "Button",
"Order": "3", "Order": "5",
"Description": "Show the selected applications" "Description": "Show the selected applications"
},
"WPFInstallFOSSInfo": {
"Content": "Free and Open Source Software",
"Category": "__Selection",
"Type": "Note",
"Order": "0",
"Description": "Information about the #FOSS label on application entries"
} }
} }
+263
View File
@@ -0,0 +1,263 @@
{
"WPFAppxMicrosoft_WindowsFeedbackHub": {
"Category": "Microsoft Apps",
"Content": "Feedback Hub",
"Description": "Allows users to submit bug reports, feature suggestions, and diagnostic data directly to Microsoft.",
"Panel": "0",
"PackageId": "Microsoft.WindowsFeedbackHub",
"StoreId": "9NBLGGH4R32N"
},
"WPFAppxMicrosoft_GetHelp": {
"Category": "Microsoft Apps",
"Content": "Get Help",
"Description": "Provides access to automated troubleshooting guides, support documentation, and direct Microsoft customer assistance.",
"Panel": "0",
"PackageId": "Microsoft.GetHelp",
"StoreId": "9PKDZBMV1H3T"
},
"WPFAppxMicrosoft_OutlookForWindows": {
"Category": "Microsoft Apps",
"Content": "Outlook for Windows",
"Description": "Provides modern email management, calendar scheduling, and contact organization features.",
"Panel": "0",
"PackageId": "Microsoft.OutlookForWindows",
"StoreId": "9NRX63209R7B"
},
"WPFAppxMSTeams": {
"Category": "Microsoft Apps",
"Content": "Microsoft Teams",
"Description": "Facilitates instant messaging, video conferencing, file sharing, and workspace collaboration.",
"Panel": "0",
"PackageId": "MSTeams",
"StoreId": "XP8BT8DW290MPQ"
},
"WPFAppxClipchamp_Clipchamp": {
"Category": "Utilities & Productivity",
"Content": "Clipchamp",
"Description": "Provides a user-friendly video editor with built-in templates, effects, and timeline editing tools.",
"Panel": "0",
"PackageId": "Clipchamp.Clipchamp",
"StoreId": "9P1J8S7CCWWT"
},
"WPFAppxMicrosoft_MicrosoftOfficeHub": {
"Category": "Microsoft Apps",
"Content": "Microsoft 365",
"Description": "Serves as a centralized launcher and dashboard for accessing cloud-based Microsoft 365 apps and recent documents.",
"Panel": "0",
"PackageId": "Microsoft.MicrosoftOfficeHub",
"StoreId": "9WZDNCRD29V9"
},
"WPFAppxMicrosoft_ZuneMusic": {
"Category": "Utilities & Productivity",
"Content": "Media Player",
"Description": "Plays local audio and video files with modern playlist management and casting capabilities.",
"Panel": "0",
"PackageId": "Microsoft.ZuneMusic",
"StoreId": "9WZDNCRFJ3PT"
},
"WPFAppxMicrosoft_BingSearch": {
"Category": "Bing & Web Services",
"Content": "Bing Search",
"Description": "Integrates Microsoft Bing search capabilities and web services directly into the operating system.",
"Panel": "1",
"PackageId": "Microsoft.BingSearch",
"StoreId": "9NZBF4GT040C"
},
"WPFAppxMicrosoftCorporationII_QuickAssist": {
"Category": "Utilities & Productivity",
"Content": "Quick Assist",
"Description": "Enables secure remote technical support and screen sharing over an internet connection.",
"Panel": "0",
"PackageId": "MicrosoftCorporationII.QuickAssist",
"StoreId": "9P7BP5VNWKX5"
},
"WPFAppxMicrosoft_WindowsDevHome": {
"Category": "Developer Tools",
"Content": "Dev Home",
"Description": "Provides a specialized dashboard for software developer environment setups, repository syncing, and hardware widgets.",
"Panel": "1",
"PackageId": "Microsoft.Windows.DevHome",
"StoreId": "9N8MHTPHNGVV"
},
"WPFAppxMicrosoft_WindowsCrossDevice": {
"Category": "Microsoft Ecosystem",
"Content": "Mobile Devices",
"Description": "Manages system-level background connectivity with paired mobile devices. Removing this may disable cross-device features such as phone screen mirroring, file transfer, and mobile hotspot handoff integrated into Windows Settings.",
"Panel": "0",
"PackageId": "MicrosoftWindows.CrossDevice",
"StoreId": "9NTXGKQ8P7N0"
},
"WPFAppxMicrosoft_Todos": {
"Category": "Utilities & Productivity",
"Content": "To Do",
"Description": "Creates, tracks, and synchronizes personal tasks, smart lists, and daily reminders.",
"Panel": "0",
"PackageId": "Microsoft.Todos",
"StoreId": "9NBLGGH5R558"
},
"WPFAppxMicrosoft_PowerAutomateDesktop": {
"Category": "Developer Tools",
"Content": "Power Automate",
"Description": "Automates repetitive workflows and desktop tasks using low-code visual scripting.",
"Panel": "1",
"PackageId": "Microsoft.PowerAutomateDesktop",
"StoreId": "9NFTCH6J7FHV"
},
"WPFAppxMicrosoft_YourPhone": {
"Category": "Microsoft Ecosystem",
"Content": "Phone Link",
"Description": "Synchronizes text messages, phone notifications, photos, and calls from a mobile device to the desktop.",
"Panel": "0",
"PackageId": "Microsoft.YourPhone",
"StoreId": "9NMPJ99VJBWV"
},
"WPFAppxMicrosoft_MicrosoftStickyNotes": {
"Category": "Utilities & Productivity",
"Content": "Sticky Notes",
"Description": "Creates quick, floating text notes on the desktop that automatically sync across devices.",
"Panel": "0",
"PackageId": "Microsoft.MicrosoftStickyNotes",
"StoreId": "9NBLGGH4QGHW"
},
"WPFAppxMicrosoft_WindowsSoundRecorder": {
"Category": "Utilities & Productivity",
"Content": "Sound Recorder",
"Description": "Records and trims live audio inputs with simple microphone adjustment controls.",
"Panel": "0",
"PackageId": "Microsoft.WindowsSoundRecorder",
"StoreId": "9WZDNCRFHWKN"
},
"WPFAppxMicrosoft_WindowsAlarms": {
"Category": "Utilities & Productivity",
"Content": "Clock",
"Description": "Features world clocks, alarms, countdown timers, stopwatches, and dedicated focus session tracking.",
"Panel": "0",
"PackageId": "Microsoft.WindowsAlarms",
"StoreId": "9WZDNCRFJ3PR"
},
"WPFAppxMicrosoft_Paint": {
"Category": "Utilities & Productivity",
"Content": "Paint",
"Description": "Provides built-in digital sketching, basic image editing, and pixel-level graphic manipulation tools.",
"Panel": "0",
"PackageId": "Microsoft.Paint",
"StoreId": "9PCFS5B6T72H"
},
"WPFAppxMicrosoft_WindowsNotepad": {
"Category": "Utilities & Productivity",
"Content": "Notepad",
"Description": "Provides a lightweight text editor with multi-tab support for plain text files and code snippets.",
"Panel": "0",
"PackageId": "Microsoft.WindowsNotepad",
"StoreId": "9MSMLRH6LZF3"
},
"WPFAppxMicrosoft_ScreenSketch": {
"Category": "Utilities & Productivity",
"Content": "Snipping Tool",
"Description": "Captures screenshots or screen recordings with built-in markup, image cropping, and optical character recognition (OCR).",
"Panel": "0",
"PackageId": "Microsoft.ScreenSketch",
"StoreId": "9MZ95KL8MR0L"
},
"WPFAppxMicrosoft_Copilot": {
"Category": "Bing & Web Services",
"Content": "Copilot",
"Description": "Launches the Microsoft AI companion for contextual answers, creative writing assistance, and intelligent web search.",
"Panel": "1",
"PackageId": "Microsoft.Copilot",
"StoreId": "9NHT9RB2F4HD"
},
"WPFAppxMicrosoft_WindowsCalculator": {
"Category": "Utilities & Productivity",
"Content": "Calculator",
"Description": "Performs standard arithmetic, scientific operations, programming calculations, and unit conversions.",
"Panel": "0",
"PackageId": "Microsoft.WindowsCalculator",
"StoreId": "9WZDNCRFHVN5"
},
"WPFAppxMicrosoft_WindowsCamera": {
"Category": "Utilities & Productivity",
"Content": "Camera",
"Description": "Captures photographs and records video files via connected webcams or imaging hardware.",
"Panel": "0",
"PackageId": "Microsoft.WindowsCamera",
"StoreId": "9WZDNCRFJBBG"
},
"WPFAppxMicrosoft_WindowsPhotos": {
"Category": "Utilities & Productivity",
"Content": "Photos",
"Description": "Organizes, views, and crops local images with basic color adjustment and album creation tools.",
"Panel": "0",
"PackageId": "Microsoft.Windows.Photos",
"StoreId": "9WZDNCRFJBH4"
},
"WPFAppxMicrosoft_BingNews": {
"Category": "Bing & Web Services",
"Content": "News",
"Description": "Aggregates breaking news headlines, personalized article feeds, and world current events.",
"Panel": "1",
"PackageId": "Microsoft.BingNews",
"StoreId": "9WZDNCRFHVFW"
},
"WPFAppxMicrosoft_BingWeather": {
"Category": "Bing & Web Services",
"Content": "Weather",
"Description": "Displays local real-time weather tracking, radar maps, and historical meteorological forecasts.",
"Panel": "1",
"PackageId": "Microsoft.BingWeather",
"StoreId": "9WZDNCRFJ3Q2"
},
"WPFAppxMicrosoft_GamingApp": {
"Category": "Xbox & Gaming",
"Content": "Xbox App",
"Description": "Serves as the primary gaming library manager, social community interface, and PC Game Pass dashboard.",
"Panel": "1",
"PackageId": "Microsoft.GamingApp",
"StoreId": "9MV0B5HZVK9Z"
},
"WPFAppxMicrosoft_XboxGamingOverlay": {
"Category": "Xbox & Gaming",
"Content": "Xbox Game Bar",
"Description": "Provides customizable in-game status widgets, audio balancing sliders, system monitoring tools, and gameplay recording.",
"Panel": "1",
"PackageId": "Microsoft.XboxGamingOverlay",
"StoreId": "9NZKPSTSNW4P"
},
"WPFAppxMicrosoft_XboxIdentityProvider": {
"Category": "Xbox & Gaming",
"Content": "Xbox Identity Provider",
"Description": "Manages Xbox network user authentication and background account validation for connected titles. Warning: removing this may break Microsoft account sign-in for non-Xbox games and apps that rely on this authentication pipeline.",
"Panel": "1",
"PackageId": "Microsoft.XboxIdentityProvider",
"StoreId": "9WZDNCRD1HKW"
},
"WPFAppxMicrosoft_XboxSpeechToTextOverlay": {
"Category": "Xbox & Gaming",
"Content": "Xbox Speech To Text Overlay",
"Description": "Provides system-level live accessibility captions and voice-to-text translation for gaming chat networks.",
"Panel": "1",
"PackageId": "Microsoft.XboxSpeechToTextOverlay"
},
"WPFAppxMicrosoft_Xbox_TCUI": {
"Category": "Xbox & Gaming",
"Content": "Xbox TCUI",
"Description": "Provides core account connection UI modules for single sign-on flows within game titles. Warning: removing this may break Microsoft account authentication in games and apps that do not otherwise require the Xbox app.",
"Panel": "1",
"PackageId": "Microsoft.Xbox.TCUI"
},
"WPFAppxMicrosoft_StartExperiencesApp": {
"Category": "Bing & Web Services",
"Content": "Start Experiences App",
"Description": "Powers the Windows Widgets board, delivering a personalized feed of news, weather, sports, and finance content.",
"Panel": "1",
"PackageId": "Microsoft.StartExperiencesApp",
"StoreId": "9PC1H9VN18CM"
},
"WPFAppxMicrosoft_MicrosoftSolitaireCollection": {
"Category": "Xbox & Gaming",
"Content": "Solitaire Collection",
"Description": "Bundles built-in card game modes including Klondike, Spider, FreeCell, Pyramid, and TriPeaks alongside daily challenges.",
"Panel": "1",
"PackageId": "Microsoft.MicrosoftSolitaireCollection"
}
}
-442
View File
@@ -1,442 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<!--https://schneegans.de/windows/unattend-generator/?LanguageMode=Unattended&UILanguage=en-US&Locale=en-US&Keyboard=00000409&GeoLocation=244&ProcessorArchitecture=amd64&BypassRequirementsCheck=true&BypassNetworkCheck=true&ComputerNameMode=Random&TimeZoneMode=Implicit&PartitionMode=Interactive&WindowsEditionMode=Unattended&WindowsEdition=pro&UserAccountMode=Unattended&AccountName0=User&AccountPassword0=&AccountGroup0=Administrators&AccountName1=&AccountName2=&AccountName3=&AccountName4=&AutoLogonMode=Own&PasswordExpirationMode=Unlimited&LockoutMode=Default&HideFiles=Hidden&DisableWidgets=true&ClassicContextMenu=true&DisableFastStartup=true&EnableLongPaths=true&DisableAppSuggestions=true&PreventDeviceEncryption=true&WifiMode=Skip&ExpressSettings=DisableAll&Remove3DViewer=true&RemoveBingSearch=true&RemoveCamera=true&RemoveClipchamp=true&RemoveClock=true&RemoveCopilot=true&RemoveCortana=true&RemoveDevHome=true&RemoveFamily=true&RemoveFeedbackHub=true&RemoveGetHelp=true&RemoveInternetExplorer=true&RemoveMailCalendar=true&RemoveMaps=true&RemoveMathInputPanel=true&RemoveZuneVideo=true&RemoveNews=true&RemoveNotepad=true&RemoveOffice365=true&RemoveOneDrive=true&RemoveOneNote=true&RemoveOpenSSHClient=true&RemoveOutlook=true&RemovePaint3D=true&RemovePeople=true&RemovePowerAutomate=true&RemoveQuickAssist=true&RemoveSkype=true&RemoveSolitaire=true&RemoveStepsRecorder=true&RemoveStickyNotes=true&RemoveTeams=true&RemoveGetStarted=true&RemoveToDo=true&RemoveVoiceRecorder=true&RemoveWeather=true&RemoveWindowsMediaPlayer=true&RemoveZuneMusic=true&RemoveWordPad=true&WdacMode=Skip-->
<settings pass="offlineServicing"></settings>
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<UserData>
<ProductKey>
<Key>VK7JG-NPHTM-C97JM-9MPGT-3V66T</Key>
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="generalize"></settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Runonce" /v "UninstallCopilot" /t REG_SZ /d "powershell.exe -NoProfile -Command \"Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;\"" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>4</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>5</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>6</Order>
<Path>reg.exe delete "HKLM\SOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>7</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>8</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Notepad" /v ShowStoreBanner /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>9</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>10</Order>
<Path>cmd.exe /c "del "C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>11</Order>
<Path>cmd.exe /c "del "C:\Windows\System32\OneDriveSetup.exe""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>12</Order>
<Path>cmd.exe /c "del "C:\Windows\SysWOW64\OneDriveSetup.exe""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>13</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>14</Order>
<Path>reg.exe delete "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run" /v OneDriveSetup /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>15</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>16</Order>
<Path>reg.exe delete "HKLM\SOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>17</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>18</Order>
<Path>powershell.exe -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>19</Order>
<Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Temp\Microwin-RemovePackages.ps1' -Raw | Invoke-Expression;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>20</Order>
<Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Temp\remove-caps.ps1' -Raw | Invoke-Expression;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>21</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins /t REG_SZ /d "{ \"pinnedList\": [] }" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>22</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins_ProviderSet /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>23</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins_WinningProvider /t REG_SZ /d B5292708-1619-419B-9923-E5D9F3925E71 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>24</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\providers\B5292708-1619-419B-9923-E5D9F3925E71\default\Device\Start" /v ConfigureStartPins /t REG_SZ /d "{ \"pinnedList\": [] }" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>25</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\providers\B5292708-1619-419B-9923-E5D9F3925E71\default\Device\Start" /v ConfigureStartPins_LastWrite /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>26</Order>
<Path>net.exe accounts /maxpwage:UNLIMITED</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>27</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>28</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>29</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>30</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>31</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>32</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>33</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>34</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>35</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>36</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>37</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>38</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>39</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>40</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>41</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>42</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>43</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>44</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>45</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>46</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>47</Order>
<Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>48</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>49</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>50</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Runonce" /v "ClassicContextMenu" /t REG_SZ /d "reg.exe add \"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32\" /ve /f" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>51</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="auditSystem"></settings>
<settings pass="auditUser"></settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Name>User</Name>
<Group>Administrators</Group>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<AutoLogon>
<Username>User</Username>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
</AutoLogon>
<OOBE>
<ProtectYourPC>3</ProtectYourPC>
<HideEULAPage>true</HideEULAPage>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
</OOBE>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0 /f</CommandLine>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
<Extensions xmlns="https://schneegans.de/windows/unattend-generator/">
<ExtractScript>
param(
[xml]$Document
);
$scriptsDir = 'C:\Windows\Setup\Scripts\';
foreach( $file in $Document.unattend.Extensions.File ) {
$path = [System.Environment]::ExpandEnvironmentVariables(
$file.GetAttribute( 'path' )
);
if( $path.StartsWith( $scriptsDir ) ) {
mkdir -Path $scriptsDir -ErrorAction 'SilentlyContinue';
}
$encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
{ $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
{ $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
default { [System.Text.Encoding]::Default; }
};
[System.IO.File]::WriteAllBytes( $path, ( $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() ) ) );
}
</ExtractScript>
<File path="C:\Windows\Temp\Microwin-RemovePackages.ps1">
$selectors = @(
'Microsoft.Microsoft3DViewer';
'Microsoft.BingSearch';
'Microsoft.WindowsCamera';
'Clipchamp.Clipchamp';
'Microsoft.WindowsAlarms';
'Microsoft.549981C3F5F10';
'Microsoft.Windows.DevHome';
'MicrosoftCorporationII.MicrosoftFamily';
'Microsoft.WindowsFeedbackHub';
'Microsoft.GetHelp';
'Microsoft.Getstarted';
'microsoft.windowscommunicationsapps';
'Microsoft.WindowsMaps';
'Microsoft.BingNews';
'Microsoft.WindowsNotepad';
'Microsoft.MicrosoftOfficeHub';
'Microsoft.Office.OneNote';
'Microsoft.OutlookForWindows';
'Microsoft.MSPaint';
'Microsoft.People';
'Microsoft.PowerAutomateDesktop';
'MicrosoftCorporationII.QuickAssist';
'Microsoft.SkypeApp';
'Microsoft.MicrosoftSolitaireCollection';
'Microsoft.MicrosoftStickyNotes';
'MSTeams';
'Microsoft.Todos';
'Microsoft.WindowsSoundRecorder';
'Microsoft.BingWeather';
'Microsoft.ZuneMusic';
'Microsoft.ZuneVideo';
);
$getCommand = { Get-AppxProvisionedPackage -Online; };
$filterCommand = { $_.DisplayName -eq $selector; };
$removeCommand = {
[CmdletBinding()]
param(
[Parameter( Mandatory, ValueFromPipeline )]
$InputObject
);
process {
$InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
}
};
$type = 'Package';
$logfile = 'C:\Windows\Temp\Microwin-RemovePackages.log';
&amp; {
$installed = &amp; $getCommand;
foreach( $selector in $selectors ) {
$result = [ordered] @{
Selector = $selector;
};
$found = $installed | Where-Object -FilterScript $filterCommand;
if( $found ) {
$result.Output = $found | &amp; $removeCommand;
if( $? ) {
$result.Message = "$type removed.";
} else {
$result.Message = "$type not removed.";
$result.Error = $Error[0];
}
} else {
$result.Message = "$type not installed.";
}
$result | ConvertTo-Json -Depth 3 -Compress;
}
} *&gt;&amp;1 &gt;&gt; $logfile;
</File>
<File path="C:\Windows\Temp\remove-caps.ps1">
$selectors = @(
'Browser.InternetExplorer';
'MathRecognizer';
'OpenSSH.Client';
'App.Support.QuickAssist';
'App.StepsRecorder';
'Media.WindowsMediaPlayer';
'Microsoft.Windows.WordPad';
);
$getCommand = { Get-WindowsCapability -Online; };
$filterCommand = { ($_.Name -split '~')[0] -eq $selector; };
$removeCommand = {
[CmdletBinding()]
param(
[Parameter( Mandatory, ValueFromPipeline )]
$InputObject
);
process {
$InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
}
};
$type = 'Capability';
$logfile = 'C:\Windows\Temp\remove-caps.log';
&amp; {
$installed = &amp; $getCommand;
foreach( $selector in $selectors ) {
$result = [ordered] @{
Selector = $selector;
};
$found = $installed | Where-Object -FilterScript $filterCommand;
if( $found ) {
$result.Output = $found | &amp; $removeCommand;
if( $? ) {
$result.Message = "$type removed.";
} else {
$result.Message = "$type not removed.";
$result.Error = $Error[0];
}
} else {
$result.Message = "$type not installed.";
}
$result | ConvertTo-Json -Depth 3 -Compress;
}
} *&gt;&amp;1 &gt;&gt; $logfile;
</File>
<File path="C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml"><![CDATA[
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
<LayoutOptions StartTileGroupCellWidth="6" />
<DefaultLayoutOverride>
<StartLayoutCollection>
<StartLayout GroupCellWidth="6" xmlns="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" />
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
]]></File>
</Extensions>
</unattend>
+16 -8
View File
@@ -3,48 +3,56 @@
"Primary": "8.8.8.8", "Primary": "8.8.8.8",
"Secondary": "8.8.4.4", "Secondary": "8.8.4.4",
"Primary6": "2001:4860:4860::8888", "Primary6": "2001:4860:4860::8888",
"Secondary6": "2001:4860:4860::8844" "Secondary6": "2001:4860:4860::8844",
"DohTemplate": "https://dns.google/dns-query"
}, },
"Cloudflare":{ "Cloudflare":{
"Primary": "1.1.1.1", "Primary": "1.1.1.1",
"Secondary": "1.0.0.1", "Secondary": "1.0.0.1",
"Primary6": "2606:4700:4700::1111", "Primary6": "2606:4700:4700::1111",
"Secondary6": "2606:4700:4700::1001" "Secondary6": "2606:4700:4700::1001",
"DohTemplate": "https://cloudflare-dns.com/dns-query"
}, },
"Cloudflare_Malware":{ "Cloudflare_Malware":{
"Primary": "1.1.1.2", "Primary": "1.1.1.2",
"Secondary": "1.0.0.2", "Secondary": "1.0.0.2",
"Primary6": "2606:4700:4700::1112", "Primary6": "2606:4700:4700::1112",
"Secondary6": "2606:4700:4700::1002" "Secondary6": "2606:4700:4700::1002",
"DohTemplate": "https://security.cloudflare-dns.com/dns-query"
}, },
"Cloudflare_Malware_Adult":{ "Cloudflare_Malware_Adult":{
"Primary": "1.1.1.3", "Primary": "1.1.1.3",
"Secondary": "1.0.0.3", "Secondary": "1.0.0.3",
"Primary6": "2606:4700:4700::1113", "Primary6": "2606:4700:4700::1113",
"Secondary6": "2606:4700:4700::1003" "Secondary6": "2606:4700:4700::1003",
"DohTemplate": "https://family.cloudflare-dns.com/dns-query"
}, },
"Open_DNS":{ "Open_DNS":{
"Primary": "208.67.222.222", "Primary": "208.67.222.222",
"Secondary": "208.67.220.220", "Secondary": "208.67.220.220",
"Primary6": "2620:119:35::35", "Primary6": "2620:119:35::35",
"Secondary6": "2620:119:53::53" "Secondary6": "2620:119:53::53",
"DohTemplate": "https://doh.opendns.com/dns-query"
}, },
"Quad9":{ "Quad9":{
"Primary": "9.9.9.9", "Primary": "9.9.9.9",
"Secondary": "149.112.112.112", "Secondary": "149.112.112.112",
"Primary6": "2620:fe::fe", "Primary6": "2620:fe::fe",
"Secondary6": "2620:fe::9" "Secondary6": "2620:fe::9",
"DohTemplate": "https://dns.quad9.net/dns-query"
}, },
"AdGuard_Ads_Trackers":{ "AdGuard_Ads_Trackers":{
"Primary": "94.140.14.14", "Primary": "94.140.14.14",
"Secondary": "94.140.15.15", "Secondary": "94.140.15.15",
"Primary6": "2a10:50c0::ad1:ff", "Primary6": "2a10:50c0::ad1:ff",
"Secondary6": "2a10:50c0::ad2:ff" "Secondary6": "2a10:50c0::ad2:ff",
"DohTemplate": "https://dns.adguard-dns.com/dns-query"
}, },
"AdGuard_Ads_Trackers_Malware_Adult":{ "AdGuard_Ads_Trackers_Malware_Adult":{
"Primary": "94.140.14.15", "Primary": "94.140.14.15",
"Secondary": "94.140.15.16", "Secondary": "94.140.15.16",
"Primary6": "2a10:50c0::bad1:ff", "Primary6": "2a10:50c0::bad1:ff",
"Secondary6": "2a10:50c0::bad2:ff" "Secondary6": "2a10:50c0::bad2:ff",
"DohTemplate": "https://family.adguard-dns.com/dns-query"
} }
} }
+133 -67
View File
@@ -1,10 +1,9 @@
{ {
"WPFFeaturesdotnet": { "WPFFeaturesdotnet": {
"Content": "All .Net Framework (2,3,4)", "Content": ".NET Framework (Versions 2, 3, 4) - Enable",
"Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.", "Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a010_",
"feature": [ "feature": [
"NetFx4-AdvSrvs", "NetFx4-AdvSrvs",
"NetFx3" "NetFx3"
@@ -12,26 +11,31 @@
"InvokeScript": [], "InvokeScript": [],
"link": "https://winutil.christitus.com/dev/features/features/dotnet" "link": "https://winutil.christitus.com/dev/features/features/dotnet"
}, },
"WPFFixesNTPPool": {
"Content": "NTP Server - Enable",
"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": { "WPFFeatureshyperv": {
"Content": "HyperV Virtualization", "Content": "Hyper-V - Enable",
"Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.", "Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a011_",
"feature": [ "feature": [
"Microsoft-Hyper-V-All" "Microsoft-Hyper-V-All"
], ],
"InvokeScript": [
"bcdedit /set hypervisorschedulertype classic"
],
"link": "https://winutil.christitus.com/dev/features/features/hyperv" "link": "https://winutil.christitus.com/dev/features/features/hyperv"
}, },
"WPFFeatureslegacymedia": { "WPFFeatureslegacymedia": {
"Content": "Legacy Media (WMP, DirectPlay)", "Content": "Legacy Media Components (WMP, DirectPlay) - Enable",
"Description": "Enables legacy programs from previous versions of windows", "Description": "Enables legacy programs from previous versions of Windows.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a012_",
"feature": [ "feature": [
"WindowsMediaPlayer", "WindowsMediaPlayer",
"MediaPlayback", "MediaPlayback",
@@ -42,11 +46,10 @@
"link": "https://winutil.christitus.com/dev/features/features/legacymedia" "link": "https://winutil.christitus.com/dev/features/features/legacymedia"
}, },
"WPFFeaturewsl": { "WPFFeaturewsl": {
"Content": "Windows Subsystem for Linux", "Content": "Windows Subsystem for Linux (WSL) - Enable",
"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.", "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.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a020_",
"feature": [ "feature": [
"VirtualMachinePlatform", "VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux" "Microsoft-Windows-Subsystem-Linux"
@@ -55,11 +58,10 @@
"link": "https://winutil.christitus.com/dev/features/features/wsl" "link": "https://winutil.christitus.com/dev/features/features/wsl"
}, },
"WPFFeaturenfs": { "WPFFeaturenfs": {
"Content": "NFS - Network File System", "Content": "Network File System (NFS) - Enable",
"Description": "Network File System (NFS) is a mechanism for storing files on a network.", "Description": "Network File System (NFS) is a mechanism for storing files on a network.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a014_",
"feature": [ "feature": [
"ServicesForNFS-ClientOnly", "ServicesForNFS-ClientOnly",
"ClientForNFS-Infrastructure", "ClientForNFS-Infrastructure",
@@ -75,11 +77,10 @@
"link": "https://winutil.christitus.com/dev/features/features/nfs" "link": "https://winutil.christitus.com/dev/features/features/nfs"
}, },
"WPFFeatureRegBackup": { "WPFFeatureRegBackup": {
"Content": "Enable Daily Registry Backup Task 12.30am", "Content": "Registry Backup (Daily Task 12:30am) - Enable",
"Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.", "Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a017_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
" "
@@ -93,11 +94,10 @@
"link": "https://winutil.christitus.com/dev/features/features/regbackup" "link": "https://winutil.christitus.com/dev/features/features/regbackup"
}, },
"WPFFeatureEnableLegacyRecovery": { "WPFFeatureEnableLegacyRecovery": {
"Content": "Enable Legacy F8 Boot Recovery", "Content": "Legacy F8 Boot Recovery - Enable",
"Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", "Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a018_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
"bcdedit /set bootmenupolicy legacy" "bcdedit /set bootmenupolicy legacy"
@@ -105,23 +105,21 @@
"link": "https://winutil.christitus.com/dev/features/features/enablelegacyrecovery" "link": "https://winutil.christitus.com/dev/features/features/enablelegacyrecovery"
}, },
"WPFFeatureDisableLegacyRecovery": { "WPFFeatureDisableLegacyRecovery": {
"Content": "Disable Legacy F8 Boot Recovery", "Content": "Legacy F8 Boot Recovery - Disable",
"Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", "Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a019_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
"bcdedit /set bootmenupolicy standard" "bcdedit /set bootmenupolicy standard"
], ],
"link": "https://winutil.christitus.com/dev/features/features/disablelegacyrecovery" "link": "https://winutil.christitus.com/dev/features/features/disablelegacyrecovery"
}, },
"WPFFeaturesSandbox": { "WPFFeaturesSandbox": {
"Content": "Windows Sandbox", "Content": "Windows Sandbox - Enable",
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.", "Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a021_",
"feature": [ "feature": [
"Containers-DisposableClientVM" "Containers-DisposableClientVM"
], ],
@@ -131,87 +129,98 @@
"Content": "Install Features", "Content": "Install Features",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a060_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFFeatureInstall",
"link": "https://winutil.christitus.com/dev/features/features/install" "link": "https://winutil.christitus.com/dev/features/features/install"
}, },
"WPFPanelAutologin": { "WPFPanelAutologin": {
"Content": "Set Up Autologin", "Content": "AutoLogon - Run",
"category": "Fixes", "category": "Fixes",
"Order": "a040_",
"panel": "1", "panel": "1",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFPanelAutologin",
"link": "https://winutil.christitus.com/dev/features/fixes/autologin" "link": "https://winutil.christitus.com/dev/features/fixes/autologin"
}, },
"WPFFixesUpdate": { "WPFFixesUpdate": {
"Content": "Reset Windows Update", "Content": "Windows Update - Reset",
"category": "Fixes", "category": "Fixes",
"panel": "1", "panel": "1",
"Order": "a041_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFFixesUpdate",
"link": "https://winutil.christitus.com/dev/features/fixes/update" "link": "https://winutil.christitus.com/dev/features/fixes/update"
}, },
"WPFFixesNetwork": { "WPFFixesNetwork": {
"Content": "Reset Network", "Content": "Network - Reset",
"category": "Fixes", "category": "Fixes",
"Order": "a042_",
"panel": "1", "panel": "1",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFFixesNetwork",
"link": "https://winutil.christitus.com/dev/features/fixes/network" "link": "https://winutil.christitus.com/dev/features/fixes/network"
}, },
"WPFPanelDISM": { "WPFPanelDISM": {
"Content": "System Corruption Scan", "Content": "System Corruption Scan - Run",
"category": "Fixes", "category": "Fixes",
"panel": "1", "panel": "1",
"Order": "a043_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFSystemRepair",
"link": "https://winutil.christitus.com/dev/features/fixes/dism" "link": "https://winutil.christitus.com/dev/features/fixes/dism"
}, },
"WPFFixesWinget": { "WPFFixesWinget": {
"Content": "WinGet Reinstall", "Content": "WinGet - Reinstall",
"category": "Fixes", "category": "Fixes",
"panel": "1", "panel": "1",
"Order": "a044_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"function": "Invoke-WPFFixesWinget",
"link": "https://winutil.christitus.com/dev/features/fixes/winget" "link": "https://winutil.christitus.com/dev/features/fixes/winget"
}, },
"WPFRunAdobeCCCleanerTool": {
"Content": "Remove Adobe Creative Cloud",
"category": "Fixes",
"panel": "1",
"Order": "a045_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/fixes/runadobecccleanertool"
},
"WPFPanelControl": {
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/control"
},
"WPFPanelComputer": { "WPFPanelComputer": {
"Content": "Computer Management", "Content": "Computer Management",
"category": "Legacy Windows Panels", "category": "Legacy Windows Panels",
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"compmgmt.msc"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/computer" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/computer"
}, },
"WPFPanelControl": {
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"control"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/control"
},
"WPFPanelMouse": {
"Content": "Mouse Properties",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"main.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/mouse"
},
"WPFPanelNetwork": { "WPFPanelNetwork": {
"Content": "Network Connections", "Content": "Network Connections",
"category": "Legacy Windows Panels", "category": "Legacy Windows Panels",
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"ncpa.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/network" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/network"
}, },
"WPFPanelPower": { "WPFPanelPower": {
@@ -220,6 +229,9 @@
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"powercfg.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/power" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/power"
}, },
"WPFPanelPrinter": { "WPFPanelPrinter": {
@@ -228,23 +240,43 @@
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"Start-Process 'shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}'"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/printer" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/printer"
}, },
"WPFPanelPrograms": {
"Content": "Programs and Features",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"appwiz.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/programs"
},
"WPFPanelRegion": { "WPFPanelRegion": {
"Content": "Region", "Content": "Region",
"category": "Legacy Windows Panels", "category": "Legacy Windows Panels",
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"intl.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/region" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/region"
}, },
"WPFPanelRestore": { "WPFPanelSecurity": {
"Content": "Windows Restore", "Content": "Security and Maintenance",
"category": "Legacy Windows Panels", "category": "Legacy Windows Panels",
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/restore" "InvokeScript": [
"wscui.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/security"
}, },
"WPFPanelSound": { "WPFPanelSound": {
"Content": "Sound Settings", "Content": "Sound Settings",
@@ -252,7 +284,10 @@
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/user" "InvokeScript": [
"mmsys.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/sound"
}, },
"WPFPanelSystem": { "WPFPanelSystem": {
"Content": "System Properties", "Content": "System Properties",
@@ -260,6 +295,9 @@
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"sysdm.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/system" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/system"
}, },
"WPFPanelTimedate": { "WPFPanelTimedate": {
@@ -268,30 +306,58 @@
"panel": "2", "panel": "2",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300", "ButtonWidth": "300",
"InvokeScript": [
"timedate.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/timedate" "link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/timedate"
}, },
"WPFWinUtilInstallPSProfile": { "WPFPanelFirewall": {
"Content": "Install CTT PowerShell Profile", "Content": "Windows Defender Firewall",
"category": "Powershell Profile", "category": "Legacy Windows Panels",
"panel": "2", "panel": "2",
"Order": "a083_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300" "ButtonWidth": "300",
"InvokeScript": [
"firewall.cpl"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/firewall"
},
"WPFPanelRestore": {
"Content": "Windows Restore",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"rstrui.exe"
],
"link": "https://winutil.christitus.com/dev/features/legacy-windows-panels/restore"
},
"WPFWinUtilInstallPSProfile": {
"Content": "CTT PowerShell Profile - Install",
"category": "Powershell Profile Powershell 7+ Only",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"function": "Invoke-WinUtilInstallPSProfile",
"link": "https://winutil.christitus.com/dev/features/powershell-profile-powershell-7--only/installpsprofile"
}, },
"WPFWinUtilUninstallPSProfile": { "WPFWinUtilUninstallPSProfile": {
"Content": "Uninstall CTT PowerShell Profile", "Content": "CTT PowerShell Profile - Remove",
"category": "Powershell Profile", "category": "Powershell Profile Powershell 7+ Only",
"panel": "2", "panel": "2",
"Order": "a084_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300" "ButtonWidth": "300",
"function": "Invoke-WinUtilUninstallPSProfile",
"link": "https://winutil.christitus.com/dev/features/powershell-profile-powershell-7--only/uninstallpsprofile"
}, },
"WPFWinUtilSSHServer": { "WPFWinUtilSSHServer": {
"Content": "Enable OpenSSH Server", "Content": "OpenSSH Server - Enable",
"category": "Remote Access", "category": "Remote Access",
"panel": "2", "panel": "2",
"Order": "a084_",
"Type": "Button", "Type": "Button",
"ButtonWidth": "300" "ButtonWidth": "300",
"function": "Invoke-WPFSSHServer",
"link": "https://winutil.christitus.com/dev/features/remote-access/sshserver"
} }
} }
+41 -4
View File
@@ -4,21 +4,58 @@
"WPFTweaksConsumerFeatures", "WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery", "WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksWPBT", "WPFTweaksWPBT",
"WPFTweaksDVR",
"WPFTweaksLocation", "WPFTweaksLocation",
"WPFTweaksServices", "WPFTweaksServices",
"WPFTweaksTelemetry", "WPFTweaksTelemetry",
"WPFTweaksDeliveryOptimization",
"WPFTweaksDiskCleanup", "WPFTweaksDiskCleanup",
"WPFTweaksDeleteTempFiles", "WPFTweaksDeleteTempFiles",
"WPFTweaksEndTaskOnTaskbar", "WPFTweaksEndTaskOnTaskbar",
"WPFTweaksRestorePoint", "WPFTweaksRestorePoint"
"WPFTweaksPowershell7Tele"
], ],
"Minimal": [ "Minimal": [
"WPFTweaksConsumerFeatures", "WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksWPBT", "WPFTweaksWPBT",
"WPFTweaksServices", "WPFTweaksServices",
"WPFTweaksTelemetry" "WPFTweaksTelemetry"
],
"Advanced": [
"WPFTweaksRestorePoint",
"WPFTweaksActivity",
"WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksWPBT",
"WPFTweaksLocation",
"WPFTweaksServices",
"WPFTweaksTelemetry",
"WPFTweaksDeliveryOptimization",
"WPFTweaksDeleteTempFiles",
"WPFTweaksEndTaskOnTaskbar",
"WPFTweaksDisableStoreSearch",
"WPFTweaksRevertStartMenu",
"WPFTweaksWidget",
"WPFTweaksRemoveOneDrive",
"WPFTweaksWindowsAI",
"WPFTweaksRightClickMenu"
],
"AppxDefault": [
"WPFAppxMicrosoft_WindowsFeedbackHub",
"WPFAppxMicrosoft_GetHelp",
"WPFAppxMicrosoft_MicrosoftOfficeHub",
"WPFAppxMicrosoft_WindowsCalculator",
"WPFAppxClipchamp_Clipchamp",
"WPFAppxMicrosoft_WindowsAlarms",
"WPFAppxMicrosoftCorporationII_QuickAssist",
"WPFAppxMicrosoft_WindowsSoundRecorder",
"WPFAppxMicrosoft_MicrosoftStickyNotes",
"WPFAppxMicrosoft_Todos",
"WPFAppxMicrosoft_MicrosoftSolitaireCollection",
"WPFAppxMicrosoft_PowerAutomateDesktop",
"WPFAppxMicrosoft_WindowsDevHome",
"WPFAppxMicrosoft_BingWeather",
"WPFAppxMicrosoft_StartExperiencesApp",
"WPFAppxMicrosoft_BingNews",
"WPFAppxMicrosoft_Copilot",
"WPFAppxMicrosoft_BingSearch"
] ]
} }
+123 -125
View File
@@ -1,127 +1,125 @@
{ {
"shared":{ "shared": {
"AppEntryWidth": "130", "AppEntryWidth": "220",
"AppEntryFontSize": "11", "AppEntryFontSize": "13.2",
"AppEntryMargin": "1,1,1,1", "AppEntryIconSize": "28",
"AppEntryBorderThickness": "0", "AppEntryMargin": "3",
"CustomDialogFontSize": "12", "AppEntryBorderThickness": "1",
"CustomDialogFontSizeHeader": "14", "CustomDialogFontSize": "12",
"CustomDialogLogoSize": "25", "CustomDialogFontSizeHeader": "14",
"CustomDialogWidth": "400", "CustomDialogLogoSize": "25",
"CustomDialogHeight": "200", "CustomDialogWidth": "400",
"FontSize": "12", "CustomDialogHeight": "200",
"FontFamily": "Arial", "FontSize": "12",
"HeaderFontSize": "16", "FontFamily": "Arial",
"HeaderFontFamily": "Consolas, Monaco", "HeaderFontSize": "16",
"CheckBoxBulletDecoratorSize": "14", "HeaderFontFamily": "Consolas, Monaco",
"CheckBoxMargin": "15,0,0,2", "CheckBoxBulletDecoratorSize": "14",
"TabContentMargin": "5", "CheckBoxMargin": "15,0,0,2",
"TabButtonFontSize": "14", "TabContentMargin": "5",
"TabButtonWidth": "110", "TabButtonFontSize": "14",
"TabButtonHeight": "26", "TabButtonWidth": "110",
"TabRowHeightInPixels": "50", "TabButtonHeight": "26",
"ToolTipWidth": "300", "TabRowHeightInPixels": "50",
"IconFontSize": "14", "ToolTipWidth": "300",
"IconButtonSize": "35", "IconFontSize": "14",
"SettingsIconFontSize": "18", "IconButtonSize": "35",
"CloseIconFontSize": "18", "SettingsIconFontSize": "18",
"MicroWinLogoSize": "10", "CloseIconFontSize": "12",
"MicrowinCheckBoxMargin": "-10,5,0,0", "GroupBorderBackgroundColor": "#232629",
"GroupBorderBackgroundColor": "#232629", "ButtonFontSize": "12",
"ButtonFontSize": "12", "ButtonFontFamily": "Arial",
"ButtonFontFamily": "Arial", "ButtonWidth": "200",
"ButtonWidth": "200", "ButtonHeight": "25",
"ButtonHeight": "25", "ConfigTabButtonFontSize": "14",
"ConfigTabButtonFontSize": "14", "ConfigUpdateButtonFontSize": "14",
"ConfigUpdateButtonFontSize": "14", "SearchBarWidth": "200",
"SearchBarWidth": "200", "SearchBarHeight": "26",
"SearchBarHeight": "26", "SearchBarTextBoxFontSize": "12",
"SearchBarTextBoxFontSize": "12", "SearchBarClearButtonFontSize": "14",
"SearchBarClearButtonFontSize": "14", "CheckboxMouseOverColor": "#999999",
"CheckboxMouseOverColor": "#999999", "ButtonBorderThickness": "1",
"ButtonBorderThickness": "1", "ButtonMargin": "1",
"ButtonMargin": "1", "ButtonCornerRadius": "2"
"ButtonCornerRadius": "2" },
}, "Light": {
"Light": { "AppInstallUnselectedColor": "#F7F7F7",
"AppInstallUnselectedColor": "#F7F7F7", "AppInstallHighlightedColor": "#CFCFCF",
"AppInstallHighlightedColor": "#CFCFCF", "AppInstallSelectedColor": "#C2C2C2",
"AppInstallSelectedColor": "#C2C2C2", "ComboBoxForegroundColor": "#232629",
"AppInstallOverlayBackgroundColor":"#6A6D72", "ComboBoxBackgroundColor": "#F7F7F7",
"ComboBoxForegroundColor": "#232629", "LabelboxForegroundColor": "#232629",
"ComboBoxBackgroundColor": "#F7F7F7", "MainForegroundColor": "#232629",
"LabelboxForegroundColor": "#232629", "MainBackgroundColor": "#F7F7F7",
"MainForegroundColor": "#232629", "LabelBackgroundColor": "#F7F7F7",
"MainBackgroundColor": "#F7F7F7", "LinkForegroundColor": "#484848",
"LabelBackgroundColor": "#F7F7F7", "LinkHoverForegroundColor": "#232629",
"LinkForegroundColor": "#484848", "ScrollBarBackgroundColor": "#4A4D52",
"LinkHoverForegroundColor": "#232629", "ScrollBarHoverColor": "#5A5D62",
"ScrollBarBackgroundColor": "#4A4D52", "ScrollBarDraggingColor": "#6A6D72",
"ScrollBarHoverColor": "#5A5D62", "ProgressBarForegroundColor": "#2E77FF",
"ScrollBarDraggingColor": "#6A6D72", "ProgressBarBackgroundColor": "Transparent",
"ButtonInstallBackgroundColor": "#F7F7F7",
"MicrowinBusyColor": "#2e77ff", "ButtonTweaksBackgroundColor": "#F7F7F7",
"ProgressBarForegroundColor": "#2e77ff", "ButtonConfigBackgroundColor": "#F7F7F7",
"ProgressBarBackgroundColor": "Transparent", "ButtonUpdatesBackgroundColor": "#F7F7F7",
"ProgressBarTextColor": "#232629", "ButtonWin11ISOBackgroundColor": "#F7F7F7",
"ButtonInstallBackgroundColor": "#F7F7F7", "ButtonAppxBackgroundColor": "#F7F7F7",
"ButtonTweaksBackgroundColor": "#F7F7F7", "ButtonInstallForegroundColor": "#232629",
"ButtonConfigBackgroundColor": "#F7F7F7", "ButtonTweaksForegroundColor": "#232629",
"ButtonUpdatesBackgroundColor": "#F7F7F7", "ButtonConfigForegroundColor": "#232629",
"ButtonInstallForegroundColor": "#232629", "ButtonUpdatesForegroundColor": "#232629",
"ButtonTweaksForegroundColor": "#232629", "ButtonWin11ISOForegroundColor": "#232629",
"ButtonConfigForegroundColor": "#232629", "ButtonAppxForegroundColor": "#232629",
"ButtonUpdatesForegroundColor": "#232629", "ButtonBackgroundColor": "#F5F5F5",
"ButtonBackgroundColor": "#F5F5F5", "ButtonBackgroundPressedColor": "#1A1A1A",
"ButtonBackgroundPressedColor": "#1A1A1A", "ButtonBackgroundMouseoverColor": "#C2C2C2",
"ButtonBackgroundMouseoverColor": "#C2C2C2", "ButtonBackgroundSelectedColor": "#F0F0F0",
"ButtonBackgroundSelectedColor": "#F0F0F0", "ButtonForegroundColor": "#232629",
"ButtonForegroundColor": "#232629", "ToggleButtonOnColor": "#2E77FF",
"ToggleButtonOnColor": "#2e77ff", "ToggleButtonOffColor": "#707070",
"ToggleButtonOffColor": "#707070", "ToolTipBackgroundColor": "#F7F7F7",
"ToolTipBackgroundColor": "#F7F7F7", "BorderColor": "#232629",
"BorderColor": "#232629", "BorderOpacity": "0.2"
"BorderOpacity": "0.2" },
"Dark": {
}, "AppInstallUnselectedColor": "#232629",
"Dark": { "AppInstallHighlightedColor": "#3C3C3C",
"AppInstallUnselectedColor": "#232629", "AppInstallSelectedColor": "#4C4C4C",
"AppInstallHighlightedColor": "#3C3C3C", "ComboBoxForegroundColor": "#F7F7F7",
"AppInstallSelectedColor": "#4C4C4C", "ComboBoxBackgroundColor": "#1E3747",
"AppInstallOverlayBackgroundColor":"#2E3135", "LabelboxForegroundColor": "#5BDCFF",
"ComboBoxForegroundColor": "#F7F7F7", "MainForegroundColor": "#F7F7F7",
"ComboBoxBackgroundColor": "#1E3747", "MainBackgroundColor": "#232629",
"LabelboxForegroundColor": "#0567ff", "LabelBackgroundColor": "#232629",
"MainForegroundColor": "#F7F7F7", "LinkForegroundColor": "#ADD8E6",
"MainBackgroundColor": "#232629", "LinkHoverForegroundColor": "#F7F7F7",
"LabelBackgroundColor": "#232629", "ScrollBarBackgroundColor": "#2E3135",
"LinkForegroundColor": "#add8e6", "ScrollBarHoverColor": "#3B4252",
"LinkHoverForegroundColor": "#F7F7F7", "ScrollBarDraggingColor": "#5E81AC",
"ScrollBarBackgroundColor": "#2E3135", "ProgressBarForegroundColor": "#6EFF72",
"ScrollBarHoverColor": "#3B4252", "ProgressBarBackgroundColor": "Transparent",
"ScrollBarDraggingColor": "#5E81AC", "ButtonInstallBackgroundColor": "#222222",
"ButtonTweaksBackgroundColor": "#333333",
"MicrowinBusyColor": "#2e77ff", "ButtonConfigBackgroundColor": "#444444",
"ProgressBarForegroundColor": "#222222", "ButtonUpdatesBackgroundColor": "#555555",
"ProgressBarBackgroundColor": "Transparent", "ButtonWin11ISOBackgroundColor": "#666666",
"ProgressBarTextColor": "#232629", "ButtonAppxBackgroundColor": "#777777",
"ButtonInstallBackgroundColor": "#222222", "ButtonInstallForegroundColor": "#F7F7F7",
"ButtonTweaksBackgroundColor": "#333333", "ButtonTweaksForegroundColor": "#F7F7F7",
"ButtonConfigBackgroundColor": "#444444", "ButtonConfigForegroundColor": "#F7F7F7",
"ButtonUpdatesBackgroundColor": "#555555", "ButtonUpdatesForegroundColor": "#F7F7F7",
"ButtonInstallForegroundColor": "#F7F7F7", "ButtonWin11ISOForegroundColor": "#F7F7F7",
"ButtonTweaksForegroundColor": "#F7F7F7", "ButtonAppxForegroundColor": "#F7F7F7",
"ButtonConfigForegroundColor": "#F7F7F7", "ButtonBackgroundColor": "#1E3747",
"ButtonUpdatesForegroundColor": "#F7F7F7", "ButtonBackgroundPressedColor": "#F7F7F7",
"ButtonBackgroundColor": "#1E3747", "ButtonBackgroundMouseoverColor": "#3B4252",
"ButtonBackgroundPressedColor": "#F7F7F7", "ButtonBackgroundSelectedColor": "#5E81AC",
"ButtonBackgroundMouseoverColor": "#3B4252", "ButtonForegroundColor": "#F7F7F7",
"ButtonBackgroundSelectedColor": "#5E81AC", "ToggleButtonOnColor": "#2E77FF",
"ButtonForegroundColor": "#F7F7F7", "ToggleButtonOffColor": "#707070",
"ToggleButtonOnColor": "#2e77ff", "ToolTipBackgroundColor": "#2F373D",
"ToggleButtonOffColor": "#707070", "BorderColor": "#2F373D",
"ToolTipBackgroundColor": "#2F373D", "BorderOpacity": "0.2"
"BorderColor": "#2F373D", }
"BorderOpacity": "0.2"
}
} }
+1181 -2307
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -1,5 +1,6 @@
--- ---
title: '{{ replace .File.ContentBaseName "-" " " | title }}'
description: ""
date: '{{ .Date }}' date: '{{ .Date }}'
draft: true draft: true
title: '{{ replace .File.ContentBaseName "-" " " | title }}'
--- ---
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 MiB

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

+39 -32
View File
@@ -6,15 +6,16 @@ toc: true
## Testing ## Testing
* Test the latest changes to Winutil by running the pre-release and reporting issues you are encountering to help us continually improve Winutil! * Test the latest changes to WinUtil by running the pre-release and reporting issues you are encountering to help us continually improve WinUtil!
#### **Run the latest pre-release** #### Run the latest pre-release
```
irm https://christitus.com/windev | iex
```
> [!WARNING] ```ps1
> This is a pre-release and should be treated as such. It exists for developers to test the utility and report or fix bugs before they get added to the stable release. Don't use it in production! irm https://christitus.com/windev | iex
```
> [!IMPORTANT]
> **Keep in mind** That this is a pre-release and should be treated as such. It exists for developers to test the utility and report or fix bugs before they get added to the stable release. Don't use it in production!
## Issues ## Issues
@@ -24,17 +25,21 @@ toc: true
* Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub. * Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub.
* If you're doing code changes, then you can submit a PR to `main` branch, but I am very selective about these. * If you're doing code changes, then you can submit a PR to the `main` branch.
> [!IMPORTANT] > [!IMPORTANT]
> Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST! > Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST!
> [!IMPORTANT]
> Do not open a pull request that adds support for other languages to WinUtil for now, until we decide how we want to move forward with language support.
* When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied. * When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied.
* By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented. * By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented.
> [!NOTE] > [!NOTE]
> When creating a function, please include "WPF" or "Winutil" in the file name so it can be loaded into the runspace. >
> When creating a function, please include "WPF" or "WinUtil" in the file name so it can be loaded into the runspace.
## Walk through ## Walk through
@@ -46,58 +51,60 @@ toc: true
### Overview ### Overview
``` mermaid ```mermaid
%%{init: {"flowchart": {"curve": "cardinal"}} }%% %%{init: {"flowchart": {"curve": "cardinal"}} }%%
graph TD graph TD
  A[Fork Project] --> B[Clone Repository]; A[Fork Project] --> B[Clone Repository];
  B --> C[Create New Branch]; B --> C[Create New Branch];
  C --> D[Make Changes]; C --> D[Make Changes];
  D --> G[Test Changes]; D --> G[Test Changes];
  G --> H{Tests Passed?}; G --> H{Tests Passed?};
  H -->|Yes| E[Commit Changes]; H -->|Yes| E[Commit Changes];
  H -->|No| J[Fix Issues]; H -->|No| J[Fix Issues];
  J --> G; J --> G;
  E --> F[Push Branch]; E --> F[Push Branch];
  F --> K[Create Pull Request]; F --> K[Create Pull Request];
  K --> L[Fill out PR template]; K --> L[Fill out PR template];
classDef default stroke:#333,stroke-width:4px,font-size:12pt; classDef default stroke:#333,stroke-width:4px,font-size:12pt;
``` ```
> [!NOTE] > [!NOTE]
>
> This is a diagram to guide you through the process. It may vary depending on the type of change you're making. > This is a diagram to guide you through the process. It may vary depending on the type of change you're making.
### Fork the Repo ### Fork the Repo
* Fork the Winutil Repository [here](https://github.com/ChrisTitusTech/Winutil) to create a copy that will be available in your repository list. * Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your repository list.
{{< image src="images/Fork-Button" alt="Fork Image" >}} {{< image src="images/Fork-Button" alt="Fork Image" >}}
### Clone the Fork ### Clone the Fork
> [!TIP] > [!TIP]
> While you can make your changes directly through the Web, we recommend cloning the repo to your device using the application GitHub Desktop (available in Winutil) to test your fork easily. >
> While you can make your changes directly through the Web, we recommend cloning the repo to your device using the application GitHub Desktop (available in WinUtil) to test your fork easily.
* Install GitHub Desktop if it is not already installed. * Install GitHub Desktop if it is not already installed.
* Log in using the same GitHub account you used to fork Winutil. * Log in using the same GitHub account you used to fork WinUtil.
* Choose the fork under "Your Repositories" and press "clone {repo name}" * Choose the fork under "Your Repositories" and press "clone {repo name}"
* Create a new branch and name it something relatable to your changes. * Create a new branch and name it something relatable to your changes.
* Now you can modify Winutil to your liking using your preferred text editor. * Now you can modify WinUtil to your liking using your preferred text editor.
### Testing your changes ### Testing your changes
* To test to see if your changes work as intended run following commands in a powershell teminal as admin: * To test to see if your changes work as intended, run the following commands in a PowerShell terminal as admin:
* Change the directory where you are running the commands to the forked project. * Change the directory where you are running the commands to the forked project.
* `cd {path to the folder with the compile.ps1}` * `cd {path to the folder with the compile.ps1}`
* Run the following command to compile and run Winutil: * Run the following command to compile and run WinUtil:
* `.\Compile.ps1 -run` * `.\Compile.ps1 -run`
{{< image src="images/Compile" alt="Compile" >}} {{< image src="images/Complie" alt="Compile" >}}
* After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below. * After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below.
### Committing the changes ### Committing the changes
* Before committing your changes, please discard changes made to the `Winutil.ps1` file, like the following: * Before committing your changes, please discard changes made to the `winutil.ps1` file, like the following:
{{< image src="images/Discard-GHD" alt="Push Commit Image" >}} {{< image src="images/Discard-GHD" alt="Push Commit Image" >}}
@@ -110,6 +117,6 @@ graph TD
{{< image src="images/Push-Commit" alt="Push Commit Image" >}} {{< image src="images/Push-Commit" alt="Push Commit Image" >}}
### Making a PR ### Making a PR
* To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is not a Winutil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build. * To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is no WinUtil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build.
* If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public. * If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public.
* Congratulations! You just submitted your first PR. Thank you so much for contributing to Winutil. * Congratulations! You just submitted your first PR. Thank you so much for contributing to WinUtil.
+38 -204
View File
@@ -4,210 +4,44 @@ toc: true
--- ---
### Download not working ### Download not working
If `https://christitus.com/win` is not working, or you want to download the code from GitHub directly, you can use the direct download link:
If you run WinUtil and get an error like:
`< : The term '<' is not recognized as the name of a cmdlet, function, script file, or operable program.`
try using a **VPN** and if that doesn't work than report the issue to https://github.com/ChrisTitusTech/winutil/issues
### Script Won't Run
If you run WinUtil and get the error:
`"WinUtil is unable to run on your system. PowerShell execution is restricted by security policies"`
this means that your PowerShell session is in **Constrained Language Mode**, which prevents WinUtil from running.
### Ultimate Performance Plan Not Working
The Ultimate Performance power plan may not work on some laptops that do not fully support this power plan.
In these cases, the power plan may fail to apply, This is expected behavior on unsupported hardware.
### Revert start menu tweak not working
Revert start menu tweak stops working starting with **Windows 11 update KB5089573** (released in May 2026).
In this update, Microsoft completely removed the old Start Menu code from Windows, so we aren't able to bring it back.
### Issues with PowerShell 7 or Class not registered Error
Installing PowerShell 7 from the Microsoft Store (MSIX package) is known to cause issues with DISM cmdlets such as `Get-WindowsOptionalFeature` and `Enable-WindowsOptionalFeature`, resulting in a `Class not registered` COM error.
This might also make it so running the "pre-installed app removal" will take a indefinite amount of time
Instead, install PowerShell 7 using one of the following methods:
**winget (recommended):**
```powershell
winget install --id Microsoft.PowerShell --source winget --installer-type wix
``` ```
irm https://github.com/ChrisTitusTech/Winutil/releases/latest/download/Winutil.ps1 | iex **Direct MSI from GitHub Releases:** Download the `.msi` installer from the [PowerShell GitHub Releases](https://github.com/PowerShell/PowerShell/releases) page.
```
If you are seeing errors referencing TLS or security, you may be running an older version of Windows where TLS 1.2 is not the default security protocol used for network connections. The following commands will force .NET to use TLS 1.2, and download the script directly using .NET instead of PowerShell: For more details see https://github.com/PowerShell/PowerShell/issues/13866
```
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
iex https://christitus.com/win | iex
```
If it still isn't working and you live in India, it might be due to India blocking GitHub's content domain and preventing downloads. See more on [Times of India](https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms).
If you are still having issues, try using a **VPN**, or changing your **DNS provider** to one of following two providers:
| Provider | Primary DNS | Secondary DNS |
|:------------:|:------------:|:-------------:|
| Cloudflare | `1.1.1.1` | `1.0.0.1` |
| Google | `8.8.8.8` | `8.8.4.4` |
### Script blocked by Execution Policy
1. Ensure you are running PowerShell as admin: Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
2. In the PowerShell window, type this to allow unsigned code to execute and run the installation script:
```
Set-ExecutionPolicy Unrestricted -Scope Process -Force
irm https://christitus.com/win | iex
```
## Runtime Issues
### WinGet configuration
If you have not installed anything using PowerShell before, you may be prompted to configure WinGet. This requires user interaction on first run. You will need to manually type `y` into the PowerShell console and press enter to continue. Once you do it the first time, you will not be prompted again.
### MicroWin: Error `0x80041031`
This error code typically indicates an issue related to Windows Management Instrumentation (WMI). Here are a few steps you can try to resolve the issue:
1. **Reboot Your Computer:**
Sometimes, a simple reboot can resolve temporary issues. Restart your computer and try mounting the ISO again.
3. **Check for System Corruption:**
Run the System File Checker (SFC) utility to scan and repair system files that may be corrupted.
```powershell
sfc /scannow
```
4. **Update Your System:**
Make sure your operating system is up-to-date. Check for Windows updates and install any pending updates.
5. **Check WMI Service:**
Ensure that the Windows Management Instrumentation (WMI) service is running. You can do this through the Services application:
- Press `Win`+`R` to open the Run dialog.
- Type `services.msc` and press Enter.
- Locate *Windows Management Instrumentation* in the list.
- Make sure to set its status to "Running" and the startup type to "Automatic".
6. **Check for Security Software Interference:**
Security software can sometimes interfere with WMI operations. Temporarily disable your anti-virus or security software and check if the issue persists. WMI is a common attack/infection vector, so many anti-virus programs will limit its usage.
7. **Event Viewer:**
Check the Event Viewer for more detailed error information. Look for entries related to the `80041031` error and check if there are any additional details that can help identify the cause.
- Press `Win`+`X` and select *Event Viewer*.
- Navigate to *Windows Logs* > *Application* or *System*.
- Look for entries with the source related to WMI or the application use to mount the ISO.
8. **ISO File Integrity:**
Ensure that the ISO file you are trying to mount is uncorrupted. Try mounting a different ISO file to see if the issue persists.
If the problem persists after trying these steps, additional troubleshooting is required. Consider seeking assistance from Microsoft support or community forums for more specific guidance based on your system configuration and the software you use to mount the ISO.
## Windows Issues
### Windows takes longer to shut down
This could be for a number of reasons:
- Turn on fast startup: Press `Windows key`+`R`, then type:
```bat
control /name Microsoft.PowerOptions /page pageGlobalSettings
```
- If that doesn't work, disable Hibernation:
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
- In the PowerShell window, type:
```bat
powercfg /H off
```
Related issue: [#69](https://github.com/ChrisTitusTech/Winutil/issues/69)
### Windows Search does not work
Enable Background Apps. Related issues: [#69](https://github.com/ChrisTitusTech/Winutil/issues/69) [95](https://github.com/ChrisTitusTech/Winutil/issues/95) [#232](https://github.com/ChrisTitusTech/Winutil/issues/232)
### Xbox Game Bar Activation Broken
Set the Xbox Accessory Management Service to Automatic:
```
Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
```
Related issue: [#198](https://github.com/ChrisTitusTech/Winutil/issues/198)
### Windows 11: Quick Settings no longer works
Launch the Script and click *Enable Action Center*.
### Explorer (file browser) no longer launches
- Press `Windows key`+`R` then type:
```bat
control /name Microsoft.FolderOptions
```
- Change the *Open File Explorer to* option to *This PC*.
### Battery drains too fast
If you're using a laptop or tablet and find your battery drains too fast, please try the below troubleshooting steps, and report the results back to the Winutil community.
1. **Check Battery Health:**
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
- Run the following command to generate a battery report:
```powershell
powercfg /batteryreport /output "C:\battery_report.html"
```
- Open the generated HTML report to review information about battery health and usage. A battery with poor health may hold less charge, discharge faster, or cause other issues.
2. **Review Power Settings:**
- Open the Settings app, and go to *System* > *Power & sleep*.
- Adjust power plan settings based on your preferences and usage patterns.
- Click on *Additional power settings* to access advanced power settings that may help.
3. **Identify Power-Hungry Apps:**
- Right-click on the taskbar and select *Task Manager*.
- Navigate to the *Processes* tab to identify applications with high CPU or memory usage.
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
4. **Update Drivers:**
- Visit your device manufacturer's website or use Windows Update to check for driver updates.
- Ensure graphics, chipset, and other essential drivers are up to date.
5. **Check for Windows Updates:**
- Open the Settings app, and go to *Update & Security* > *Windows Update*.
- Check for and install any available updates for your operating system.
6. **Reduce Screen Brightness:**
- Open the Settings app, and go to *System* > *Display*.
- Adjust screen brightness based on your preferences and lighting conditions.
7. **Enable Battery Saver:**
- Open the Settings app, and go to *System* > *Battery*.
- Turn on *Battery saver* to limit background activity and conserve power.
8. **Check Power Usage in Settings:**
- Open the Settings app, and go to *System* > *Battery* > *Battery usage by app*.
- Review the list of apps and their power usage. Disable or uninstall any you don't need.
9. **Check Background Apps:**
- Open the Settings app, and go to *Privacy* > *Background apps*.
- Disable or uninstall unnecessary apps running in the background.
10. **Use `powercfg` for Analysis:**
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
- Run the following command to analyze energy usage and generate a report:
```powershell
powercfg /energy /output "C:\energy_report.html"
```
- Open the generated HTML report to identify energy consumption patterns.
11. **Review Event Logs:**
- Open Event Viewer by searching for it in the Start menu.
- Navigate to *Windows Logs* > *System*.
- Look for events with the source *Power-Troubleshooter* to identify power-related events. These may highlight battery, input power, and other issues.
12. **Check Wake-up Sources:**
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
- Use the command `powercfg /requests` to identify processes preventing sleep.
- Use the command `powercfg /waketimers` to view active wake timers.
- Check Task Scheduler to see if any of the discovered processes are scheduled to start on boot or at regular intervals.
13. **Advanced Identification of Power-Hungry Apps:**
- Open Resource Monitor from the Start menu.
- Navigate to the *CPU*, *Memory*, *Network*, and other tabs to identify processes with high resource usage.
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
14. **Disable Activity History:**
- Open the Settings app, and go to *Privacy* > *Activity history*.
- Turn off *Let Windows collect my activities from this PC*.
15. **Prevent Network Adapters From Waking PC:**
- Open Device Manager by searching for it in the Start menu.
- Locate your network adapter, right-click, and go to *Properties*.
- Under the *Power Management* tab, uncheck the option that allows the device to wake the computer.
16. **Review Installed Applications:**
- Manually review installed applications by searching for *Add or remove programs* in the Start menu.
- Check settings/preferences of individual applications for power-related options.
- Uninstall unnecessary or problematic software.
These troubleshooting steps are generic, but should help in most situations. You should have these key takeaways:
- Battery health is the most significant limiter on your device's runtime. A battery in poor health usually cannot be made to last like it used to, simply by closing some applications. Consider replacing your battery.
- Background applications that use CPU and memory, make lots of or large network requests, read/write to disk frequently, or that keep your PC awake when it could be conserving energy are the next major concern. Avoid installing programs you don't need, only use programs you trust, and configure applications to use as little power and run as infrequently as possible.
- Windows performs a lot of tasks that may affect battery life by default. Changing settings, stopping scheduled tasks, and disabling features can help the system stay in lower power states to conserve battery.
- Bad chargers, inconsistent power input, and high temperatures will cause batteries to degrade and discharge faster. Use trusted high-quality chargers, ensure input power is steady, clean any fans or airflow ports, and keep the battery/PC cool.
+10 -8
View File
@@ -1,20 +1,22 @@
--- ---
title: Welcome to Winutil Documentation! title: Welcome to WinUtil Documentation!
toc: false toc: false
width: full width: full
--- ---
<div style="display: flex; justify-content: center; align-items: center; width: 100%; flex-wrap: wrap; gap: 5px;margin-top:30px;" > <div style="display: flex; justify-content: center; align-items: center; width: 100%; flex-wrap: wrap; gap: 5px;margin-top:30px;" >
<a href="https://github.com/ChrisTitusTech/Winutil/releases/latest"><img src="https://img.shields.io/github/v/release/ChrisTitusTech/Winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge" alt="Version" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;"></a> <a href="https://github.com/ChrisTitusTech/winutil/releases/latest"><img src="https://img.shields.io/github/v/release/ChrisTitusTech/winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge" alt="Version" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;"></a>
<img src="https://img.shields.io/github/downloads/ChrisTitusTech/Winutil/Winutil.ps1?label=Total%20Downloads&style=for-the-badge" alt="GitHub Downloads" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;"> <img src="https://img.shields.io/github/downloads/ChrisTitusTech/winutil/winutil.ps1?label=Total%20Downloads&style=for-the-badge" alt="GitHub Downloads" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;">
<a href="https://discord.gg/RUbZUZyByQ"><img src="https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ" alt="Discord Community Server" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;"></a> <a href="https://discord.gg/RUbZUZyByQ"><img src="https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ" alt="Discord Community Server" style="height: 28px; width: auto; min-width: 10px; object-fit: contain; margin: 0;"></a>
</div> </div>
Welcome to the official documentation for Winutil, your go-to utility for optimizing and managing your Windows environment. Whether youre an IT professional, power user, or regular user, Winutil provides a comprehensive set of tools to enhance your Windows experience. Welcome to the official documentation for WinUtil, your go-to utility for optimizing and managing your Windows environment. Whether youre an IT professional, power user, or regular user, WinUtil provides a comprehensive set of tools to enhance your Windows experience.
## Running the latest release of Winutil {{< image src="images/Title-Screen" alt="WinUtil title screen" >}}
* You will first need to start a Powershell terminal **as Admin**. ## Running the latest release of WinUtil
* You will first need to start a PowerShell terminal **as Admin**.
* Now you can run the following command: * Now you can run the following command:
``` ```
@@ -22,5 +24,5 @@ irm "https://christitus.com/win" | iex
``` ```
> [!NOTE] > [!IMPORTANT]
> Winutil is updated frequently as of the time of writing. Consequently, features and functionalities may evolve, and the documentation may not always reflect the most current images or information. > WinUtil is updated frequently as of the time of writing. Consequently, features and functionalities may evolve, and the documentation may not always reflect the most current images or information.
+17 -72
View File
@@ -1,10 +1,11 @@
--- ---
title: Developer Reference title: Developer Reference
weight: 3 weight: 3
toc: false
--- ---
> [!NOTE] > [!NOTE]
> This section contains technical documentation for developers. For end-user documentation, see the [User Guide](../userguide/). > This section contains code-only references. For end-user documentation, see the [User Guide](../userguide/).
## Architecture ## Architecture
@@ -14,94 +15,38 @@ weight: 3
### Essential Tweaks ### Essential Tweaks
- [Create Restore Point](tweaks/essential-tweaks/restorepoint/) {{< autolinks section="dev/tweaks/essential-tweaks" >}}
- [Debloat Edge](tweaks/essential-tweaks/edgedebloat/)
- [Delete Temporary Files](tweaks/essential-tweaks/deletetempfiles/)
- [Disable Activity History](tweaks/essential-tweaks/activity/)
- [Disable ConsumerFeatures](tweaks/essential-tweaks/consumerfeatures/)
- [Disable GameDVR](tweaks/essential-tweaks/gamedvr/)
- [Disable Hibernation](tweaks/essential-tweaks/hibernation/)
- [Disable Location Tracking](tweaks/essential-tweaks/location/)
- [Disable Powershell 7 Telemetry](tweaks/essential-tweaks/powershell7tele/)
- [Disable Storage Sense](tweaks/essential-tweaks/storage/)
- [Disable Telemetry](tweaks/essential-tweaks/telemetry/)
- [Enable End Task With Right Click](tweaks/essential-tweaks/endtaskontaskbar/)
- [Prefer IPv4 over IPv6](tweaks/essential-tweaks/ipv46/)
- [Run Disk Cleanup](tweaks/essential-tweaks/diskcleanup/)
- [Set Hibernation as default (good for laptops)](tweaks/essential-tweaks/laptophibernation/)
- [Set Services to Manual](tweaks/essential-tweaks/services/)
### Advanced Tweaks (CAUTION) ### Advanced Tweaks (CAUTION)
- [Adobe Network Block](tweaks/z--advanced-tweaks---caution/blockadobenet/) {{< autolinks section="dev/tweaks/z--advanced-tweaks---caution" >}}
- [Disable Background Apps](tweaks/z--advanced-tweaks---caution/disablebgapps/)
- [Disable Fullscreen Optimizations](tweaks/z--advanced-tweaks---caution/disablefso/)
- [Disable IPv6](tweaks/z--advanced-tweaks---caution/disableipsix/)
- [Disable Microsoft Copilot](tweaks/z--advanced-tweaks---caution/removecopilot/)
- [Disable Notification Tray/Calendar](tweaks/z--advanced-tweaks---caution/disablenotifications/)
- [Disable Teredo](tweaks/z--advanced-tweaks---caution/teredo/)
- [DNS](tweaks/z--advanced-tweaks---caution/changedns/)
- [Remove ALL MS Store Apps - NOT RECOMMENDED](tweaks/z--advanced-tweaks---caution/debloat/)
- [Remove Home and Gallery from explorer](tweaks/z--advanced-tweaks---caution/removehomegallery/)
- [Make Edge Uninstallable](tweaks/z--advanced-tweaks---caution/edgeuninstall/)
- [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/)
- [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/)
- [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/)
- [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/)
### Customize Preferences ### Customize Preferences
- [Bing Search in Start Menu](tweaks/customize-preferences/bingsearch/) {{< autolinks section="dev/tweaks/customize-preferences" >}}
- [Center Taskbar Items](tweaks/customize-preferences/taskbaralignment/)
- [Dark Theme for Windows](tweaks/customize-preferences/darkmode/)
- [Detailed BSoD](tweaks/customize-preferences/detailedbsod/)
- [Mouse Acceleration](tweaks/customize-preferences/mouseacceleration/)
- [NumLock on Startup](tweaks/customize-preferences/numlock/)
- [Search Button in Taskbar](tweaks/customize-preferences/taskbarsearch/)
- [Show File Extensions](tweaks/customize-preferences/showext/)
- [Show Hidden Files](tweaks/customize-preferences/hiddenfiles/)
- [Snap Assist Flyout](tweaks/customize-preferences/snapflyout/)
- [Snap Assist Suggestion](tweaks/customize-preferences/snapsuggestion/)
- [Snap Window](tweaks/customize-preferences/snapwindow/)
- [Sticky Keys](tweaks/customize-preferences/stickykeys/)
- [Task View Button in Taskbar](tweaks/customize-preferences/taskview/)
- [Verbose Messages During Logon](tweaks/customize-preferences/verboselogon/)
- [Widgets Button in Taskbar](tweaks/customize-preferences/taskbarwidgets/)
### Performance Plans ### Performance Plans
- [Add and Remove Ultimate Performance Profile](tweaks/performance-plans/profile/) {{< autolinks section="dev/tweaks/performance-plans" >}}
## Features ## Features
### Fixes ### Fixes
- [Remove Adobe Creative Cloud](features/fixes/runadobecccl cleanertool/) {{< autolinks section="dev/features/fixes" >}}
- [Reset Network](features/fixes/network/)
- [Reset Windows Update](features/fixes/update/)
- [Set Up Autologin](features/fixes/autologin/)
- [System Corruption Scan](features/fixes/corruptionscan/)
- [WinGet Reinstall](features/fixes/winget/)
### Legacy Windows Panels ### Legacy Windows Panels
- [Control Panel](features/legacy-windows-panels/control/) {{< autolinks section="dev/features/legacy-windows-panels" >}}
- [Network Connections](features/legacy-windows-panels/network/)
- [Power Panel](features/legacy-windows-panels/power/)
- [Printer Settings](features/legacy-windows-panels/printer/)
- [Region](features/legacy-windows-panels/region/)
- [Sound Settings](features/legacy-windows-panels/sound/)
- [System Properties](features/legacy-windows-panels/system/)
- [User Accounts](features/legacy-windows-panels/user/)
### Features ### Features
- [All .Net Framework (2,3,4)](features/features/dotnet/) {{< autolinks section="dev/features/features" >}}
- [Disable Legacy F8 Boot Recovery](features/features/disablelegacyrecovery/)
- [Enable Legacy F8 Boot Recovery](features/features/enablelegacyrecovery/) ### Remote Access
- [Enable Daily Registry Backup Task 12.30am](features/features/regbackup/)
- [HyperV Virtualization](features/features/hyperv/) {{< autolinks section="dev/features/remote-access" >}}
- [Legacy Media (WMP, DirectPlay)](features/features/legacymedia/)
- [NFS - Network File System](features/features/nfs/) ### Powershell Profile Powershell 7+ Only
- [Windows Sandbox](features/features/sandbox/)
- [Windows Subsystem for Linux](features/features/wsl/) {{< autolinks section="dev/features/powershell-profile-powershell-7--only" >}}
+165 -44
View File
@@ -6,7 +6,7 @@ toc: true
## Overview ## Overview
Winutil is a PowerShell-based Windows utility with a WPF (Windows Presentation Foundation) GUI. This document explains the architecture, code structure, and how different components work together. WinUtil is a PowerShell-based Windows utility with a WPF (Windows Presentation Foundation) GUI. This document explains the architecture, code structure, and how different components work together.
## High-Level Architecture ## High-Level Architecture
@@ -55,9 +55,6 @@ winutil/
│ ├── public/ # User-facing functions │ ├── public/ # User-facing functions
│ │ ├── Initialize-WPFUI.ps1 │ │ ├── Initialize-WPFUI.ps1
│ │ └── ... │ │ └── ...
│ └── microwin/ # MicroWin specific functions
│ ├── Invoke-Microwin.ps1
│ └── ...
├── config/ # JSON configuration files ├── config/ # JSON configuration files
│ ├── applications.json # Application definitions │ ├── applications.json # Application definitions
│ ├── tweaks.json # Tweak definitions │ ├── tweaks.json # Tweak definitions
@@ -77,7 +74,7 @@ winutil/
1. Reads all function files from `/functions/` 1. Reads all function files from `/functions/`
2. Includes configuration JSON files 2. Includes configuration JSON files
3. Embeds XAML GUI definition 3. Embeds XAML GUI definition
4. Combines into single script 4. Combines into a single script
5. Outputs `winutil.ps1` 5. Outputs `winutil.ps1`
**Why**: Makes distribution easier (single file) and improves load time. **Why**: Makes distribution easier (single file) and improves load time.
@@ -126,12 +123,159 @@ winutil/
**Purpose**: WPF GUI layout and design. **Purpose**: WPF GUI layout and design.
**Structure**: **Structure**:
- TabControl for main tabs (Install, Tweaks, Config, MicroWin)
- Buttons with event handlers - Buttons with event handlers
- TextBoxes for input - TextBoxes for input
- CheckBoxes for options - CheckBoxes for options
- ListBoxes for selections - ListBoxes for selections
## Win11 Creator Architecture
The **Win11 Creator** is a specialized subsystem within Winutil that creates customized Windows 11 ISOs. It operates independently from the main package installation and tweak system.
### Win11 Creator Components
**Core Functions** (`functions/private/`):
- `Invoke-WinUtilISO.ps1`: Main orchestrator containing all Win11 Creator functions
- `Invoke-WinUtilISOBrowse`: ISO file selection dialog
- `Invoke-WinUtilISOMountAndVerify`: Validates and mounts ISO, verifies it's official Windows 11
- `Invoke-WinUtilISOModify`: Launches modification in background runspace
- `Invoke-WinUtilISOExport`: Handles ISO and USB export
- `Invoke-WinUtilISOCheckExistingWork`: Recovers incomplete work sessions
- `Invoke-WinUtilISOCleanAndReset`: Cleans up temp directories and resets UI
- `Invoke-WinUtilISOScript.ps1`: Applies modifications to mounted install.wim
- Removes provisioned AppX packages (40+ bloatware apps)
- Injects drivers (optional) from the current system
- Removes OneDrive setup files
- Applies offline registry tweaks (hardware bypass, privacy, telemetry, OOBE)
- Deletes telemetry scheduled task definitions
- Pre-stages setup scripts from autounattend.xml
- Removes unused Windows editions
- Cleans component store via DISM
### Win11 Creator Data Flow
```
User selects official Windows 11 ISO
Invoke-WinUtilISOBrowse → OpenFileDialog, validates file size
Invoke-WinUtilISOMountAndVerify
├─ Mount ISO via Mount-DiskImage
├─ Verify install.wim or install.esd exists
├─ Check for "Windows 11" in image metadata
├─ Extract available editions (Home, Pro, Enterprise, etc.)
└─ Store ISO path, drive letter, WIM path, image info in $sync
User optionally enables the Driver Injection checkbox
Invoke-WinUtilISOModify (runs in background runspace)
├─ Create work directory: ~WinUtil_Win11ISO_[timestamp]
├─ Copy ISO contents to disk (~5-6 GB)
├─ Mount install.wim at selected edition/index
├─ Invoke-WinUtilISOScript:
│ ├─ Remove 40+ bloat AppX packages
│ ├─ Export and inject drivers (if enabled)
│ ├─ Remove OneDrive setup
│ ├─ Load offline registry hives
│ ├─ Apply 50+ registry tweaks (hardware bypass, privacy, telemetry, OOBE, etc.)
│ ├─ Delete telemetry scheduled task files
│ ├─ Pre-stage setup scripts from autounattend.xml to C:\Windows\Setup\Scripts\
│ └─ Unload registry hives
├─ DISM /Cleanup-Image /StartComponentCleanup /ResetBase (saves 300-800 MB)
├─ Dismount and save the modified install.wim (~10+ minutes, slowest step)
├─ Export selected edition only (removes all other editions, saves 1-2 GB each)
├─ Dismount source ISO
└─ Report completion, enable export options
Invoke-WinUtilISOExport (user chooses output)
├─ Option 1: Save as ISO
│ ├─ Build bootable ISO via oscdimg.exe (BIOS/UEFI dual-boot)
│ └─ Output: Win11_Modified_[date].iso (2.5-3.5 GB)
└─ Option 2: Write to USB
├─ Format USB as GPT
├─ Create 512 MB EFI partition
├─ Copy modified ISO contents
└─ Output: Bootable USB (minimum 8 GB)
Invoke-WinUtilISOCleanAndReset (optional)
└─ Delete temp working directory (~10-15 GB)
└─ Reset UI to initial state
```
### Win11 Creator Validation & Safety
**ISO Validation**:
- Only accepts official Microsoft Windows 11 ISOs
- Validates presence of install.wim or install.esd
- Checks image metadata for "Windows 11" string
- Rejects custom, modified, or non-Windows 11 ISOs
**Work Session Recovery**:
- Auto-detects incomplete work from previous sessions
- Allows resuming Step 4 (export) without re-running Steps 1-3
- Prevents redundant modifications
**Modification Safety**:
- All registry changes are documented in a script (reversible)
- Original ISO never modified; only working copy
- Logged to `WinUtil_Win11ISO.log` for debugging
- DISM handles image dismount with automatic cleanup on error
### Win11 Creator Registry Tweaks
The `Invoke-WinUtilISOScript` function applies **50+ offline registry tweaks**:
**Hardware Bypass**:
- TPM 2.0 check bypass
- Secure Boot requirement bypass
- CPU compatibility bypass
- RAM requirement bypass
- Storage check bypass
**Privacy & Telemetry**:
- Disable advertising ID
- Disable tailored experiences
- Disable input personalization
- Disable speech online privacy
- Disable cloud content suggestions
- Disable app suggestion subscriptions
- Remove CEIP, Appraiser, WaaSMedic, etc.
**OOBE & Setup**:
- Enable local account setup
- Skip Microsoft account requirement
- Dark mode by default
- Empty taskbar and Start Menu
**Post-Setup Installations**:
- Prevent DevHome auto-installation
- Prevent new Outlook Mail app installation
- Prevent Teams auto-installation
**System Features**:
- Disable BitLocker and device encryption
- Disable Chat icon from the Taskbar
- Disable OneDrive folder backup
- Disable Copilot
- Disable Windows Update during OOBE (re-enabled at first login)
### Driver Injection Feature
**Optional Enhancement**: When enabled, exports all drivers from the running system and injects them into both:
- `install.wim` (main OS image)
- `boot.wim` index 2 (Windows Setup PE environment)
**Use Case**: Enables offline installation on systems with missing drivers.
### Disk Space Requirements
- **Temporary working directory**: ~10-15 GB
- **Original ISO**: 4-6 GB
- **Modified ISO**: 2.5-3.5 GB
- **Total needed**: ~25 GB for safe operation
## Data Flow ## Data Flow
### Application Installation Flow ### Application Installation Flow
@@ -143,7 +287,7 @@ Get-WinUtilCheckBoxes → Retrieves selected apps
For each selected app: For each selected app:
Check if WinGet/Choco installed Check if WinGet/Choco is installed
Install-WinUtilWinget/Choco (if needed) Install-WinUtilWinget/Choco (if needed)
@@ -189,7 +333,7 @@ Retrieve "OriginalState" from tweak definition
Invoke-WPFUndoTweak → Restore original values Invoke-WPFUndoTweak → Restore original values
Remove from applied tweaks log Remove from the applied tweaks log
Update UI Update UI
``` ```
@@ -198,7 +342,7 @@ Update UI
### applications.json Structure ### applications.json Structure
```json ```json {filename="config/applications.json"}
{ {
"WPFInstall<AppName>": { "WPFInstall<AppName>": {
"category": "Browsers", "category": "Browsers",
@@ -221,14 +365,13 @@ Update UI
### tweaks.json Structure ### tweaks.json Structure
```json ```json {filename="config/tweaks.json"}
{ {
"WPFTweaksTelemetry": { "WPFTweaksTelemetry": {
"Content": "Disable Telemetry", "Content": "Disable Telemetry",
"Description": "Disables Microsoft Telemetry", "Description": "Disables Microsoft Telemetry",
"category": "Essential Tweaks", "category": "Essential Tweaks",
"panel": "1", "panel": "1",
"Order": "a003_",
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection", "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
@@ -237,13 +380,6 @@ Update UI
"Value": "0", "Value": "0",
"OriginalValue": "1" "OriginalValue": "1"
} }
],
"ScheduledTask": [
{
"Name": "Microsoft\\Windows\\Autochk\\Proxy",
"State": "Disabled",
"OriginalState": "Enabled"
}
] ]
} }
} }
@@ -254,7 +390,6 @@ Update UI
- `Description`: What it does - `Description`: What it does
- `category`: Essential/Advanced/Customize - `category`: Essential/Advanced/Customize
- `registry`: Registry changes to make - `registry`: Registry changes to make
- `ScheduledTask`: Scheduled tasks to modify
- `service`: Services to change - `service`: Services to change
- `OriginalValue/State`: For undo functionality - `OriginalValue/State`: For undo functionality
@@ -320,22 +455,6 @@ if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
choco install $app.choco -y choco install $app.choco -y
``` ```
## MicroWin Architecture
MicroWin operates in phases:
1. **Mount ISO**: Extract Windows image
2. **Modify Image**: Remove components, apply tweaks
3. **Inject Drivers**: Add custom drivers (optional)
4. **Create Unattend**: Generate automated install configuration
5. **Rebuild ISO**: Package modified image into new ISO
**Key Files**:
- `Invoke-Microwin.ps1`: Main orchestration
- `Microwin-RemovePackages.ps1`: Remove Windows packages
- `Microwin-RemoveFeatures.ps1`: Disable features
- `Microwin-NewUnattend.ps1`: Create unattend.xml
## Error Handling ## Error Handling
Winutil uses PowerShell error handling: Winutil uses PowerShell error handling:
@@ -385,7 +504,7 @@ $sync.form.Dispatcher.Invoke([action]{
### Adding a New Application ### Adding a New Application
1. Edit `config/applications.json`: 1. Edit `config/applications.json`:
```json ```json {filename="config/applications.json"}
{ {
"WPFInstallNewApp": { "WPFInstallNewApp": {
"category": "Utilities", "category": "Utilities",
@@ -398,12 +517,12 @@ $sync.form.Dispatcher.Invoke([action]{
``` ```
2. Recompile: `.\Compile.ps1` 2. Recompile: `.\Compile.ps1`
3. The app appears automatically in Install tab 3. The app appears automatically in the Install tab
### Adding a New Tweak ### Adding a New Tweak
1. Edit `config/tweaks.json`: 1. Edit `config/tweaks.json`:
```json ```json {filename="config/tweaks.json"}
{ {
"WPFTweaksNewTweak": { "WPFTweaksNewTweak": {
"Content": "New Tweak", "Content": "New Tweak",
@@ -423,7 +542,7 @@ $sync.form.Dispatcher.Invoke([action]{
``` ```
2. Recompile: `.\Compile.ps1` 2. Recompile: `.\Compile.ps1`
3. Tweak appears in Tweaks tab 3. Tweak appears in the Tweaks tab
### Adding a New Function ### Adding a New Function
@@ -459,7 +578,9 @@ Tests are in `/pester/`:
Run tests: Run tests:
```powershell ```powershell
Invoke-Pester Install-Module -Name Pester -RequiredVersion 5.8.0 -Scope CurrentUser -Force -SkipPublisherCheck
Import-Module Pester -RequiredVersion 5.8.0 -Force
Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed -CI
``` ```
## Build Process ## Build Process
@@ -484,12 +605,11 @@ Outputs `winutil.ps1` in the root directory.
**Required**: **Required**:
- PowerShell 5.1+ - PowerShell 5.1+
- .NET Framework 4.5+ - .NET Framework 4.5+
- Windows 10 1809+ - Windows 11
**Optional (auto-installed)**: **Optional (auto-installed)**:
- WinGet (Windows Package Manager) - WinGet (Windows Package Manager)
- Chocolatey - Chocolatey
- oscdimg.exe (for MicroWin)
## Performance Considerations ## Performance Considerations
@@ -536,6 +656,7 @@ Outputs `winutil.ps1` in the root directory.
- [Contributing Guide](../../contributing/) - How to contribute code - [Contributing Guide](../../contributing/) - How to contribute code
- [User Guide](../../userguide/) - End-user documentation - [User Guide](../../userguide/) - End-user documentation
- [Win11 Creator Guide](../../userguide/win11creator/) - Building customized Windows 11 ISOs
- [FAQ](../../faq/) - Common questions - [FAQ](../../faq/) - Common questions
## Additional Resources ## Additional Resources
@@ -546,5 +667,5 @@ Outputs `winutil.ps1` in the root directory.
--- ---
**Last Updated**: January 2026 **Last Updated**: January 2026
**Maintainers**: Chris Titus Tech and contributors **Maintainers**: Chris Titus Tech and contributors
@@ -1,12 +1,14 @@
# Disable Legacy F8 Boot Recovery ---
title: "Legacy F8 Boot Recovery - Disable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=107}
"WPFFeatureEnableLegacyRecovery": { "WPFFeatureDisableLegacyRecovery": {
"Content": "Enable Legacy F8 Boot Recovery", "Content": "Legacy F8 Boot Recovery - Disable",
"Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", "Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a018_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
"bcdedit /set bootmenupolicy standard" "bcdedit /set bootmenupolicy standard"
@@ -1,12 +1,14 @@
# Enable Legacy F8 Boot Recovery ---
title: "Legacy F8 Boot Recovery - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=96}
"WPFFeatureEnableLegacyRecovery": { "WPFFeatureEnableLegacyRecovery": {
"Content": "Enable Legacy F8 Boot Recovery", "Content": "Legacy F8 Boot Recovery - Enable",
"Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", "Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a018_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
"bcdedit /set bootmenupolicy legacy" "bcdedit /set bootmenupolicy legacy"
@@ -1,12 +1,14 @@
# Enable Daily Registry Backup Task 12.30am ---
title: "Registry Backup (Daily Task 12:30am) - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=79}
"WPFFeatureRegBackup": { "WPFFeatureRegBackup": {
"Content": "Enable Daily Registry Backup Task 12.30am", "Content": "Registry Backup (Daily Task 12:30am) - Enable",
"Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.", "Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a017_",
"feature": [], "feature": [],
"InvokeScript": [ "InvokeScript": [
" "
@@ -1,12 +1,14 @@
# Windows Sandbox ---
title: "Windows Sandbox - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=118}
"WPFFeaturesSandbox": { "WPFFeaturesSandbox": {
"Content": "Windows Sandbox", "Content": "Windows Sandbox - Enable",
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.", "Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a021_",
"feature": [ "feature": [
"Containers-DisposableClientVM" "Containers-DisposableClientVM"
], ],
+6 -10
View File
@@ -1,11 +1,7 @@
### Features ---
title: "Features"
weight: 1
toc: false
---
- [All .Net Framework (2,3,4)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/dotnet.md) {{< autolinks section="dev/features/features" >}}
- [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
- [Enable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/EnableLegacyRecovery.md)
- [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
- [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
- [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
- [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
- [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
- [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
+8 -5
View File
@@ -1,14 +1,17 @@
# All .Net Framework (2,3,4) ---
title: ".NET Framework (Versions 2, 3, 4) - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=2}
"WPFFeaturesdotnet": { "WPFFeaturesdotnet": {
"Content": "All .Net Framework (2,3,4)", "Content": ".NET Framework (Versions 2, 3, 4) - Enable",
"Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.", "Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a010_",
"feature": [ "feature": [
"NetFx4-AdvSrvs", "NetFx4-AdvSrvs",
"NetFx3" "NetFx3"
], ],
"InvokeScript": [],
``` ```
+7 -8
View File
@@ -1,16 +1,15 @@
# HyperV Virtualization ---
title: "Hyper-V - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=24}
"WPFFeatureshyperv": { "WPFFeatureshyperv": {
"Content": "HyperV Virtualization", "Content": "Hyper-V - Enable",
"Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.", "Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a011_",
"feature": [ "feature": [
"Microsoft-Hyper-V-All" "Microsoft-Hyper-V-All"
], ],
"InvokeScript": [
"bcdedit /set hypervisorschedulertype classic"
],
``` ```
@@ -1,16 +1,19 @@
# Legacy Media (WMP, DirectPlay) ---
title: "Legacy Media Components (WMP, DirectPlay) - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=34}
"WPFFeatureslegacymedia": { "WPFFeatureslegacymedia": {
"Content": "Legacy Media (WMP, DirectPlay)", "Content": "Legacy Media Components (WMP, DirectPlay) - Enable",
"Description": "Enables legacy programs from previous versions of windows", "Description": "Enables legacy programs from previous versions of Windows.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a012_",
"feature": [ "feature": [
"WindowsMediaPlayer", "WindowsMediaPlayer",
"MediaPlayback", "MediaPlayback",
"DirectPlay", "DirectPlay",
"LegacyComponents" "LegacyComponents"
], ],
"InvokeScript": [],
``` ```
+7 -5
View File
@@ -1,12 +1,14 @@
# NFS - Network File System ---
title: "Network File System (NFS) - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=60}
"WPFFeaturenfs": { "WPFFeaturenfs": {
"Content": "NFS - Network File System", "Content": "Network File System (NFS) - Enable",
"Description": "Network File System (NFS) is a mechanism for storing files on a network.", "Description": "Network File System (NFS) is a mechanism for storing files on a network.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a014_",
"feature": [ "feature": [
"ServicesForNFS-ClientOnly", "ServicesForNFS-ClientOnly",
"ClientForNFS-Infrastructure", "ClientForNFS-Infrastructure",
+8 -5
View File
@@ -1,14 +1,17 @@
# Windows Subsystem for Linux ---
title: "Windows Subsystem for Linux (WSL) - Enable"
description: ""
---
```json ```json {filename="config/feature.json",linenos=inline,linenostart=48}
"WPFFeaturewsl": { "WPFFeaturewsl": {
"Content": "Windows Subsystem for Linux", "Content": "Windows Subsystem for Linux (WSL) - Enable",
"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.", "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.",
"category": "Features", "category": "Features",
"panel": "1", "panel": "1",
"Order": "a020_",
"feature": [ "feature": [
"VirtualMachinePlatform", "VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux" "Microsoft-Windows-Subsystem-Linux"
], ],
"InvokeScript": [],
``` ```
+7 -12
View File
@@ -1,16 +1,11 @@
# Set Up Autologin ---
title: "AutoLogon - Run"
description: ""
---
```json ```powershell {filename="functions/public/Invoke-WPFPanelAutologin.ps1",linenos=inline,linenostart=1}
function Invoke-WPFPanelAutologin { function Invoke-WPFPanelAutologin {
<# Invoke-WebRequest -Uri https://live.sysinternals.com/Autologon.exe -OutFile "$winutildir\autologin.exe"
Start-Process -FilePath "$winutildir\autologin.exe" -ArgumentList /accepteula
.SYNOPSIS
Enables autologin using Sysinternals Autologon.exe
#>
# Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
cmd /c "$env:temp\autologin.exe" /accepteula
} }
``` ```
@@ -1,141 +0,0 @@
# System Corruption Scan
```json
function Invoke-WPFSystemRepair {
<#
.SYNOPSIS
Checks for system corruption using Chkdsk, SFC, and DISM
.DESCRIPTION
1. Chkdsk - Fixes disk and filesystem corruption
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
#>
function Invoke-Chkdsk {
<#
.SYNOPSIS
Runs chkdsk on the system drive
.DESCRIPTION
Chkdsk /Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
#>
param(
[int]$parentProgressId = 0
)
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running chkdsk..." -PercentComplete 0
$oldpercent = 0
# 2>&1 redirects stdout, allowing iteration over the output
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
Write-Debug $_
# Regex to match the total percentage regardless of windows locale (it's always the second percentage in the status output)
if ($_ -match "%.*?(\d+)%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "chkdsk Completed" -PercentComplete 100 -Completed
}
function Invoke-SFC {
<#
.SYNOPSIS
Runs sfc on the system drive
.DESCRIPTION
SFC /ScanNow - Performs a scan of the system files and fixes any corruption
.NOTES
ErrorActionPreference is set locally within a script block & {...} to isolate their effects.
ErrorActionPreference suppresses false errors caused by sfc.exe output redirection.
A bug in SFC output buffering causes progress updates to appear in chunks when redirecting output
#>
param(
[int]$parentProgressId = 0
)
& {
$ErrorActionPreference = "SilentlyContinue"
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running SFC..." -PercentComplete 0
$oldpercent = 0
sfc.exe /scannow 2>&1 | ForEach-Object {
Write-Debug $_
if ($_ -ne "") {
# sfc.exe /scannow outputs unicode characters, so we directly remove null characters for optimization
$utf8line = $_ -replace "`0", ""
if ($utf8line -match "(\d+)\s*%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running SFC... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "SFC Completed" -PercentComplete 100 -Completed
}
}
function Invoke-DISM {
<#
.SYNOPSIS
Runs DISM on the system drive
.DESCRIPTION
DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
/Online - Fixes the currently running system image
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
/Restorehealth - Performs a scan of the image and fixes any corruption
#>
param(
[int]$parentProgressId = 0
)
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running DISM..." -PercentComplete 0
$oldpercent = 0
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
Write-Debug $_
# Filter for lines that contain a percentage that is greater than the previous one
if ($_ -match "(\d+)[.,]\d+%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
# Update the progress bar
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running DISM... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "DISM Completed" -PercentComplete 100 -Completed
}
try {
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
$childProgressBarActivity = "Scanning for corruption"
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 0
# Step 1: Run chkdsk to fix disk and filesystem corruption before proceeding with system file repairs
Invoke-Chkdsk
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 25
# Step 2: Run SFC to fix system file corruption and ensure DISM can operate correctly
Invoke-SFC
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 50
# Step 3: Run DISM to repair the system image, which SFC relies on for accurate repairs
Invoke-DISM
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 75
# Step 4: Run SFC again to ensure system files are repaired using the now-fixed system image
Invoke-SFC
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 100 -Completed
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
} catch {
Write-Error "An error occurred while repairing the system: $_"
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
} finally {
Write-Host "==> Finished System Repair"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
}
}
```
+26
View File
@@ -0,0 +1,26 @@
---
title: "System Corruption Scan - Run"
description: ""
---
```powershell {filename="functions/public/Invoke-WPFSystemRepair.ps1",linenos=inline,linenostart=1}
function Invoke-WPFSystemRepair {
<#
.SYNOPSIS
Checks for system corruption using SFC, and DISM
Checks for disk failure using Chkdsk
.DESCRIPTION
1. Chkdsk - Checks for disk errors, which can cause system file corruption and notifies of early disk failure
2. SFC - scans protected system files for corruption and fixes them
3. DISM - Repair a corrupted Windows operating system image
#>
Start-Process cmd.exe -ArgumentList "/c chkdsk /scan /perf" -NoNewWindow -Wait
Start-Process cmd.exe -ArgumentList "/c sfc /scannow" -NoNewWindow -Wait
Start-Process cmd.exe -ArgumentList "/c dism /online /cleanup-image /restorehealth" -NoNewWindow -Wait
Write-Host "==> Finished System Repair"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
}
```
@@ -0,0 +1,27 @@
---
title: "NTP Server - Enable"
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 "================================="
}
```
+8 -36
View File
@@ -1,40 +1,12 @@
# Reset Network ---
title: "Network - Reset"
description: ""
---
```json ```powershell {filename="functions/public/Invoke-WPFFixesNetwork.ps1",linenos=inline,linenostart=1}
function Invoke-WPFFixesNetwork { function Invoke-WPFFixesNetwork {
<# netsh winsock reset
netsh int ip reset
.SYNOPSIS Write-Host "Network Configuration has been Reset. Please restart your computer."
Resets various network configurations
#>
Write-Host "Resetting Network with netsh"
Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo"
# Reset WinSock catalog to a clean state
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
Set-WinUtilTaskbaritem -state "Normal" -value 0.35 -overlay "logo"
# Resets WinHTTP proxy setting to DIRECT
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
Set-WinUtilTaskbaritem -state "Normal" -value 0.7 -overlay "logo"
# Removes all user configured IP settings
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
Write-Host "Process complete. Please reboot your computer."
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Network Reset "
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "=========================================="
Write-Host "-- Network Configuration has been Reset --"
Write-Host "=========================================="
} }
``` ```
@@ -1,36 +0,0 @@
# Remove Adobe Creative Cloud
```json
function Invoke-WPFRunAdobeCCCleanerTool {
<#
.SYNOPSIS
It removes or fixes problem files and resolves permission issues in registry keys.
.DESCRIPTION
The Creative Cloud Cleaner tool is a utility for experienced users to clean up corrupted installations.
#>
[string]$url="https://swupmf.adobe.com/webfeed/CleanerTool/win/AdobeCreativeCloudCleanerTool.exe"
Write-Host "The Adobe Creative Cloud Cleaner tool is hosted at"
Write-Host "$url"
try {
# Don't show the progress because it will slow down the download speed
$ProgressPreference='SilentlyContinue'
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -UseBasicParsing -ErrorAction SilentlyContinue -Verbose
# Revert back the ProgressPreference variable to the default value since we got the file desired
$ProgressPreference='Continue'
Start-Process -FilePath "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Wait -ErrorAction SilentlyContinue -Verbose
} catch {
Write-Error $_.Exception.Message
} finally {
if (Test-Path -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe") {
Write-Host "Cleaning up..."
Remove-Item -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Verbose
}
}
}
```
+5 -3
View File
@@ -1,6 +1,9 @@
# Reset Windows Update ---
title: "Windows Update - Reset"
description: ""
---
```json ```powershell {filename="functions/public/Invoke-WPFFixesUpdate.ps1",linenos=inline,linenostart=1}
function Invoke-WPFFixesUpdate { function Invoke-WPFFixesUpdate {
<# <#
@@ -227,5 +230,4 @@ function Invoke-WPFFixesUpdate {
Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed
Write-Progress -Id 10 -Activity "Forcing discovery" -Completed Write-Progress -Id 10 -Activity "Forcing discovery" -Completed
} }
``` ```
+11 -8
View File
@@ -1,25 +1,28 @@
# WinGet Reinstall ---
title: "WinGet - Reinstall"
description: ""
---
```json ```powershell {filename="functions/public/Invoke-WPFFixesWinget.ps1",linenos=inline,linenostart=1}
function Invoke-WPFFixesWinget { function Invoke-WPFFixesWinget {
<# <#
.SYNOPSIS .SYNOPSIS
Fixes Winget by running choco install winget Fixes WinGet by running `choco install winget`
.DESCRIPTION .DESCRIPTION
BravoNorris for the fantastic idea of a button to reinstall winget BravoNorris for the fantastic idea of a button to reinstall WinGet
#> #>
# Install Choco if not already present # Install Choco if not already present
try { try {
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo" Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
Write-Host "==> Starting Winget Repair" Write-Host "==> Starting WinGet Repair"
Install-WinUtilWinget -Force Install-WinUtilWinget
} catch { } catch {
Write-Error "Failed to install winget: $_" Write-Error "Failed to install WinGet: $_"
Set-WinUtilTaskbaritem -state "Error" -overlay "warning" Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
} finally { } finally {
Write-Host "==> Finished Winget Repair" Write-Host "==> Finished WinGet Repair"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
} }
+6 -7
View File
@@ -1,8 +1,7 @@
### Fixes ---
title: "Fixes"
weight: 2
toc: false
---
- [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md) {{< autolinks section="dev/features/fixes" >}}
- [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
- [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
- [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
- [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
- [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
@@ -0,0 +1,16 @@
---
title: "Computer Management"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=182}
"WPFPanelComputer": {
"Content": "Computer Management",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"compmgmt.msc"
],
```
@@ -0,0 +1,16 @@
---
title: "Control Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=193}
"WPFPanelControl": {
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"control"
],
```
@@ -0,0 +1,16 @@
---
title: "Windows Defender Firewall"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=314}
"WPFPanelFirewall": {
"Content": "Windows Defender Firewall",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"firewall.cpl"
],
```
@@ -0,0 +1,16 @@
---
title: "Mouse Properties"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=204}
"WPFPanelMouse": {
"Content": "Mouse Properties",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"main.cpl"
],
```
@@ -0,0 +1,16 @@
---
title: "Network Connections"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=215}
"WPFPanelNetwork": {
"Content": "Network Connections",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"ncpa.cpl"
],
```
@@ -0,0 +1,16 @@
---
title: "Power Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=226}
"WPFPanelPower": {
"Content": "Power Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"powercfg.cpl"
],
```
@@ -0,0 +1,16 @@
---
title: "Printer Panel"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=237}
"WPFPanelPrinter": {
"Content": "Printer Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"Start-Process 'shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}'"
],
```
@@ -0,0 +1,16 @@
---
title: "Programs and Features"
description: ""
---
```json {filename="config/feature.json",linenos=inline,linenostart=248}
"WPFPanelPrograms": {
"Content": "Programs and Features",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"InvokeScript": [
"appwiz.cpl"
],
```

Some files were not shown because too many files have changed in this diff Show More