feat: web notification#166
Open
CedrikNikita wants to merge 1 commit into
Open
Conversation
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 14, 2026 09:44
ef16119 to
d970013
Compare
CedrikNikita
force-pushed
the
develop
branch
2 times, most recently
from
July 15, 2026 05:27
2718729 to
bb7e283
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 08:25
d970013 to
0396f5a
Compare
CedrikNikita
marked this pull request as ready for review
July 16, 2026 08:25
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 09:03
0396f5a to
26d120b
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 09:53
26d120b to
2f88566
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 18:55
2f88566 to
908a38a
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 19:04
908a38a to
6e29e1b
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 16, 2026 19:43
6e29e1b to
472602a
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 17, 2026 10:29
472602a to
db82306
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 17, 2026 11:40
db82306 to
b7e48cf
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 17, 2026 11:50
b7e48cf to
3b982fa
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 17, 2026 12:08
3b982fa to
ef2c09f
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 18, 2026 11:39
ef2c09f to
ad5735e
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 18, 2026 12:13
ad5735e to
2dc998d
Compare
CedrikNikita
force-pushed
the
feature/web-notifications
branch
from
July 18, 2026 12:20
2dc998d to
4bd500d
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 4bd500d. Configure here.
| import { NotificationsGateway } from './notifications.gateway'; | ||
| import { FeedSessionGuard } from './guards/feed-session.guard'; | ||
| // ⚠️ TEMPORARY DEBUG — remove this import + its provider entry below. | ||
| import { NotificationSpamDebugService } from './services/notification-spam.debug'; |
There was a problem hiding this comment.
Temporary debug spam left in
Medium Severity
NotificationSpamDebugService and the gateway/send-web-push [TEMP] / [TEMP-PUSH] traces are marked temporary to remove, yet they ship in this feature. When NOTIF_DEBUG=true, the interval emits live socket events and real VAPID pushes every 10s while logging at error level.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 4bd500d. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Note
High Risk
Touches authentication (feed sessions), new persistence and delivery paths, and proxy trust settings that affect rate limiting and IP spoofing if misconfigured; large surface area with many edge cases around dedup, retention, and multi-channel fan-out.
Overview
Adds a full web notification stack on top of the existing Expo mobile pipeline: persisted per-address feed rows, REST + bearer sessions minted from æternity signatures, a
/notificationsSocket.IO namespace for livenotification/unread-count, and a Web Push (VAPID) channel with Bull-backed sends and subscription management.Database & delivery: New
notificationsandweb_push_subscriptionstables (TypeORM migrationWebNotificationFeed1718900000020, manual SQL doc updated).DatabaseChannelwrites feed rows, dedups per channel, and emits live updates;WebPushChannelenqueues per-endpoint jobs. Invitation-claimed and post-comment types now route throughexpo,database, andweb-pushwithtoDatabase(); incoming transfers stay Expo-only (no feed rows for every SpendTx). Social listeners drop the mobilehasDevicesgate so web-only users still get feed/push.Auth & ops: Feed challenge/session flow reuses device nonces with a distinct signed message;
FeedSessionGuardbinds bearer tokens to:address. Hourly retention cron caps rows per address and prunes old read items. Config/env covers session TTL, socket caps, handshake rate limits per IP, VAPID keys, and opt-inNOTIF_DEBUGsmoke tooling.Proxy fix:
TRUST_PROXYis parsed in sharedtrust-proxy/client-iphelpers, applied inmain.tsfor Express and in the notifications gateway so per-IP rate limits and socket handshake caps use real client IPs behind nginx/ELB/Cloudflare—not the proxy peer.Reviewed by Cursor Bugbot for commit 4bd500d. Bugbot is set up for automated code reviews on this repo. Configure here.