microsoft / microsoft/PowerToys

Proposal: Add Visible Update Popup Screen for New Versions

Open
#45,888 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Area-User Interface Idea-Enhancement Needs-Triage Product-Settings
Dominant language
C
Stars
139k
Forks
8.6k
PR merge metrics
PR metrics pending

Description

### Description of the new feature / enhancement

# Implementation Plan: New Update Popup Screen

This plan outlines the design and implementation for a popup screen that notifies users when a new version of PowerToys is available.

## Goal
Replace or supplement the existing toast/settings-only notification with a more visible popup screen to ensure users are aware of important updates.

## Proposed Changes

### [Runner / Update Logic]
- **File**: `src/runner/UpdateUtils.cpp`
- **Change**: Modify `UpdateUtils` to trigger the new popup UI when an update is detected as "ready to install" or "available".
- **Logic**: Ensure the popup doesn't appear too frequently (e.g., once per version) and respects user settings for quiet hours or "do not disturb".

### [Settings UI / Design System]
- **File**: `src/settings-ui/Settings.UI/Views/UpdatePopupPage.xaml` [NEW]
- **File**: `src/settings-ui/Settings.UI/ViewModels/UpdatePopupViewModel.cs` [NEW]
- **Change**: Create a new WinUI 3 window/page for the update notification.
- **Design**:
- Clear "Update Available" header.
- Brief release notes or a link to them.
- "Update Now", "Download", and "Remind Me Later" buttons.
- Modern, glassmorphism-inspired aesthetic matching PowerToys' theme.

### [Localization]
- **File**: `src/settings-ui/Settings.UI/Strings/en-us/Resources.resw`
- **Change**: Add strings for "Update Now", "Remind Me Later", and the popup description.

## Verification Plan
1. **Manual Testing**:
- Mock a "new update available" state by modifying the version check logic locally.
- Verify the popup appears on runner start or during manual check.
- Test all buttons (Update Now, Remind Me Later).
- Ensure the UI looks premium and handles theme changes (Dark/Light).
2. **Automated Testing**:
- Add unit tests for the updated version comparison logic if changed.

### Scenario when this would be used?

### Scenario

As a regular PowerToys user, I rely on update notifications to stay current with new features, bug fixes, and security improvements. Currently, update notifications are primarily delivered via toast notifications or through the Settings page. However, toast notifications can be missed if the user is away from their system, focused on another task, or if Windows notifications are disabled or dismissed automatically.

This feature would be used in scenarios where:

- A major update with important fixes or new features is available.
- The user has previously missed or dismissed a toast notification.
- The update contains security or stability improvements that should be more visible.
- The user does not frequently open the Settings page to check for updates.

A more visible popup screen would ensure users are clearly informed about available updates without requiring them to manually check settings.

This improves awareness and ensures that users remain on supported and stable versions of PowerToys.

### Supporting information

### Supporting Information

- Toast notifications are transient and can be missed easily, especially during focused work sessions or when "Focus Assist" / quiet hours are enabled.
- Some users may disable system notifications entirely, making update awareness dependent on manually opening Settings.
- A controlled popup that appears once per version (and respects quiet hours or user preferences) would balance visibility with non-intrusiveness.
- Many modern applications (e.g., browsers and developer tools) use modal or semi-modal update prompts for important releases to ensure users are aware of critical updates.
- This proposal includes safeguards such as:
- Showing the popup only once per version.
- Respecting quiet hours and do-not-disturb settings.
- Allowing users to choose "Remind Me Later."

The goal is not to create intrusive behavior, but to improve update visibility in a user-friendly and consistent way aligned with modern application UX patterns.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading src/runner/UpdateUtils.cpp and the existing Settings UI update flow. Review the proposed UpdatePopupPage.xaml, UpdatePopupViewModel.cs, and en-us/Resources.resw changes, then follow the manual verification plan for update detection, buttons, themes, frequency limits, and quiet hours. Done means the popup appears appropriately and supports the specified actions and localization.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, csharp
Domain
desktop, frontend, internationalization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.