Skip to content

Restore first-run SCL, IP and Excel launcher cards - #162

Merged
masarray merged 2 commits into
mainfrom
agent/restore-first-run-ied-cards-v2
Aug 13, 2026
Merged

masarray merged 2 commits into
mainfrom
agent/restore-first-run-ied-cards-v2

Conversation

@masarray

Copy link
Copy Markdown
Owner

Regression

P2.1 added the industrial hero tint as a Border. The legacy first-run launcher intentionally identified the original general-testing card with heroGrid.Children.OfType<Border>().SingleOrDefault(). When the decorative tint existed first, the hero contained two Borders, the launcher setup failed, and the whole center workflow (general IED onboarding + IO List Excel import card) disappeared visually.

Fix

  • preserve the existing InstallFirstRunTestingChoices workflow and Excel import engine;
  • repair the startup ordering if the P2 tint is already present, then re-apply the workstation visual layer only after operational cards exist;
  • force the restored chooser above the hero tint;
  • restore explicit center-card actions for Open SCL, Add IED by IP, and Open Project;
  • restore an explicit Import Excel IO List label on the FAT card while retaining the existing .xlsx handler and ARSAS project continuation action.

Regression guard

Adds focused tests that lock the P2 overlay repair order and the SCL/IP/Excel first-run operator paths.

No IEC 61850 engine, FAT evidence, device state, or project-data behavior is changed.

@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: f89e0119ac

ℹ️ 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".

/// </summary>
public partial class MainWindow
{
private static readonly bool FirstRunLauncherRepairRegistered = RegisterFirstRunLauncherRepair();

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 Register the repair from a guaranteed startup path

On a normal startup where no MainWindow static field is accessed before Loaded, this unused field does not guarantee that RegisterFirstRunLauncherRepair() runs: without an explicit static constructor the type is emitted with beforefieldinit, so its initialization may be deferred beyond instance construction and the Loaded event. In that case the handler is never registered in time, RestoreFirstRunLauncherContract is not queued, and the first-run cards remain missing; register this through a module initializer or another startup path that is explicitly invoked.

Useful? React with 👍 / 👎.

@masarray
masarray merged commit 6980a28 into main Aug 13, 2026
2 checks passed
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