mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-05-18 05:05:25 +02:00
When an update is available (readyToDownload or readyToInstall), the tray icon switches to a badged variant with an orange dot. Works for both default mode (color icon.ico) and theme-adaptive mode (light/dark variants). Closes: #19222 Closes: #25497 ## Changes ### Tray icon update badge - Add 3 badged icon variants - Extend get_icon() to select badged variant based on update_available state - Add set_tray_icon_update_available() for runtime icon switching - Hook into UpdateUtils.cpp state transitions via dispatch_run_on_main_ui_thread - Check UpdateState at startup to show badge immediately if update pending - Add 'Update available' context menu item at top of tray menu when active ### Fix: update icons not deployed (bug fix) - Add APPICON_UPDATE icon resource to runner.base.rc (iconUpdate.ico was missing) - Add CopyFileToFolders entries for iconUpdate.ico, PowerToysDarkUpdate.ico, and PowerToysWhiteUpdate.ico in runner.vcxproj - Add all update icon files to installer Core.wxs so they ship in releases ### UX improvements - 'Update available' tray menu item now navigates to General page (Overview) instead of opening Settings to Dashboard - Update InfoBar severity changed from Success/Informational to Warning across GeneralPage, LaunchPage, and CheckUpdateControl - Dashboard update badge gradient and icon refreshed (orange theme, exclamation glyph) - AccentButtonStyle applied to 'Install Now' button - Fixed casing: 'Update Available' to 'Update available' - Added UpdateAvailableInfoBar.Title resource string - Add orange update dot to the General navview item ### Screenshots Before: <img width="146" height="78" alt="image" src="https://github.com/user-attachments/assets/c80b8b5f-da94-4cba-92c9-3fcca685653c" /> After: <img width="184" height="104" alt="image" src="https://github.com/user-attachments/assets/13fc6b34-6e2a-4060-a2f7-f0b6b0d15363" /> <img width="150" height="84" alt="image" src="https://github.com/user-attachments/assets/2673239c-8ce3-437b-947a-1d66803a87ec" /> <img width="150" height="100" alt="image" src="https://github.com/user-attachments/assets/c321deda-770d-47ff-9600-c395f466d444" /> <img width="189" height="104" alt="image" src="https://github.com/user-attachments/assets/2c56d1b7-6615-4d85-80b9-a1cee6413b75" /> <img width="473" height="218" alt="image" src="https://github.com/user-attachments/assets/b0fb59ed-f8bd-40a0-aefd-816a71fc231f" /> <img width="1048" height="288" alt="image" src="https://github.com/user-attachments/assets/29d34e01-f6a9-46c3-a56e-2c50a07718a1" /> <img width="206" height="155" alt="image" src="https://github.com/user-attachments/assets/80e9f77e-aae5-429a-b6be-f0e9f296e929" /> <img width="434" height="163" alt="image" src="https://github.com/user-attachments/assets/7c9d6cd5-fdaa-4b70-a2c0-cff87f5fcf1c" /> <img width="379" height="270" alt="image" src="https://github.com/user-attachments/assets/03e0f60d-a901-45e7-a03a-18be28ec87ed" /> ## How to test Since local dev builds use version `0.0.1` which blocks update checks, you need to temporarily fake an older version: 1. In `src/Version.props`, change `<Version>0.0.1</Version>` to `<Version>0.87.0</Version>` 2. Optionally, in `src/runner/UpdateUtils.cpp`, change both interval constants to `1` (minute) for faster testing: ```cpp constexpr int64_t UPDATE_CHECK_INTERVAL_MINUTES = 1; constexpr int64_t UPDATE_CHECK_AFTER_FAILED_INTERVAL_MINUTES = 1; ``` 3. Build and run the runner 4. Within ~1 minute (with the interval change) or after clicking 'Check for updates' in Settings > General, the runner will query GitHub and find a newer version ### Verify - [ ] Tray icon changes to the update variant (badged with orange dot) - [ ] Right-clicking the tray icon shows 'Update available' at the top of the context menu - [ ] Clicking 'Update available' opens Settings directly to the General page - [ ] Settings General page shows the update InfoBar with Warning severity - [ ] Dashboard shows the update badge with orange gradient and exclamation icon - [ ] Quick Access flyout shows update InfoBar with Warning severity **Remember to revert Version.props and UpdateUtils.cpp before committing!** --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
PowerToys installer instructions
Please go to https://github.com/microsoft/PowerToys/tree/main/doc/devdocs#compile-the-installer for instructions