Releases: erikdarlingdata/PerformanceStudio
Nightly Build (1.10.0-nightly.20260506)
Automated nightly build from dev branch.
Version: 1.10.0-nightly.20260506
Commit: c90bff7
Built: 2026-05-06 07:04 UTC
These builds include the latest changes and may be unstable.
For production use, download the latest stable release.
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
v1.7.3
What's Changed
- Show deployed version on the web viewer by @erikdarlingdata in #257
- Release v1.7.3 — visible web viewer version by @erikdarlingdata in #258
Full Changelog: v1.7.2...v1.7.3
v1.7.2
What's Changed
- fix: XSS, DPAPI scope, rate-limiter eviction (bug-bash batch 1) by @erikdarlingdata in #249
- fix: bug-bash batch 2 — six small correctness/hygiene fixes by @erikdarlingdata in #250
- fix: SSMS extension uses a random temp filename by @erikdarlingdata in #251
- fix: atomic config writes (no more truncated JSON on crash) by @erikdarlingdata in #252
- fix: CLI --password-stdin + honor handler exit codes by @erikdarlingdata in #253
- Fix operator self-time through Compute Scalar children + one-decimal benefit % (#215 C5, C2) by @erikdarlingdata in #255
- Release v1.7.2 — operator self-time fix + decimal benefit % by @erikdarlingdata in #256
Full Changelog: v1.7.1...v1.7.2