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
8 changes: 4 additions & 4 deletions .github/workflows/release-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ on:
workflow_dispatch:
inputs:
version:
description: Version label, for example 1.4.0-beta.2
description: Version label, for example 1.4.0
required: true
default: 1.4.0-beta.2
default: 1.4.0
publish_release:
description: Create or update a GitHub Release
required: true
Expand All @@ -25,7 +25,7 @@ on:
release_notes_file:
description: Markdown file used as release body
required: true
default: docs/RELEASE_NOTES_v1.4.0-beta.2.md
default: docs/RELEASE_NOTES_v1.4.0.md
push:
tags:
- "v*"
Expand Down Expand Up @@ -132,7 +132,7 @@ jobs:
$sha = "artifacts/release/SHA256SUMS.txt"
$manifest = "artifacts/release/release-manifest.json"
$notesFile = '${{ github.event.inputs.release_notes_file }}'
if ([string]::IsNullOrWhiteSpace($notesFile)) { $notesFile = 'docs/RELEASE_NOTES_v1.4.0-beta.2.md' }
if ([string]::IsNullOrWhiteSpace($notesFile)) { $notesFile = 'docs/RELEASE_NOTES_v1.4.0.md' }
if (-not (Test-Path $notesFile)) { throw "Release notes file not found: $notesFile" }

$releaseArgs = @('release', 'create', $tag, $zip, $sha, $manifest, '--title', "Process Bus Insight $tag", '--notes-file', $notesFile, '--target', '${{ github.sha }}')
Expand Down
7 changes: 4 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
<PackageProjectUrl>https://masarray.github.io/DigSubAnalyzer/</PackageProjectUrl>
<NeutralLanguage>en</NeutralLanguage>

<!-- Public beta version. Release builds may override these properties from the tag. -->
<!-- Public release version. Pre-release versions may set VersionSuffix explicitly. -->
<VersionPrefix Condition="'$(VersionPrefix)' == ''">1.4.0</VersionPrefix>
<VersionSuffix Condition="'$(VersionSuffix)' == ''">beta.2</VersionSuffix>
<Version Condition="'$(Version)' == ''">$(VersionPrefix)-$(VersionSuffix)</Version>
<VersionSuffix Condition="'$(VersionSuffix)' == ''"></VersionSuffix>
Comment on lines 13 to +14

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Synchronize release metadata with the stable version

Changing the repository version to 1.4.0 makes the repository-health step in .github/workflows/ci.yml fail deterministically because docs/index.html still declares 1.4.0-beta.2 and the README still uses the beta.2 package name; the release workflow also defaults to beta.2 and marks manual releases as prereleases. Update these required version consumers together so CI can pass and the stable workflow cannot publish the old beta package.

AGENTS.md reference: AGENTS.md:L71-L72

Useful? React with 👍 / 👎.

<Version Condition="'$(Version)' == '' and '$(VersionSuffix)' == ''">$(VersionPrefix)</Version>
<Version Condition="'$(Version)' == '' and '$(VersionSuffix)' != ''">$(VersionPrefix)-$(VersionSuffix)</Version>
<PackageVersion Condition="'$(PackageVersion)' == ''">$(Version)</PackageVersion>
<AssemblyVersion Condition="'$(AssemblyVersion)' == ''">$(VersionPrefix).0</AssemblyVersion>
<FileVersion Condition="'$(FileVersion)' == ''">$(VersionPrefix).0</FileVersion>
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

**Process Bus Insight** is a free, open-source, receive-only **IEC 61850 Process Bus analyzer for Windows**. It provides engineering visibility into **Sampled Values (SV)**, **GOOSE**, **PTPv2 timing context**, and **SCL expected-vs-observed validation** for authorized FAT, SAT, commissioning-support, interoperability, laboratory, and troubleshooting workflows.

The project is currently a **public beta**. Its purpose is to identify live publishers, inspect protocol evidence, isolate unhealthy streams, reproduce sanitized captures offline, compare observed traffic against SCL, and preserve defensible findings without overstating measurement confidence.
The project is distributed as a **stable software release** for engineering observation and troubleshooting. Its purpose is to identify live publishers, inspect protocol evidence, isolate unhealthy streams, reproduce sanitized captures offline, compare observed traffic against SCL, and preserve defensible findings without overstating measurement confidence.

