From 6cf843de19769d4181a690fa160d99c7e5e5584f Mon Sep 17 00:00:00 2001 From: Jonathan Horvath Date: Wed, 7 Jan 2026 18:47:45 -0500 Subject: [PATCH 01/13] Update document link in solution --- OSDP-Bench.sln | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OSDP-Bench.sln b/OSDP-Bench.sln index 427a1bd..50cfe1f 100644 --- a/OSDP-Bench.sln +++ b/OSDP-Bench.sln @@ -26,8 +26,8 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{ED2EC291-3353-442C-AD2C-3D3438798EF0}" ProjectSection(SolutionItems) = preProject README.md = README.md - docs\CLAUDE.md = docs\CLAUDE.md docs\ConnectionButtonBehavior.md = docs\ConnectionButtonBehavior.md + CLAUDE.md = CLAUDE.md EndProjectSection EndProject Global From c8848a4866d26f8161d613919279bb257b45d586 Mon Sep 17 00:00:00 2001 From: Jonathan Horvath Date: Wed, 7 Jan 2026 18:48:20 -0500 Subject: [PATCH 02/13] Bump version to 3.0.21 --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index a1f13df..4fa7981 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - 3.0.20 + 3.0.21 Jonathan Horvath From 2680d4523ec614341789f740fb1a9486e2755b44 Mon Sep 17 00:00:00 2001 From: Jonathan Horvath Date: Wed, 7 Jan 2026 19:41:13 -0500 Subject: [PATCH 03/13] Fix NuGet pack pipeline by adding build step The pack step was failing with NU5026 because localized resource DLLs were missing. Added restore and build steps before pack, and removed the Windows publish tasks that are no longer needed. Co-Authored-By: Claude Opus 4.5 --- ci/package.yml | 49 ++++++++++++++----------------------------------- 1 file changed, 14 insertions(+), 35 deletions(-) diff --git a/ci/package.yml b/ci/package.yml index 3b19bbc..d52117b 100644 --- a/ci/package.yml +++ b/ci/package.yml @@ -6,48 +6,27 @@ steps: version: '10.x' - task: DotNetCoreCLI@2 - displayName: 'dotnet pack Core library' + displayName: 'dotnet restore' inputs: - command: 'pack' - arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/nuget' - packagesToPack: 'src/Core/Core.csproj' + command: 'restore' + projects: 'src/Core/Core.csproj' - task: DotNetCoreCLI@2 - displayName: 'dotnet publish for win-x64' + displayName: 'dotnet build Core library' inputs: - command: 'publish' - publishWebProjects: false - projects: 'src/UI/Windows/Windows.csproj' - arguments: >- - -r win-x64 - --configuration $(buildConfiguration) - --self-contained true - -p:PublishSingleFile=true - -p:IncludeNativeLibrariesForSelfExtract=true - -p:EnableCompressionInSingleFile=true - --output $(Build.ArtifactStagingDirectory)/OSDPBench/win-x64 - zipAfterPublish: false - modifyOutputPath: false + command: 'build' + projects: 'src/Core/Core.csproj' + arguments: '--configuration $(buildConfiguration) --no-restore' - task: DotNetCoreCLI@2 - displayName: 'dotnet publish for win-arm64' + displayName: 'dotnet pack Core library' inputs: - command: 'publish' - publishWebProjects: false - projects: 'src/UI/Windows/Windows.csproj' - arguments: >- - -r win-arm64 - --configuration $(buildConfiguration) - --self-contained true - -p:PublishSingleFile=true - -p:IncludeNativeLibrariesForSelfExtract=true - -p:EnableCompressionInSingleFile=true - --output $(Build.ArtifactStagingDirectory)/OSDPBench/win-arm64 - zipAfterPublish: false - modifyOutputPath: false + command: 'pack' + arguments: '--configuration $(buildConfiguration) --no-build --output $(Build.ArtifactStagingDirectory)/nuget' + packagesToPack: 'src/Core/Core.csproj' - task: PublishPipelineArtifact@1 - displayName: 'Publish artifacts' + displayName: 'Publish NuGet package' inputs: - targetPath: '$(Build.ArtifactStagingDirectory)' - artifactName: Release + targetPath: '$(Build.ArtifactStagingDirectory)/nuget' + artifactName: NuGet From 6f1ea8102d43b29ac28e3b92ddc5446f6d8b8fbc Mon Sep 17 00:00:00 2001 From: Jonathan Horvath Date: Mon, 12 Jan 2026 15:13:27 -0500 Subject: [PATCH 04/13] Ensure that the main window size is set based on screen dimensions --- src/UI/Windows/Views/Windows/MainWindow.xaml.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/UI/Windows/Views/Windows/MainWindow.xaml.cs b/src/UI/Windows/Views/Windows/MainWindow.xaml.cs index 373d55f..d50771d 100644 --- a/src/UI/Windows/Views/Windows/MainWindow.xaml.cs +++ b/src/UI/Windows/Views/Windows/MainWindow.xaml.cs @@ -1,4 +1,5 @@ -using OSDPBench.Core.ViewModels.Windows; +using System.Windows; +using OSDPBench.Core.ViewModels.Windows; using Wpf.Ui; using Wpf.Ui.Abstractions; using Wpf.Ui.Appearance; @@ -24,6 +25,13 @@ public MainWindow(MainWindowViewModel viewModel, SystemThemeWatcher.Watch(this); InitializeComponent(); + + // Set window size based on screen dimensions + var workArea = SystemParameters.WorkArea; + + // Use 80% of the screen size or 800px, whichever is smaller + this.Width = Math.Min(800, workArea.Width * 0.8); + this.Height = Math.Min(800, workArea.Height * 0.8); SetPageService(pageService); From 312684d6cc1f1b1594f28e5b623a6a2d616e3455 Mon Sep 17 00:00:00 2001 From: Jonathan Horvath Date: Mon, 12 Jan 2026 15:22:34 -0500 Subject: [PATCH 05/13] Move expand button to left side and enable row click to expand details Improves monitor page usability by moving the expand arrow to the first column so it remains visible at narrow window widths, and allowing users to click anywhere on a row to toggle packet details. Co-Authored-By: Claude Opus 4.5 --- src/UI/Windows/Views/Pages/MonitorPage.xaml | 63 ++++++++-------- .../Windows/Views/Pages/MonitorPage.xaml.cs | 71 +++++++++++++++---- 2 files changed, 90 insertions(+), 44 deletions(-) diff --git a/src/UI/Windows/Views/Pages/MonitorPage.xaml b/src/UI/Windows/Views/Pages/MonitorPage.xaml index 656e040..8d8d375 100644 --- a/src/UI/Windows/Views/Pages/MonitorPage.xaml +++ b/src/UI/Windows/Views/Pages/MonitorPage.xaml @@ -166,15 +166,42 @@ - + + + + + + + + + + + + + + + + @@ -278,30 +305,6 @@ - - - - - - - - - - - - - - - diff --git a/src/UI/Windows/Views/Pages/MonitorPage.xaml.cs b/src/UI/Windows/Views/Pages/MonitorPage.xaml.cs index c066fcc..e6563b7 100644 --- a/src/UI/Windows/Views/Pages/MonitorPage.xaml.cs +++ b/src/UI/Windows/Views/Pages/MonitorPage.xaml.cs @@ -33,34 +33,77 @@ private void ToggleRowDetails(object sender, RoutedEventArgs e) { if (sender is Button { DataContext: not null } button) { - // Get the DataGridRow for the clicked button var row = FindParent(button); + if (row != null) + { + ToggleRowDetailsVisibility(row); + } + } + } + private void DataGrid_PreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + if (e.OriginalSource is DependencyObject source) + { + var row = FindParent(source); if (row != null) { - // Toggle RowDetails visibility - row.DetailsVisibility = row.DetailsVisibility == Visibility.Visible - ? Visibility.Collapsed - : Visibility.Visible; - - button.Icon = new SymbolIcon { Symbol = row.DetailsVisibility == Visibility.Visible ? SymbolRegular.ChevronUp24 : SymbolRegular.ChevronDown24 }; - button.ToolTip = row.DetailsVisibility == Visibility.Visible ? Core.Resources.Resources.GetString("Monitor_Collapse") : Core.Resources.Resources.GetString("Monitor_Expand"); + ToggleRowDetailsVisibility(row); } } } - /// - /// Helper method to find parent of a specific type. - /// - private T? FindParent(DependencyObject child) where T : DependencyObject + private void ToggleRowDetailsVisibility(DataGridRow row) { - DependencyObject? parent = VisualTreeHelper.GetParent(child); + row.DetailsVisibility = row.DetailsVisibility == Visibility.Visible + ? Visibility.Collapsed + : Visibility.Visible; - while (parent != null && !(parent is T)) + var button = FindChild