Skip to content

Conversation

@noraa-junker
Copy link
Collaborator

@noraa-junker noraa-junker commented Nov 19, 2025

Summary of the Pull Request

Changes

  • [PowerToys.Update] Ported PowerToys.update.exe to C#
  • [Runner] Ported PowerToys.exe to C#
  • [Runner] Removed ModuleInterface projects and consolidate everything in the Runner
  • [Runner] Logging of all module interfaces is now centralized in the Runner log file and no longer scattered around all modules
  • [Runner] All modules (except run and command palette) now use shortcuts via the keyboard hook and no shortcuts, as shortcuts was very error prone
  • [Advanced Paste] Use Two way pipe instead of own pipe system
  • [Advanced Paste] Changed AdditionalAction pipe command to use id rather then text
  • [CsProj files] Use GpoWrapperProjection instead of GpoWrapper cswinrt generation
  • [Settings] Added implicit converstion from HotkeySettings to HotkeyEx
  • [ManagedCommon] Moved HotkeySettingsControlHook and NativeKeyboardHelper to ManagedCommon from PowerToys.Settings
  • [ManagedCommon] Calling Logger.InitializeLogger now clears all previous listeners
  • [Environment Variables] Launched instances are no longer bound to the runner and also do not terminate if the module gets disabled
  • [Hosts] Launched instances are no longer bound to the runner and also do not terminate if the module gets disabled
  • [Registry Preview] Launched instances are no longer bound to the runner and also do not terminate if the module gets disabled
  • [File Explorer add-ons] Renamed solution folder from "previewpane" to "File Explorer"
  • [Project template] Removed project template as its no longer needed
  • [File Explorer-Add ons] Removed all cpp-projects in favor of a new one "FileExplorerDllExporter"
  • [SettingsAPI] Removed legacy PowerToysSettings::Settings class
  • [ApplicationUpdate] Removed
  • [Version] Removed
  • [Version] Moved part of version.h to utils
  • [Version] Moved generation of Generated Files\version_gen.h to Cpp.build.props
  • [ComUtils] Removed
  • [Notifications] Moved notifications::disable_toast() to c# into the runner to the new NotificationHelper class
  • [PowerToys.interop] Moved part of utils/package.h here and added Package class.
  • [PowerToys.interop] Added several classes containing functions of previous runner
  • [PowerDisplay] Use ManagedCommon implementation of pipe communication instead of custom one.
  • [Tray icon] Hide quick access option when quick access menu is deactivated.

Ported

Functionalities

  • Data diagnostics
  • Update capabilities
  • Hotkeys
  • Keyboard hooks
  • Hotkey conflict detection
  • Tray icon
  • Settings handling
  • Elevation support (Todo: Restart as non-elevated)
  • Logging
  • Telemetry
  • Auto start
  • All protocol functionalities
  • Setting window/Flyout
  • Bug report tool launcher
  • Custom actions
  • Fix flyout (Settings Flyout improvement #43840)
  • Showing Notifications
  • AI Detection

Modules

  • Advanced Paste
  • Awake
  • Always on Top
  • Color Picker
  • CmdNotFound
  • Command Palette
  • Crop and Lock
  • Cursor Wrap
  • Environment Variables
  • FancyZones
  • File Explorer Add-ons
  • File Locksmith
  • Find my mouse
  • Hosts file editor
  • Image Resizer
  • Light Switch
  • Keyboard Manager
  • Mouse Highlighter
  • Mouse Jump
  • Mouse Pointer Crosshairs
  • Mouse Without Borders
  • New+
  • Peek
  • PowerDisplay
  • PowerRename
  • PowerToys Run
  • QuickAccent
  • Registry Preview
  • Screen Ruler
  • Shortcut Guide
  • Text Extractor
  • Workspaces
  • ZoomIt

PR Checklist

  • Communication: I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected
  • Tests: Added/updated and all pass
  • Localization: All end-user-facing strings can be localized
  • Dev docs: Added/updated
  • New binaries: Added on the required places

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

@noraa-junker noraa-junker requested a review from a team as a code owner November 19, 2025 16:44
Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

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

check-spelling found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@noraa-junker noraa-junker marked this pull request as draft November 19, 2025 16:45
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

@check-spelling-bot Report

🔴 Please review

See the 📂 files view, the 📜action log, or 📝 job summary for details.

Unrecognized words (41)
Argment
atleast
CCDCLCSWRPWPDTLOCRSDRCWDWO
CCLCSWLOCRRC
CCLCSWRPWPDTLOCRRC
CSHREDRAW
CSVREDRAW
CWUSEDEFAULT
DISPLAYNAME
EXAMPLEPOWERTOY
HBalloon
IDCARROW
INSTALLERFILENAME
IPREVIEWHANDLERCLSID
ITHUMBNAILPROVIDERCLSID
itsself
lpdata
Mdd
mentain
NIMADD
NIMDELETE
notifyicondata
occured
pmac
RPWPDTLO
Scheudle
scheudled
SCMANAGERALLACCESS
SERVICEALLACCESS
statisfied
succeded
Supress
Thereadditional
TOKENQUERY
ucf
UPDATENOWLAUNCHSTAGE
Updatings
USERINSTALLERFILENAME
UTimeout
WSOVERLAPPEDWINDOW
WSPOPUP
These words are not needed and should be removed Bitmaps BLACKFRAME BUILDNUMBER CMDNOTFOUNDMODULEINTERFACE CONFIGW displayname Dlg dwl DWORDLONG examplepowertoy explr FILEEXPLORER HDEVNOTIFY HIDEREADONLY LIBID LOGFONT LONGNAMES LPCFHOOKPROC LPQUERY LPTR MSIDXS MSIDXSPROP NOTIFYICONDATA OSVERSIONINFOEX osvi POWERDISPLAYMODULEINTERFACE POWERTOYNAME prevpane projectname Propset prvpane REGISTRYPREVIEWEXT ROWSETEXT safeprojectname settingsheader sttngs templatenamespace uncompilable vstemplate WCT WHEREID WIL WINTHRESHOLD

Some files were automatically ignored 🙈

These sample patterns would exclude them:

^src/modules/powerrename/unittests/testdata/avif_test\.avif$
^src/modules/powerrename/unittests/testdata/heif_test\.heic$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct, update file exclusions, and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository
on the feature/runner-v2 branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/21683777055/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings ❌ (3)

See the 📂 files view, the 📜action log, or 📝 job summary for details.

❌ Errors and Warnings Count
❌ check-file-path 1
⚠️ ignored-expect-variant 26
⚠️ large-file 2

See ❌ Event descriptions for more information.

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

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