> **Timing confidence:** normal Windows/Npcap timestamps and replayed capture timestamps are software evidence. Arrival timing is useful for screening and troubleshooting, but is not certification-grade jitter evidence unless the capture path is validated with appropriate hardware timestamping, TAP, or trusted timing equipment.

Expand Down Expand Up @@ -56,7 +56,7 @@ The application can record what was configured in SCL, what the selected capture
Current post-transition package naming:

```text
ProcessBusInsight-v1.4.0-beta.2-win-x64-portable.zip
ProcessBusInsight-v1.4.0-win-x64-portable.zip
SHA256SUMS.txt
release-manifest.json
```
Expand Down Expand Up @@ -97,8 +97,8 @@ dotnet run --project .\src\ProcessBus.App.Wpf\ProcessBus.App.Wpf.csproj -c Relea
Create and verify a portable package:

```powershell
.\scripts\publish-windows-portable.ps1 -Version "1.4.0-beta.2"
.\scripts\verify-release-package.ps1 -PackageZip ".\artifacts\release\ProcessBusInsight-v1.4.0-beta.2-win-x64-portable.zip"
.\scripts\publish-windows-portable.ps1 -Version "1.4.0"
.\scripts\verify-release-package.ps1 -PackageZip ".\artifacts\release\ProcessBusInsight-v1.4.0-win-x64-portable.zip"
```

Run the repository-quality gate:
Expand Down
33 changes: 33 additions & 0 deletions docs/RELEASE_NOTES_v1.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Process Bus Insight v1.4.0 — Stable

Public Windows x64 portable release of **Process Bus Insight**, the receive-only IEC 61850 SV / GOOSE / PTP analyzer.

## Operator improvements

- Five uncluttered primary workspaces: Analyzer, Diagnostics, GOOSE, Timing/PTP, and SCL.
- Advanced raw packet inspection and engineering validation stay accessible through the Tools menu instead of adding navigation tabs.
- SCL mismatch badges and expected/observed svID text remain readable with natural-height rows and multiline wrapping. Redundant column and explanatory captions are removed; full matched evidence is still available in technical details and tooltips.
- SV real-sample waveform display, zero-cross alignment, stream-aware auto peak scaling, calibrated-unit selection, phasors and RMS.
- Per-stream diagnostics: arrival jitter, smpCnt discontinuity, missing samples, svQuality/smpSynch and capture-path indicators.
- GOOSE event timeline, PTP context, SCL stream catalog, dataset order and compare-to-wire evidence.

## Install and verify

1. Download `ProcessBusInsight-v1.4.0-win-x64-portable.zip` from this release.
2. Compare SHA256 with `SHA256SUMS.txt` and extract the portable application.
3. Install Npcap separately for live network capture. For offline analysis, open a compatible classic Ethernet PCAP.
4. Select the capture adapter and click Run. Use SCL Import to load SCD/CID/ICD/IID for expected/observed identity comparison.

## Important engineering limitations

**Stable** denotes a packaged software release, not a calibrated or IEC 61850-conformance-certified test instrument. No protection operation or SV/GOOSE publishing is included. Captured traffic does not prove a subscriber acted on it.

- Normal Windows/Npcap timestamps and PCAP replay provide timing **screening evidence**; they are not proof of clock lock, precise jitter, or synchronization accuracy without independently validated capture and timestamping equipment.
- The 4I+4V nominal profile is an engineering display scaling assumption unless corresponding SCL mapping/instrument calibration is established.
- A stream with a different svID from expected SCL correctly reports mismatch even if APPID, destination MAC, VLAN and confRev agree.
- Real field acceptance, DPI clipping, USB Ethernet capture timing, packet losses and sustained CPU/GC must be verified in the intended environment.
- This release is licensed **GPL-3.0-or-later**. Review LICENSE, NOTICE, third-party and commercial-license documentation for the applicable terms.

## Verification

Windows Release build, xUnit regression suite, runtime stability and CodeQL / dependency audit are required before publication. The release workflow additionally rebuilds, tests, packages, and verifies the portable ZIP and SHA256 manifest.
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"applicationCategory": "EngineeringApplication",
"applicationSubCategory": "Digital substation and process bus analysis",
"operatingSystem": "Windows 10, Windows 11",
"softwareVersion": "1.4.0-beta.2",
"softwareVersion": "1.4.0",
"license": "https://spdx.org/licenses/GPL-3.0-or-later.html",
"isAccessibleForFree": true,
"url": "https://masarray.github.io/DigSubAnalyzer/",
Expand Down
Loading
Loading