Skip to content

Issue form templates + OS requirements docs#157

Merged
erikdarlingdata merged 45 commits intomainfrom
dev
Feb 19, 2026
Merged

Issue form templates + OS requirements docs#157
erikdarlingdata merged 45 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Owner

Summary

  • Structured issue forms with required fields (replaces free-text markdown templates)
  • Minimum OS requirement (Windows 10 / Server 2016+) documented in README

Merging to main so issue templates take effect immediately.

OZTPR and others added 30 commits February 18, 2026 17:41
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>
erikdarlingdata and others added 15 commits February 18, 2026 21:05
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
@erikdarlingdata erikdarlingdata merged commit d03599b into main Feb 19, 2026
3 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