Releases: erikdarlingdata/PerformanceStudio
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
v1.7.1
What's Changed
- Make release workflow reruns idempotent when release already exists by @erikdarlingdata in #246
- Render benefit % and actionable fix in all warning surfaces (v1.7.1) by @erikdarlingdata in #247
- Release v1.7.1 — render benefit % and actionable fix by @erikdarlingdata in #248
Full Changelog: v1.7.0...v1.7.1
v1.7.0
What's Changed
- Wait stats as warnings (#215, Joe feedback a1/b4/b5) by @erikdarlingdata in #244
- Release v1.7.0 — wait stats as warnings by @erikdarlingdata in #245
Full Changelog: v1.6.0...v1.7.0
v1.6.0 - Joe Obbish is a Good Guy
What's Changed
- Feature/query store group by changer by @rferraton in #218
- Remove unnecessary query_store_query_text joins in grouped fetches by @erikdarlingdata in #221
- Add built-in analytics to PlanShare and stats dashboard by @erikdarlingdata in #222
- Release: analytics for Plan Analyzer web app by @erikdarlingdata in #223
- Add wait stats benefit scoring (Stage 2) by @erikdarlingdata in #224
- implements #225 by @ClaudioESSilva in #226
- Merge dev to main by @erikdarlingdata in #227
- Wire up wait stats benefit in web plan viewer by @erikdarlingdata in #228
- Fix false positives from Joe's plan review feedback by @erikdarlingdata in #229
- Improve warning messaging from Joe's plan review by @erikdarlingdata in #230
- Add benefit scoring for parallel skew and key lookup NL join by @erikdarlingdata in #231
- Replace parallelism efficiency warnings with CPU:Elapsed ratio by @erikdarlingdata in #232
- Joe feedback b2, b3, b6, b7 from #215 by @erikdarlingdata in #235
- Joe feedback b1: Rule 34 — bare scan with narrow output by @erikdarlingdata in #236
- Merge dev to main — Joe #215 feedback through b1/b7 by @erikdarlingdata in #237
- Fix: Query Editor losing syntax highlighting on tab switch by @ClaudioESSilva in #234
- Polish PlanViewer toolbars, Query Store headers, and tab accent by @erikdarlingdata in #239
- Remove redundant System using in ServerConnection by @erikdarlingdata in #240
- Feature/query editor sql formater by @rferraton in #238
- Await ShowDialog in Format_Click (fix CS4014) by @erikdarlingdata in #241
- Bump version to 1.6.0 by @erikdarlingdata in #242
- Release v1.6.0 by @erikdarlingdata in #243
Full Changelog: v1.5.0...v1.6.0
v1.5.0
What's New
Maximum Benefit Scoring (#215)
Plan analysis findings now include a maximum benefit percentage — the estimated max % of elapsed time that could be saved by addressing each finding. Findings are sorted by benefit across all outputs, so the most impactful issues appear first.
This addresses the core feedback from issue #215: big, complex plans produce too much noise, and the Info/Warning/Critical severity can feel arbitrary. With benefit scoring, a key lookup taking 0.1% of elapsed time won't overshadow a scan consuming 90%.
How it works:
- Each finding's benefit is calculated from the operator's actual self-time relative to statement elapsed time
- For estimated plans, the optimizer's cost percentage is used as a fallback
- Findings without a quantifiable benefit (e.g., local variables, OPTIMIZE FOR UNKNOWN) remain visible but sort below quantified findings
Scored rules in this release:
- Filter Operator, Spill, Key Lookup, RID Lookup, Scan With Predicate, Non-SARGable Predicate, Scan Cardinality Misestimate, Eager Index Spool (operator self-time)
- UDF Execution (UDF elapsed time)
- Nested Loops High Executions (inner-side elapsed time)
- Ineffective Parallelism / Parallel Wait Bottleneck (parallelism efficiency gap)
- Serial Plan, Memory Grant, High Compile CPU (statement-level heuristics)
- Row Estimate Mismatch (harmed operator time)
Visible in:
- Desktop app Properties panel and tooltips
- CLI text output:
[Warning] Scan With Predicate (up to 87% benefit): ... - HTML export: benefit badge on each warning
- JSON API:
max_benefit_percentfield on each warning - Web app at performancestudio.dev
Other changes since v1.4.3
- Wait stats as cross-cutting analysis signal in PlanAnalyzer
- Inline wait type labels and expanded wait stats coverage
- Query classification in triage card
- HTTPS plan sharing API
- Issue #178 round 3 feedback (items 17-25)
This is Stage 1 of the benefit scoring system. Future stages will add wait stats benefit allocation, cardinality root-cause attribution, and actionable fix suggestions.
v1.4.3
What's Changed
- Add server name dropdown for saved connections by @erikdarlingdata in #203
- Bump version to 1.4.3 by @erikdarlingdata in #204
- Release v1.4.3 by @erikdarlingdata in #205
Full Changelog: v1.4.2...v1.4.3
v1.4.2 - SignPath Signing Party
Early Release
The main point of this release is to get the app out there with the production SignPath certificate. That means an end to all of the false flag malware/virus warnings that I've been dealing with on Windows.
What's Changed
- Expand Rule 3 NonParallelPlanReason coverage by @erikdarlingdata in #200
- Bump version to 1.4.2 by @erikdarlingdata in #201
- Release v1.4.2 by @erikdarlingdata in #202
Full Changelog: v1.4.1...v1.4.2
v1.4.1
What's Changed
- Add web-based plan analysis via Blazor WASM (#2) by @erikdarlingdata in #174
- Merge dev to main: web plan analysis (v1.5.0) by @erikdarlingdata in #175
- Web: Add operator properties panel (#176) by @erikdarlingdata in #177
- Gate XML MemoryGrantWarning at 1 GB threshold by @erikdarlingdata in #179
- Fix false positive warnings and UI improvements (#178) by @erikdarlingdata in #180
- Link header logo to erikdarling.com by @erikdarlingdata in #181
- Web UI refresh: font, header nav, footer by @erikdarlingdata in #184
- Address round 2 #178 feedback (items 13-16) by @erikdarlingdata in #185
- Add powered-by line on landing page by @erikdarlingdata in #186
- Add Darling Data favicon by @erikdarlingdata in #187
- Add Open Graph meta tags for social sharing by @erikdarlingdata in #188
- Clarify social share description by @erikdarlingdata in #189
- Add HTML export for plan analysis (#182) by @erikdarlingdata in #190
- Merge dev: HTML export for plan analysis (#182) by @erikdarlingdata in #191
- Fix Rule 3: CouldNotGenerateValidParallelPlan stays Warning by @erikdarlingdata in #192
- Expand Rule 3 to cover all NonParallelPlanReason values by @erikdarlingdata in #193
- Add plan sharing via server API (#182, Option A) by @erikdarlingdata in #195
- Merge dev: plan sharing and export (#182) by @erikdarlingdata in #196
- Switch to SignPath release-signing by @erikdarlingdata in #194
- Bump version to 1.4.1 by @erikdarlingdata in #198
- Release v1.4.1 by @erikdarlingdata in #199
Full Changelog: v1.4.0...v1.4.1