Skip to content

Fix IED capability and fault-record window regressions - #49

Closed
masarray wants to merge 18 commits into
mainfrom
agent/fix-ied-capability-regression
Closed

Fix IED capability and fault-record window regressions#49
masarray wants to merge 18 commits into
mainfrom
agent/fix-ied-capability-regression

Conversation

@masarray

@masarray masarray commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Root causes

Two WPF regressions were found after adding the per-IED capability actions.

  1. Capability-state updates were subscribed directly to Iec61850MonitorDevice.PropertyChanged. Online discovery publishes state changes from worker threads, so the handler touched WPF buttons from a non-UI thread and aborted an otherwise successful MMS discovery.
  2. FaultRecordWindow used implicit binding modes for read-only view-model properties. Run.Text attempted a source update for the getter-only EndpointText property and threw while the window was being shown.
  3. The capability panel originally shared the lifecycle-action grid row and could visually cover the Stop button.

Fix

  • marshal every capability refresh through the owning IED card dispatcher
  • verify the card remains loaded and bound to the same IED before applying state
  • place GOOSE, SMV, and File Transfer in a dedicated compact card row
  • use OneTime for immutable DeviceName and EndpointText labels
  • use explicit OneWay for dynamic display-only state and DataGrid columns
  • reserve TwoWay only for editable directory fields and record selection
  • run a binding-mode regression guard from the existing source-validation workflow

Expected result

  • accepted ACSE/MMS associations proceed into online discovery
  • File Transfer no longer covers the Stop action
  • Fault Record Transfer opens without the read-only binding exception
  • future implicit TwoWay regressions fail CI before merge

Validation

The Windows application workflow validates source boundaries, binding modes, UX invariants, ARIEC61850 API compatibility, restore, Release build, portable x64 publish, and artifact upload. Live testing against the reported IED remains the final acceptance test.

@masarray masarray changed the title Fix IED capability UI thread regression Fix IED capability and fault-record window regressions Jul 17, 2026
masarray added a commit that referenced this pull request Jul 18, 2026
Port the valid fixes from stale PR #49 onto current main, including dispatcher-safe capability refresh, dedicated capability card layout, explicit Fault Record binding modes, and regression validation.

Copy link
Copy Markdown
Owner Author

Superseded by #59, which re-audited and ported every still-relevant fix onto the current main branch without the stale history or merge conflicts. The replacement passed source/binding guards, UX invariants, ARIEC61850 compatibility, Release build, portable publish, and artifact upload, then merged as commit 07c2dec2d8c181a762c401161919379a17212ef6.

@masarray masarray closed this Jul 18, 2026
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