From 159b1c75e5cdb5c88586b8ae8d18b1b32c0b954d Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 28 Apr 2026 08:44:21 -0400 Subject: [PATCH 01/14] Insights panel: unify section borders into card style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace per-section tinted backgrounds (brown/green/blue/purple) with a single InsightCard style — lifted #1E2228 surface, 1px #353942 border, 8px corner radius, subtle box-shadow. Per-section identity now lives only in the accent-colored header text. Headers move to a shared InsightHeader class (14pt SemiBold). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Controls/PlanViewerControl.axaml | 66 +++++++++---------- src/PlanViewer.App/Themes/DarkTheme.axaml | 4 ++ 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/src/PlanViewer.App/Controls/PlanViewerControl.axaml b/src/PlanViewer.App/Controls/PlanViewerControl.axaml index 7bb50c3..e8bccfb 100644 --- a/src/PlanViewer.App/Controls/PlanViewerControl.axaml +++ b/src/PlanViewer.App/Controls/PlanViewerControl.axaml @@ -2,6 +2,22 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="PlanViewer.App.Controls.PlanViewerControl" Background="{DynamicResource BackgroundBrush}"> + + + + @@ -74,7 +90,7 @@ FontWeight="SemiBold" Foreground="{DynamicResource ForegroundBrush}"/> - + @@ -84,18 +100,14 @@ - - + - + + Foreground="{DynamicResource ForegroundBrush}"/> - + + Foreground="#FFB347"/> - + + Foreground="#7BCF7B"/> - + + Foreground="#4FA3FF"/> + + + + #2eaef1 #2596d4 From b1e6519bada53a03724c866bccccde2a7cc57d52 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 28 Apr 2026 09:10:43 -0400 Subject: [PATCH 02/14] Revert "Merge pull request #294 from erikdarlingdata/ui/insight-cards" This reverts commit 8495b24396078f591e5622768a1d6f071c0bfdc1, reversing changes made to 909290e24ac0c50eca9413f6e83e672334f985e0. --- .../Controls/PlanViewerControl.axaml | 66 +++++++++---------- src/PlanViewer.App/Themes/DarkTheme.axaml | 4 -- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/PlanViewer.App/Controls/PlanViewerControl.axaml b/src/PlanViewer.App/Controls/PlanViewerControl.axaml index e8bccfb..7bb50c3 100644 --- a/src/PlanViewer.App/Controls/PlanViewerControl.axaml +++ b/src/PlanViewer.App/Controls/PlanViewerControl.axaml @@ -2,22 +2,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="PlanViewer.App.Controls.PlanViewerControl" Background="{DynamicResource BackgroundBrush}"> - - - - @@ -90,7 +74,7 @@ FontWeight="SemiBold" Foreground="{DynamicResource ForegroundBrush}"/> - + @@ -100,14 +84,18 @@ - - + - + + FontSize="13" + FontWeight="SemiBold" + Foreground="{DynamicResource ForegroundBrush}" + Margin="0,0,0,4"/> - + + FontSize="13" + FontWeight="SemiBold" Foreground="#FFB347" + Margin="0,0,0,6"/> - + + FontSize="13" + FontWeight="SemiBold" Foreground="#7BCF7B" + Margin="0,0,0,6"/> - + + FontSize="13" + FontWeight="SemiBold" Foreground="#4FA3FF" + Margin="0,0,0,6"/> - - - - #2eaef1 #2596d4 From ab6fbeb51e0e4b91bd60da1e502229eedeef3206 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:23:16 -0400 Subject: [PATCH 03/14] Seed wait stats config file (#215 part 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds src/PlanViewer.Core/Resources/WaitStats.json as the single source of truth for wait stat handling, populated only with attributes 1-5 (name, isPreemptive, isExternal, isImplemented, isEnabled). Attributes 6-12 (calc model, applicable operators, descriptions, URLs, internal comment) are intentionally null pending domain-expert review. 52 entries: 46 currently implemented (matched explicitly or via prefix in BenefitScorer / PlanViewerControl / WaitStatsKnowledge), 6 common waits that today fall to the 'Other' bucket (THREADPOOL, BACKUPIO, BACKUPBUFFER, HADR_SYNC_COMMIT, DBMIRROR_DBM_EVENT, SQLTRACE_BUFFER_FLUSH). No code is wired to this file yet — that's part 2. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/PlanViewer.Core/Resources/WaitStats.json | 766 +++++++++++++++++++ 1 file changed, 766 insertions(+) create mode 100644 src/PlanViewer.Core/Resources/WaitStats.json diff --git a/src/PlanViewer.Core/Resources/WaitStats.json b/src/PlanViewer.Core/Resources/WaitStats.json new file mode 100644 index 0000000..375f7ba --- /dev/null +++ b/src/PlanViewer.Core/Resources/WaitStats.json @@ -0,0 +1,766 @@ +{ + "_meta": { + "purpose": "Single source of truth for wait stat handling. Per issue #215, this file will entirely drive the wait stats functionality once Part 2 lands. Today it is a seed for review — only attributes 1-5 are populated. Attributes 6-12 are intentionally null and reserved for domain-expert (Joe Obbish) population.", + "schema": { + "name": "Wait stat name (e.g., PAGEIOLATCH_SH).", + "isPreemptive": "True iff the wait runs preemptively (Windows kernel time, name prefix PREEMPTIVE_).", + "isExternal": "True iff time accrues to CPU rather than (elapsed - cpu); today scoped to PREEMPTIVE_* and MEMORY_ALLOCATION*.", + "isImplemented": "True iff the tool currently has explicit handling (categorizer match, knowledge entry, or specialized benefit formula). False = wait is collected but falls to the 'Other' bucket.", + "isEnabled": "True iff the tool should surface this wait in analysis/display.", + "showWaitCount": "(Pending) Show waits-recorded count alongside wait time.", + "showAverageWaitTime": "(Pending) Show wait_ms / wait_count alongside totals.", + "timeCalculationModel": "(Pending) One of 'direct', 'cpu time based', or 'elapsed time based'.", + "applicableOperatorNames": "(Pending) Operator names this wait can plausibly attribute to (only for 'elapsed time based').", + "description": "(Pending) End-user description.", + "helpfulUrls": "(Pending) Reference links.", + "internalComment": "(Pending) Maintainer notes; never shown to end users." + }, + "seedNotes": [ + "Population is bounded to wait names the tool today references explicitly OR commonly-seen waits matched by prefix patterns (LCK_M_*, PAGELATCH_*, LATCH_*, HT*, PREEMPTIVE_*). Pattern members beyond these representative entries can be added as needed.", + "A small set of unimplemented-but-common waits is included with isImplemented=false so both states are represented.", + "Today the tool also collects waits at the SQL Server wait_category level via sys.query_store_wait_stats, filtering categories 11 (Idle) and 18 (User Wait). Nothing in this seed falls into those categories." + ] + }, + + "waitStats": [ + { + "name": "PAGEIOLATCH_SH", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGEIOLATCH_EX", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGEIOLATCH_UP", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGEIOLATCH_DT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "PAGELATCH_SH", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGELATCH_EX", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGELATCH_UP", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PAGELATCH_DT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "LATCH_EX", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LATCH_SH", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LATCH_UP", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LATCH_KP", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "LCK_M_S", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_U", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_X", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_IS", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_IU", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_IX", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_SCH_S", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_SCH_M", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "LCK_M_RS_S", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "CXPACKET", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "CXCONSUMER", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "CXSYNC_PORT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "CXSYNC_CONSUMER", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "HTBUILD", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "HTREPARTITION", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "HTMEMO", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "HTDELETE", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "BMPBUILD", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "BPSORT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "RESOURCE_SEMAPHORE", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "CMEMTHREAD", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "MEMORY_ALLOCATION_EXT", + "isPreemptive": false, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "SOS_PHYS_PAGE_CACHE", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "IO_COMPLETION", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "ASYNC_IO_COMPLETION", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "WRITELOG", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "ASYNC_NETWORK_IO", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "SOS_SCHEDULER_YIELD", + "isPreemptive": false, + "isExternal": false, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "PREEMPTIVE_OS_AUTHENTICATIONOPS", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PREEMPTIVE_OS_FILEOPS", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PREEMPTIVE_OS_WRITEFILEGATHER", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PREEMPTIVE_OS_LOOKUPACCOUNTSID", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PREEMPTIVE_HTTP_REQUEST", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "PREEMPTIVE_OLEDBOPS", + "isPreemptive": true, + "isExternal": true, + "isImplemented": true, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + + { + "name": "THREADPOOL", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "BACKUPIO", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "BACKUPBUFFER", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "HADR_SYNC_COMMIT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "DBMIRROR_DBM_EVENT", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + }, + { + "name": "SQLTRACE_BUFFER_FLUSH", + "isPreemptive": false, + "isExternal": false, + "isImplemented": false, + "isEnabled": true, + "showWaitCount": null, + "showAverageWaitTime": null, + "timeCalculationModel": null, + "applicableOperatorNames": null, + "description": null, + "helpfulUrls": null, + "internalComment": null + } + ] +} From d8bc57eb08dab0f5303575c51c8960a4ca4f37bd Mon Sep 17 00:00:00 2001 From: ClaudioESSilva Date: Tue, 28 Apr 2026 18:16:40 +0100 Subject: [PATCH 04/14] fix #297 --- src/PlanViewer.Core/PlanViewer.Core.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PlanViewer.Core/PlanViewer.Core.csproj b/src/PlanViewer.Core/PlanViewer.Core.csproj index fb5dcca..6cd5589 100644 --- a/src/PlanViewer.Core/PlanViewer.Core.csproj +++ b/src/PlanViewer.Core/PlanViewer.Core.csproj @@ -15,6 +15,7 @@ + From e6413d6ab346f3e708aa64e9c20016f37f410721 Mon Sep 17 00:00:00 2001 From: ClaudioESSilva Date: Tue, 28 Apr 2026 18:17:54 +0100 Subject: [PATCH 05/14] improve StatusText textblock so the error message is readable #297 --- src/PlanViewer.App/Dialogs/ConnectionDialog.axaml | 6 +++--- src/PlanViewer.App/Dialogs/ConnectionDialog.axaml.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/PlanViewer.App/Dialogs/ConnectionDialog.axaml b/src/PlanViewer.App/Dialogs/ConnectionDialog.axaml index 818c016..1545bc9 100644 --- a/src/PlanViewer.App/Dialogs/ConnectionDialog.axaml +++ b/src/PlanViewer.App/Dialogs/ConnectionDialog.axaml @@ -79,11 +79,11 @@ - +