Skip to content

Release v1.1.0#78

Merged
erikdarlingdata merged 9 commits intomainfrom
dev
Mar 10, 2026
Merged

Release v1.1.0#78
erikdarlingdata merged 9 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Owner

Summary

Release v1.1.0 — significant UX improvements, new features, and bug fixes.

New Features

Improvements

  • Advice for Humans UX polish — operator grouping, wait stat bars, impact colors, margin standardization (Continue styling Advice for Humans window #48)
  • Memory grant formatting — KB/MB/GB instead of raw KB (Display memory grants in MB/GB in runtime summary #68)
  • Plan viewer — edge tooltips, context menu, ManyToMany join detection, DOP-aware parallelism rules
  • New analyzer rules — batch mode sort, table variables, Top N Sort, key lookup severity
  • Exchange operator timing — fixed elapsed time calculation
  • Cancel button — inline loading tabs for plan capture, Escape shortcut

Bug Fixes

🤖 Generated with Claude Code

erikdarlingdata and others added 9 commits March 9, 2026 16:32
…ort, key lookup severity (#65)

- Batch mode sort skew: downgrade to Info with "by design" note (unless feeding Window Aggregate)
- Root node tooltip now includes statement-level PlanWarnings (e.g., Optimize For Unknown)
- OPTIMIZE FOR UNKNOWN: distinguish from OPTION(RECOMPILE) in parameter annotations
- Key Lookup with predicate: upgrade from Warning to Critical
- Table variable: add statement-level warnings for stats + modification serial execution (Critical)
- Top N Sort: parse <TopSort> XML element, set LogicalOp to "Top N Sort"
- Rule 24: broaden to any Top/Top N Sort above scan (Critical when on NL inner side)
- Fix IsOrExpansionChain to match normalized "Top N Sort" LogicalOp
- Update Rule 22 test for new statement-level warnings

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…P-aware parallelism rules (#66)

- Edge connector tooltips now match SSMS with all 5 fields (actual rows,
  estimated per-execution, estimated all-executions, row size, data size)
- Right-click context menu on plan canvas (zoom, advice, repro, save)
- Fixed context menu to use ScrollViewer (Canvas has no hit-test background)
- Merge joins always show Many to Many: Yes/No in tooltip
- LayoutTransformControl for proper zoom+scroll behavior
- Fit zoom scrolls to origin so plan root is immediately visible
- Rules 25/31 now use DOP-aware efficiency scoring:
  efficiency = (CPU/Elapsed - 1) / (DOP - 1) * 100
  instead of simple CPU/Elapsed ratio

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…#70)

* Operator grouping, margin standardization, and elapsed time visibility

- Group operator name + timing + CPU bar + stats (rows/reads) in a single
  container with purple left accent border for clear visual association (#14)
- Standardize left margins to three tiers: 8px labels, 12px content, 20px
  nested detail — eliminates ragged left edge (#15)
- Use ValueBrush for both CPU and elapsed timing values instead of dimming
  elapsed with MutedBrush (#16)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add proportional bars to wait stats in Advice for Humans

Collect all wait stat lines in a group, find the global max, then render
each with a colored bar scaled proportionally. Bar color matches wait
category (orange=CPU/parallelism, red=I/O/locks, purple=memory, blue=network).

Closes #48 item 7.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Triage card headline hierarchy — first item 13px semi-bold

The most significant finding in each triage card (parallel efficiency,
memory grant, etc.) now renders at 13px semi-bold to establish visual
hierarchy over the remaining 12px normal-weight items.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Color-code missing index impact percentage by severity

Impact line (e.g., "dbo.Posts (impact: 95%)") now renders table name in
white and impact in color: red ≥70%, amber ≥40%, blue <40%.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Memory grant contextual color in triage card

Color by utilization: red <10% used, amber 10-49%, blue ≥50%.
Previously was binary amber/blue at 10% threshold.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Builds dev branch daily at 6AM UTC for all 4 platforms (win-x64,
linux-x64, osx-x64, osx-arm64) with macOS .app bundling. Skips
if no commits in last 24 hours. Creates rolling "nightly" prerelease
tag with checksums. Can also be triggered manually.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Thread analysis data to ShowAdviceWindow so triage cards and other
structured features have access to parsed statement results.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Filter out thread 0 (coordinator) from skew calculation since it
typically processes 0 rows in parallel operators, inflating the thread
count. Raise the DOP 2 threshold from 75% to 80% — a 53/47 split is
perfectly normal with only 2 worker threads.

Fixes #73.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- New AppSettingsService persists recent plans (last 10) and open session
  state to JSON in %LOCALAPPDATA%/PerformanceStudio/appsettings.json
- File > Recent Plans submenu with clear option; gracefully handles
  moved/deleted files by removing them and notifying the user
- On close, saves all open file-based plan tab paths; on next launch,
  restores them (falls back to a fresh query tab if none restored)
- Only file-based plans are tracked (not clipboard paste or Query Store)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add FormatMemoryGrantKB helper to TextFormatter that picks the most readable
unit: KB under 1024, MB with 1 decimal up to 1 GB, GB with 2 decimals above.
Applied in both the text output and the runtime summary pane.

Closes #68

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit bb25d7f into main Mar 10, 2026
3 checks passed
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