Skip to content

Fix IO List window binding crash and align launcher UX - #113

Merged
masarray merged 4 commits into
mainfrom
agent/io-testing-launcher-binding-fix
Jul 28, 2026
Merged

Fix IO List window binding crash and align launcher UX#113
masarray merged 4 commits into
mainfrom
agent/io-testing-launcher-binding-fix

Conversation

@masarray

Copy link
Copy Markdown
Owner

Fixes

  • fixes the unhandled WPF exception when opening an imported IO List workbook
  • makes every read-only Run.Text binding in IoListTestingWindow explicitly Mode=OneWay
  • covers EvidenceRecordCount, bound count, passed count, and pending count so the next get-only counter cannot trigger the same failure

First-run workflow UX

Removes the injected IO List Testing button from the top status/header area and turns the empty Explorer hero into two clear workflow cards:

  1. General IEC 61850 Testing

    • Add IED
    • Open Project
    • manual discovery, live monitoring, event analysis, and engineering tools
  2. FAT / IO List Testing

    • Open IO List Workbook
    • imported IED-scoped signals
    • automatic ordered ON/OFF timestamp evidence
    • dedicated read-only FAT workspace

At normal desktop width the cards appear side by side. The container wraps at narrower supported widths instead of overlapping.

Regression protection

  • parses IoListTestingWindow.xaml and requires every bound Run to declare Mode=OneWay
  • verifies the IO List entry point uses the first-run choice-card implementation
  • rejects reintroduction of the old header-injection code

Scope

No changes to workbook import, IEC 61850 runtime, FAT state machine, or evidence journal semantics.

@masarray
masarray marked this pull request as ready for review July 28, 2026 09:42
@masarray
masarray merged commit 30bd694 into main Jul 28, 2026
3 checks 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: b5e07acc5a

ℹ️ 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 thread MainWindow.IoTesting.cs
Comment on lines +38 to +41
var emptyState = workspace?.Children
.OfType<Border>()
.FirstOrDefault(border =>
BindingOperations.GetBinding(border, UIElement.VisibilityProperty)?.Path?.Path == nameof(EmptyExplorerVisibility));

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 Keep the FAT launcher accessible with a selected IED

When a loaded IED is selected—the state required for a runnable FAT session—this relocates the launcher into the border bound to EmptyExplorerVisibility, which is collapsed whenever SelectedDevice != null (MainWindow.xaml.cs:103). The only repo-wide registration of OpenIoListTesting_Click is the new button inside this card, while session startup requires the imported IED to already be loaded, connected, and monitoring, so the normal operational state now has no visible way to open IO List Testing.

Useful? React with 👍 / 👎.

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