refactor(notifications): core QAlerts.notify, delete the spi stand-in (#15 part 2) #21

Merged
KofTwentyTwo merged 2 commits from feature/arch-core-notify into develop 2026-10-14 12:37:07 +00:00
KofTwentyTwo commented 2026-10-14 01:34:28 +00:00 (Migrated from github.com)

Summary

Part 2 of #15, which this PR closes. Architecture review QRun-IO/qqq#1150, findings F3 and F12: one producer API for user notifications, in core.

  • The qbit's sink implements core's notify path (QAlerts.notify(NotificationSignal), QRun-IO/qqq#1125, in 4.1.0-RC.6). A notification from any qbit (easypost-tracking, collaboration and others) is delivered by this qbit: queue, inbox, channels, quiet hours and preferences.
  • Deletes the last stand-ins: com.kingsrook.qbits.alerts.spi.* (NotificationSignal, NotificationAudience, NotificationCategory, NotificationSeverity, AlertLink) and AlertsRuntime.sink(). The jar contains no local SPI classes.
  • Breaking: for anything that imported com.kingsrook.qbits.alerts.spi. The only known consumer, qbit-easypost-tracking, moves to core in qbit-easypost-tracking#16, which must merge and release first.
  • No UI API wire changes beyond the base PR.

Stacked on #19

Base branch feature/arch-ui-api-extension (#19). Merge #19 first, then retarget this PR to develop.

Draft until QQQ 4.1.0-RC.6 is released

Verified locally against core develop + #1125 (4.1.0-ARCHRC6-SNAPSHOT):

  • mvn clean verify: 82 tests, 0 failures, 0 checkstyle violations, 93.89% instruction and 100% class coverage;
  • strict-mode and contract tests pass.

🤖 Generated with Claude Code

## Summary Part 2 of #15, which this PR closes. Architecture review QRun-IO/qqq#1150, findings F3 and F12: one producer API for user notifications, in core. - The qbit's sink implements core's notify path (`QAlerts.notify(NotificationSignal)`, QRun-IO/qqq#1125, in **4.1.0-RC.6**). A notification from any qbit (easypost-tracking, collaboration and others) is delivered by this qbit: queue, inbox, channels, quiet hours and preferences. - **Deletes the last stand-ins:** `com.kingsrook.qbits.alerts.spi.*` (`NotificationSignal`, `NotificationAudience`, `NotificationCategory`, `NotificationSeverity`, `AlertLink`) and `AlertsRuntime.sink()`. The jar contains no local SPI classes. - **Breaking:** for anything that imported `com.kingsrook.qbits.alerts.spi`. The only known consumer, qbit-easypost-tracking, moves to core in **qbit-easypost-tracking#16, which must merge and release first**. - No UI API wire changes beyond the base PR. ## Stacked on #19 Base branch `feature/arch-ui-api-extension` (#19). Merge #19 first, then retarget this PR to `develop`. ## Draft until QQQ 4.1.0-RC.6 is released Verified locally against core develop + #1125 (`4.1.0-ARCHRC6-SNAPSHOT`): - `mvn clean verify`: 82 tests, 0 failures, 0 checkstyle violations, 93.89% instruction and 100% class coverage; - strict-mode and contract tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.