Joseph Doherty
2e231911fd
fix(adminui): cert page review — server-side FleetAdmin re-check, explicit delete switch, alert CSS
2026-06-18 05:17:02 -04:00
Joseph Doherty
8c429c3131
feat(adminui): trust/untrust/delete actions on /certificates (FleetAdmin)
2026-06-18 05:11:12 -04:00
Joseph Doherty
c2006dfb57
feat(adminui): driver-agnostic isArray/arrayLength Tag-modal control
2026-06-16 21:50:27 -04:00
Joseph Doherty
8b4675b1a5
fix(adminui): canonicalize Modbus driver-type string on "Modbus" (was ModbusTcp)
2026-06-16 19:39:41 -04:00
Joseph Doherty
23f353e79b
test(adminui): close Phase 6 review test-gaps + Enterprise-delete warning
2026-06-16 17:10:40 -04:00
Joseph Doherty
68f9eef62d
fix(adminui): preserve historize on Galaxy re-pick + clear stale script-create error (review)
2026-06-16 17:03:38 -04:00
Joseph Doherty
069a5f3165
feat(adminui): Galaxy picker pre-fills native-alarm fields from IsAlarm
2026-06-16 16:55:05 -04:00
Joseph Doherty
9a8b8ff6f6
feat(adminui): Build-address pickers in the protocol-driver Tag editors
2026-06-16 16:54:29 -04:00
Joseph Doherty
c00a547191
feat(adminui): isHistorized + historianTagname as first-class Tag fields
2026-06-16 16:44:46 -04:00
Joseph Doherty
c98625fd9f
feat(adminui): create-new-script from the inline virtual-tag panel
2026-06-16 16:44:14 -04:00
Joseph Doherty
526eebb3bb
feat(adminui): UNS-tree delete for Cluster + Enterprise (refuse-if-children, no rowversion)
2026-06-16 16:35:07 -04:00
Joseph Doherty
6a8020e7e7
feat(adminui): native-alarm HistorizeToAveva opt-out
2026-06-16 16:27:31 -04:00
Joseph Doherty
72d414ada7
feat(adminui): typed TagConfig editors for OpcUaClient + Historian
2026-06-16 16:25:19 -04:00
Joseph Doherty
dcbaf63ab1
feat(config): remove the SystemPlatform NamespaceKind (capstone) — Galaxy is Equipment-kind
2026-06-12 22:18:56 -04:00
Joseph Doherty
0945f19a50
feat(adminui): wire Galaxy live-browse picker into the standard TagModal
2026-06-12 22:09:22 -04:00
Joseph Doherty
5dfb797817
refactor(adminui): strip alias/relay machinery from UnsTreeService + EquipmentPage; Galaxy tags use standard TagModal
2026-06-12 21:28:13 -04:00
Joseph Doherty
ca2698949b
refactor(adminui): delete alias-tag/relay-converter files (build red until spine stripped)
2026-06-12 21:20:41 -04:00
Joseph Doherty
d4ecc9138f
feat(adminui): historian TCP-connect probe + TLS form fields
2026-06-12 12:07:06 -04:00
Joseph Doherty
e2960515cf
chore(historian): drop dead pipe package ref + stale pipe strings (review)
2026-06-12 12:02:05 -04:00
Joseph Doherty
72f32045a4
refactor(historian): remove named-pipe transport
2026-06-12 11:51:53 -04:00
Joseph Doherty
e77fd3eec0
fix(adminui): converter UI — try/catch + confirm + FleetAdmin gate on per-equipment convert (review)
2026-06-11 21:54:21 -04:00
Joseph Doherty
7682d185fb
feat(adminui): relay->alias converter UI (per-equipment + fleet-wide /uns/convert-relays)
2026-06-11 21:49:43 -04:00
Joseph Doherty
299eaa461c
fix(adminui): gate Galaxy picker so it doesn't clobber alias FullName on edit; refresh gateways (review)
2026-06-11 21:45:55 -04:00
Joseph Doherty
4af27ea173
feat(adminui): AliasTagModal + Tags-tab Add-alias (Galaxy picker)
2026-06-11 21:37:04 -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
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
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
Joseph Doherty
d29c933499
feat(adminui): Alerts timed-shelve picker + chip auto-clear + live-pill health
2026-06-11 09:34:33 -04:00
Joseph Doherty
d860b0d8a6
fix(adminui): dispose Alerts CTS + self-render ShowOpResult (T21 review)
...
Dispose the CancellationTokenSource in AcknowledgeAsync and ShelveAsync
(the TimeSpan overload holds an internal timer — leaked without using).
Add StateHasChanged() to ShowOpResult so the result chip renders even if
a future caller omits the finally-block re-render.
2026-06-11 06:50:06 -04:00
Joseph Doherty
370a2b7b48
feat(alerts): AdminUI alarm ack/shelve via AdminOperationsActor singleton
...
T21: add an AdminUI path for acknowledging/shelving alarms that routes
through the admin-pinned AdminOperationsActor cluster singleton, which
republishes onto the same 'alarm-commands' DPS topic the OPC UA method
path (T18) and the engine subscriber (T19) use. The broadcast + the
ScriptedAlarmHostActor ownership filter handle cross-node routing, so
the singleton needs no knowledge of which node owns the alarm.
- Commons: AcknowledgeAlarmCommand/ShelveAlarmCommand (+ result records)
and a shared AlarmCommandsTopic const; ScriptedAlarmHostActor now
re-exports that const (mirrors the DriverControlTopic pattern).
- AdminOperationsActor: two handlers map the control-plane messages to
AlarmCommand (Acknowledge / OneShotShelve / TimedShelve / Unshelve,
threading User/Comment/UnshelveAtUtc) and publish via the DPS mediator.
- IAdminOperationsClient + AdminOperationsClient: typed Acknowledge/Shelve
ask wrappers mirroring StartDeploymentAsync.
- Alerts.razor: per-row DriverOperator-gated Ack/Shelve/Unshelve controls;
operator name from AuthenticationState. Timed-shelve datetime UI deferred.
- 5 TestKit tests (mediator-probe subscribed to alarm-commands) verifying
each kind's mapping + reply; 56/56 ControlPlane tests green.
2026-06-11 06:44:27 -04:00
Joseph Doherty
ac1e1dfd12
fix(adminui): auto-generate ScriptId (SC-…) + drop the Language picker on ScriptEdit
...
v2-ci / build (push) Failing after 39s
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
ScriptId is now system-generated on create (mirrors EquipmentId's EQ-{12 hex}
convention, never operator-supplied) and shown read-only when editing. Language
is always CSharp, so the single-option dropdown is removed entirely and set on
save.
2026-06-10 09:07:38 -04:00
Joseph Doherty
4d12088fa2
docs(scripting): Monaco script-editor guide + refresh Scripts page banner
2026-06-09 15:50:49 -04:00
Joseph Doherty
fc7dc3b57d
feat(adminui): inline script-source editor in the virtual-tag modal
2026-06-09 15:23:35 -04:00
Joseph Doherty
088fc50ef2
feat(adminui): ScriptEdit uses MonacoEditor; drop CDN loader
2026-06-09 15:11:13 -04:00
Joseph Doherty
9afb2d230e
feat(adminui): vendor Monaco + reusable MonacoEditor component (no providers yet)
2026-06-09 14:06:29 -04:00
Joseph Doherty
fa96989e2a
feat(uns): validate typed TagConfig before save (F-uns-2 / #156 )
...
v2-ci / build (push) Failing after 38s
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
The per-driver editor models expose Validate() (required-field checks) but the
TagModal never called them, so a blank required field (e.g. S7 address, AbCip
tag path) saved silently and only failed at deploy/connect. Add a
TagConfigValidator registry (DriverType -> model.FromJson(json).Validate(),
parallel to TagConfigEditorMap) and call it in SaveAsync before the service
call — a non-null result sets the modal error and blocks save. Unmapped drivers
(no typed editor) and Modbus (no required field) return null. Editors untouched.
AdminUI.Tests 307/307 (12 new validator tests); build clean.
2026-06-09 11:45:35 -04:00
Joseph Doherty
d29e2190a9
fix(uns): reset TagConfig when the operator switches drivers (F-uns-1 integration review)
v2-ci / build (push) Failing after 49s
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-09 10:00:28 -04:00
Joseph Doherty
c0afecda50
fix(uns): omit blank optional keys from TagConfig + add omission tests; drop unused ParseInt (T4-T8 review)
2026-06-09 09:49:33 -04:00
Joseph Doherty
75021fa2c9
feat(uns): S7/AbCip/AbLegacy/TwinCAT/Focas typed tag-config editors (F-uns-1 T4-T8)
2026-06-09 09:42:40 -04:00
Joseph Doherty
5990b673cc
feat(uns): Modbus typed tag-config editor (F-uns-1 T3)
2026-06-09 09:36:19 -04:00
Joseph Doherty
fd9fa75d0e
feat(uns): TagConfig JSON helper + editor map + TagModal dispatch scaffold (F-uns-1 T2)
2026-06-09 09:26:50 -04:00
Joseph Doherty
d9dbd7917a
feat(uns): surface DriverType to the TagModal driver dropdown (F-uns-1 T1)
2026-06-09 09:16:07 -04:00