From db56c235473bfb03cfb619d5cd69e9a97c50df28 Mon Sep 17 00:00:00 2001 From: Strecker <101173645+StreckerMX@users.noreply.github.com> Date: Tue, 1 Sep 2026 23:47:02 -0600 Subject: [PATCH] Prepare Frame Performance Analyzer 3.2.3 --- .zenodo.json | 2 +- CITATION.cff | 2 +- Directory.Build.props | 8 ++-- README.md | 10 ++++- docs/RELEASE-README.md | 45 +++++++++++-------- docs/index.html | 2 +- scripts/package-release.ps1 | 2 +- .../PackagingContractTests.cs | 8 ++-- .../ReleaseInfoTests.cs | 2 +- 9 files changed, 48 insertions(+), 33 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index f794c30..976eab1 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -7,7 +7,7 @@ } ], "title": "Frame Performance Analyzer", - "version": "3.2.0", + "version": "3.2.3", "description": "Native Windows desktop application for analyzing and comparing NVIDIA FrameView captures and NVIDIA App performance-overlay logs, with interactive performance charts, Pair and Multi benchmark comparison, visible-range statistics, filtering, a benchmark library, and presentation-ready exports.", "access_right": "open", "license": "mit", diff --git a/CITATION.cff b/CITATION.cff index 3106aaf..0fbc2f1 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "If you use Frame Performance Analyzer, please cite the software using these metadata." title: "Frame Performance Analyzer" type: software -version: "3.2.0" +version: "3.2.3" license: MIT abstract: "Native Windows desktop application for analyzing and comparing NVIDIA FrameView captures and NVIDIA App performance-overlay logs, with interactive charts, benchmark comparison, visible-range statistics, filtering, a benchmark library, and presentation-ready exports." authors: diff --git a/Directory.Build.props b/Directory.Build.props index 9e55098..1250877 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -19,11 +19,11 @@ - 3.2.0 - 3.2.0.0 - 3.2.0.0 + 3.2.3 + 3.2.3.0 + 3.2.3.0 false diff --git a/README.md b/README.md index 6c4d2a5..b63eb0c 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Portable self-contained builds remain available from **[GitHub Releases](https:/ For the current stable release: -1. Download `FramePerformanceAnalyzer-v3.2.0-win-x64.zip`. +1. Download `FramePerformanceAnalyzer-v3.2.3-win-x64.zip`. 2. Extract the archive. 3. Run `FramePerformanceAnalyzer.exe`. @@ -109,6 +109,12 @@ The current application has no telemetry and makes no network calls during norma - **Interface polish.** Themed scrollbars, exact tick-aligned grid lines, fixed cursor readouts, and distinct **Reset view** / **Fit visible Y** actions keep the dense benchmark interface predictable. - **Distribution rebranding.** The public product and downloadable files are now **Frame Performance Analyzer**, while NVIDIA FrameView terminology and stable technical identities remain compatible. +## Maintenance fixes in 3.2.3 + +- **Source-folder scoped benchmark selection.** Pair Base, Pair Comparison, and Multi now show only captures discovered in the active Source folder while the global Benchmark Library remains intact. +- **Precision-safe Frame points.** Frame points now preserve the active Precision-filtered frame set instead of reintroducing excluded raw FPS spikes. Raw mode continues to expose the original frame-level values. +- **Correct capture durations.** FrameView benchmark duration now uses the actual recorded timestamp span rather than the final absolute `TimeInSeconds` value. NVIDIA App elapsed-time logs retain their native duration semantics. + ## Features - **Interactive performance charts** with metric switching, a fixed cursor value readout, cursor-anchored zoom, drag pan, range selection, full-view reset, visible-Y fitting, and adaptive FPS scaling. @@ -204,7 +210,7 @@ More technical documentation is available in [`docs/`](docs/), including archite ## Verification -Version **3.2.0** is published on Microsoft Store and covered by the Windows/.NET 10 automated test suite, GitHub release-package validation, and Microsoft Store MSIX validation. Manual checkpoints cover normal-load performance, Precision filtering, compressed analyzed time, true frame points, Pair, Multi, the unified browser, metadata labels, zoom/pan, exact grid lines, and FrameView/NVIDIA App metrics. +GitHub release **3.2.3** is covered by the Windows/.NET 10 automated test suite, release-package validation, and manual release-candidate testing. Version **3.2.0** remains the currently published Microsoft Store build until the Store update completes. Each GitHub release also includes a `.sha256` file for verifying the downloadable ZIP. diff --git a/docs/RELEASE-README.md b/docs/RELEASE-README.md index e9d84ff..fe079ea 100644 --- a/docs/RELEASE-README.md +++ b/docs/RELEASE-README.md @@ -1,16 +1,28 @@ -# Frame Performance Analyzer 3.2.0 +# Frame Performance Analyzer 3.2.3 -**Release:** Precision Timeline -**Version:** 3.2.0 -**Windows package version:** 3.2.0.0 +**Release:** Precision Timeline maintenance update +**Version:** 3.2.3 +**Windows package version:** 3.2.3.0 -Frame Performance Analyzer is a native Windows desktop application for -analyzing and comparing NVIDIA FrameView captures and NVIDIA App -performance-overlay logs. Version 3.2.0 introduces the Precision Timeline -workflow while preserving the established Pair, Multi, Library, and export -features. +Frame Performance Analyzer 3.2.3 is a maintenance update for the +Precision Timeline release. It preserves the 3.2.0 feature set while +addressing issues discovered during post-release validation. -## What's new in 3.2.0 +## Fixes in 3.2.3 + +- **Contextual benchmark browser scoping:** Pair Base, Pair Comparison, and + Multi selectors now show only captures belonging to the currently active + Source folder. The global Benchmark Library remains historical and is not + cleared when the Source folder changes. +- **Precision Frame points:** enabling Frame points no longer reintroduces + abnormal raw FPS spikes while Precision filtering is active. Raw mode still + preserves the original frame-level values. +- **Benchmark capture duration:** FrameView capture duration is now calculated + from the actual recorded timestamp span rather than treating the final + absolute `TimeInSeconds` value as the capture length. NVIDIA App elapsed-time + logs retain their existing semantics. + +## Precision Timeline highlights - **Precision filtering** is one explicit binary mode. Off keeps the complete raw capture. On applies automatic GPU gating, FPS outlier handling, fixed @@ -29,17 +41,14 @@ features. visible-range statistics, and direction-aware deltas. - **Multi** compares 2–8 captures as equal peers with stable colors shared by charts, KPI rows, cursor values, selection, and exports. -- Pair, Comparison, Multi, and Library now use one **unified benchmark - browser** with search, filters, full-card selection, source-folder control, - and protection against choosing the current Base as its own Comparison. +- Pair, Comparison, Multi, and Library use one **unified benchmark browser** + with search, filters, full-card selection, source-folder control, and + protection against choosing the current Base as its own Comparison. - Metadata **Benchmark name** values appear together with the detected capture name in the quick selector, so repeated captures remain distinguishable. - The interface uses themed scrollbars, exact tick-aligned grid lines, a fixed cursor-value readout, and distinct **Reset view** and **Fit visible Y** actions. -- Public branding is now **Frame Performance Analyzer**. Technical project - names, persisted storage locations, Microsoft Store identity, and legitimate - NVIDIA FrameView terminology remain stable for compatibility. ## Supported input @@ -100,7 +109,7 @@ existing files. ## GitHub ZIP -1. Unzip `FramePerformanceAnalyzer-v3.2.0-win-x64.zip`. +1. Unzip `FramePerformanceAnalyzer-v3.2.3-win-x64.zip`. 2. Double-click `FramePerformanceAnalyzer.exe`. The build is self-contained for Windows x64; a separate .NET runtime is not @@ -113,7 +122,7 @@ only when it came from the official repository release. ## Microsoft Store package The Store artifact is -`FramePerformanceAnalyzer-Store-3.2.0.0-x64.msix`. Microsoft Store signs the +`FramePerformanceAnalyzer-Store-3.2.3.0-x64.msix`. Microsoft Store signs the package after certification. The physical filename and public DisplayName use the new brand, while the Partner Center package identity intentionally remains `Strecker.FrameViewAnalyzer`. diff --git a/docs/index.html b/docs/index.html index bf3899b..32785f0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -29,7 +29,7 @@ "name": "Frame Performance Analyzer", "applicationCategory": "UtilitiesApplication", "operatingSystem": "Windows 10, Windows 11", - "softwareVersion": "3.2.0", + "softwareVersion": "3.2.3", "isAccessibleForFree": true, "description": "Free and open-source Windows desktop application for analyzing and comparing NVIDIA FrameView captures and NVIDIA App performance logs.", "url": "https://streckermx.github.io/Frame-Performance-Analyzer/", diff --git a/scripts/package-release.ps1 b/scripts/package-release.ps1 index 80116f3..096cc32 100644 --- a/scripts/package-release.ps1 +++ b/scripts/package-release.ps1 @@ -44,7 +44,7 @@ $dotnet = (Get-Command dotnet).Source if (-not $dotnet) { throw 'dotnet was not found on PATH.' } # Single source of truth for the version: Directory.Build.props -# (VersionPrefix → "3.2.0" for this release). +# (VersionPrefix → "3.2.3" for this release). $version = (& $dotnet msbuild $appProject -getProperty:Version).Trim() if (-not $version) { throw 'Could not resolve the product version from the project.' } Write-Host "==> packaging version: $version" diff --git a/tests/FrameViewAnalyzer.App.Tests/PackagingContractTests.cs b/tests/FrameViewAnalyzer.App.Tests/PackagingContractTests.cs index 3d4877d..0271c57 100644 --- a/tests/FrameViewAnalyzer.App.Tests/PackagingContractTests.cs +++ b/tests/FrameViewAnalyzer.App.Tests/PackagingContractTests.cs @@ -33,12 +33,12 @@ public void Product_and_store_versions_are_derived_from_the_release_source() var props = XDocument.Parse(Read("Directory.Build.props")); var version = props.Descendants("VersionPrefix").Single().Value; - Assert.Equal("3.2.0", version); - Assert.Equal("3.2.0.0", $"{version}.0"); + Assert.Equal("3.2.3", version); + Assert.Equal("3.2.3.0", $"{version}.0"); Assert.Equal(PublicName, props.Descendants("Product").Single().Value); Assert.Equal(PublicName, props.Descendants("AssemblyTitle").Single().Value); - Assert.Equal("3.2.0.0", props.Descendants("AssemblyVersion").Single().Value); - Assert.Equal("3.2.0.0", props.Descendants("FileVersion").Single().Value); + Assert.Equal("3.2.3.0", props.Descendants("AssemblyVersion").Single().Value); + Assert.Equal("3.2.3.0", props.Descendants("FileVersion").Single().Value); } [Fact] diff --git a/tests/FrameViewAnalyzer.App.Tests/ReleaseInfoTests.cs b/tests/FrameViewAnalyzer.App.Tests/ReleaseInfoTests.cs index f78cf08..bdc1395 100644 --- a/tests/FrameViewAnalyzer.App.Tests/ReleaseInfoTests.cs +++ b/tests/FrameViewAnalyzer.App.Tests/ReleaseInfoTests.cs @@ -10,7 +10,7 @@ public class ReleaseInfoTests public void Informational_version_is_the_stable_semver() { // The single authoritative version source is Directory.Build.props. - Assert.Equal("3.2.0", ReleaseInfo.InformationalVersion); + Assert.Equal("3.2.3", ReleaseInfo.InformationalVersion); } [Fact]