Skip to content

Make GOOSE values readable and keep the workspace lightweight - #41

Merged
masarray merged 13 commits into
mainfrom
feature/goose-lightweight-values-adapter
Jul 16, 2026
Merged

masarray merged 13 commits into
mainfrom
feature/goose-lightweight-values-adapter

Conversation

@masarray

Copy link
Copy Markdown
Owner

Root-cause audit

  • Event row color was tied permanently to the semantic event type, so every historical state-change row stayed blue forever.
  • DataSet badges were driven directly by the engine's raw bits(xx, unused=n) renderer, which is accurate protocol evidence but not beginner-readable.
  • The adapter selector relied only on the Npcap description/name and became visually blank while disabled during capture; it did not resolve the corresponding Windows network-interface friendly name.
  • The editable BPF expression occupied prime header space even though normal users should not change the mandatory GOOSE EtherType filter.
  • The presentation layer raised count properties on every 100 ms idle tick and retained up to 1,000 timeline rows.

Corrections

  • make state-change/warning row highlights transient and expire after 5 seconds
  • make DataSet value highlights expire after 5 seconds
  • decode compact one-bit values as true/false
  • decode IEC 61850 two-bit position values as Open [01], Closed [10], Intermediate [00], or Invalid [11]
  • keep the raw renderer value available in tooltips
  • resolve adapter labels through Windows NetworkInterface identity by MAC/GUID and suppress accidental ArIED61850 labels
  • keep the adapter text fully visible during capture while preventing selection changes
  • remove the BPF textbox from the operator UI; retain the fixed GOOSE/VLAN filter internally to reduce capture and CPU load
  • replace the active GOOSE view with a lean publisher/timeline/inspector workspace
  • cap the meaningful timeline at 300 rows, pending events at 512, process at most 48 per UI flush, and remove idle property-change churn

Safety

The GOOSE subscriber remains receive-only. Npcap capture, ARIEC61850 parsing, sequence/TAL supervision, SCL/live-discovery binding, and command/control behavior are unchanged.

@masarray
masarray merged commit 4c9bde1 into main Jul 16, 2026
1 check passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 61bcf334ac

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +61 to +64
if (snapshot.IsChanged)
{
_highlightUntilUtc = DateTimeOffset.UtcNow.AddSeconds(5);
IsHighlighted = true;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve value highlights across retransmission coalescing

When a GOOSE state change is followed by a fast retransmission before the 100 ms UI flush, _pendingGooseFrames keeps only the last snapshot for that stream; that retransmission normally has IsChanged == false, so this branch never starts the new 5-second highlight even though the current value changed. This makes the inspector miss highlights for normal GOOSE change/retransmit traffic; preserve the recent-change flag separately or drive the highlight from the non-coalesced timeline snapshots.

Useful? React with 👍 / 👎.

masarray added a commit that referenced this pull request Sep 11, 2026
Field-accepted COMTRADE workstation integration from the P1D stack through P1D.7.

Includes synchronized Time Signals, Phasor, Harmonics, native six-loop Locus, RMS/PRI-SEC presentation, cursor measurements, first-click fault-record reliability, deterministic analog-before-digital ordering, Clear/Auto state authority, retained/screen-space waveform rendering, synchronous cursor transforms, bounded latest-wins analysis/readout scheduling, and bridge-only packaging.

Exact merge-prep head passed Build ARSAS #2571, SV #1576, COMTRADE integration #171, and Windows Installer #893 against current main. The production AGENTS.md from main is preserved. ArdIrec PR #41 was merged first and the ARSAS lock remains pinned to the exact field-tested bridge commit. FAT workstation files/branches are intentionally untouched and remain under their independent field gate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant