Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release v1.1.0 — significant UX improvements, new features, and bug fixes.
New Features
Improvements
Bug Fixes
🤖 Generated with Claude Code