Skip to content

Commit e4580c7

Browse files
Merge pull request erikdarlingdata#767 from erikdarlingdata/dev
Release v2.5.0
2 parents 129c830 + 9a63521 commit e4580c7

122 files changed

Lines changed: 13221 additions & 5859 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: erikdarlingdata

.github/workflows/build.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ jobs:
3030
dotnet restore Dashboard/Dashboard.csproj
3131
dotnet restore Lite/PerformanceMonitorLite.csproj
3232
dotnet restore Installer/PerformanceMonitorInstaller.csproj
33-
dotnet restore InstallerGui/InstallerGui.csproj
3433
3534
- name: Get version
3635
id: version
@@ -56,9 +55,6 @@ jobs:
5655
- name: Publish CLI Installer
5756
run: dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release
5857

59-
- name: Publish GUI Installer
60-
run: dotnet publish InstallerGui/InstallerGui.csproj -c Release
61-
6258
- name: Package release artifacts
6359
if: github.event_name == 'release'
6460
shell: pwsh
@@ -72,14 +68,13 @@ jobs:
7268
# Lite ZIP
7369
Compress-Archive -Path 'publish/Lite/*' -DestinationPath "releases/PerformanceMonitorLite-$version.zip" -Force
7470
75-
# Installer ZIP (CLI + GUI + SQL scripts)
71+
# Installer ZIP (CLI + SQL scripts)
7672
$instDir = 'publish/Installer'
7773
New-Item -ItemType Directory -Force -Path $instDir
7874
New-Item -ItemType Directory -Force -Path "$instDir/install"
7975
New-Item -ItemType Directory -Force -Path "$instDir/upgrades"
8076
8177
Copy-Item 'Installer/bin/Release/net8.0/win-x64/publish/PerformanceMonitorInstaller.exe' $instDir
82-
Copy-Item 'InstallerGui/bin/Release/net8.0-windows/win-x64/publish/PerformanceMonitorInstallerGui.exe' $instDir -ErrorAction SilentlyContinue
8378
Copy-Item 'install/*.sql' "$instDir/install/"
8479
if (Test-Path 'upgrades') { Copy-Item 'upgrades/*' "$instDir/upgrades/" -Recurse -ErrorAction SilentlyContinue }
8580
if (Test-Path 'README.md') { Copy-Item 'README.md' $instDir }

.github/workflows/ci.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,13 @@ jobs:
2323
dotnet restore Dashboard/Dashboard.csproj
2424
dotnet restore Lite/PerformanceMonitorLite.csproj
2525
dotnet restore Installer/PerformanceMonitorInstaller.csproj
26-
dotnet restore InstallerGui/InstallerGui.csproj
2726
dotnet restore Lite.Tests/Lite.Tests.csproj
2827
2928
- name: Build all projects
3029
run: |
3130
dotnet build Dashboard/Dashboard.csproj -c Release --no-restore
3231
dotnet build Lite/PerformanceMonitorLite.csproj -c Release --no-restore
3332
dotnet build Installer/PerformanceMonitorInstaller.csproj -c Release --no-restore
34-
dotnet build InstallerGui/InstallerGui.csproj -c Release --no-restore
3533
dotnet build Lite.Tests/Lite.Tests.csproj -c Release --no-restore
3634
3735
- name: Run tests

.github/workflows/nightly.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ jobs:
6262
dotnet restore Dashboard/Dashboard.csproj
6363
dotnet restore Lite/PerformanceMonitorLite.csproj
6464
dotnet restore Installer/PerformanceMonitorInstaller.csproj
65-
dotnet restore InstallerGui/InstallerGui.csproj
6665
dotnet restore Lite.Tests/Lite.Tests.csproj
6766
6867
- name: Run tests
@@ -77,9 +76,6 @@ jobs:
7776
- name: Publish CLI Installer
7877
run: dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release
7978

