Joseph Doherty
5185486a3c
fix(deploy): include ElementDataType in RevisionHashService.HashableAttribute ( #290 )
...
Fold a List attribute's ElementDataType into the hashable projection so a
change to the element type (e.g. Int32 -> Double) with identical JSON-encoded
values is detected as a staleness/revision change. Inserted in alphabetical
position; null ElementDataType (scalars) is omitted by the canonical
serializer (WhenWritingNull), so scalar-only configs hash identically to
before. DiffService.AttributesEqual gains the same comparison to keep the
structured diff in parity with the staleness hash. Adds tests for differing
vs. equal ElementDataType (hash + diff) and the scalar no-op guard.
2026-06-19 03:07:06 -04:00
Joseph Doherty
79fe098886
test(transport): regression — empty-ConnectionName binding skipped on import ( #229 )
2026-06-19 03:06:10 -04:00
Joseph Doherty
69e0d546b5
fix(audit): route SecuredWrite audit via ICentralAuditWriter for SourceNode stamping ( #206 )
2026-06-19 02:37:48 -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
454e47ea38
fix(mgmt): pass sharedScripts to design-time template $ref validation ( #259 )
2026-06-19 02:21:15 -04:00
Joseph Doherty
d844405cec
fix(templates): hoist (DataType,ElementDataType,Value) attribute validation into TemplateService ( #92 )
2026-06-19 02:19:35 -04:00
Joseph Doherty
47f5ca687c
refactor(commons): consolidate List element-type/coercion into AttributeValueCodec; InstanceActor + CLI reuse it ( #93 )
2026-06-19 02:03:09 -04:00
Joseph Doherty
2935c41bf7
fix(inbound-api): recursively coerce nested Object/List values to typed CLR ( #55 )
2026-06-19 02:02:10 -04:00
Joseph Doherty
3d4521f250
fix(configdb): make ResyncLdapGroupMappingSeed migration idempotent (guarded insert) ( #70 )
2026-06-19 01:51:20 -04:00
Joseph Doherty
f4e03ce8f7
fix(site-runtime): normalize routed GetAttributes List values for cross-process transport ( #162 )
2026-06-19 01:49:38 -04:00
Joseph Doherty
a1eed1c2ab
fix(templates): gate resolver HiLo-merge on both-HiLo to match flattener ( #262 )
...
Change `mergeEffective` delegate in `ResolveWinners<T>` from `Func<string?, T, string?>`
to `Func<Winner<T>, T, string?>` so the alarm hook can inspect the existing winner's row.
Gate the per-setpoint merge in `ResolveAlarmWinners` on both sides being HiLo
(`existingWinner.Row.TriggerType == HiLo && derived.TriggerType == HiLo`), matching
`FlatteningService.ResolveInheritedAlarms` exactly. Base non-HiLo + derived HiLo now
falls through to whole-replace (derived config verbatim) — the same path the flattener
takes. Preview-only fix; the deploy path is unchanged.
Add test: `Resolve_BaseNonHiLo_DerivedHiLo_DerivedConfigWinsVerbatim` — asserts
resolver and flattener agree when base is ValueMatch and derived overrides to HiLo.
2026-06-19 01:49:25 -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
72e084f588
fix(configdb): GetInstanceBy{Id,UniqueName}Async include NativeAlarmSourceOverrides ( #226 )
2026-06-19 01:32:10 -04:00
Joseph Doherty
78360eb6a7
test(dcl): strengthen DCL002 derace — 30s AwaitCondition + non-parallel collection for full-suite load ( #234 )
2026-06-19 01:04:36 -04:00
Joseph Doherty
6a4c9a85b8
fix(notification-outbox+test): provider-aware InsertIfNotExists for SQLite + supply ApiKeyPepper in IntegrationTests host config ( #286 )
2026-06-19 01:03:48 -04:00
Joseph Doherty
649e45b5c0
test(transport-integration): register ISharedSchemaRepository for FlatteningPipeline in BundleImporterApply fixture ( #287 , M9-T32 injection regression)
2026-06-19 01:02:58 -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
7674b37a24
test(dcl): stabilize flaky DCL002 crash/restart subscription-preservation with condition-based wait ( #234 )
2026-06-19 00:33:48 -04:00
Joseph Doherty
ddafc5c811
test(commons): realign enum-count guards (AuditKind/AuditChannel/DataType) + derace StaleTagMonitor timer tests ( #228 , pre-existing)
2026-06-19 00:33:39 -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
8270a603d3
test(playwright): update pager/markup selectors to M10 component hooks (INT)
2026-06-18 20:41:43 -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
67ff494bf5
test(playwright): web-first timeouts on alarm-override zero-count asserts + split compound asserts (T41 review)
2026-06-18 19:42:33 -04:00
Joseph Doherty
9ee21205d6
feat(centralui): DateTimeRangeFilter reusable from/to input component (T35c)
2026-06-18 19:39:05 -04:00
Joseph Doherty
b7f7fe935c
test(playwright): alarm-override trigger-config scenarios — HiLo merge, non-HiLo replace, validation, cancel, clear (T41)
2026-06-18 19:35:14 -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
ca6e5da34b
fix(m9/T26a): HiLo per-setpoint merge in resolver (preview=deploy) + widen staleness comparison
2026-06-18 12:51:58 -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
71d5722692
fix(m9/T32b): resolve $ref in InboundAPI runtime validators (no deploy-passes/runtime-400); diamond test; ref-annotation message
2026-06-18 12:16:39 -04:00
Joseph Doherty
26e2cdef23
feat(m9/T26a): read-only inheritance resolve service + GetResolvedTemplateMembersCommand
2026-06-18 12:14:24 -04:00
Joseph Doherty
b3d99248fa
feat(m9/T32b): JSON Schema $ref resolver (lib seam, cycle/depth-guarded) + deploy-time dangling-ref block
2026-06-18 11:54:19 -04:00
Joseph Doherty
16cb078cd2
feat(m9/T24b): move-data-connection UI dialog + action
2026-06-18 11:45:53 -04:00
Joseph Doherty
dbe51e5f25
fix(m9/T24a): scope move-guard native-alarm scan to source-site templates (Ordinal); purpose-built include; add guard-4 + repo tests
2026-06-18 11:38:31 -04:00
Joseph Doherty
fbe4ddaf58
feat(m9/T32a): SharedSchema entity + EF config + idempotent migration + repository
2026-06-18 11:26:48 -04:00
Joseph Doherty
48111b50fd
feat(m9/T24a): guarded move-data-connection-between-sites command + handler
2026-06-18 11:20:58 -04:00
Joseph Doherty
9a73094f03
fix(m9/T23a): assign distinct SortOrder on folder create (so reorder is visible)
2026-06-18 11:15:18 -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