Skip to content

Commit 8b2703d

Browse files
Add 2.3.0 changelog entry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 20919ec commit 8b2703d

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,87 @@ 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.3.0] - 2026-03-18
9+
10+
### Important
11+
12+
- **Schema upgrade**: Six columns widened across three tables (`query_stats`, `cpu_scheduler_stats`, `waiting_tasks`, `database_size_stats`) to match DMV documentation types. These are in-place ALTER COLUMN operations — fast on any table size, no data migration. Upgrade scripts run automatically via the CLI/GUI installer.
13+
- **SQL Server version check**: Both installers now reject SQL Server 2014 and earlier before running any scripts, with a clear error message. Azure MI (EngineEdition 8) is always accepted. ([#543])
14+
- **Installer adversarial tests**: 35 automated tests covering upgrade failures, data survival, idempotency, version detection fallback, file filtering, restricted permissions, and more. These run as part of pre-release validation. ([#543])
15+
16+
### Added
17+
18+
- **ErikAI analysis engine** — rule-based inference engine for Lite that scores server health across wait stats, CPU, memory, I/O, blocking, tempdb, and query performance. Surfaces actionable findings with severity, detail, and recommended actions. Includes anomaly detection (baseline comparison for acute deviations), bad actor detection (per-query scoring for consistently terrible queries), and CPU spike detection for bursty workloads. ([#589], [#593])
19+
- **ErikAI Dashboard port** — full analysis engine ported to Dashboard with SQL Server backend ([#590])
20+
- **FinOps cost optimization recommendations** — Phase 1-4 checks: enterprise feature audit, CPU/memory right-sizing, compression savings estimator, unused index cost quantification, dormant database detection, dev/test workload detection, VM right-sizing, storage tier optimization, reserved capacity candidates ([#564])
21+
- **FinOps High Impact Queries** — 80/20 analysis showing which queries consume the most resources across all dimensions ([#564])
22+
- **FinOps dollar-denominated cost attribution** — per-server monthly cost setting with proportional database-level breakdown ([#564])
23+
- **On-demand plan fetch** for bad actor and analysis findings — click to retrieve execution plans for flagged queries ([#604])
24+
- **Plan analysis integration** — findings include execution plan analysis when plans are available ([#594])
25+
- **Server unreachable email alerts** — Dashboard sends email (not just tray notification) when a monitored server goes offline or comes back online ([#529])
26+
- **Column filters on all FinOps DataGrids** — filter funnel icons on every column header across all 7 FinOps grids in Lite and Dashboard ([#562])
27+
- **Column filters on Dashboard** IdleDatabases, TempDB, and Index Analysis grids
28+
- **Lite data import** — "Import Data" button brings in monitoring history from a previous Lite install via parquet files, preserving trend data across version upgrades ([#566])
29+
- **Per-server Utility Database setting** — Lite can call community stored procedures (sp_IndexCleanup) from a database other than master ([#555])
30+
- **SQL Server version check** in both CLI and GUI installers — rejects 2014 and earlier with a clear message ([#543])
31+
- **Execution plan analysis MCP tools** for both Dashboard and Lite
32+
- **Full MCP tool coverage** — Dashboard expanded from 28 to 57 tools, Lite from 32 to 51 tools ([#576], [#577])
33+
- **Self-sufficient analyze_server drill-down** — MCP tool returns complete analysis, not breadcrumb trail ([#578])
34+
- **NuGet package dependency licenses** in THIRD_PARTY_NOTICES.md
35+
36+
### Changed
37+
38+
- **Azure SQL DB FinOps** — all collectors (database sizes, query stats, file I/O) now connect to each database individually instead of only querying master. Server Inventory uses dynamic SQL to avoid `sys.master_files` dependency. ([#557])
39+
- **Index Analysis scroll fix** — both summary and detail grids now use proportional heights instead of Auto, so they scroll independently with large result sets ([#554])
40+
- **Dashboard Add Server dialog** — increased MaxHeight from 700 to 850px so buttons are visible when SQL auth fields are shown
41+
- **GUI installer** — Uninstall button now correctly enables after a successful install
42+
- **GUI installer** — fixed encryption mapping and history logging ([#612])
43+
- **Dashboard visible sub-tab only refresh** on auto-refresh ticks ([#528])
44+
- Analysis engine decouples data maturity check from analysis window
45+
46+
### Fixed
47+
48+
- **Installer dropping database on every upgrade**`00_uninstall.sql` excluded from install file list, installer aborts on upgrade failure, version detection fallback returns "1.0.0" instead of null ([#538], [#539])
49+
- **SQL dumps on mirroring passive servers** from FinOps collectors ([#535])
50+
- **RetrievedFromCache** always showing False ([#536])
51+
- **Arithmetic overflow** in query_stats collector for dop/thread columns ([#547])
52+
- **Lite perfmon chart bugs** and Dashboard ScottPlot crash handling ([#544], [#545])
53+
- **PLE=0 scoring bug** — was scored as harmless, now correctly flagged ([#543])
54+
- **PercentRank >1.0** bug in HealthCalculator
55+
- **6 verified Lite bugs** from code review ([#611])
56+
- **Enterprise feature audit text** — partitioning is not Enterprise-only
57+
- **FinOps collector scheduling**, server switch, and utilization bugs
58+
- **Dashboard drill-down** Unicode arrow in story path split
59+
- **Empty DataGrid scrollbar artifacts** — hide grids when empty across all FinOps tabs
60+
- **Query preview** — truncated in row, full text in tooltip
61+
62+
[#529]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/529
63+
[#535]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/535
64+
[#536]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/536
65+
[#538]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/538
66+
[#539]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/539
67+
[#543]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/543
68+
[#544]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/544
69+
[#545]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/545
70+
[#547]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/547
71+
[#554]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/554
72+
[#555]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/555
73+
[#557]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/557
74+
[#562]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/562
75+
[#564]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/564
76+
[#566]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/566
77+
[#576]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/576
78+
[#577]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/577
79+
[#578]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/578
80+
[#528]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/528
81+
[#589]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/589
82+
[#590]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/590
83+
[#593]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/593
84+
[#594]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/594
85+
[#604]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/604
86+
[#611]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/611
87+
[#612]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/612
88+
889
## [2.2.0] - 2026-03-11
990

1091
**Contributors:** [@HannahVernon](https://github.com/HannahVernon), [@ClaudioESSilva](https://github.com/ClaudioESSilva), [@dphugo](https://github.com/dphugo), [@Orestes](https://github.com/Orestes) — thank you!

0 commit comments

Comments
 (0)