Michael Jolley
90d · built 2026-09-30
Performance
What Michael Jolley shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+0.2engineers
delivers like 1.2 (1.2x pre-AI)
Output (ETV)
7.8ETV
+3.6% vs 7.5 prior
Features share
37.9%
−13.8 pp vs prior window
Fixes share
7.2%
−9.3 pp vs prior window
Work mix
37.9% Features1.4% Maintenance50.3% Tests3.2% Docs7.2% Fixes
18 commits over 90 days, ending 2026-09-30.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 3.2ETV[CmdPal] Consolidate search ranking changes (#49832) ## What's going on The stacked pull requests are blocked by GitHub's stack merge flow. This gives the full remaining search ranking change set one PR against `main`. ## The plan - Consolidates the open work from #49190, #49191, #49194, #49195, #49197, #49246, #49247, and #49249. - Keeps the existing stack unchanged while this PR provides an alternate merge path. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5459b847-afeb-4163-a803-977759dd92df Copilot-Session: 49185697-186e-406f-b081-8c985c134274 Copilot-Session: 92905c83-2de6-449c-b4a1-a08003fe2576 Copilot-Session: efe987e5-9297-47fc-af99-2f49b057285a Copilot-Session: f42917e2-d298-4bde-9056-79a9e6e17dfagithub.com-microsoft-PowerToys · 888a1427 · 2026-08-12
- 0.8ETVFix dock clock: show seconds, fix stale display, a11y (#48253) Fixes the Command Palette Dock clock/date extension which showed time ~1 minute late and did not display seconds (unlike the taskbar clock). The problem was that `timeExtended` was hardcoded `false` in `NowDockBand.UpdateText()`. Fixed that by passing `true` to `TimeAndDateHelper.GetStringFormat()`, selecting the `"T"` (long time) format which includes seconds. Also, changed from using `PropertyChanged` on `Title` to using `RaiseItemsChanged` to mimic the behavior used for updating in the Performance Monitor extension. Fixes #46192 --------- Co-authored-by: root <root@io.bbq> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Hawk <hawk@example.com>github.com-microsoft-PowerToys · 9449ae36 · 2026-07-07
- 0.7ETVCmdPal Dock: keep per-monitor settings when monitors renumber or move ports (#50825) Dock settings keep landing on the wrong monitor, or disappearing, when Windows renumbers displays. The big one: the Pin to Dock dialog saved the target monitor by its GDI name (`\\.\DISPLAY2`) instead of the stable device path. Those configs sat around as orphans until the reconciler's legacy migration handed them to whichever monitor picked up that number next. - Pin to Dock now saves the monitor's `StableId`, same as every other code path. - The reconciler folds existing GDI orphans back into the monitor that owns that name today, deduping bands, so nobody has to re-pin. - New `EdidIdentity` builds a hardware ID from the EDID (manufacturer, product code, serial). `MonitorService` reads it through cfgmgr32 via CsWin32 and exposes it as `MonitorInfo.HardwareId`. - `DockMonitorConfig` gets an optional `MonitorHardwareId`. When a monitor's device path changes (new port, dock, or GPU), the reconciler matches on hardware ID instead. Device path is still the primary key. It's unique per connection, so identical twins never collide. EDID is only a fallback. The hardware match only fires when exactly one connected monitor and exactly one unmatched config share the ID. Monitors with no serial, or placeholder serials (0, 0x01010101, 0xFFFFFFFF), get a null ID and behave exactly like they do today. I'd rather miss a match than swap two docks. Fixes #50517 Fixes #49251 Fixes #49086 Copilot-Session: aed77fd3-7481-41eb-8af8-6f2bacc519fcgithub.com-microsoft-PowerToys · dd5ff685 · 2026-09-28
- 0.7ETVAdd a keyboard shortcut that reveals and focuses the dock (#50812) ## What's going on The dock is mouse-only today. Set it to auto-hide and it gets worse, because you have to remember which edge to shove the pointer at before you can click anything. Keyboard users had no way in at all. This change adds a Win+Alt+J default dock activation/focus binding. The dock must be enabled for this to apply, but if it is, the keybinding: - Makes visible a hidden dock and sets focus on the first button - Hitting the keybind when the dock is focused will hide a dock that should be hidden and gives focus back to the window you came from. Closes #45595 Closes #50540 --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c01c4df3-a6f1-422d-a063-c865cc9c2d2agithub.com-microsoft-PowerToys · 2bbc84c5 · 2026-09-28
- 0.4ETVCmdPal: Fix clipboard history details image previews (#50098) Clipboard History image previews were stuck in the small HeroImage slot making them hard to see. This PR aims to fix that, plus an improvement to copied text displaying Now: - Clipboard images are rendered through the existing local image provider using stable, item keyed cache files. - Those cached images are cleaned up after each history load - Clipboard text is also cleaned a bit to always stretch the full width and styled a little nicer. The image remains downscale only. Small clipboard images won’t be stretched just to fill the panel. Closes #41698 ## Show it to me? https://github.com/user-attachments/assets/ab670860-ed34-4f3c-807c-84da3564e468 --------- Copilot-Session: 027cd6d6-cbac-426d-a135-d87ee1391719github.com-microsoft-PowerToys · 0c35241b · 2026-09-19
- 0.4ETVCmdPal: Subscribe DetailsViewModel to PropChanged for live pane updates (#48070) ## Summary Fixes #47745 — the details pane now updates live when an extension modifies its `IDetails` properties (Title, Body, HeroImage, Metadata) after initial display. ## Changes ### `DetailsViewModel.cs` - Subscribe to `INotifyPropChanged` at construction (runtime check, since `IDetails` doesn't require it) - `Model_PropChanged` → `FetchProperty` with switch on Title, Body, HeroImage, Metadata - `RebuildMetadata` rebuilds the metadata list from the model - `UnsafeCleanup` unsubscribes from PropChanged ### `ListItemViewModel.cs` - Call `Details?.SafeCleanup()` before replacing the DetailsViewModel in `FetchProperty("Details")`, ensuring the old subscription is cleaned up. ### `DetailsViewModelTests.cs` (new) - 6 unit tests covering PropChanged subscription, property updates, metadata rebuild, cleanup/unsubscribe, and non-observable IDetails handling. --------- Co-authored-by: root <root@io.bbq> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-PowerToys · 0790674d · 2026-07-06
- 0.4ETVCmdPal: Fix Command Palette Dock breaking on monitor topology changes (#49814) Docking or undocking a laptop, or flipping display modes with Win+P, can leave the Dock empty, missing, or misconfigured. Fixes #48516. The root of it: the Dock's per-monitor config leans on a stable hardware ID for each monitor. Right after a `WM_DISPLAYCHANGE`, before Windows has settled the new topology, that lookup can come back empty or fall back to a volatile GDI name. The reconciler then reads that as "hey, a new monitor showed up" and creates a fresh, disabled, empty config for a monitor that never actually left. On top of that, a burst of `WM_DISPLAYCHANGE` messages during a mode switch each triggered an immediate write to settings, so one bad intermediate snapshot could get baked in permanently. And since only the Dock window itself was listening for `WM_DISPLAYCHANGE`, the Settings page's monitor list could go stale whenever no Dock window happened to be alive. ## The plan - Retry the stable-ID lookup a few times before giving up and falling back to the volatile name. - Debounce monitor-change handling so a flurry of `WM_DISPLAYCHANGE` events settles down before we reconcile and persist, instead of writing every half-finished intermediate state. - Have the main window forward `WM_DISPLAYCHANGE` too, so the monitor cache stays fresh even when the Dock is off or has no windows up. - Teach the reconciler to reassociate a secondary monitor's config with its new ID when there's exactly one unmatched monitor and one unmatched config, the Win+P round trip case, instead of treating it as new hardware. - Added tests covering the transient ID fallback, the ambiguous multi-monitor case, and the Win+P reassociation. Scaling behavior when the Dock lands on a monitor with a different DPI is a separate issue (#48466) and isn't touched here. --------- Copilot-Session: d2bc281b-062c-4e6e-9356-bdb7a2ef9e1egithub.com-microsoft-PowerToys · bcb2ed6d · 2026-08-14
- 0.3ETVCmdPal: Persist dock label visibility for new items (#50363) Fixes #50361. Newly added dock bands now carry pending title and subtitle visibility into the final settings merge while newer persisted settings still win for existing bands. Copilot-Session: 49aafe11-bd34-4e09-bc25-a0140d88afc5github.com-microsoft-PowerToys · a1ba8334 · 2026-09-03
- 0.3ETVCmdPal copies the primary dock layout to new monitors (#50810) A newly enabled dock on a secondary monitor currently gets empty bands. This "empty" state is confusing to users. This PR changes that behavior to copy the primary monitor's start, center, and end bands to any new (e.g. no settings saved for that) monitor on first enablement instead. The copied layout stays independent, and saved secondary layouts are left alone. Closes #50778 Copilot-Session: a08b4ce8-3a43-4358-b48a-54f304a3fad4github.com-microsoft-PowerToys · f7f0d32e · 2026-09-28
- 0.3ETV[CmdPal] Replace main-page magic-number scoring with a principled tiered ranker (#49189) >[!WARNING] > This PR is one in a series of PRs focused on rearchitecting the search/scoring logic of the `MainListPage`. An explanation of the entire search/scoring logic can be found below. > > **This PR should not be merged until PR #49190 is merged into it.** >[!NOTE] > To test the final result, run the branch associated with PR #49249. This stack rebuilds how Command Palette ranks and displays results on its main page. Strong text matches now consistently appear above weaker ones. Usage history and provider preferences can improve ordering between similarly relevant results, but they cannot push a poor match above an obvious one. The stack also makes search feel faster. Results appear without waiting for slower providers, app scoring runs more efficiently, and weak matches are hidden while the user has typed only one or two characters. Automated tests protect the new behavior, while privacy conscious telemetry measures performance and relevance without recording searches. ## Pull requests 1. [#49189](https://github.com/microsoft/PowerToys/pull/49189) introduces the new ranking foundation. Results are grouped by match strength, ensuring exact names, prefixes, and acronyms rank above loose fuzzy matches. 2. [#49190](https://github.com/microsoft/PowerToys/pull/49190) improves how Command Palette learns from command usage. Recent and frequently used commands receive a sensible boost, and that history now persists across restarts. 3. [#49191](https://github.com/microsoft/PowerToys/pull/49191) lets users give each provider a Lower, Normal, or Higher search preference. This preference helps resolve close matches without overriding result relevance. 4. [#49194](https://github.com/microsoft/PowerToys/pull/49194) makes the first set of results appear sooner. Commands and apps are shown immediately, while slower fallback results are added when they become available. 5. [#49195](https://github.com/microsoft/PowerToys/pull/49195) adds a comprehensive relevance test suite. It verifies that common searches return the expected results and protects ranking quality from future regressions. 6. [#49197](https://github.com/microsoft/PowerToys/pull/49197) adds privacy conscious search telemetry. It measures result counts, response time, and which result position was selected without recording search text, result names, paths, or other user content. 7. [#49246](https://github.com/microsoft/PowerToys/pull/49246) adds a performance measurement suite. It identifies where search time is spent and provides a reliable way to evaluate performance improvements. 8. [#49247](https://github.com/microsoft/PowerToys/pull/49247) delivers the main performance improvement. App results are scored in parallel and expensive work no longer blocks rendering, while the final result order remains unchanged. 9. [#49249](https://github.com/microsoft/PowerToys/pull/49249) prevents misleading results from flashing when a search begins. For one or two character searches, weak fuzzy app matches remain hidden until the query is specific enough to produce useful results. > [!WARNING] > These PRs should be merged in LIFO order starting with #49249 with this PR being the last. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>github.com-microsoft-PowerToys · f2034838 · 2026-08-06