rmaps-online/sync-server
Jeff Emmett 30f32e6da7 fix: deduplicate participants, visible callout push for offline users, fix notification timing
- Server-side participant dedup on join: remove ghost entries with same name but different ID
- Reduce stale participant threshold from 1hr to 15min to match client-side cleanup
- Refactor push subscriptions from Set to Map keyed by endpoint (prevents duplicate pushes)
- Store participantId with push subscriptions for identity-aware routing
- Exclude joining user from their own "Friend Joined" push notification
- Callout (ping) sends visible push to offline users ("X is looking for you!") instead of silent push
- Return last known locations in callout API response for immediate display
- Service worker: 10s cooldown on location request pushes to prevent burst on app reopen
- Service worker: suppress join/leave notifications when app window is focused
- Pass callerName from ParticipantList so offline callout shows who's looking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:01:56 -07:00
..
.gitignore feat: Add WebSocket sync server for real-time location sharing 2025-12-25 22:00:55 -05:00
Dockerfile feat: Add WebSocket sync server for real-time location sharing 2025-12-25 22:00:55 -05:00
docker-compose.yml feat: Add automatic periodic location requests via silent push 2025-12-29 01:27:00 +01:00
package-lock.json feat: Add PWA push notifications for room events 2025-12-29 01:13:16 +01:00
package.json feat: Add PWA push notifications for room events 2025-12-29 01:13:16 +01:00
server.js fix: deduplicate participants, visible callout push for offline users, fix notification timing 2026-02-15 14:01:56 -07:00
verify-token.js feat: add EncryptID auth to sync server and gate room creation 2026-02-13 11:54:20 -07:00