Skip to content

Release v1.4.0#173

Merged
erikdarlingdata merged 36 commits intomainfrom
dev
Apr 6, 2026
Merged

Release v1.4.0#173
erikdarlingdata merged 36 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

v1.4.0

Added

Changed

Fixed

Full Changelog: v1.3.0...dev

rferraton and others added 30 commits March 29, 2026 03:28
- Update QueryStoreHistoryWindow constructor to accept query hash, metric tag, and time range parameters
- Update QueryStoreHistoryWindow.axaml.cs LoadHistoryAsync to call new hash-based service method
- Update QueryStoreHistoryWindow.axaml UI layout
- Add average line to chart in UpdateChart method
- Update QueryStoreGridControl ViewHistory_Click to pass queryHash, metric, and time range
Adds two centered rows of for-the-badge shields — repo stats (stars,
forks, license, release, issues, last commit, CI) and social links
(X/Twitter, YouTube, LinkedIn, blog).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
README: add shields.io badge flair (repo + social)
• Generate a new query to get query history data Group data by PlanHash and IntervalStart. Get inspired by the existing FetchHistoryAsync but create a new FetchAgregateHistoryAsync. Use smart agregation for other fields
 • sum(field) for Totals% fields and Executions
 • avg(field) for Avg% fields
 • max(last_execution)
• Allow the use to select several dots in the charts using a box selector
• When the user finish the selection with the box (or a single dot selection) hightligh the corresponding rows in the query history grid
• Add a thin color column in the query history grid like the legend in chart
• add a small light grey border for dots
• the label of avg in the chart should only have "avg:<value>". Dont insert the metric inside this label.
• The avg label should have a light grey transparent background and be just above the avg horizontal line
• make the avg horizontal line a little more transparent
• in the chart the Y-axis should always include 0 as origin
• make 2 buttons "Range Period" and "Full History" and highlight the selected and current one
• remove the refresh button
• align the informatial text (number of interval, number of plans...| period) to the right
• remove the word metric on top of the metric selector
• make the X-axis label more smart : hours first (top) and the date and "agregate date". Still use an adaptative X-axis display if the interval is large
- emphasize selected dots : bigger and white border
- allow the user to select multiples rows in the grid using standard CRLT+Click or SHIFT+Click for multiselection
- emphasize the dots of a manually selected rows
- when the user click on a planHash in the legend : highlight all dots and the line (thicker and less transparency). also - - recompute the avg in the chart using selected/highlighted dots
Adds Windows binary signing via SignPath, gated on SIGNPATH_API_TOKEN
secret — releases unsigned binaries until signing is configured.
Velopack now packs from signed binaries when available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add SignPath code signing to release workflow
…index spools

The condition checked PhysicalOp.Contains("Spool") which matched both
"Index Spool" and "Table Spool". Now checks for "Index" specifically.
Added negative test with an eager table spool plan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lse-positive

Fix Rule 2: eager table spools no longer flagged as eager index spools
- Make the zoom on planviewer focused/centered on the mouse pointer
…te to the node. The plan become centered and focus (zoomed) on the selected node
Right-click a table, procedure, or function name in the query editor to
view indexes, table definitions, or object definitions from the connected
server. Uses Microsoft.SqlServer.TransactSql.ScriptDom to parse SQL and
resolve the object under the cursor.

- SqlObjectResolver: AST-based object resolution at cursor position
- SchemaQueryService: DMV queries for indexes, columns, object definitions
- CREATE TABLE output with PK constraints, identity, computed columns,
  partition schemes, and non-default index options
- CREATE INDEX output with fill factor, compression, lock settings,
  partition schemes, and proper columnstore syntax
- Right-click moves caret to click position for intuitive context menus
- Copy/Copy All/Select All context menu on schema result tabs
- 11 unit tests for SqlObjectResolver

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add contextual schema lookup from query editor
…calls SetZoomAtPoint with the mouse position. No duplicated zoom logic.
… now only need to touch AdviceWindowHelper.cs.
…cated once, used on every PointerMoved hover instead of creating a new Cursor object per frame.
…s-202604-P1

Feature/plan viewer improvments 202604 p1
Prevents schema lookup queries from blocking on busy servers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Display a badge on INSERT/UPDATE/DELETE operators showing how many
nonclustered indexes are maintained. The clustered index or heap is
implicit; the NC count surfaces the hidden maintenance overhead.

- Parse Object elements with IndexKind="NonClustered" inside
  Update/SimpleUpdate/CreateIndex operator elements
- Show "+N NC" badge on the operator node
- List index names in tooltip and properties panel
- Only counts on modification operators, not read operators
- 4 unit tests with INSERT, UPDATE, DELETE, and read-only plans

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Show nonclustered index count on modification operators
Right-click a statement in the plan viewer grid to open its query text
in the editor. From file mode, creates a new query tab. From editor
mode, loads the text into the existing editor and switches to it.

Closes #165.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 'Open in Query Editor' to plan viewer statements grid
erikdarlingdata and others added 6 commits April 6, 2026 10:06
Right-click a data access operator (scan, seek, lookup, insert, update,
delete) in the plan viewer to see Show Indexes and Show Table Definition.
Uses the connection from the query editor session.

- Pass connection string from QuerySessionControl to PlanViewerControl
- Add schema items to existing node context menu
- Filter by operator type (data access only)
- Exclude temp objects (#temp, @table_var, worktables)
- Items disabled when no connection is available
- Results shown in a popup window with SQL syntax highlighting
- Copy/Copy All/Select All context menu on results

Partial fix for #166 (plan viewer side). Connection toolbar for file
mode plans is not yet implemented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ma-lookup

Add schema lookup to plan viewer operator right-click
Plan viewer now has Connect button + server status + database dropdown
in the toolbar, enabling schema lookups on plans opened from file.
Plans loaded from connected sessions inherit the connection and show
the server name and database pre-populated.

- Connect button shows connection dialog, populates database dropdown
- Database switching updates the connection string for schema lookups
- Connection services passed to PlanViewerControl from both MainWindow
  and QuerySessionControl
- Schema lookup items disabled when no connection, enabled after connect

Closes #166.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ection-toolbar

Add connection toolbar to plan viewer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit ba7e5dc into main Apr 6, 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.

2 participants