From 4b31170dada268fa5d81e06ceef4f836b8ed85db Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:12:41 +0700 Subject: [PATCH 1/8] fix(scl): wrap IDs without clipping; keep mismatch badge legible and remove repeated metadata --- src/ProcessBus.App.Wpf/MainWindow.xaml | 68 +++++++++++--------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/src/ProcessBus.App.Wpf/MainWindow.xaml b/src/ProcessBus.App.Wpf/MainWindow.xaml index c39a6dab..5097587f 100644 --- a/src/ProcessBus.App.Wpf/MainWindow.xaml +++ b/src/ProcessBus.App.Wpf/MainWindow.xaml @@ -3993,10 +3993,7 @@ - + @@ -4095,10 +4092,7 @@ - + @@ -4114,8 +4108,8 @@ CanUserDeleteRows="False" CanUserSortColumns="False" GridLinesVisibility="None" - RowHeight="48" - MinRowHeight="48" + RowHeight="{x:Static sys:Double.NaN}" + MinRowHeight="46" RowStyle="{StaticResource EngineeringDataGridRowStyle}" CellStyle="{StaticResource EngineeringDataGridCellStyle}" FontSize="11.5" @@ -4142,52 +4136,49 @@ - + - - + + - - - - - - - - - + - - - - + + + - + - - - - + + + - + @@ -4211,7 +4202,7 @@ - + @@ -4219,18 +4210,17 @@ - + + Margin="0,0,0,5" TextWrapping="Wrap"/> - @@ -4268,7 +4258,7 @@ - + Date: Sun, 18 Oct 2026 08:13:23 +0700 Subject: [PATCH 2/8] chore(release): prepare v1.4.0 stable package version with optional prerelease suffix --- Directory.Build.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index a690d919..bfa723e2 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,10 +9,10 @@ https://masarray.github.io/DigSubAnalyzer/ en - + 1.4.0 - beta.2 - $(VersionPrefix)-$(VersionSuffix) + + $(VersionPrefix)$(VersionSuffix->'-{0}') $(Version) $(VersionPrefix).0 $(VersionPrefix).0 From b08c89d78c3c894c63431d8f5ebc6bf4496f8cc1 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:13:25 +0700 Subject: [PATCH 3/8] docs: describe stable engineering software with unchanged timing and certification boundaries --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc0617bd..0bf124c6 100644 --- a/README.md +++ b/README.md @@ -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. From e5a821b4d40bc2a1aa05b1ffdf69bb25479c212e Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:13:28 +0700 Subject: [PATCH 4/8] docs(release): v1.4.0 stable release notes and explicit engineering evidence boundaries --- docs/RELEASE_NOTES_v1.4.0.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/RELEASE_NOTES_v1.4.0.md diff --git a/docs/RELEASE_NOTES_v1.4.0.md b/docs/RELEASE_NOTES_v1.4.0.md new file mode 100644 index 00000000..117ca3e7 --- /dev/null +++ b/docs/RELEASE_NOTES_v1.4.0.md @@ -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. From df1a3e771ff543b11eb6ea2075ecb3be7ac2031e Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:13:46 +0700 Subject: [PATCH 5/8] fix(build): use valid conditional MSBuild stable and prerelease version properties --- Directory.Build.props | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index bfa723e2..f44804fb 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,8 @@ 1.4.0 - $(VersionPrefix)$(VersionSuffix->'-{0}') + $(VersionPrefix) + $(VersionPrefix)-$(VersionSuffix) $(Version) $(VersionPrefix).0 $(VersionPrefix).0 From 4329c6aedbae88a44ea0e9c35294cde71d810c5e Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:16:10 +0700 Subject: [PATCH 6/8] docs: update public product metadata to v1.4.0 --- docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index 65580e87..0f465fd9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -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/", From 1d28cb824a4d7a3c7aa09bf836de1588595cf2d3 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:16:14 +0700 Subject: [PATCH 7/8] docs: sync stable ZIP and portable package verification instructions --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0bf124c6..96a01ca0 100644 --- a/README.md +++ b/README.md @@ -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 ``` @@ -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: From d79422cfc2deb36aa6625e5ab7c39cd842973bca Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 18 Oct 2026 08:16:17 +0700 Subject: [PATCH 8/8] ci(release): use stable 1.4.0 defaults and release notes --- .github/workflows/release-package.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-package.yml b/.github/workflows/release-package.yml index 16b16cd0..2b0e0523 100644 --- a/.github/workflows/release-package.yml +++ b/.github/workflows/release-package.yml @@ -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 @@ -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*" @@ -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 }}')