Releases: erikdarlingdata/PerformanceStudio
v1.11.2
What's Changed
- Build SSMS extension VSIX in release workflow + bump to 1.11.1 (#343) by @erikdarlingdata in #344
- Release v1.11.1 by @erikdarlingdata in #345
- Fix SSMS VSIX release step + bump to 1.11.2 (#343) by @erikdarlingdata in #346
- Release v1.11.2 by @erikdarlingdata in #347
Full Changelog: v1.11.0...v1.11.2
Nightly Build (1.11.2-nightly.20260523)
Automated nightly build from dev branch.
Version: 1.11.2-nightly.20260523
Commit: 06dc723
Built: 2026-05-23 07:03 UTC
These builds include the latest changes and may be unstable.
For production use, download the latest stable release.
v1.11.0 - Taco Tuesday
As Always
A very special thank you to everyone who submits issues and contributes code. In this release, @rferraton and @ClaudioESSilva got some pretty cool new stuff in. The full change log is below, but the Query Store integration is quickly becoming the star of the show in a lot of ways. It's almost like a self-contained monitoring tool at this point.
There's a web version of the plan analysis portion of the app too. This is useful for people who want to give things a test drive, or who can't download an executable. The plan analysis is all client-side. You completely control whether and when the plan gets uploaded for sharing, and how long it remains available for. I have no interest in your XML unless you're paying me.
What's Changed
- Bump workflow actions to Node 24 versions by @erikdarlingdata in #310
- Feature/multi query stores dashboard overview by @rferraton in #311
- QS Overview review followups, brand sweep, version unification by @erikdarlingdata in #315
- Silence AVLN3001 warnings via NoWarn by @erikdarlingdata in #316
- Speed up CI with NuGet cache + solution-wide build by @erikdarlingdata in #317
- Try ubuntu-latest for CI (experiment) by @erikdarlingdata in #319
- Skip CI on non-build changes via paths-ignore by @erikdarlingdata in #318
- feature - Improve navigation by @ClaudioESSilva in #323
- Allow filter by "execution_type_desc" on Query Store screen by @ClaudioESSilva in #321
- Remove dead FetchHistoryAsync and FetchHistoryByHashAsync by @erikdarlingdata in #324
- Drop redundant TRY_CONVERT wrapper that broke compat <110 databases by @erikdarlingdata in #326
- Expose execution_type_desc filter to CLI and MCP by @erikdarlingdata in #325
- Split PlanViewerControl.axaml.cs into partial classes by @erikdarlingdata in #327
- Split QuerySessionControl.axaml.cs into partial classes by @erikdarlingdata in #328
- Split PlanAnalyzer.cs into partial classes by @erikdarlingdata in #329
- Split QueryStoreGridControl.axaml.cs into partial classes by @erikdarlingdata in #330
- Split ShowPlanParser.cs into partial classes by @erikdarlingdata in #331
- Split QueryStoreService.cs into partial classes by @erikdarlingdata in #332
- Split MainWindow.axaml.cs into partial classes by @erikdarlingdata in #333
- Split AdviceContentBuilder.cs into partial classes by @erikdarlingdata in #334
- Fix two post-split UX issues (schema lookup on Run Repro, toolbar overflow) by @erikdarlingdata in #335
- Add proxy support for "Check for Updates" (#314) by @erikdarlingdata in #337
- Upgrade to .NET 10 and refresh NuGet packages by @erikdarlingdata in #338
- Query history improvments by @rferraton in #336
- Clean up two warnings from PR #336 by @erikdarlingdata in #339
- Bump to 1.11.0 and fix workflows broken by version unification by @erikdarlingdata in #340
- Fix check-version bootstrap for v1.11.0 release by @erikdarlingdata in #342
- Release v1.11.0 by @erikdarlingdata in #341
Full Changelog: v1.10.0...v1.11.0
v1.10.0 - Pants Are Important
v1.10.0
The ongoing work to make this simpler to add rules/information about things in plans will eventually allow users to extend things to deal gracefully with local issues. Right now I'm not sure how it will go. For informational bits like wait stats, it's very easy. For arbitrarily complex rules, it's a bit harder to jam those into a json config file that can be interpreted correctly and consistently.
Anyway, as always, thank you to my valuable contributors of code, and Joe Obbish for the high quality feedback.
If you have any questions, comments, concerns, ideas, or you'd like to support this project, head over here.
New features
- Connect with
ApplicationIntent=ReadOnly— the connection dialog now lets you opt into read-only routing, useful for AG secondary replicas. (#302) - Wait stats config is now the single source of truth — wait categories, weights, and benefit scoring are driven from
Resources/WaitStats.jsoninstead of being scattered across services. (#215 part 1 in #296, part 2 in #300)
UX changes
- Default grid grouping is now
Query Hashinstead ofNone, and the first row no longer auto-expands when results load. Faster to scan plans by hash without a click. (#305) - Connection dialog polish — tighter test-status row spacing and follow-up cleanup. (#299, #303)
Fixes
- Rule 38 (MAXDOP advice) now respects an explicit
MAXDOP 2hint — the rule no longer fires when the query is already pinned to MAXDOP 2. (#304) - MFA auth error text is readable — the connection-test status text now wraps/displays correctly when the server returns an MFA-related error. Thanks @ClaudioESSilva! (#298, fixes #297)
Internal / chore
- Removed unused
ExpandRowRecursiveafter the GroupBy default change. (#306) - Added
.gitattributesand ran a one-time line-ending normalization (LF for source/config; CRLF for.ps1/.psm1/.psd1/.cmd/.bat). Eliminates phantom CRLF diffs on Windows. (#307) - Bumped
PlanViewer.Appversion 1.9.0 → 1.10.0. (#308)
Downloads
PerformanceStudio-win-x64.zip(signed)PerformanceStudio-linux-x64.zipPerformanceStudio-osx-x64.zip(.appbundle)PerformanceStudio-osx-arm64.zip(.appbundle)- Velopack delta on the
winchannel for in-app updates SHA256SUMS.txtfor verification
Full diff: v1.9.0...v1.10.0
Contributors
- @ClaudioESSilva — MFA auth status text fix (#298)
- @rferraton — Query Hash grouping (#305)
v1.9.0
What's Changed
- Bump dependencies and clean up source warnings by @erikdarlingdata in #277
- Migrate xunit to v3 by @erikdarlingdata in #278
- Bump SqlClient 6 -> 7 and ScriptDom 170 -> 180 by @erikdarlingdata in #279
- Migrate System.CommandLine beta4 -> 2.0.7 GA by @erikdarlingdata in #280
- Drop redundant using in CLI command files by @erikdarlingdata in #281
- Add rule 38 for standard edition limitation on batch mode when dop=2 by @rferraton in #275
- Feature/minimap by @rferraton in #276
- Restore 4-space indentation in MainWindow.axaml.cs by @erikdarlingdata in #282
- Format Options dialog: PascalCase split + suppress spurious dirty state by @erikdarlingdata in #284
- Fix #283: columnstore icon routing + Parallelism subtype overlay by @erikdarlingdata in #285
- Fix #286: Query Store query_id filter excludes target before applying by @erikdarlingdata in #287
- Parallelism subtype icons (Repartition / Distribute / Gather Streams) by @erikdarlingdata in #288
- Features/colored links by @rferraton in #289
- Update README: minimap, colored links, and Query History features by @rferraton in #291
- Bump version to 1.9.0 by @erikdarlingdata in #293
- Release: dev -> main by @erikdarlingdata in #292
Full Changelog: v1.8.0...v1.9.0
v1.8.0
What's Changed
- Runtime card refinements (#215 E7-E11) by @erikdarlingdata in #270
- Collapsible Wait Stats section (#215 E12) by @erikdarlingdata in #271
- Cursor-aware rules (#215 E1, E2, E3) by @erikdarlingdata in #272
- Estimated plan info on Runtime card (#215 E4, E5, E6) by @erikdarlingdata in #273
- Release v1.8.0 — Joe feedback E1-E12 batch by @erikdarlingdata in #274
Full Changelog: v1.7.8...v1.8.0
v1.7.8
What's Changed
- Batch-mode subtree elapsed sums when computing parent self-time (#215 D1) by @erikdarlingdata in #268
- Release v1.7.8 — batch-mode pipelined self-time (#215 D1) by @erikdarlingdata in #269
Full Changelog: v1.7.7...v1.7.8
v1.7.7
What's Changed
- Strip AI-drafted wait stat content + legacy marker + drop Rule 21 (#215 D3) by @erikdarlingdata in #266
- Release v1.7.7 — D3 content strip + legacy marker + drop Rule 21 by @erikdarlingdata in #267
Full Changelog: v1.7.6...v1.7.7
v1.7.6
What's Changed
- Loosen memory grant colors + compile time as plan-level property (#215 C1, C4) by @erikdarlingdata in #261
- C8 expensive-operator rule + C9 columnstore on wide bare scans (#215) by @erikdarlingdata in #263
- Release v1.7.6 — C1 memory color + C4 compile time + C8 expensive-op + C9 columnstore by @erikdarlingdata in #264
Full Changelog: v1.7.4...v1.7.6
v1.7.4
What's Changed
- External/preemptive wait benefit formula + CPU:Elapsed adjustment (#215 C6, C7) by @erikdarlingdata in #259
- Release v1.7.4 — external-wait formula + CPU:Elapsed adjustment by @erikdarlingdata in #260
Full Changelog: v1.7.3...v1.7.4