Skip to content

Release: dev → main (Feb 13 2026)#28

Merged
erikdarlingdata merged 41 commits intomainfrom
dev
Feb 13, 2026
Merged

Release: dev → main (Feb 13 2026)#28
erikdarlingdata merged 41 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Owner

Summary

Merge all completed feature work from dev into main for release.

Features

Bug fixes

Test plan

  • Dashboard builds clean
  • Lite builds clean
  • Tooltip hover tested on wait stats, file I/O, perfmon charts
  • Column filtering tested on Lite grids
  • Chart colors and markers verified visually

🤖 Generated with Claude Code

erikdarlingdata and others added 30 commits February 12, 2026 08:05
Both Dashboard and Lite now check the GitHub releases API for new versions.
On startup (once per 24h, configurable), a notification appears if an update
is available. The About dialog's "Check for Updates" link now performs a live
check and shows the result inline with a clickable download link.

Also simplified the Dashboard About dialog credits section to match Lite.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Overview cards now display connection status with a colored dot (green/red),
status label, and a semi-transparent offline overlay with red X for unreachable
servers. Offline servers also get a red card border. Connection status is
sourced from the existing ServerManager connection tracking.

Closes #2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…atus

Lite overview: show Online/Offline status
Status bar now filters collector health by the selected server tab instead
of showing global aggregate. Overview tab still shows all-server health.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…health

Lite: per-server collector health in status bar
Automatically fails PRs targeting main from any branch other than dev,
so contributors don't need manual correction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WAITFOR-based queries (e.g., Service Broker queue listeners) dominate
duration rankings but aren't actionable. Filter them at the display
layer in both Dashboard and Lite query stats + Query Store queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Exclude WAITFOR queries from top queries views
Scatter series and legend are now created unconditionally so the legend
displays the series name even when there's no data for the time range.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dashboard: always show legends on Performance Trends charts
Apply consistent blue-gray tinted color palette across both Dashboard and Lite:
- Backgrounds: #111217, #181b1f, #22252b, #2a2d35 (Grafana-style)
- Text: #E4E6EB (primary), #9DA5B4 (dim), #6B7280 (muted)
- Borders: #2a2d35 / #33363e
- Chart backgrounds, grid lines, axis text, legends updated to match
- Calendar pickers styled consistently

Fix system tray visual issues in both apps:
- Replace native ToolTipText (Windows light theme) with custom dark TrayToolTip
- Add full ContextMenu ControlTemplate to eliminate WPF default light gutter
- Add emoji icons to Lite tray context menu (matching Dashboard)
- Transparent backgrounds on all tray menu emoji icons

Also includes WAITFOR exclusion filters from #14 in query snapshots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Thanks so much Claudio (and cousin Claude)! This is a great contribution — the manifest-only approach is clean and the before/after screenshots speak for themselves. Really appreciate you taking the time to fix this for both Dashboard and Lite.

You'll get credit in the upcoming release notes. 🎉
Replace all stock ScottPlot colors and scattered inline hex colors with a
centralized TabHelpers.ChartColors palette (12 Material Design 300-level
pastels optimized for dark backgrounds). Standardize MarkerSize to 5 across
all Dashboard charts for consistent dot visibility matching Lite.

Desaturate status indicator colors from Material 500 to 300 in both apps
(green #81C784, amber #FFD54F, red #E57373, orange #FFB74D). Increase
DataGrid cell padding from 6,4 to 8,6 for better readability. Add
ClipToBounds to DataGrid style for clean edge rendering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…10 (#12)

Replace the broken "select first 12 in list order" logic with smart defaults:
poison waits (THREADPOOL, RESOURCE_SEMAPHORE, RESOURCE_SEMAPHORE_QUERY_COMPILE)
are always checked, usual suspects (SOS_SCHEDULER_YIELD, CXPACKET, CXCONSUMER,
PAGEIOLATCH_SH/EX, PAGELATCH_%, WRITELOG) are always checked, then the top 10
by total wait time fill remaining slots up to the 12-color cap.

Relabel button from "Select All" to "Top Waits" in both Dashboard and Lite.
Align Lite wait type list sorting to alphabetical to match Dashboard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend color palettes to 20 colors in both Dashboard and Lite so users
can chart more wait types simultaneously. Add "X / 20 selected" counter
next to the Top Waits button so users know the limit. Counter turns red
when the cap is reached.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…#23)

The process_blocked_process_xml and process_deadlock_xml procedures
were TRUNCATing parsed output tables on every scheduled run, then
re-parsing all raw XML from scratch. This caused parsed data to be
lost as raw XML aged out of retention.

Replace TRUNCATE-and-reparse with is_processed tracking:
- Add is_processed column to blocked_process_xml and deadlock_xml
- Processors now skip already-processed rows and mark new ones
- Schema upgrade logic in ensure_collection_table (runtime) and
  standalone ALTER TABLE statements (install-time) for existing DBs
- Add blocked_process_reports to Lite archival list

Tested via CLI installer (52/52 files, 0 failures) and verified
end-to-end on sql2022: rows processed once, parsed data preserved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SUBSTRING length calculation for statement_start_offset/statement_end_offset
was missing the +1 per Microsoft's documented formula, causing query text
to be clipped by 1 character. Fixed in Lite QueryStats collector (both
standard and Azure variants) and server-side 08_collect_query_stats.sql.
QuerySnapshots and WaitingTasks already had the correct formula.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Port the Dashboard's column filter system to Lite. Users can now click
a filter icon on any column header to open a popup with operator
selection (contains, equals, greater than, etc.) and filter value input.
Filters persist across auto-refresh cycles. Active filters show a gold
icon; inactive filters show dim.

New generic DataGridFilterManager<T> eliminates per-grid boilerplate
by encapsulating filter state, unfiltered data capture, LINQ filtering,
and button style updates for each of the 11 DataGrids.

Tested: filters apply/clear correctly, icons toggle color, data refreshes
preserve active filters.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ltering

Lite: add column-level filtering to all data grids (#18)
Hover over wait stats chart lines to see the wait type name, ms/sec
value, and timestamp in a popup that follows the mouse. Uses a WPF
Popup with pixel-distance threshold (~50px) so empty chart areas
don't trigger false tooltips. MouseMove handler throttled to 50ms.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract reusable ChartHoverHelper class (WPF Popup, 50ms throttle,
pixel-distance threshold) and wire it to all multi-series charts:
Dashboard (7): Sessions, WaitStats, Latch, Spinlock, FileIO R/W, Perfmon
Lite (5): WaitStats, Perfmon, TempDB FileIO, FileIO R/W

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
erikdarlingdata and others added 3 commits February 13, 2026 11:58
…0 wait types (#12)

# Conflicts:
#	Dashboard/Controls/ResourceMetricsContent.xaml.cs
#	Dashboard/Helpers/TabHelpers.cs
#	Lite/Controls/ServerTab.xaml
#	Lite/Controls/ServerTab.xaml.cs
WaitTypes_ClearAll_Click called UpdateWaitTypeCount() directly,
skipping search filter refresh. Now calls RefreshWaitTypeListOrder()
to match SelectAll_Click behavior and Lite's consistent approach.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata self-assigned this Feb 13, 2026
@erikdarlingdata erikdarlingdata merged commit 3d9b204 into main Feb 13, 2026
1 of 2 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