- Fixed notification not triggering when adding message from another device
- Now notifies ALL devices (including your own) when near a cache with new message
- Added null checks for messages array to prevent errors
- Notifications work for messages from same user on different devices
This fixes the issue where adding a message from desktop wouldn't
notify your phone even when nearby.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added "Send Test Notification to All Users" button in admin panel
- Button appears after enabling push notifications
- Server endpoint /test-notification sends to all subscribed users
- Shows count of successful deliveries
- Purple button to distinguish from other actions
- Useful for testing notification system is working
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implemented three types of notifications with cooldowns:
1. Nearby Cache Notification
- Triggers when within 200m of a geocache
- 10-minute cooldown per cache
- Resets when you move >200m away
2. Cache Message Notification
- Triggers when another user adds a message to a nearby cache
- Only notifies if you're within 200m of the cache
3. Destination Arrival Notification
- Triggers when within 10m of navigation destination
- 1-minute cooldown to prevent spam
Features:
- Server endpoint /send-notification for triggering push notifications
- Cooldown tracking to prevent notification spam
- Distance-based triggers for relevant notifications
- Automatic cleanup of expired subscriptions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed from new Notification() to registration.showNotification()
- Mobile browsers require ServiceWorkerRegistration API for notifications
- Added vibrate pattern and badge icon for better mobile experience
This fixes the "Illegal constructor" error when enabling push notifications
on Chrome for Android and other mobile browsers.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed showStatus() to updateStatus() in 3 places
- Added proper status types ('success', 'info') for notifications
- Fixes ReferenceError when enabling/disabling push notifications
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Double-tap now requires both taps to be within 30 pixels of each other
- Prevents accidental navigation from taps with different fingers
- If second tap is too far away, it starts a new double-tap sequence
This ensures double-tap only works when intentionally tapping the same spot twice.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed quick-tap navigation (was interfering with map panning)
- Keep long-press (500ms hold) as primary navigation method
- Added double-tap as fallback for browsers with touch issues
- Double-click also works on desktop in navigation mode
- No single taps trigger navigation, allowing normal map interaction
This ensures map panning works normally while providing two clear
methods to set navigation destinations.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed touch event handlers from L.DomEvent to native addEventListener
- Added passive: false to allow preventDefault on touch events
- Implemented fallback quick-tap navigation for Chrome/PWA compatibility
- Added capture: true for better touch event handling
- Quick taps (<300ms) now trigger navigation dialog immediately
This fixes the issue where tap-to-navigate only worked on Firefox mobile
but not Chrome or installed PWA. Now supports both long-press and quick-tap.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major features added:
- Progressive Web App (PWA) manifest and service worker for offline support
- Push notifications with VAPID authentication
- Mobile-optimized UI with touch navigation fix
- Admin panel with configurable settings
- Geocache sound alerts
- App icons in all required sizes
Technical improvements:
- Fixed mobile touch handling for navigation selection
- Added remesh tool for track point standardization
- Improved pathfinding algorithm for more efficient routes
- WebSocket-based real-time multi-user tracking
- Docker deployment with persistent data volumes
Ready for APK generation via PWA2APK.com or Bubblewrap
Full offline support with map tile caching
Push notifications for geocache alerts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed icon switching between read/unread states
- Fixed CSS conflict between transform transition and pulse animation
- Changed proximity detection to directly toggle DOM classes instead of recreating icons
- Now uses classList.add/remove on marker._icon instead of setIcon() to prevent rendering issues
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>