Skip to content

Winnow v4.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 15:03
· 27 commits to master since this release
c3c372b

[4.4.0] - 2026-10-17

Added

  • "Disable AI features in Google Chrome" (-DisableChromeAI, category AI) sets Chrome's enterprise policies to block Gemini, AI Mode and its content and tab sharing, third-party AI chat in AI Mode, Help Me Write, AI history search, Tab Compare, Create Themes, DevTools AI, Talk to type, generative Autofill (including Find and Fill with Gemini), Chrome suggestions, and on-device AI model downloads. Each value was checked against Chromium's policy definitions: the policy that controls Find and Fill with Gemini is AutofillGenAiSettings, not the FindAndFillWithGeminiSettings name the upstream version uses (no such policy exists). Some policies only take effect from Chrome 150 or 151. Undo removes the policies.

Fixed

  • WinGet apps installed for a single user were never removed and were reported as failed. WinGet refuses to uninstall a user-scope package from an elevated context (0x8A15007D), and Winnow always runs elevated; the exit code was discarded, so the post-removal check just found the app still installed. Winnow now detects the refusal and schedules the uninstall to run at the next sign-in, in the user's own context: for the named or current user, or, for the default All users target, every existing profile plus the Default profile for accounts created later. Such apps are listed as deferred in the console summary, the run summary (AppRemoval.DeferredToNextSignIn) and the GUI completion panel instead of as failures. If scheduling fails for any profile the app is still reported as failed.
  • "Disable AI features in Microsoft Edge" left the Copilot icon in the Edge toolbar on current Edge. It relied on HubsSidebarEnabled, but since Edge 141 the toolbar icon is controlled only by Microsoft365CopilotChatIconEnabled. The feature now also sets that policy to 0 (and its undo removes it). Like most of the feature's policies, it applies to work or school (Entra ID) Edge profiles.
  • The download launcher (Get.ps1) rejected 19 parameters that Winnow.ps1 accepts, including -Preset, -DryRun, -Undo, -NoAutoRollback, -VerifyWatchdog, -EnableUpdateWatchdog, the extended modules (-EnablePerformanceTweaks, -EnableCompetitiveGaming and the rest) and the software/unattend options. The launcher only forwards what its own param block declares, and these were added to Winnow.ps1 without being mirrored. All are now forwarded, and a unit guard fails the build if the two param blocks ever disagree in name or type, or if a Winnow.ps1 parameter is neither a feature, a control parameter, nor a switch Winnow.ps1 handles itself (such a switch would be accepted and silently ignored).
  • -Undo and -SoftwareList now accept a comma-separated list when Winnow is started with powershell.exe -File. Under -File, PowerShell binds -Undo DisableTelemetry,DisableCopilot to a [string[]] parameter as the single value DisableTelemetry,DisableCopilot, so -Undo rejected it as one unknown feature and exited, and -SoftwareList passed the joined text to winget as one package id. The README's own -Undo example failed this way. Both lists are now split on commas, trimmed, and empty entries dropped; separate values passed under -Command work as before.
  • Applied-state reads compared binary (REG_BINARY) and multi-string (REG_MULTI_SZ) registry values as unordered sets, so a value holding the right elements in the wrong order counted as applied, and the GUI checkmark followed it. They now compare position by position.