Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
8 changes: 4 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@

<!-- Single source of truth for the product version.
Changing this file triggers the release workflow; manual workflow runs are also supported.
Version/InformationalVersion = 3.2.0 (UI, startup log, and packaging
Version/InformationalVersion = 3.2.3 (UI, startup log, and packaging
read this); AssemblyVersion/FileVersion stay numeric for Windows. -->
<VersionPrefix>3.2.0</VersionPrefix>
<AssemblyVersion>3.2.0.0</AssemblyVersion>
<FileVersion>3.2.0.0</FileVersion>
<VersionPrefix>3.2.3</VersionPrefix>
<AssemblyVersion>3.2.3.0</AssemblyVersion>
<FileVersion>3.2.3.0</FileVersion>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
</Project>
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand All @@ -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.
Expand Down Expand Up @@ -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.

Expand Down
45 changes: 27 additions & 18 deletions docs/RELEASE-README.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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`.
Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -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/",
Expand Down
2 changes: 1 addition & 1 deletion scripts/package-release.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
8 changes: 4 additions & 4 deletions tests/FrameViewAnalyzer.App.Tests/PackagingContractTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 1 addition & 1 deletion tests/FrameViewAnalyzer.App.Tests/ReleaseInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Loading