New-report notifications (web + desktop) #11

Closed
opened 2026-10-25 20:40:29 +00:00 by Gilles · 1 comment
Owner

Users subscribe to new-report notifications, delivered in the web app and on the desktop only. Builds on the Web Push infrastructure of #10.

Subscriptions (ReportSubscription, per user)

  • project + ref kind/pattern + report type filters
  • channels: web and/or desktop
  • personal setting, requires the project read level

Notifications

  • Notification (user, report, read/unread, date) created at the end of process_report (done or error) for every matching subscriber
  • optional grouping of a CI matrix (same commit, a few seconds apart) into a single notification
  • also listed on the summary page next to the alerts, with a kind filter (alerts / new reports)

Web

  • bell in the header with the unread count (light polling GET /api/notifications/?unread=1)
  • /notifications page: list, mark as read / mark all as read, link to the report

Desktop

  • Web Push, same PushSubscription as the alerts

Richer upload metadata (argus/upload-action)

  • send the CI run URL and the actor with each upload; new optional fields in ReportUploadSerializer + Report
  • used in notification and alert messages

Tests

pytest (matching, creation, grouping, push mocked, permissions), vitest + msw (bell, page, subscription settings), upload-action tests for the new fields.

Delivered as two PRs: argus/backend and argus/frontend, plus one in argus/upload-action for the metadata.

Users subscribe to new-report notifications, delivered **in the web app** and **on the desktop** only. Builds on the Web Push infrastructure of #10. ## Subscriptions (`ReportSubscription`, per user) - project + ref kind/pattern + report type filters - channels: web and/or desktop - personal setting, requires the project **read** level ## Notifications - `Notification` (user, report, read/unread, date) created at the end of `process_report` (`done` or `error`) for every matching subscriber - optional grouping of a CI matrix (same commit, a few seconds apart) into a single notification - also listed on the summary page next to the alerts, with a kind filter (alerts / new reports) ## Web - bell in the header with the unread count (light polling `GET /api/notifications/?unread=1`) - `/notifications` page: list, mark as read / mark all as read, link to the report ## Desktop - Web Push, same `PushSubscription` as the alerts ## Richer upload metadata (argus/upload-action) - send the CI run URL and the actor with each upload; new optional fields in `ReportUploadSerializer` + `Report` - used in notification and alert messages ## Tests pytest (matching, creation, grouping, push mocked, permissions), vitest + msw (bell, page, subscription settings), upload-action tests for the new fields. Delivered as two PRs: argus/backend and argus/frontend, plus one in argus/upload-action for the metadata.
Author
Owner

Merged into #10: new-report notifications become info events of the same rule system.

Merged into #10: new-report notifications become `info` events of the same rule system.
Sign in to join this conversation.
No description provided.