This website requires JavaScript.
113f00a6fa
docs(plans): design for Notifications nav group
Joseph Doherty
2026-05-19 05:01:58 -04:00
17861efa51
test(notification-outbox): assert NotNull in SourceScript negative test
Joseph Doherty
2026-05-19 03:57:38 -04:00
558f9ceb39
feat(notification-outbox): populate SourceScript on outbound notifications
Joseph Doherty
2026-05-19 03:54:09 -04:00
a5653b4296
refactor(notification-outbox): drop unused state from sandbox Notify fakes
Joseph Doherty
2026-05-19 03:49:54 -04:00
c8b5871782
fix(notification-outbox): re-align Central UI sandbox Notify API with production
Joseph Doherty
2026-05-19 03:44:34 -04:00
4b61e29e27
refactor(notification-outbox): extract EmailAddressValidator helper, drop orphaned using
Joseph Doherty
2026-05-19 03:39:05 -04:00
5e80f64cd8
refactor(notification-outbox): share SMTP helpers between NotificationService and the Email adapter
Joseph Doherty
2026-05-19 03:34:22 -04:00
213b9c7c0a
test(notification-outbox): end-to-end outbox flow integration test
Joseph Doherty
2026-05-19 03:13:37 -04:00
af22aa7ce1
refactor(notification-outbox): clarify Health outbox-KPI seed value
Joseph Doherty
2026-05-19 03:09:44 -04:00
9e7bc7b541
feat(notification-outbox): add outbox KPI tiles to Health dashboard
Joseph Doherty
2026-05-19 03:05:41 -04:00
9b05e48ea6
test(notification-outbox): cover Discard and query-failure paths on the Outbox page
Joseph Doherty
2026-05-19 03:02:48 -04:00
ad9872705d
feat(notification-outbox): add Notification Outbox UI page
Joseph Doherty
2026-05-19 02:58:49 -04:00
afdf581e32
feat(notification-outbox): add CommunicationService outbox methods
Joseph Doherty
2026-05-19 02:51:11 -04:00
1d495d1a87
feat(notification-outbox): register NotificationOutbox singleton in Host
Joseph Doherty
2026-05-19 02:44:32 -04:00
2ff62a2ceb
feat(notification-outbox): route NotificationSubmit to the outbox actor
Joseph Doherty
2026-05-19 02:38:04 -04:00
b88c75c116
docs(plans): track Task 19 follow-ups (site DI cleanup, sandbox API, SourceScript)
Joseph Doherty
2026-05-19 02:35:47 -04:00
3326bddeb0
feat(notification-outbox): async Notify.Send with status handle
Joseph Doherty
2026-05-19 02:30:51 -04:00
05614e037a
fix(notification-outbox): fall back to Target for empty notification list name
Joseph Doherty
2026-05-19 02:21:22 -04:00
6a77c12735
feat(notification-outbox): forward site S&F notifications to central
Joseph Doherty
2026-05-19 02:16:27 -04:00
703cb2d392
feat(notification-outbox): add AddNotificationOutbox DI registration
Joseph Doherty
2026-05-19 02:07:29 -04:00
517437b0d9
refactor(notification-outbox): make purge fault-handling symmetric with dispatch
Joseph Doherty
2026-05-19 02:01:48 -04:00
41358c1cee
feat(notification-outbox): add daily terminal-row purge
Joseph Doherty
2026-05-19 01:58:19 -04:00
77a05a8960
fix(notification-outbox): give KPI response a failure shape; log status-query faults
Joseph Doherty
2026-05-19 01:55:46 -04:00
82e3eb0e93
feat(notification-outbox): add query, retry, discard, and KPI handlers
Joseph Doherty
2026-05-19 01:50:20 -04:00
ab3721a2e8
fix(notification-outbox): clear dispatch in-flight flag on a faulted pass
Joseph Doherty
2026-05-19 01:45:09 -04:00
c41f43c87f
feat(notification-outbox): add dispatcher loop to NotificationOutboxActor
Joseph Doherty
2026-05-19 01:42:28 -04:00
4dc9f9e159
feat(notification-outbox): add NotificationOutboxActor ingest
Joseph Doherty
2026-05-19 01:36:13 -04:00
435c853dce
docs(plans): track SMTP-helper deduplication follow-up
Joseph Doherty
2026-05-19 01:33:21 -04:00
04e00d56c6
test(notification-outbox): cover Email adapter permanent/cancellation arms, align error casing
Joseph Doherty
2026-05-19 01:32:54 -04:00
b8dece0e70
feat(notification-outbox): add Email notification delivery adapter
Joseph Doherty
2026-05-19 01:26:33 -04:00
8d52890245
feat(notification-outbox): add NotificationOutboxOptions and delivery adapter abstraction
Joseph Doherty
2026-05-19 01:20:49 -04:00
fb589bf1da
feat(notification-outbox): scaffold ScadaLink.NotificationOutbox project
Joseph Doherty
2026-05-19 01:16:58 -04:00
c547f82957
feat(notification-outbox): add notification message and outbox query contracts
Joseph Doherty
2026-05-19 01:13:36 -04:00
6056ad58b0
fix(notification-outbox): backfill NotificationLists.Type with a valid enum value in migration
Joseph Doherty
2026-05-19 01:10:15 -04:00
5696a8af9f
feat(notification-outbox): add Notifications table migration
Joseph Doherty
2026-05-19 01:07:30 -04:00
07cd185368
refactor(notification-outbox): align outbox repository with cancellationToken convention
Joseph Doherty
2026-05-19 01:05:52 -04:00
2c59d59b61
feat(notification-outbox): add NotificationOutbox repository
Joseph Doherty
2026-05-19 01:02:06 -04:00
3022aa8379
style(notification-outbox): align NotificationOutboxConfiguration with sibling config style
Joseph Doherty
2026-05-19 00:58:50 -04:00
761595309b
feat(notification-outbox): add Notification EF configuration and DbSet
Joseph Doherty
2026-05-19 00:55:58 -04:00
87ac9b8a4d
feat(notification-outbox): add Type field to NotificationList
Joseph Doherty
2026-05-19 00:52:23 -04:00
ed7fddb0b5
test(notification-outbox): cover all Notification constructor null guards
Joseph Doherty
2026-05-19 00:50:52 -04:00
397a62677f
feat(notification-outbox): add Notification entity
Joseph Doherty
2026-05-19 00:48:48 -04:00
926ca902bd
test(notification-outbox): fold notification enum tests into EnumTests convention
Joseph Doherty
2026-05-19 00:47:23 -04:00
f9b942bb94
feat(notification-outbox): add NotificationType and NotificationStatus enums
Joseph Doherty
2026-05-19 00:45:05 -04:00
dff9e0aa76
docs(plans): code implementation plan for the notification outbox
Joseph Doherty
2026-05-19 00:39:10 -04:00
f2513a4ef4
docs(notification-outbox): fix stale message-pattern count and tree alignment
Joseph Doherty
2026-05-18 23:52:10 -04:00
c8b8cd9150
docs(notification-outbox): merge duplicate S&F dependency bullet, standardize cross-ref
Joseph Doherty
2026-05-18 23:48:59 -04:00
bb35453d58
docs(notification-outbox): fix stale cross-references after outbox addition
Joseph Doherty
2026-05-18 23:45:43 -04:00
ba166bf503
docs(notification-outbox): split UI bullet, fix outbox-vs-S&F wording in CLAUDE.md
Joseph Doherty
2026-05-18 23:41:32 -04:00
7585612347
docs(notification-outbox): split overstuffed CLAUDE.md design-decision bullet
Joseph Doherty
2026-05-18 23:40:01 -04:00
b9e0ef4650
docs(notification-outbox): update component list and design decisions in CLAUDE.md
Joseph Doherty
2026-05-18 23:38:28 -04:00
aac3ee9bb3
docs(notification-outbox): add Notification Outbox to README component index
Joseph Doherty
2026-05-18 23:35:38 -04:00
097bb3361e
docs(notification-outbox): polish Task 8 docs — purge basis, message-contract naming, density
Joseph Doherty
2026-05-18 23:34:40 -04:00
ef4614d710
docs(notification-outbox): clarify purge is a repository operation, not job ownership
Joseph Doherty
2026-05-18 23:32:07 -04:00
bb5519f6f2
docs(notification-outbox): add Notifications table, entity, and message contracts
Joseph Doherty
2026-05-18 23:30:16 -04:00
d7a16084b5
docs(notification-outbox): add Notification Outbox page to Central UI
Joseph Doherty
2026-05-18 23:25:41 -04:00
f2d710a9dc
docs(notification-outbox): add Notification Submission communication pattern
Joseph Doherty
2026-05-18 23:22:33 -04:00
0dd3be0bd8
docs(notification-outbox): trim Site Event Logging notification row, de-duplicate rationale
Joseph Doherty
2026-05-18 23:21:23 -04:00
a59f5ec1ff
docs(notification-outbox): add Notification category to Site Event Logging
Joseph Doherty
2026-05-18 23:19:27 -04:00
6ccf3766dc
docs(notification-outbox): add central-computed outbox KPIs to Health Monitoring
Joseph Doherty
2026-05-18 23:17:07 -04:00
0b56c809e1
docs(notification-outbox): polish S&F naming consistency and prose
Joseph Doherty
2026-05-18 23:15:59 -04:00
b83d16364a
docs(notification-outbox): retarget S&F notification category to central
Joseph Doherty
2026-05-18 23:13:17 -04:00
2a7e7289b3
docs(notification-outbox): polish Notification Service prose and heading scope
Joseph Doherty
2026-05-18 23:12:02 -04:00
0f96562bfd
docs(notification-outbox): central-only Notification Service, typed lists, async API
Joseph Doherty
2026-05-18 23:09:29 -04:00
a4ba2dfe01
docs(notification-outbox): fix naming consistency and status-lifecycle clarity
Joseph Doherty
2026-05-18 23:07:17 -04:00
0388720390
docs(notification-outbox): add Component-NotificationOutbox design doc
Joseph Doherty
2026-05-18 23:04:17 -04:00
f177b58699
docs(plans): implementation plan for the notification outbox
Joseph Doherty
2026-05-18 23:01:30 -04:00
bbfa0c515e
docs(plans): fold refinement decisions into notification outbox design
Joseph Doherty
2026-05-18 22:57:45 -04:00
d4e86c1b1d
docs(plans): design for central notification outbox
Joseph Doherty
2026-05-18 22:54:17 -04:00
381eea63b1
refactor(central-ui): drop redundant Parent Template field from Template Properties
Joseph Doherty
2026-05-18 19:14:09 -04:00
06462a0100
feat(template-engine): contained names for composition-derived templates
Joseph Doherty
2026-05-18 17:50:30 -04:00
2d4b287ab2
docs(plans): design for contained names on composition-derived templates
Joseph Doherty
2026-05-18 17:37:43 -04:00
36c6036060
feat(central-ui): enlarge script modal; tab the Shared Script form
Joseph Doherty
2026-05-18 17:06:28 -04:00
e1a4ce4de8
refactor(central-ui): move script Trigger section into the tabbed panel
Joseph Doherty
2026-05-18 16:51:58 -04:00
01509a045f
feat(central-ui): add Min time between runs field to the script form
Joseph Doherty
2026-05-18 16:44:15 -04:00
437fe154e7
feat(triggers): add WhileTrue fire mode for Conditional/Expression script triggers
Joseph Doherty
2026-05-18 10:44:11 -04:00
19870d1f8f
docs(plans): design for WhileTrue conditional/expression trigger mode
Joseph Doherty
2026-05-18 10:30:22 -04:00
6139a65a7b
fix(site-runtime): fan tag updates out to every attribute sharing a tag path
Joseph Doherty
2026-05-18 04:21:26 -04:00
fa7b12c4a3
test(playwright): align E2E nav tests with current NavMenu
Joseph Doherty
2026-05-18 02:42:44 -04:00
579522c586
fix(security): make auth-cookie SecurePolicy configurable for HTTP-only deployments
Joseph Doherty
2026-05-18 02:34:02 -04:00
deedf45676
fix(docker): copy Directory.Packages.props into the build image
Joseph Doherty
2026-05-17 06:50:33 -04:00
1038683c58
test(integration): repair IntegrationTests harness and stale API-key test
Joseph Doherty
2026-05-17 06:46:47 -04:00
adf73ab116
test(host): configure ApiKeyPepper in CentralCompositionRootTests
Joseph Doherty
2026-05-17 06:36:04 -04:00
722773f2b5
docs(code-reviews): regenerate index — all 66 re-review findings resolved
Joseph Doherty
2026-05-17 05:43:08 -04:00
cfa8667c78
test(central-ui): fix test-host hang in CentralUI.Tests
Joseph Doherty
2026-05-17 05:43:05 -04:00
e55bd46ca1
fix(health-monitoring): resolve HealthMonitoring-015 — nullable LastReportReceivedAt
Joseph Doherty
2026-05-17 05:43:05 -04:00
7da303d7bb
fix(configuration-database): resolve ConfigurationDatabase-012 — store inbound-API keys as HMAC-SHA256 hashes
Joseph Doherty
2026-05-17 05:42:52 -04:00
f23513c30b
docs(code-reviews): regenerate index after resolving 64 of 66 re-review findings
Joseph Doherty
2026-05-17 03:18:47 -04:00
d6221419c6
fix(template-engine): resolve TemplateEngine-015,016 — cascade-rename nested derived templates, correct composed-script ParentPath
Joseph Doherty
2026-05-17 03:18:41 -04:00
0135a6b2a6
fix(store-and-forward): resolve StoreAndForward-015..017 — document maxRetries=0 contract, replicate operator retry/discard, real category in activity log
Joseph Doherty
2026-05-17 03:18:41 -04:00
be274212f0
fix(site-runtime): resolve SiteRuntime-017..019 — isolated attribute snapshot for child actors, corrected dispatcher doc, remove dead lifecycle handlers
Joseph Doherty
2026-05-17 03:18:41 -04:00
6d63fef934
fix(site-event-logging): resolve SiteEventLogging-012..014 — fault dropped-event tasks, escape LIKE wildcards, re-triage startup-purge finding (Won't Fix)
Joseph Doherty
2026-05-17 03:18:41 -04:00
a58cec5776
fix(security): resolve Security-012..015 — fail login on partial LDAP outage, escape-aware DN parsing, idle check on refresh, username normalization
Joseph Doherty
2026-05-17 03:18:33 -04:00
f5199e9da9
fix(notification-service): resolve NotificationService-014..018 — classify OAuth2 failures, fail on bad auth config, wire NotificationOptions fallback, disposable concurrency limiter
Joseph Doherty
2026-05-17 03:18:33 -04:00
bf6bd8de5a
fix(management-service): resolve ManagementService-014..017 — site-scope enforcement on QueryDeployments, atomic override validation, curated fault messages, test coverage
Joseph Doherty
2026-05-17 03:18:33 -04:00
73a393076a
fix(inbound-api): resolve InboundAPI-014..017 — return-value validation, reflection-gateway hardening, deadline-bound routed calls, RouteHelper test coverage
Joseph Doherty
2026-05-17 03:18:33 -04:00
aca65e85bb
fix(host): resolve Host-012..015 — consume DownIfAlone in HOCON, sub-second timing precision, config-driven Serilog sinks, transient-only startup retry
Joseph Doherty
2026-05-17 03:18:33 -04:00
eae4077414
fix(health-monitoring): resolve HealthMonitoring-013,014,016 — shorter-timeout cadence, options validation, injected TimeProvider; HealthMonitoring-015 left open (cross-module design decision)
Joseph Doherty
2026-05-17 03:18:24 -04:00
da8c9f171b
fix(external-system-gateway): resolve ExternalSystemGateway-015..017 — treat MaxRetries=0 as unset, scope HTTP connection cap to gateway clients, no bare trailing '?'
Joseph Doherty
2026-05-17 03:18:24 -04:00
4fa6f0e774
fix(deployment-manager): resolve DeploymentManager-015..017 — reconciliation applies post-success side effects, updates RevisionHash, corrected XML doc
Joseph Doherty
2026-05-17 03:18:24 -04:00