docs: Update backlog tasks with session progress
- task-3 (Push notifications): Marked Done, added implementation notes - task-4 (PWA offline): Marked In Progress, documented partial impl - task-6 (c3nav indoor): Added note about removing indoor button - task-12 (Stale participants): Added greyed-out locations feature 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
c34a84672a
commit
cf8bd63298
|
|
@ -4,7 +4,7 @@ title: Fix stale participant sessions showing on map
|
|||
status: Done
|
||||
assignee: []
|
||||
created_date: '2025-12-19 18:00'
|
||||
updated_date: '2025-12-19 18:20'
|
||||
updated_date: '2026-01-02 14:29'
|
||||
labels:
|
||||
- bug
|
||||
- ux
|
||||
|
|
@ -46,4 +46,12 @@ Fix: Clean up stale participants on room load and use a persistent participant I
|
|||
- Same user returning to a room gets the same participant ID
|
||||
- Prevents creating duplicate ghost entries on each page reload
|
||||
- Falls back to temporary ID if localStorage unavailable
|
||||
|
||||
## Update (2026-01-02)
|
||||
|
||||
Added visual indicator for stale locations:
|
||||
- Locations older than 5 minutes are greyed out (#6b7280) with 60% opacity
|
||||
- Hover tooltip shows "[name] - last seen X min ago"
|
||||
- Dynamically updates existing markers when they become stale
|
||||
- Helps users distinguish fresh vs old location data
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
---
|
||||
id: task-3
|
||||
title: Add push notifications
|
||||
status: To Do
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2025-12-15 19:37'
|
||||
updated_date: '2026-01-02 14:27'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: medium
|
||||
|
|
@ -14,3 +15,39 @@ priority: medium
|
|||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Implement web push notifications for friend arrivals, proximity alerts, and group activity. Include battery-friendly polling options.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
## Implementation
|
||||
|
||||
Implemented comprehensive push notification system:
|
||||
|
||||
1. **Web Push with VAPID** (`sync-server/server.js`)
|
||||
- VAPID key authentication for secure push
|
||||
- Push subscriptions stored per room
|
||||
- Silent push for location requests
|
||||
- Notification push for friend joins/meeting points
|
||||
|
||||
2. **Service Worker** (`public/sw.js`)
|
||||
- Handles push events
|
||||
- Silent push triggers location update via postMessage
|
||||
- Notification push shows native notifications
|
||||
- Click handling opens room URL
|
||||
|
||||
3. **Push Hooks** (`src/hooks/usePushNotifications.ts`)
|
||||
- Subscribe/unsubscribe to push notifications
|
||||
- Auto-subscribes when joining room
|
||||
- Handles VAPID public key fetching
|
||||
|
||||
4. **Location Request System**
|
||||
- "Ping all" button with bell icon in friends list header
|
||||
- Individual ping button per participant
|
||||
- Deduplicates by name (only pings one session per user)
|
||||
- WebSocket for online clients, push for offline
|
||||
|
||||
5. **Background Location Sync**
|
||||
- Automatic periodic location requests (60s interval)
|
||||
- Service worker messages for location sync
|
||||
- Background Sync API integration
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
---
|
||||
id: task-4
|
||||
title: PWA offline support
|
||||
status: To Do
|
||||
status: In Progress
|
||||
assignee: []
|
||||
created_date: '2025-12-15 19:37'
|
||||
updated_date: '2026-01-02 14:28'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
|
|
@ -14,3 +15,30 @@ priority: high
|
|||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Implement service worker for offline caching. Store map tiles, venue data, and room state in IndexedDB. Sync when reconnected.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
## Partial Implementation
|
||||
|
||||
PWA basics implemented:
|
||||
|
||||
1. **Service Worker** (`public/sw.js`)
|
||||
- Push notification handling
|
||||
- Location request messaging
|
||||
- Basic caching setup
|
||||
|
||||
2. **Install Banner** (`src/components/room/InstallBanner.tsx`)
|
||||
- Detects installable PWA state
|
||||
- Shows "Add to Home Screen" prompt
|
||||
- iOS-specific instructions
|
||||
- Dismissible with localStorage persistence
|
||||
|
||||
3. **PWA Manifest** - App manifest with icons and theme colors
|
||||
|
||||
## Still Needed
|
||||
- Offline map tile caching (IndexedDB)
|
||||
- Room state persistence for offline viewing
|
||||
- Sync queue for offline location updates
|
||||
- Background sync when reconnected
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ title: c3nav indoor integration
|
|||
status: Done
|
||||
assignee: []
|
||||
created_date: '2025-12-15 19:37'
|
||||
updated_date: '2025-12-17 00:44'
|
||||
updated_date: '2026-01-02 14:28'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: high
|
||||
|
|
@ -27,4 +27,8 @@ Implemented c3nav indoor map integration:
|
|||
- Tap-to-set indoor position
|
||||
- Position sync between participants
|
||||
- Easter egg: 'The Underground of the Underground'
|
||||
|
||||
## Update (2026-01-02)
|
||||
|
||||
Removed indoor map button from UI because c3nav blocks iframe embedding (X-Frame-Options: deny). The C3NavEmbed component now shows a fallback UI with an 'Open c3nav' button that opens in a new tab. Indoor map functionality is effectively deprecated in favor of direct c3nav usage.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
|
|
|||
Loading…
Reference in New Issue