Skip to content

Migrate PSWindowsUpdate GUI to WinUI 3 - #2

Merged
neko-no-otoko merged 3 commits into
mainfrom
agent/native-wua-repository-cleanup
Jul 23, 2026
Merged

Migrate PSWindowsUpdate GUI to WinUI 3#2
neko-no-otoko merged 3 commits into
mainfrom
agent/native-wua-repository-cleanup

Conversation

@neko-no-otoko

@neko-no-otoko neko-no-otoko commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • migrate the complete desktop shell from WPF/.NET Framework 4.8 to WinUI 3 on .NET 10 and Windows App SDK 2.3.1
  • retain one elevated GUI/CLI executable with unpackaged, self-contained, single-file publishing
  • redesign History & Status with compact status cards, an inline typed history list, and exact-revision removal or rollback verification
  • add System, Light, and Dark themes, Mica, NavigationView, semantic resources, high-contrast fallback, and refreshed screenshots
  • replace WPF dispatcher and GAC PowerShell dependencies with a native STA COM worker and fixed Windows PowerShell 5.1 WinRM transport
  • update documentation, notices, locked dependencies, CI versioning, and 3.0.0-beta.1 release metadata

Safety and packaging

  • release builds continue to require administrator elevation
  • smoke builds use a separate UiSmoke configuration and a fake WUA adapter
  • Verify-Release.ps1 rejects a published EXE unless its embedded manifest has the production identity and requireAdministrator
  • no raw PowerShell, automatic reboot, or permanent update module/runtime installation is introduced

Validation

  • locked restore and Release x64 build: 0 warnings, 0 errors
  • 24/24 unit tests passed
  • production-assembly WinUI smoke captures passed in Dark/History and Light/Updates modes
  • formatting verification and git diff --check passed
  • single-file publish produced the EXE, SHA-256 checksum, SPDX SBOM, and third-party notices
  • embedded release manifest verified as elevated and free of the test-only smoke identity

@neko-no-otoko neko-no-otoko changed the title Align repository with native WUA architecture Migrate PSWindowsUpdate GUI to WinUI 3 Jul 23, 2026
@neko-no-otoko
neko-no-otoko marked this pull request as ready for review July 23, 2026 02:19

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 22e5786f6f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread build/Test-GuiSmoke.ps1
$errorLog = Join-Path (Split-Path -Parent $executable) 'ui-smoke-error.log'
if (-not (Test-Path -LiteralPath $executable)) { throw "GUI smoke harness was not built: $executable" }
if (Test-Path -LiteralPath $errorLog) { Remove-Item -LiteralPath $errorLog -Force }
& $dotnet build $project -c UiSmoke '-p:Platform=x64' '-p:UiSmokeBuild=true' "-p:OutputPath=$smokeRoot\" --no-restore

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Locate the smoke executable under the framework/RID output path

This script will fail before running either smoke scenario: passing -p:OutputPath=$smokeRoot\ to an SDK-style build does not suppress the default target-framework and runtime-identifier suffixes, and this project sets both net10.0-windows10.0.26100.0 and win-x64. The executable is therefore emitted below $smokeRoot\net10.0-windows10.0.26100.0\win-x64\, while the next check looks only for $smokeRoot\PSWindowsUpdateGUI.exe; every normal Build.ps1 run with tests enabled reaches that failing check.

Useful? React with 👍 / 👎.

Comment thread build/Test-GuiSmoke.ps1
@{ Theme = 'Light'; Page = 'updates'; Capture = $lightCapture }
)
foreach ($scenario in $scenarios) {
$process = Start-Process -FilePath $executable -ArgumentList @('--ui-smoke', '--theme', $scenario.Theme, '--page', $scenario.Page, '--capture', "`"$($scenario.Capture)`"") -PassThru -Wait

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bound each smoke scenario with a timeout

If WinUI initialization, activation, or screenshot capture deadlocks, Start-Process -Wait waits indefinitely and leaves CI/build invocations hung rather than reporting a failed smoke test. The previous harness had a 20-second deadline; retain an equivalent timeout and terminate the process so a broken GUI startup fails predictably.

Useful? React with 👍 / 👎.

@neko-no-otoko
neko-no-otoko merged commit 0dfddfc into main Jul 23, 2026
3 checks passed
@neko-no-otoko
neko-no-otoko deleted the agent/native-wua-repository-cleanup branch July 23, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant