Commit Graph

8 Commits

Author SHA1 Message Date
Jeff Emmett 2d960a53f2 fix: Send join message after WebSocket connects
The join() was called before connect(), so the join message was never
sent to the server. Now we store the participant and send the join
message in the WebSocket onopen handler.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 20:39:44 -05:00
Jeff Emmett eeab19ceac fix: Clean up stale participant sessions from map
- Add cleanupStaleParticipants() to remove participants not seen in last hour
- Use persistent participant ID per browser/room to prevent ghost duplicates
- Fixes issue where old versions of yourself appeared on map reload

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 13:28:35 -05:00
Jeff Emmett 760e27564c feat: Add c3nav indoor map integration with floor selector
- Add c3nav tile proxy API route with session handling
- Add c3nav data API proxy for locations/bounds
- Create IndoorMapView component with MapLibre GL
- Add floor level selector (Level 0-4)
- Tap-to-set-position on indoor map
- Sync indoor positions between participants
- Easter egg: Triple-click Level 0 for "The Underground of the Underground"
- Fix race condition in useRoom when no user data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 19:44:33 -05:00
Jeff Emmett 1a996931b5 Fix location sharing: opt-in by default, stop button clears location from map 2025-12-15 15:47:31 -05:00
Jeff Emmett 3e5437fb14 Fix stale closure in location update callback + add debug logging 2025-12-15 14:42:32 -05:00
Jeff Emmett 23cbe6caa8 Replace Automerge with simple WebSocket sync
- Remove Automerge dependencies (WASM incompatible with Next.js)
- Add lightweight WebSocket-based sync layer
- Works in local-only mode until sync server deployed
- State persisted in localStorage for reconnection

Ready for deployment - sync server can be added later.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 12:59:22 -05:00
Jeff Emmett 530979978d Add real-time sync, c3nav integration, and PWA icons
Features:
- Automerge-based real-time room sync with CRDT
- c3nav indoor map integration for CCC events
- DualMapView component (auto-switches indoor/outdoor)
- useRoom hook for room state management
- PWA icons and manifest

Infrastructure:
- DNS configured for rmaps.online, www, and *.rmaps.online
- Cloudflare tunnel updated for wildcard subdomains
- Fixed Next.js security update to 14.2.28

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 12:50:28 -05:00
Jeff Emmett dc0661d58a Initial scaffold for rMaps.online
Collaborative real-time friend-finding navigation for events:
- Next.js 14 with TypeScript and Tailwind CSS
- MapLibre GL for outdoor OpenStreetMap rendering
- c3nav API client for CCC indoor navigation
- Zustand for state management
- Location sharing hook with privacy controls
- Room system with subdomain routing middleware
- Docker + docker-compose with Traefik labels

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 12:23:13 -05:00