Issue form templates + OS requirements docs#157
Merged
erikdarlingdata merged 45 commits intomainfrom Feb 19, 2026
Merged
Conversation
Reusable LoadingOverlay control with spinning animation and randomized loading messages. Wired into DailySummary, Memory, and QueryPerformance tabs. Extracted shared LoadingMessages helper from ServerTab, added EmptyStateMessage style for context-specific empty states. Lite gets the LoadingMessages helper (UI wiring in PR 2). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only show the loading overlay on initial load when no data exists yet. Subsequent auto-refreshes keep existing data visible while fetching. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ltip - Wire LoadingOverlay into CriticalIssuesContent with initial-load-only pattern - Add LoadingOverlay UserControl to Lite (not wired to grids yet) - Fix Lite alert badge tooltip to use dark theme instead of default Windows light theme (#120) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lds (#109) - Add "Restore Defaults" button to Dashboard Notifications tab and Lite Notifications section - Dashboard now shows validation warning when saving invalid threshold values - Both apps reset to their respective defaults (Dashboard: CPU 90%, blocking 30s; Lite: CPU 80%, blocking 1) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ates Add loading overlay and contextual empty states
…ments Add Restore Defaults button and alert threshold validation (#109)
ScottPlot 5.1.x uses SkiaSharp 3.x which requires Windows 10+. Closes the gap that caused issue #122 on Windows Server 2012 R2. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…irements Document minimum OS: Windows 10 / Server 2016+
…109) - Add live preview text below alert thresholds: "Will alert when: blocking > 30s, CPU > 90%, ..." - Add "Validate Settings" button to SMTP config in both Dashboard and Lite - Add explanation for Lite's 80% CPU default vs Dashboard's 90% - Preview text updates dynamically as checkboxes/thresholds change Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CollectorDurationChart, QueryDurationTrendChart, ProcDurationTrendChart, and QueryStoreDurationTrendChart were missing ChartHoverHelper wiring. All other charts had it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Alert UX: preview text, SMTP validation, CPU default note (#109)
Fix: Add missing hover tooltips to 4 Lite charts (#121)
Make the ToolTip style in DarkTheme.xaml implicit (remove x:Key) so it automatically applies to all tooltips without requiring explicit references. Simplify the alert badge tooltip back to a plain string since the global style now handles dark theming. Closes #120 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix Lite tooltips to use dark theme globally
…allerGui theme alignment - Add MinHeight="600" MinWidth="900" to Dashboard and Lite MainWindow - Add spacing scale resources (SpacingXS through SpacingXL) to both DarkThemes - Add corner radius resources (CornerRadiusSm/Md/Lg) to both DarkThemes - Align InstallerGui colors to Dashboard/Lite palette (gray → blue-gray tints) - Replace hardcoded Background/Foreground on InstallerGui MainWindow with theme resources Partial fix for #110 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ick-wins Visual polish: MinHeight/MinWidth, spacing resources, InstallerGui theme
Reduces risk of accidental mis-clicks when closing server tabs. Partial fix for #110 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…und2 Increase tab close button target size (18x18 → 22x22)
…tions - Increase chart grid line opacity from 8% to 16% (WithAlpha 20→40) for better readability on dark backgrounds — all 5 chart setup locations - Add Segoe MDL2 icons to Settings and Help/About sidebar buttons in both Dashboard and Lite for faster visual scanning - Add 120ms hover transition on default button style (ColorAnimation) in both DarkTheme files — replaces instant background swap Partial fix for #110 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…und3 Visual polish: grid lines, sidebar icons, button hover transitions
When a column filter is active: - Icon changes from outline filter (E71C) to filled filter (E16E) - Gold-tinted semi-transparent background added behind the icon - Hover state brightens both icon and background - Tooltip says "Filter active — click to modify" The DataGridFilterManager also updated to use the filled icon when dynamically creating filter button content. Partial fix for #110 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…und4 Lite: make filter-active indicator more obvious
…utton hover - Wire ChartHoverHelper Clear/Add calls into all 4 Lite duration chart update methods (collector, query, proc, query store) — hover tooltips now show series name, value, and timestamp - Bump Dashboard chart grid line alpha from 40 to 50 (was invisible) - Add TimeRangeButton style with accent border + text brighten on hover for the hour picker buttons (1h/4h/8h/12h/24h/7d/30d) Partial fix for #110, fixes Lite #121 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix duration chart hover, Dashboard grid lines, time range button hover
…er tooltips - Revert Dashboard chart grid alpha back to 20 (user confirmed original looked good) - Add ChartHoverHelper to execution count, blocking trend, and deadlock trend charts in Lite — hover now shows series name, value, and timestamp Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Revert Dashboard grid lines, add remaining Lite chart hover tooltips
Dashboard was at 20 while Lite was at 40. User confirmed Lite looks good, so matching Dashboard to the same value. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match Dashboard chart grid lines to Lite (WithAlpha 40)
Every Dashboard chart called Plot.HideGrid() after ApplyDarkModeToChart(), which set the grid color but then immediately hid the grid. This made grid lines invisible regardless of alpha value. Removing all 50 HideGrid() calls lets the themed grid lines show through, matching Lite's appearance. Partial fix for #110 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-visible Remove HideGrid() from all Dashboard charts
Restructure the Query Store collection query to avoid nvarchar(max) query_sql_text in GROUP BY. Aggregation and ranking now happen in a CTE that only touches sys.query_store_query, query_store_plan, and query_store_runtime_stats. The expensive join to sys.query_store_query_text is deferred until after TOP 100 filtering, dramatically reducing sort memory and I/O. Also narrows the lookback window from 24 hours to 60 minutes to match the collection interval and reduce scan volume. Addresses #134. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-optimization Optimize Lite query store collector: CTE + 60min window
The collector duration trend chart used .ToLocalTime() while every other chart uses .AddMinutes(UtcOffsetMinutes) to display server time. This caused the chart x-axis to be offset by the difference between the local machine and server time zones. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…imezone Fix collector duration chart timezone offset
…fix (#147) Query store collector now fetches only new runtime_stats intervals since last collection instead of scanning a 60-minute window with CTE/GROUP BY every cycle. CPU collector deduplicates ring buffer samples client-side to insert ~1 row/cycle instead of 60. Deadlock collector moves XML parsing out of DuckDB timing block for accurate metrics. Shared GetLastCollectedTimeAsync helper extracts watermark lookup pattern. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Both CLI and GUI installer projects had hardcoded version 1.0.0 while Dashboard and Lite were at 1.2.0. This caused config.installation_history to show installer_version = 1.0.0.0 after installing the current release. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…150) Permission errors (SQL 229/297/300) now log as PERMISSIONS status instead of ERROR. They don't increment ConsecutiveErrors or show as FAILING in the health grid. Collection health shows NO_PERMISSIONS when a collector has only permission errors, with the error message still visible so users know which grants are needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-collection Lite incremental collection: query store, CPU dedup, deadlock timing (#147)
…rsion Update installer version from 1.0.0 to 1.2.0 (fixes #148)
…enied Handle permission denied errors gracefully in collector health (fixes #150)
Required fields prevent incomplete bug reports. Users must provide version, OS, SQL Server version, and repro steps before submitting. Blank issues disabled — all issues go through a template. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert issue templates to structured forms with required fields
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merging to main so issue templates take effect immediately.