Joseph Doherty
8f85cce298
fix(ui): schema-library delete-audit name + busy guard + edit-row guard + sanitized create-race test ( #260 )
2026-06-19 03:28:11 -04:00
Joseph Doherty
fb18253f32
fix(deploy): normalize snapshot List values (Decode→Encode) before staleness/diff ( #102 ); CLI --value native-List help
2026-06-19 02:24:26 -04:00
Joseph Doherty
5585d7ba51
test( #53 ): follow inline→Commons dedup — relocate OpcUa/MxGateway literal coverage to AlarmCapableProtocolsTests; pin TemplateEdit delegation
2026-06-19 01:42:37 -04:00
Joseph Doherty
48dfb875bd
test(centralui): fix stale List-override round-trip assertion to mirror the page's real string-row encode cycle (CASE A) ( #163 )
2026-06-19 00:38:06 -04:00
Joseph Doherty
2b2c1b264a
test(centralui): mirror production canonical AttributePath==AttributeName in DebugViewStreamRaceTests ( #177 )
2026-06-19 00:36:59 -04:00
Joseph Doherty
7aeb7a43b0
test(centralui): register IKpiHistoryQueryService substitute in QueryStringDrillInTests ( #207 , pre-existing M6/K14 DI gap)
2026-06-19 00:31:51 -04:00
Joseph Doherty
828acd3266
test(centralui): TreeView keyboard-activation test + document preventDefault scope (T36a review)
2026-06-18 20:14:18 -04:00
Joseph Doherty
fef4d4cf83
feat(centralui): dark-mode toggle + localStorage persistence + SSR pre-hydration (T34b)
2026-06-18 20:09:00 -04:00
Joseph Doherty
0449c473c1
feat(centralui): TreeView chevron accessible name + keyboard activation + a11y regression test (T36a)
2026-06-18 20:08:47 -04:00
Joseph Doherty
1d82e6bc8c
refactor(centralui): AuditResultsGrid adopts KeysetPager + AuditFilterBar adopts DateTimeRangeFilter (T35g)
2026-06-18 20:03:40 -04:00
Joseph Doherty
e773915e26
refactor(centralui): SiteCallsReport adopts KeysetPager + DateTimeRangeFilter + tokenized backdrop (T35f)
2026-06-18 19:58:55 -04:00
Joseph Doherty
e0d085481f
refactor(centralui): migrate Move/Rename/Compose dialogs to DialogService.ShowAsync host (T33b)
2026-06-18 19:53:19 -04:00
Joseph Doherty
9ee21205d6
feat(centralui): DateTimeRangeFilter reusable from/to input component (T35c)
2026-06-18 19:39:05 -04:00
Joseph Doherty
2e4ca5a35f
feat(centralui): OffsetPager reusable pagination component (T35a)
2026-06-18 19:28:17 -04:00
Joseph Doherty
6a34ed9ed6
feat(centralui): KeysetPager reusable cursor-pagination component (T35b)
2026-06-18 19:28:15 -04:00
Joseph Doherty
4755ceee81
feat(centralui): DialogHost ShowAsync<T> custom-content + focus trap/restore + backdrop hook (T33a)
2026-06-18 19:24:15 -04:00
Joseph Doherty
68c0f7ac59
feat(m9/T31): Monaco JSON-schema hover/completion on value-entry surface
2026-06-18 13:15:54 -04:00
Joseph Doherty
95b8caf284
fix(m9/T30): empty-state guard keys off resolved fields (top-level \$ref); shift list raw-text on item removal
2026-06-18 13:06:59 -04:00
Joseph Doherty
6bc2bb5430
feat(m9/T26b): TemplateEdit full multi-level inherited set + read-only staleness banner
2026-06-18 13:01:38 -04:00
Joseph Doherty
10c08dd309
feat(m9/T30): schema-driven nested object/list value-entry forms (+ $ref resolution)
2026-06-18 12:40:22 -04:00
Joseph Doherty
71a2bca4df
feat(m9/T32c): schema-library CRUD commands + handlers + Central UI page + read-accessor
2026-06-18 12:32:31 -04:00
Joseph Doherty
16cb078cd2
feat(m9/T24b): move-data-connection UI dialog + action
2026-06-18 11:45:53 -04:00
Joseph Doherty
314c7dea23
feat(m9/T23b): folder reorder menu items + root context menu
2026-06-18 11:12:34 -04:00
Joseph Doherty
efe3ada03d
feat(m9/T25): connection live-status indicators on the design page
2026-06-18 11:03:22 -04:00
Joseph Doherty
0bd5e0986f
fix(m9/T28b): forward --trigger-kind on alarm-update/script-add/script-update; fix default-selector test
...
Three dead-code bugs: --trigger-kind was registered but never read or forwarded on the
alarm-update, script-add, and script-update paths. Introduced TriggerConfigJson.InjectAnalysisKind
helper that rewrites any raw --trigger-config JSON blob, writing "analysisKind":"Strict" when
the flag is strict (case-insensitive) and stripping the key for any other value. Wired the
helper into all three handlers alongside the existing alarm-add path (which already used
AlarmTriggerConfigJson.Build). Added 6 unit tests for the new helper in TemplateTriggerKindTests.
Also fixed a false-positive bUnit test (AlarmTriggerEditor_Expression_NoAnalysisKindInConfig_
SelectorDefaultsAdvisory) that passed because "Advisory" appeared anywhere in the HTML; now
asserts select.GetAttribute("value") == "Advisory". Added the missing equivalent test for
ScriptTriggerEditor (ScriptTriggerEditor_Expression_NoAnalysisKindInConfig_SelectorDefaultsAdvisory).
2026-06-18 10:54:42 -04:00
Joseph Doherty
dcc6f623e2
feat(m9/T28b): trigger analysis-kind selector (UI) + --trigger-kind (CLI)
...
Surfaces the T28a backend "analysisKind" discriminator in both authoring
surfaces: an Advisory|Strict <select> (id="alarm-trigger-kind" /
"script-trigger-kind") added to the Expression fragment of
AlarmTriggerEditor and ScriptTriggerEditor, and a --trigger-kind option
on template alarm/script add+update in the CLI.
Key/value contract: "analysisKind":"Strict" when strict; key omitted for
Advisory — exactly as ValidationService.IsStrictAnalysis reads it.
Selector only shown for Expression triggers; non-Expression triggers do
not emit the key even if IsStrictAnalysisKind is set on the model.
Both projects build 0 warnings; 101 CentralUI Trigger tests + 33 CLI
Template tests pass.
2026-06-18 10:44:57 -04:00
Joseph Doherty
f618ac0322
feat(m9/T22): template tree search box (wire TemplateFolderTree.Filter)
2026-06-18 10:35:35 -04:00
Joseph Doherty
f881521cc9
fix(transport-ui): reset connection choices on site change + clear state on back (M8 E2 review)
...
Fix 1: OnSiteChoiceChangedAsync now resets _connectionChoices for every
RequiredConnectionMapping under the changed source site after loading the new
target's connections. Choices are re-seeded to the same-named connection on
the new target if present, or CreateNewValue otherwise — preventing BuildNameMap
from emitting MapToExisting for a connection absent from the newly-chosen target.
Fix 2: BackToUpload now calls ResetSessionState() before resetting _step so
_session, _preview, _resolutions, _siteChoices, _connectionChoices,
_targetSites, and _targetConnections are all cleared when the operator backs
out to re-upload, making it safe to start a new import flow from a clean slate.
Tests 12 + 13 added to TransportImportPageTests.
2026-06-18 07:39:19 -04:00
Joseph Doherty
c8211f6363
feat(transport-ui): import Map step + per-line diff view (M8 E2)
2026-06-18 07:21:23 -04:00
Joseph Doherty
e67587ec93
fix(transport-ui): use DataConnection ctor in CountSecrets tests (M8 build fix)
2026-06-18 07:11:41 -04:00
Joseph Doherty
542a3e92eb
fix(transport-ui): count site data-connection config in export secret banner (M8, C2-SECRET-1)
2026-06-18 06:37:38 -04:00
Joseph Doherty
d0b38ad726
feat(transport-ui): export wizard site/instance selection (M8 E1)
2026-06-18 06:26:36 -04:00
Joseph Doherty
384204b71a
feat(centralui): cert-management UI + Trust action + site relay (T17)
2026-06-18 03:53:32 -04:00
Joseph Doherty
a56805e681
test(centralui): register IEndpointVerificationService in OpcUaEndpointEditor/DataConnectionForm fixtures broken by B8 verify-button (T17)
2026-06-18 03:38:43 -04:00
Joseph Doherty
1a7e735149
feat(centralui): Secured Writes page — operator submit + verifier queue + history (T14b)
2026-06-18 03:34:08 -04:00
Joseph Doherty
303385fd98
feat(centralui): Verify-endpoint button + result/cert panel (T17)
2026-06-18 03:12:11 -04:00
Joseph Doherty
45a5a92455
fix(centralui): NodeBrowserDialog — reset load/expand spinner on error + clear stale failure on blank search (T15)
2026-06-18 03:05:23 -04:00
Joseph Doherty
90abb4b8e2
feat(centralui): NodeBrowserDialog search + load-more + type column (T15/T16)
2026-06-18 03:00:16 -04:00
Joseph Doherty
d5e7e897c0
feat(centralui): InstanceConfigure CSV bulk override import (T16)
2026-06-18 02:30:33 -04:00
Joseph Doherty
3c9122bc07
feat(centralui): operator Alarm Summary page + per-instance snapshot fan-out (T13)
2026-06-18 02:21:41 -04:00
Joseph Doherty
bf1f2f6892
feat(centralui): extract AlarmStateBadges shared component from DebugView (T13)
2026-06-18 02:02:09 -04:00
Joseph Doherty
eb4bce3e49
refactor(kpi): K13/K15 trend review fixups — per-metric isolation, disable-during-load + logging, loading-flag finally, test coverage
2026-06-17 20:44:34 -04:00
Joseph Doherty
7d7c6cbb05
feat(kpi): K16 — Health dashboard per-site trend panel
2026-06-17 20:36:09 -04:00
Joseph Doherty
3595a41349
feat(kpi): K15 — Audit Log trend charts
2026-06-17 20:30:38 -04:00
Joseph Doherty
4a88355098
feat(kpi): K14 — Site Calls trend charts
2026-06-17 20:30:36 -04:00
Joseph Doherty
0dc819f191
feat(kpi): K13 — Notification Outbox trend charts (T11 first consumer)
2026-06-17 20:29:30 -04:00
Joseph Doherty
f0177d5073
feat(kpi): K11 — KpiHistoryQueryService (scoped read + bucketing)
2026-06-17 20:21:17 -04:00
Joseph Doherty
cb2a516187
refactor(kpi): K4/K10/K12 review fixups — test data-race + faulted-tick liveness, dead-branch/unused removal, NaN-guard assertions, value clamp + doc
2026-06-17 20:15:47 -04:00
Joseph Doherty
5613a5efb7
feat(kpi): K12 — reusable KpiTrendChart SVG component
2026-06-17 20:06:31 -04:00
Joseph Doherty
ef86a2db28
refactor(debugview): cosmetic polish — test-seam comment, default-arm comment, tighten severity assertion
2026-06-17 15:30:18 -04:00