80-
- name: Publish GUI Installer
81-
run: dotnet publish InstallerGui/InstallerGui.csproj -c Release
82-
8379
- name: Package artifacts
8480
shell: pwsh
8581
run: |
@@ -95,7 +91,6 @@ jobs:
9591
New-Item -ItemType Directory -Force -Path "$instDir/upgrades"
9692
9793
Copy-Item 'Installer/bin/Release/net8.0/win-x64/publish/PerformanceMonitorInstaller.exe' $instDir
98-
Copy-Item 'InstallerGui/bin/Release/net8.0-windows/win-x64/publish/PerformanceMonitorInstallerGui.exe' $instDir -ErrorAction SilentlyContinue
9994
Copy-Item 'install/*.sql' "$instDir/install/"
10095
if (Test-Path 'install/templates') { Copy-Item 'install/templates' "$instDir/install/templates" -Recurse -ErrorAction SilentlyContinue }
10196
if (Test-Path 'upgrades') { Copy-Item 'upgrades/*' "$instDir/upgrades/" -Recurse -ErrorAction SilentlyContinue }

CHANGELOG.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,92 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.5.0] - 2026-03-30
9+
10+
### Important
11+
12+
- **InstallerGui retired**: The standalone GUI installer has been removed. Installation, upgrade, and uninstall are now handled directly from the Dashboard's Add Server dialog, powered by the new Installer.Core shared library. The CLI installer continues to work as before. ([#755])
13+
14+
### Added
15+
16+
- **Dashboard integrated installer** — Add Server dialog now installs, upgrades, and uninstalls PerformanceMonitor directly, replacing the standalone InstallerGui ([#755])
17+
- **Installer.Core shared library** — shared installation logic used by both the CLI installer and Dashboard ([#755])
18+
- **Overview tab** for Lite with 2x2 resource chart grid (CPU, Memory, Wait Stats, TempDB) ([#689])
19+
- **Chart drill-down** on CPU, Memory, TempDB, Blocking, and Deadlock charts in both Dashboard and Lite — right-click any chart point to jump to Active Queries for that time window ([#682])
20+
- **Grid-to-slicer overlay** for Query Stats, Procedure Stats, and Query Store tabs — click a row to overlay its trend on the slicer chart ([#683])
21+
- **Query heatmap** tab in both Dashboard and Lite — visual heat map of query activity over time ([#739], [#743])
22+
- **Webhook notifications** for alerts — configurable webhook endpoint for alert delivery ([#725])
23+
- **Per-server collector schedule intervals** — customize collection frequency per server ([#703])
24+
- **Investigate button** in Critical Issues grid — jump directly to relevant tab from an alert ([#684])
25+
- **Dismiss Selected** context menu and View Log sidebar button for alert management ([#718], [#740])
26+
- **Alert archival awareness** — dismissed_archive_alerts sidecar table, source column for live vs archived alerts, stale-data indicator, structured telemetry ([#718])
27+
- **Dashboard read-only connection intent** — connections use `ApplicationIntent=ReadOnly` where supported ([#728])
28+
- FUNDING.yml for GitHub Sponsors ([#752])
29+
30+
### Changed
31+
32+
- **Installer architecture** refactored: CLI installer is now a thin wrapper over Installer.Core ([#755])
33+
- **DuckDB memory capped** at 2 GB during parquet compaction to prevent out-of-memory on large archives ([#758])
34+
- **Text rendering** improved with `TextOptions.TextFormattingMode="Display"` for sharper text ([#710])
35+
- **installation_history version columns** widened from nvarchar(255) to nvarchar(512) to handle long @@VERSION strings ([#712])
36+
37+
### Fixed
38+
39+
- **Memory leaks in Lite** — delta cache, event handlers, and chart helpers properly disposed ([#758])
40+
- **Doomed transaction errors** in delta framework and ensure_collection_table — ROLLBACK now occurs before error logging ([#756])
41+
- **XACT_STATE check** added after third-party stored procedure calls (sp_HumanEventsBlockViewer, sp_BlitzLock) to prevent doomed transaction errors ([#695])
42+
- **CREATE DATABASE failure** when model database has large default file sizes ([#676])
43+
- **CPU metrics mixed** for different Azure SQL databases on the same logical server ([#680])
44+
- **Azure SQL DB vCore** FinOps calculations incorrect for serverless/vCore tiers ([#736])
45+
- **Webhook alert recording** not persisting correctly ([#726])
46+
- **Drill-down timezone** misalignment between chart and detail view ([#747], [#750])
47+
- **Drill-down refresh** losing context on auto-refresh ([#744])
48+
- **Drill-down target** incorrectly routing Memory to Memory Grants instead of Active Queries ([#706])
49+
- **Heatmap colorbar stacking** when switching between servers ([#746])
50+
- **Display mode pickers** not reflecting current state on tab switch ([#751])
51+
- **Slicer custom range** handling and sub-hour display issues ([#704])
52+
- **Overlay selection** lost on Dashboard auto-refresh ([#683])
53+
- **Numeric values** in alert details treated as strings instead of numbers ([#732])
54+
- **FinOps VM right-sizing** query error — `PERCENTILE_CONT` missing required `OVER()` clause
55+
- **FinOps Enterprise features** query error on AWS RDS — `database_id` column not present in `sys.dm_db_persisted_sku_features` on RDS
56+
- **FinOps right-click copy** broken on all Dashboard FinOps grids — context menu walked to row instead of grid
57+
- **FinOps recommendation error logs** now include server name for easier troubleshooting
58+
59+
### Deprecated
60+
61+
- **InstallerGui** — removed from the solution and build pipeline. Use the Dashboard or CLI installer instead. ([#755])
62+
63+
[#676]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/676
64+
[#680]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/680
65+
[#682]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/682
66+
[#683]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/683
67+
[#684]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/684
68+
[#689]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/689
69+
[#695]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/695
70+
[#703]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/703
71+
[#704]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/704
72+
[#706]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/706
73+
[#710]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/710
74+
[#712]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/712
75+
[#718]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/718
76+
[#725]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/725
77+
[#726]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/726
78+
[#728]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/728
79+
[#732]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/732
80+
[#736]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/736
81+
[#739]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/739
82+
[#740]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/740
83+
[#743]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/743
84+
[#744]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/744
85+
[#746]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/746
86+
[#747]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/747
87+
[#750]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/750
88+
[#751]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/751
89+
[#752]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/752
90+
[#755]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/755
91+
[#756]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/756
92+
[#758]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/758
93+
894
## [2.4.0] - 2026-03-23
995

1096
### Important

CONTRIBUTING.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ This repository contains two editions of the SQL Server Performance Monitor:
2424
|--------|-------------|
2525
| `install/` | 50+ T-SQL scripts that create the PerformanceMonitor database |
2626
| `Installer/` | CLI installer for the Full Edition database and collectors |
27-
| `InstallerGui/` | GUI installer (same functionality as the CLI installer) |
28-
| `Dashboard/` | WPF dashboard that connects to the installed PerformanceMonitor database |
27+
| `Installer.Core/` | Shared installation library (used by CLI installer and Dashboard) |
28+
| `Dashboard/` | WPF dashboard connects to PerformanceMonitor database, can also install/upgrade via Add Server |
2929

3030
**Lite Edition** — standalone desktop app, nothing installed on the target server:
3131

@@ -61,8 +61,6 @@ dotnet build Lite/PerformanceMonitorLite.csproj
6161
# Build CLI Installer (self-contained)
6262
dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release
6363
64-
# Build GUI Installer
65-
dotnet publish InstallerGui/InstallerGui.csproj -c Release -r win-x64 --self-contained
6664
```
6765

6866
### Running the Applications

0 commit comments

Comments
 (0)