Notify mobile operators about new unread updates #549

Closed
opened 2026-08-11 06:49:51 +00:00 by timmy · 0 comments
Owner

User problem

Mobile operators only discover mentions, requested reviews, and other unread Gitea threads after reopening Stackchain. The installed PWA should provide an explicit, privacy-safe opt-in for timely inbound updates.

Vertical slice

  • Opt in from Queue & settings using a deliberate user gesture.
  • Register a device-bound Web Push subscription.
  • Poll unread Gitea thread IDs with durable per-device deduplication and send a generic notification without repository/title/comment content.
  • Tap the notification to open the existing #/my-work/update/{thread_id} workflow.
  • Unsubscribe on user request and disable expired endpoints.
  • Remain disabled when VAPID configuration is absent.

Acceptance

  • No browser permission prompt before the operator taps the control.
  • Permission/subscription status is visible and survives reload.
  • A new unread thread produces exactly one generic push per subscribed device.
  • Repeated polls do not duplicate; read threads are not pushed later.
  • Notification click focuses or opens the matching update route.
  • Sign-out/unsubscribe/revocation prevents later pushes.
  • Focused backend/frontend/service-worker tests and full suite pass.

Evidence / non-duplication

Current origin/main only polls while visible (frontend/dashboard.js) and the service worker only notifies for completed outbound queued work. Repository search found no PushManager/push-subscription implementation. All 277 historical issue titles and recent commits were checked; #260 covers outbound queue delivery receipts, not inbound unread-update Web Push.

## User problem Mobile operators only discover mentions, requested reviews, and other unread Gitea threads after reopening Stackchain. The installed PWA should provide an explicit, privacy-safe opt-in for timely inbound updates. ## Vertical slice - Opt in from Queue & settings using a deliberate user gesture. - Register a device-bound Web Push subscription. - Poll unread Gitea thread IDs with durable per-device deduplication and send a generic notification without repository/title/comment content. - Tap the notification to open the existing `#/my-work/update/{thread_id}` workflow. - Unsubscribe on user request and disable expired endpoints. - Remain disabled when VAPID configuration is absent. ## Acceptance - No browser permission prompt before the operator taps the control. - Permission/subscription status is visible and survives reload. - A new unread thread produces exactly one generic push per subscribed device. - Repeated polls do not duplicate; read threads are not pushed later. - Notification click focuses or opens the matching update route. - Sign-out/unsubscribe/revocation prevents later pushes. - Focused backend/frontend/service-worker tests and full suite pass. ## Evidence / non-duplication Current `origin/main` only polls while visible (`frontend/dashboard.js`) and the service worker only notifies for completed outbound queued work. Repository search found no PushManager/push-subscription implementation. All 277 historical issue titles and recent commits were checked; #260 covers outbound queue delivery receipts, not inbound unread-update Web Push.
timmy self-assigned this 2026-08-11 06:49:51 +00:00
timmy closed this issue 2026-08-11 07:10:05 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#549
No description provided.