Skip to content

M2.14 UI: remove double Events glyph from overlapping icon templates - #574

Closed
masarray wants to merge 2 commits into
integration/m213k-m214-ssot-stress-20261015from
fix/m214-operator-icon-single-source-20261015
Closed

masarray wants to merge 2 commits into
integration/m213k-m214-ssot-stress-20261015from
fix/m214-operator-icon-single-source-20261015

Conversation

@masarray

@masarray masarray commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Screenshot-confirmed visual defect

Operator screenshot shows two icons before Events: legacy checklist (LucideListChecks) and new operator Event Log (OperatorEventLogIcon).

Verified root cause

  • MainWindow.xaml supplies one exact operator SVG Path under the Events button.
  • P2IndustrialWorkstationUx.DecorateMainNavigation() separately decorates that same button with a legacy IconEventsNavContent DataTemplate.
  • The legacy template renders an additional LucideListChecks before the existing composite content. Existing UI: exact six operator SVG icons with resize-safe navigation #571 icon tests never exercised this second runtime decorator, so this escaped the green build.

Fix (two files only)

  • P2IndustrialWorkstationUx now uses an idempotent ApplyNavigationTemplate for its five native header destinations. If a button already contains a deliberate WPF SVG Path in a Viewbox, the legacy template is not applied (and a prior template is cleared). Otherwise legacy text-only navigation keeps its P2 glyph. Diagnostics alert badge keeps its old triangle; other operator SVG shapes untouched.
  • New STA runtime WPF tests invoke the actual decorator and prove one SVG after initial load/repeat, verify Explorer + Diagnostics remain icon-bearing, check responsive caption code and unchanged Events click Tag=2/action.

Boundaries

  • Based on exact latest green A+B SSOT integration PR M2.13K × M2.14: latest Browser reconciliation and SSOT burst/reconnect stress #573 d7313f11; retains Thread B's newest SG/GoCB/SGCB, scalar MV no-angle, and operator icon shapes.
  • Does not change operator-supplied SVG paths, navigate mappings, NTP toggle/clock/server control, Add IED handler, IEC stack, WPF Browser model, RCB/GI/Read/Report, engine pin, installer or main.
  • Exact-SHA Windows build + tests + portable smoke required before recommending a replacement artifact. Draft/no merge pending review.

Exact-SHA verification checkpoint — 2026-10-15

Copy link
Copy Markdown
Owner Author

Material icon alignment is ready for operator review: Draft PR #576 #576 (5cfb3cd440d3180ad3f3c7be35614f41944c2508), stacked on #574. 8 header destinations now use one explicit Material-style filled WPF SVG per button; P2 legacy wrapping disabled on SVG owners; central dynamic Add IED and compatibility hero now reuse OperatorAddIedIcon; NTP remains exact clock/server composite. 11/11 exact-SHA CI PASS, ARSAS 1,975/1,975, engine 19/19, native bridge and portable smoke PASS. Windows artifact: https://github.com/masarray/arsas/actions/runs/38687343411/artifacts/11950833701 . Does not alter protocol/engine/main. Physical UI inspection and secondary FAT/dialog icon inventory still pending.

Copy link
Copy Markdown
Owner Author

UI coordination: Draft PR #575 #575 now builds on this duplicate-Events fix (#574) and extends Google Material icon consistency across all 8 MainWindow destinations, dynamic center/left Add IED launchers, P2 toolbars and IED-card gear, while retaining the operator's single composite NTP clock+server SVG. Exact HEAD 7a761feecbda9f943b6078a2a595b8e95295578f: 14/14 workflows success, Windows application tests 1,984/1,984, pinned engine 19/19, portable EXE + installer silent-install/runtime smoke success. Portable: https://github.com/masarray/arsas/actions/runs/38687477045/artifacts/11950459044 ; installer preview: https://github.com/masarray/arsas/actions/runs/38687477114/artifacts/11950594336 . Existing thread branches untouched, no main merge. Specialized secondary windows may still have legacy icons; operator DPI screenshot acceptance remains pending.

Copy link
Copy Markdown
Owner Author

Disposition: Superseded — redundant historical UI stack milestone, preserved through verified ancestry, not merged to main.

Canonical replacement: #649, head 4c232184f64584308396ea18ff6c82700ac02d29; this PR's head b725268f322483752432946cc6c952fb084a0b9a is an exact ancestor (GitHub compare: ahead=605; behind=0). #649 remains OPEN; later GUI/RC qualification is separate.

Unique delta: remove the double Events glyph from overlapping icon templates. Parent patch inspection: 2 files: P2IndustrialWorkstationUx.cs and OperatorNavigationSingleGlyphM214Tests.cs. All original commits and their tests remain reachable in the descendant's Git history; final UI/packaging semantics must still be checked on authoritative GUI source. No historical design evidence or branches are deleted.

Safety: Administrative close only. No change to main, accepted v1.6.42 binary/tag, IEC 61850 control/SSOT/engine pin, CI gates or field qualification. Preserve accepted icon UX instead of rolling it back.

Follow-up: Do not regress the one-glyph-per-affordance acceptance. Keep #578 open for unfinished secondary-dialog inventory. If later branches alter it, protect accepted behavior through the current GUI/RC acceptance checks rather than restoring obsolete intermediate PRs.

@masarray masarray closed this Oct 25, 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