Problem: Map position drifted north/higher on each reload because
bounds.getCenter() returns a visually offset center when pitch is applied
Solution:
- Use map.getCenter() for accurate geographic center (not affected by pitch)
- Save and restore bearing (rotation) along with pitch
- Store: lat, lon, zoom, pitch, bearing
Before: bounds.getCenter() → visual center (offset by 3D tilt)
After: map.getCenter() → true geographic center
This ensures the map returns to the exact same position after reload,
regardless of the 3D tilt angle.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Problem: Map pitch was always forced to 45° instead of being restored,
causing the view to appear shifted higher after each reload
- Save current pitch value to localStorage on moveend
- Restore pitch from localStorage on map initialization
- Remove forced pitch=45 on map load event
- Default to 45° only if no saved pitch exists
This prevents the map from drifting north/higher with each page reload
while maintaining the 3D tilt effect.
Auth: Session persistence already implemented via localStorage tokens
- Tokens are saved in localStorage and restored on mount
- Auto-refresh runs every 30s to keep session alive
- If session issues persist, check browser console for specific errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Use deterministic hash-based offset calculation for stable marker positions
- Markers now stay in same position across zoom/pan operations
- Check geographic distance instead of pixel distance for clustering
- Reduce image preview from 60px to 40px for compact modal
- Reduce button font size to save space
Fixes: Markers no longer jump around when zooming
Fixes: Modal stays compact with image preview
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add image upload functionality with file picker and URL input
- Display custom uploaded images or category-specific FontAwesome icons
- Add icon styles for all themes (dark, blue, light)
- Map unique icons to each category and subcategory (News, Friends, Events, Market)
- Update card templates to show 72x72px icon/image on the left
- Add image preview and validation (max 5MB, images only)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>