Scott Idem
ddf44a2aee
feat: web push notifications (VAPID)
- push_utils.py: subscription storage + send helper (auto-prunes 410 endpoints)
- routers/push.py: GET /api/push/vapid-key (public), POST/DELETE /api/push/subscribe
- sw.js: push event listener shows notification; notificationclick focuses/opens tab
- app.js: subscribe/unsubscribe flow + "Enable notifications" toggle in settings dropdown
- tools/notify.py: web_push orchestrator tool (user-level, no admin required)
- VAPID keys in .env; pywebpush added to requirements.txt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 19:38:58 -04:00
..
2026-05-05 19:38:58 -04:00
2026-05-05 19:38:58 -04:00
2026-04-27 20:41:06 -04:00
2026-05-05 19:38:58 -04:00
2026-03-06 03:41:00 -05:00
2026-04-05 20:53:06 -04:00
2026-03-18 20:13:11 -04:00
2026-05-05 19:38:58 -04:00
2026-04-30 19:14:53 -04:00
2026-05-05 19:38:58 -04:00
2026-05-05 18:44:51 -04:00
2026-03-10 23:38:39 -04:00
2026-04-05 21:25:18 -04:00
2026-03-06 03:41:00 -05:00
2026-03-20 23:19:09 -04:00
2026-03-17 21:10:07 -04:00
2026-05-02 20:38:31 -04:00
2026-05-05 19:38:58 -04:00
2026-04-29 19:23:53 -04:00
2026-05-05 18:54:27 -04:00
2026-05-01 20:40:50 -04:00
2026-04-29 22:32:22 -04:00
2026-05-01 20:00:38 -04:00
2026-05-02 20:38:31 -04:00
2026-03-29 21:35:54 -04:00
2026-03-20 22:35:40 -04:00
2026-05-05 19:38:58 -04:00
2026-03-20 22:03:42 -04:00
2026-05-05 19:38:58 -04:00
2026-05-05 18:44:51 -04:00
2026-05-05 18:44:51 -04:00
2026-05-05 19:14:59 -04:00
2026-05-02 20:38:31 -04:00
2026-04-05 20:53:06 -04:00