Files
PowerToys/src
Niels Laute becc96f59c [Settings] Improve update-notification UX (#49872)
## Summary of the Pull Request

Refreshes the Settings update experience with a shared update
coordinator, consistent state badges, and a compact floating status
surface available across pages. The surface supports checking, update
available, downloading, ready to install, network failure, and download
failure states; it can be dismissed and reopens when users return to
General while attention is still needed.



https://github.com/user-attachments/assets/7b1a7266-efc3-4b6f-9bea-1d25a032ead6


## PR Checklist

- [ ] Closes: N/A
- [x] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: N/A

## Detailed Description of the Pull Request / Additional comments

- Centralizes persisted and transient update state in a shared
`UpdateViewModel` used by Dashboard, General, navigation, and the
floating surface.
- Adds reusable status, activity, and badge controls with stable layout,
dismissal/reopen behavior, in-app What's New navigation, and retry-safe
single-flight update actions.
- Keeps the existing General update glyph while adding an adjacent state
badge.
- Adds Debug-only controls for previewing every updater state and
running the complete state flow without affecting production
screenshots.
- Adds focused coverage for state mapping, activity visibility,
IPC/launch failures, transient operation recovery, and duplicate
installer-launch prevention.

## Validation Steps Performed

- Built `Settings.UI` for x64 Debug.
- Built `Settings.UI.UnitTests` for x64 Debug.
- Ran focused `ViewModelTests.Update` and `ViewModelTests.General` tests
with `vstest.console.exe`: 39 passed.
- Exercised the Debug updater flow across all states and verified that a
dismissed notification reopens after navigating back to General.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 120899e5-fc77-425e-918b-644929b65739
Copilot-Session: 7da8be2f-1f73-48e9-8ae9-aa2448f2a5e3
2026-08-14 08:56:38 +08:00
..

PowerToys Source Code

Code organization

The PowerToys are split into DLLs for each PowerToy module (modules folder), and an executable (runner folder) that loads and manages those DLLs.

The settings window is a separate executable, contained in settings-ui folder. It utilizes a WebView to display an HTML-based settings window.

The common contains code for a static library with helper functions, used by both the runner and the PowerToys modules.