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.
## 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)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
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.com.kingsrook.qbits.alerts.spi.*(NotificationSignal,NotificationAudience,NotificationCategory,NotificationSeverity,AlertLink) andAlertsRuntime.sink(). The jar contains no local SPI classes.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.Stacked on #19
Base branch
feature/arch-ui-api-extension(#19). Merge #19 first, then retarget this PR todevelop.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;🤖 Generated with Claude Code