Skip to content

Commit c3e49bf

Browse files
Merge pull request #672 from erikdarlingdata/release-prep/v2.4.0-final
Release prep v2.4.0
2 parents ade185e + 69c42aa commit c3e49bf

2 files changed

Lines changed: 61 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,64 @@ 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.4.0] - 2026-03-23
9+
10+
### Important
11+
12+
- **Lite data directory moved**: Lite now stores all data (config, DuckDB, archives, logs) in `%LOCALAPPDATA%\PerformanceMonitorLite\` instead of alongside the executable. This enables auto-update support. Existing users upgrading from the zip should use **Import Settings** and **Import Data** to bring over their configuration and historical data from the old install folder.
13+
- **Auto-update (Windows)**: Both Dashboard and Lite now include Velopack auto-update. Users who install via the new Setup.exe will receive update notifications and can download + apply updates from within the app. Existing zip distribution continues to work as before.
14+
15+
### Added
16+
17+
- **Velopack auto-update** for Dashboard and Lite — check on startup, download + apply from About window with confirmation dialog before restart ([#635])
18+
- **Per-tab time range slicers** on Dashboard and Lite query tabs — filter data directly on each tab without changing global time range ([#655], [#662])
19+
- **Time display picker** (Local/UTC/Server) in Dashboard and Lite toolbars ([#646])
20+
- **Import Settings** — renamed from "Import Connections", now also copies `settings.json`, `collection_schedule.json`, `ignored_wait_types.json`, and `alert_state.json` from a previous install
21+
- **Alert muting improvements** — pre-fill context fields (database, query, wait type, job name) from alert detail text, configurable default expiration for new mute rules, tooltip on query text field ([#642])
22+
- **Missing date columns** on Query Stats and Procedure Stats tabs (`creation_time`, `last_execution_time`) ([#649], [#651], [#654])
23+
- **Trace pattern drill-down** now includes `CollectionTime` and `NtUserName` columns ([#663])
24+
- **DataGrid sort preservation** across auto-refresh — sort order no longer resets when data refreshes ([#659])
25+
- **CLI installer**: colored output (green/red/yellow) and version check on startup ([#639])
26+
- **GUI installer**: version check on startup
27+
- **Growth rate and VLF count** columns in Database Sizes (from v2.3.0 nightly, now in upgrade path) ([#567])
28+
- `llms.txt` and `CITATION.cff` for project discoverability ([#630])
29+
30+
### Changed
31+
32+
- **Lite data directory** moved to `%LOCALAPPDATA%\PerformanceMonitorLite\` for Velopack compatibility
33+
- **Delta gap detection** added to all cumulative-counter collectors (file I/O, wait stats, query stats, procedure stats, memory grants) — prevents inflated spikes after app restart ([#633])
34+
- **File I/O NULL fallbacks** improved when `sys.master_files` is inaccessible — falls back to `DB_NAME()` and `File_{id}` instead of generic "Unknown" ([#633])
35+
- **Running jobs collector** skipped gracefully when login lacks msdb access ([#656])
36+
- NuGet packages updated to latest minor versions ([#653])
37+
38+
### Fixed
39+
40+
- **Installer writing SUCCESS when files fail** — CLI tolerated 1 failure in automated mode, GUI had a similar workaround. Now any failure = not success.
41+
- **Query stats collector causing SQL dumps** on passive mirror servers — removed `dm_exec_plan_attributes` CROSS APPLY, uses temp table of ONLINE database IDs instead ([#632])
42+
- **Trigger name extraction** fails when comment before `CREATE TRIGGER` contains " ON " ([#666])
43+
- **FinOps expensive queries** DuckDB error — query referenced `statement_start_offset` column that doesn't exist in schema
44+
- **Imported parquet files** not recognized by archive compaction — added regex patterns for `imported_` prefix
45+
- **Auto-refresh after Import Data** — views now refresh immediately after import completes
46+
47+
[#630]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/630
48+
[#632]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/632
49+
[#633]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/633
50+
[#635]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/635
51+
[#639]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/639
52+
[#642]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/642
53+
[#646]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/646
54+
[#649]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/649
55+
[#651]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/651
56+
[#653]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/653
57+
[#654]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/654
58+
[#655]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/655
59+
[#656]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/656
60+
[#659]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/659
61+
[#662]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/662
62+
[#663]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/663
63+
[#666]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/666
64+
[#567]: https://github.com/erikdarlingdata/PerformanceMonitor/issues/567
65+
866
## [2.3.0] - 2026-03-18
967

1068
### Important

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ All release binaries are digitally signed via [SignPath](https://signpath.io)
8181

8282
Data starts flowing within 1–5 minutes. That's it. No installation on your server, no Agent jobs, no sysadmin required.
8383

84-
**Upgrading?** Click **Import Data** in the sidebar and point it at your old Lite folder — all historical data (DuckDB + Parquet archives) is imported into the new install.
84+
**Upgrading from zip?** Click **Import Settings** then **Import Data** in the sidebar and point both at your old Lite folder. Settings imports server connections, alert thresholds, SMTP config, and schedules. Data imports historical DuckDB + Parquet archives. **Auto-update users** (installed via Setup.exe) get updates automatically — no manual import needed.
8585

8686
**Always On AG?** Enable **ReadOnlyIntent** in the connection settings to route Lite's monitoring queries to a readable secondary, keeping the primary clear.
8787

@@ -117,6 +117,8 @@ Data starts flowing within 1–5 minutes. That's it. No installation on your ser
117117

118118
### Lite Data Storage
119119

120+
All data is stored in `%LOCALAPPDATA%\PerformanceMonitorLite\` — separate from the executable, so auto-updates don't affect your data.
121+
120122
- **Hot data** in DuckDB 1.5.0 — non-blocking checkpoints, free block reuse, stable file size without periodic resets
121123
- **Archive** to Parquet with ZSTD compression (~10x reduction) — automatic monthly compaction keeps file count low (~75 files vs thousands)
122124
- **Retention**: 3-month calendar-month rolling window

0 commit comments

Comments
 (0)