Joseph Doherty
fe068652b3
fix(adminui): alias update pins invariants + LoadAliasTagAsync + null-driver guard (review)
2026-06-11 21:25:06 -04:00
Joseph Doherty
9f13101896
feat(validation): require TagConfig.FullName on Galaxy alias tags; reframe Tag doc
2026-06-11 21:21:32 -04:00
Joseph Doherty
53116bdd83
feat(adminui): CreateAliasTagAsync/UpdateAliasTagAsync + Galaxy-gateway guard
2026-06-11 21:17:45 -04:00
Joseph Doherty
fcc73ccd2d
fix(adminui): null Source for alias rows without a FullName (review nits)
2026-06-11 21:12:52 -04:00
Joseph Doherty
bc9e83ed9f
feat(composer): admit GalaxyMxGateway-backed equipment alias tags (+byte-parity)
2026-06-11 21:10:21 -04:00
Joseph Doherty
4b4738a891
feat(adminui): alias DTO + Galaxy gateway lookup + Source/IsAlias on tag rows
2026-06-11 21:05:02 -04:00
Joseph Doherty
2ba2f8a899
feat(commons): TryParseRelayBody — detect pure ctx.GetTag relay scripts
2026-06-11 20:59:10 -04:00
Joseph Doherty
93a9c6d3db
docs(plan): Galaxy alias tag implementation plan (T0–T10)
...
11-task TDD plan from the approved alias-tag design. Approach A (reuse
Tag entity, broaden composer/artifact equipment-tag filter); converter
rewrites relay VirtualTags as alias Tags. No entity/EF migration.
2026-06-11 20:31:17 -04:00
Joseph Doherty
305023aa9f
docs(design): Galaxy alias tag (UNS) — approved brainstorming design
...
Equipment exposes a Galaxy attribute under a friendly UNS name as a
first-class driver-bound Tag (alias) instead of a relay VirtualTag.
Approach A: reuse the Tag entity, broaden the equipment-tag filter to
admit GalaxyMxGateway-backed equipment tags; no entity/EF migration.
Includes a relay->alias converter (per-equipment + fleet-wide).
2026-06-11 20:22:32 -04:00
Joseph Doherty
909e0e3664
chore(uns): mark equipment-page plan complete (live-verified + merged)
v2-ci / build (push) Failing after 47s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 15:42:38 -04:00
Joseph Doherty
d77124b191
chore(uns): mark plan tasks T0–T10 complete (resume snapshot)
2026-06-11 15:24:30 -04:00
Joseph Doherty
80b19d6fc8
chore(uns): create-redirect null guard + alarm isolation test + alarm-authoring doc (final review)
2026-06-11 15:23:06 -04:00
Joseph Doherty
a0f3f4ab89
docs(uns): document the equipment page tabs; repoint alarm-editing surface
...
Update Uns.md to show Equipment as a leaf in the browse tree (Area → Line →
Equipment), add the /uns/equipment/{id} page with its Details/Tags/Virtual
Tags/Alarms tabs, and adjust the actions table and sub-sections accordingly.
ScriptedAlarms.md and AlarmTracking.md required no changes — neither
referenced the standalone /scripted-alarms editing page.
2026-06-11 15:14:09 -04:00
Joseph Doherty
f1c4392b0d
refactor(uns): drop dead LoadEquipmentChildrenAsync + LinesForCluster; fix stale comment
2026-06-11 15:11:28 -04:00
Joseph Doherty
6e7127c396
feat(uns): remove standalone scripted-alarm pages + nav link (alarms now per-equipment)
2026-06-11 15:06:13 -04:00
Joseph Doherty
f1b9e7116b
fix(uns): guard ScriptedAlarmModal form rebuild against stray re-renders (code-review)
2026-06-11 15:03:43 -04:00
Joseph Doherty
826ffdc1a0
feat(uns): equipment is a tree leaf linking to the detail page; drop EquipmentModal
2026-06-11 15:01:10 -04:00
Joseph Doherty
773c073d0e
feat(uns): Alarms tab + ScriptedAlarmModal on the equipment page
2026-06-11 14:53:03 -04:00
Joseph Doherty
1294fb6ee5
fix(uns): surface stale-row edits + dismiss modal on delete + @key rows (code-review)
2026-06-11 14:49:23 -04:00
Joseph Doherty
61ad5ab8cc
feat(uns): wire Tags + Virtual Tags tabs on the equipment page (reuse modals)
2026-06-11 14:44:35 -04:00
Joseph Doherty
7fbfeca451
feat(uns): equipment detail page shell + Details tab + create-redirect
2026-06-11 14:36:48 -04:00
Joseph Doherty
5cae3c5b96
fix(uns): guard scripted-alarm name uniqueness on create/update (code-review)
2026-06-11 14:31:35 -04:00
Joseph Doherty
705ed6234f
feat(uns): scripted-alarm CRUD in IUnsTreeService for the equipment Alarms tab
2026-06-11 14:25:59 -04:00
Joseph Doherty
7c22861598
feat(uns): per-equipment tag/virtual-tag list service methods
2026-06-11 14:19:46 -04:00
Joseph Doherty
7d91737dac
feat(uns): carry created id on UnsMutationResult for equipment create
2026-06-11 14:16:21 -04:00
Joseph Doherty
1f904c4502
docs(uns): implementation plan + tasks for tabbed equipment detail page
2026-06-11 14:13:25 -04:00
Joseph Doherty
df2a488b81
docs(uns): design for tabbed equipment detail page
...
Replace the modal-based equipment editor on /uns with a dedicated
/uns/equipment/{id} page carrying Details/Tags/Virtual Tags/Alarms
tabs; trim the UNS tree so Equipment is a leaf that links to the page;
remove the standalone /scripted-alarms pages in favour of the per-
equipment Alarms tab. Reuses TagModal + VirtualTagModal unchanged; only
the alarm editor is new. No entity/EF-migration change.
2026-06-11 14:03:21 -04:00
Joseph Doherty
6208304a44
docs(historian): HistorizeToAveva opt-out semantics + config knobs + startup validation
v2-ci / build (push) Failing after 43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 13:24:46 -04:00
Joseph Doherty
7f535c0e9d
test(historian): cover non-positive DeadLetterRetentionDays validation warning
2026-06-11 13:24:46 -04:00
Joseph Doherty
56750e110f
fix(alarms): historize the real operator for shelve/unshelve/enable/disable transitions
2026-06-11 13:14:00 -04:00
Joseph Doherty
5ea6e9d7d9
fix(historian): validate non-positive drain/capacity/retention knobs (review) + log prefix
2026-06-11 13:09:13 -04:00
Joseph Doherty
f215982b93
feat(historian): drain/capacity/retention config knobs + startup config-warning validation
2026-06-11 13:04:16 -04:00
Joseph Doherty
61b230d79a
harden(historian): nullable HistorizeToAveva (missing→historize) for rolling-restart-safe deserialize + middle-link test
2026-06-11 13:00:57 -04:00
Joseph Doherty
c20d228384
fix(historian): volatile _backoffIndex + read _evictedCount under lock (thread-safety)
2026-06-11 12:49:44 -04:00
Joseph Doherty
8012509584
feat(historian): honor per-alarm HistorizeToAveva opt-out at the durable write
2026-06-11 12:48:13 -04:00
Joseph Doherty
fa839d1dbf
docs(plan): alarm historian follow-ups (pending #1-6) implementation plan
2026-06-11 12:42:54 -04:00
Joseph Doherty
f64f7ce669
fix(alarms): historize the operator (not 'system') for CommentAdded transitions (review)
v2-ci / build (push) Failing after 50s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 11:42:56 -04:00
Joseph Doherty
6dbd4fb875
docs(historian): alerts-fed historization (scripted, Primary-gated, exactly-once) + config-gated Sqlite→Wonderware sink
2026-06-11 11:36:37 -04:00
Joseph Doherty
943c621371
feat(historian): config-gated SqliteStoreAndForward→Wonderware sink (AddAlarmHistorian)
2026-06-11 11:30:31 -04:00
Joseph Doherty
e9355e9514
refactor(historian): gate before translate (no discarded alloc on secondary) + strengthen double-write warning (review)
2026-06-11 11:24:48 -04:00
Joseph Doherty
bb42e5834a
feat(historian): subscribe to alerts topic + translate to AlarmHistorianEvent (Primary-gated, exactly-once)
2026-06-11 11:18:26 -04:00
Joseph Doherty
d2cc4a1222
test+docs(galaxy): verify alarm acknowledger recovers after transient fault; document alarm-client reconnect
2026-06-11 11:12:49 -04:00
Joseph Doherty
8ac3ac5be9
feat(alarms): carry AlarmTypeName + operator Comment on AlarmTransitionEvent (historian feed prep)
2026-06-11 11:03:00 -04:00
Joseph Doherty
cd72f79ef4
docs(plan): alarm follow-ups round 2 implementation plan (T0-T5)
2026-06-11 10:56:25 -04:00
Joseph Doherty
3ad7960dc2
docs(design): alarm follow-ups round 2 (historian alerts-feeder + Galaxy reconnect verify)
2026-06-11 10:51:55 -04:00
Joseph Doherty
521ee75355
docs: redundancy primary-only alarm emission/historization, redundancy-state NodeId+heartbeat fixes, Galaxy reconnect, live-pill
v2-ci / build (push) Failing after 48s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-11 10:18:25 -04:00
Joseph Doherty
7891e28b52
fix(redundancy): periodic heartbeat re-publish so late subscribers learn their role
2026-06-11 10:06:46 -04:00
Joseph Doherty
e241332a24
fix(redundancy): key redundancy-state snapshot by canonical host:port NodeId (was host-only — broke ServiceLevel + scripted-alarm emit gate)
2026-06-11 09:56:17 -04:00
Joseph Doherty
23a4a0093b
fix(adminui): guard Alerts chip auto-clear against stale-timer race (review)
2026-06-11 09:38:58 -04:00
Joseph Doherty
19ec656cdc
feat(adminui): ScriptLog live-pill bound to broadcaster health
...
Subscribe ConnectionStateChanged before reading IsConnected (subscribe-then-read
idiom, matches DriverStatusPanel) so no transition is missed. Add
OnConnectionStateChanged handler that marshals to the circuit sync context via
InvokeAsync. Dispose unsubscribes both events.
Reconnect-overlay: App.razor loads _framework/blazor.web.js and contains no
custom #components-reconnect-modal element; .NET 10 Blazor's default reconnect
overlay is active automatically — no custom markup needed.
No unit tests; live-verify follows.
2026-06-11 09:37:19 -04:00