From f22215097d5e9cdb05955b3ef45ea8eee47a5309 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:48:49 -0400 Subject: [PATCH 1/2] Switch to release-signing and add SignPath sponsor attribution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SignPath FOSS certificate approved — switch from test-signing to release-signing policy and add required sponsor section to README. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build.yml | 6 +++--- README.md | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c3168b9..a235f90 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,7 +114,7 @@ jobs: api-token: '${{ secrets.SIGNPATH_API_TOKEN }}' organization-id: '7969f8b6-d946-4a74-9bac-a55856d8b8e0' project-slug: 'PerformanceMonitor' - signing-policy-slug: 'test-signing' + signing-policy-slug: 'release-signing' artifact-configuration-slug: 'Dashboard' github-artifact-id: '${{ steps.upload-dashboard.outputs.artifact-id }}' wait-for-completion: true @@ -127,7 +127,7 @@ jobs: api-token: '${{ secrets.SIGNPATH_API_TOKEN }}' organization-id: '7969f8b6-d946-4a74-9bac-a55856d8b8e0' project-slug: 'PerformanceMonitor' - signing-policy-slug: 'test-signing' + signing-policy-slug: 'release-signing' artifact-configuration-slug: 'Lite' github-artifact-id: '${{ steps.upload-lite.outputs.artifact-id }}' wait-for-completion: true @@ -140,7 +140,7 @@ jobs: api-token: '${{ secrets.SIGNPATH_API_TOKEN }}' organization-id: '7969f8b6-d946-4a74-9bac-a55856d8b8e0' project-slug: 'PerformanceMonitor' - signing-policy-slug: 'test-signing' + signing-policy-slug: 'release-signing' artifact-configuration-slug: 'Installers' github-artifact-id: '${{ steps.upload-installer.outputs.artifact-id }}' wait-for-completion: true diff --git a/README.md b/README.md index 2d3d4d3..dd6cb13 100644 --- a/README.md +++ b/README.md @@ -693,6 +693,17 @@ See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for complete license texts. --- +## Sponsors + + + + + + +
SignPathFree code signing on Windows provided by SignPath.io, certificate by SignPath Foundation
+ +--- + ## License Copyright (c) 2026 Darling Data, LLC. Licensed under the MIT License. See [LICENSE](LICENSE) for details. From e8e13e5e5a398cdbcd2e0e07ae5131b7b984bbeb Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:32:39 -0400 Subject: [PATCH 2/2] Fix CSV and clipboard exports writing StackPanel type name as column headers (#805) Five inline export paths used col.Header?.ToString() which returns "System.Windows.Controls.StackPanel" for complex headers. Replace with DataGridClipboardBehavior.GetHeaderText() which extracts the TextBlock text. Affected: ServerTab, FinOpsTab (clipboard + CSV), AlertsHistoryTab (clipboard + CSV). Co-Authored-By: Claude Opus 4.6 (1M context) --- Lite/Controls/AlertsHistoryTab.xaml.cs | 5 +++-- Lite/Controls/FinOpsTab.xaml.cs | 5 +++-- Lite/Controls/ServerTab.xaml.cs | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Lite/Controls/AlertsHistoryTab.xaml.cs b/Lite/Controls/AlertsHistoryTab.xaml.cs index e6f37f3..d884459 100644 --- a/Lite/Controls/AlertsHistoryTab.xaml.cs +++ b/Lite/Controls/AlertsHistoryTab.xaml.cs @@ -19,6 +19,7 @@ using Microsoft.Win32; using PerformanceMonitorLite.Controls; using PerformanceMonitorLite.Models; +using PerformanceMonitorLite.Helpers; using PerformanceMonitorLite.Services; namespace PerformanceMonitorLite.Controls; @@ -419,7 +420,7 @@ private void CopyAllRows_Click(object sender, RoutedEventArgs e) foreach (var col in grid.Columns) { - sb.Append(col.Header?.ToString() ?? ""); + sb.Append(DataGridClipboardBehavior.GetHeaderText(col)); sb.Append('\t'); } sb.AppendLine(); @@ -456,7 +457,7 @@ private void ExportToCsv_Click(object sender, RoutedEventArgs e) var headers = new List(); foreach (var col in grid.Columns) - headers.Add(CsvEscape(col.Header?.ToString() ?? "")); + headers.Add(CsvEscape(DataGridClipboardBehavior.GetHeaderText(col))); sb.AppendLine(string.Join(",", headers)); foreach (var item in grid.Items) diff --git a/Lite/Controls/FinOpsTab.xaml.cs b/Lite/Controls/FinOpsTab.xaml.cs index 67505af..ca5eda6 100644 --- a/Lite/Controls/FinOpsTab.xaml.cs +++ b/Lite/Controls/FinOpsTab.xaml.cs @@ -18,6 +18,7 @@ using System.Windows.Media; using Microsoft.Win32; using PerformanceMonitorLite.Models; +using PerformanceMonitorLite.Helpers; using PerformanceMonitorLite.Services; namespace PerformanceMonitorLite.Controls; @@ -884,7 +885,7 @@ private void CopyAllRows_Click(object sender, RoutedEventArgs e) foreach (var col in grid.Columns) { - sb.Append(col.Header?.ToString() ?? ""); + sb.Append(DataGridClipboardBehavior.GetHeaderText(col)); sb.Append('\t'); } sb.AppendLine(); @@ -930,7 +931,7 @@ private void ExportToCsv_Click(object sender, RoutedEventArgs e) var headers = new List(); foreach (var col in grid.Columns) - headers.Add(CsvEscape(col.Header?.ToString() ?? "")); + headers.Add(CsvEscape(DataGridClipboardBehavior.GetHeaderText(col))); sb.AppendLine(string.Join(",", headers)); foreach (var item in grid.Items) diff --git a/Lite/Controls/ServerTab.xaml.cs b/Lite/Controls/ServerTab.xaml.cs index 6f3a374..4370176 100644 --- a/Lite/Controls/ServerTab.xaml.cs +++ b/Lite/Controls/ServerTab.xaml.cs @@ -4213,7 +4213,7 @@ private void ExportToCsv_Click(object sender, RoutedEventArgs e) var headers = new List(); foreach (var col in grid.Columns) { - headers.Add(CsvEscape(col.Header?.ToString() ?? "", sep)); + headers.Add(CsvEscape(DataGridClipboardBehavior.GetHeaderText(col), sep)); } sb.AppendLine(string.Join(sep, headers));