Joseph Doherty
e51104af5f
refactor(kpi): shared public KpiMetrics catalog — source consts + UI pages key off one symbol ( #178 )
2026-06-19 02:04:10 -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
2843781db4
docs( #70 ): correct SqliteInsertSql comment — test drives EF SQL generator, not the constant
2026-06-19 01:57:02 -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
7c1d61647e
feat(dcl): bound per-tag seed ReadAsync with SeedReadTimeout ( #232 , DCL-027)
2026-06-19 01:35:40 -04:00
Joseph Doherty
b432c788c3
refactor(ui): dedup alarm-capable protocol predicate to AlarmCapableProtocols ( #53 )
2026-06-19 01:32:55 -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
4369da61c1
fix(centralui): move TreeView toggle comment outside start tag — mid-attribute Razor comment crashed render (InvalidCharacterError → circuit teardown on branch-node trees) (INT)
2026-06-18 20:44:04 -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
023c4f7cde
docs(m10): mark M10 UI/UX platform delivered + sync README/CLAUDE + log follow-ups
2026-06-18 20:20:39 -04:00
Joseph Doherty
042776abb6
fix(host): load theme.js before ThemeScripts so window.sbTheme is defined first (T34b review)
2026-06-18 20:15:35 -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
4d3cef18cb
fix(centralui): MoveDataConnectionDialog surfaces MoveAsync exceptions inline instead of failing silently (T33b review)
2026-06-18 20:06:06 -04:00
Joseph Doherty
07b651d933
refactor(centralui): tokenize remaining standalone modal backdrops via .sb-modal-backdrop + bounded bg-* dark audit (T34c)
2026-06-18 20:04:17 -04:00
Joseph Doherty
1d82e6bc8c
refactor(centralui): AuditResultsGrid adopts KeysetPager + AuditFilterBar adopts DateTimeRangeFilter (T35g)
2026-06-18 20:03:40 -04:00
Joseph Doherty
a3ac77dd41
refactor(centralui): EventLogs adopts DateTimeRangeFilter (T35h)
2026-06-18 20:02:57 -04:00
Joseph Doherty
e773915e26
refactor(centralui): SiteCallsReport adopts KeysetPager + DateTimeRangeFilter + tokenized backdrop (T35f)
2026-06-18 19:58:55 -04:00
Joseph Doherty
ef2791ffd8
refactor(centralui): ConfigurationAuditLog adopts OffsetPager + DateTimeRangeFilter (T35e)
2026-06-18 19:56:55 -04:00
Joseph Doherty
64cc96253f
refactor(centralui): NotificationReport adopts OffsetPager + DateTimeRangeFilter + tokenized backdrop (T35d)
2026-06-18 19:56:47 -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
c8915e8638
refactor(centralui): add @namespace to KeysetPager/DateTimeRangeFilter + InvariantCulture parse (T35b/c review)
2026-06-18 19:46:27 -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
acbb52b459
fix(centralui): DialogHost cleanup only on open->closed transition + drop trailing class space (T33a review)
2026-06-18 19:42:10 -04:00
Joseph Doherty
9ee21205d6
feat(centralui): DateTimeRangeFilter reusable from/to input component (T35c)
2026-06-18 19:39:05 -04:00
Joseph Doherty
7b41c2c202
feat(centralui): dark-mode token layer + .sb-modal-backdrop in site.css (T34a)
2026-06-18 19:38:33 -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
c0aaba17ea
docs(m10): T34 theme dark-mode feasibility spike findings
2026-06-18 19:18:49 -04:00
Joseph Doherty
d8ba99d19d
docs(m10): UI/UX platform implementation plan — 17 tasks, 5 waves (T33-T36, T41)
2026-06-18 19:15:54 -04:00
Joseph Doherty
1a23b902b2
docs(m10): UI/UX platform design — modal host, tokens+dark mode, pager/filter extractions, a11y pass, alarm-override Playwright
2026-06-18 19:01:54 -04:00
Joseph Doherty
ba335519f4
docs(m9): mark M9 delivered + sync TemplateEngine/TreeView/DataConnection/schema-library/CLI docs
...
- 2026-06-15-stillpending-completion-design.md: M9 section marked DELIVERED with per-feature
summary and deferrals (folder drag-drop, unified outbox page).
- stillpending.md: T22–T26/T28/T30–T32 + CLI cached-call marked [DELIVERED M9]; permanent
deferrals (folder drag-drop, unified outbox page) retained as [PERM].
- Component-TemplateEngine.md: TemplateFolder SortOrder + ReorderTemplateFolderCommand;
Expression-trigger analysisKind (Advisory/Strict) on Alarm + Script; Script parameter
JSON Schema / lib: ref note; Inheritance Resolve authoring section (GetResolvedTemplateMembersCommand /
TemplateInheritanceResolver / staleness banner); updated Responsibilities.
- Component-TreeView.md: T22 search box wired note; T23 folder sibling reorder + root context
menu note; drag-drop permanently deferred clarified in V7 worked example.
- Component-CentralUI.md: template tree search + inherited-members panel (T26 staleness banner)
added to Template Authoring; drag-drop permanently deferred note; Schema Library page (T32)
added as new subsection; ParameterValueForm + Monaco hover (T30/T31) noted; connection
live-status (T25) + move-connection (T24) added to Site & Data Connection Management.
- Component-ConfigurationDatabase.md: SharedSchema entity + ISharedSchemaRepository row added.
- Component-CLI.md: --trigger-kind option added to template alarm add/update and script add/update.
- src/ZB.MOM.WW.ScadaBridge.CLI/README.md: --trigger-kind option added to template alarm
add/update and template script add/update command tables (already had cached-call group).
2026-06-18 13:39:33 -04:00
Joseph Doherty
af2d4037ce
fix(m9/T31): Monaco dispose editor-before-model; preserve other jsonDefaults diagnostics
2026-06-18 13:21:02 -04:00
Joseph Doherty
45ad36c115
fix(m9/T26b): replace lock-badge emoji with text label (CLAUDE.md no-emoji)
...
Also fix misleading "below" → "above" in the staleness banner: the
Effective inherited set card renders above the main editor area.
2026-06-18 13:17:47 -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