MeshMonitor v2.8.0
This release brings map customization with multiple tileset options, improved mobile UX, and enhanced node filtering capabilities.
✨ New Features
🗺️ Map Tileset Selection (#240)
Users can now choose from 6 different map tilesets to customize their map experience:
- OpenStreetMap - Standard and Humanitarian styles
- CartoDB - Dark Matter and Positron (light) themes
- OpenTopoMap - Topographical map with elevation contours
- Esri World Imagery - High-resolution satellite imagery
Key Features:
- Tileset preferences stored in database and localStorage
- Cross-browser persistence (settings follow you across devices)
- Desktop: Collapsible tileset selector in Settings tab
- Mobile: Full integration with existing settings
- Anonymous users can access and save tileset preferences
- Service worker caching for all tile providers
Technical:
- New tilesets configuration system (
src/config/tilesets.ts) - Updated CSP headers to allow all tile providers
- Enhanced service worker for multi-provider tile caching
- Removed permission check from GET
/api/settingsfor anonymous access
🎯 Improved Node Filtering (#243)
Complete overhaul of node filter behavior for more intuitive UX:
New Filter Logic:
- ✅ Checked = Only show nodes WITH that attribute (requirement filter)
- ⬜ Unchecked (default) = Show ALL nodes regardless of attribute
Available Filters:
- MQTT Nodes - Show only MQTT gateway nodes
- Telemetry Data - Show only nodes reporting telemetry
- Environment Metrics - Show only nodes with weather/environment data
- Position Data - Show only nodes with GPS coordinates
- PKI/PKC - Show only nodes with public key infrastructure
Benefits:
- Start with all nodes visible by default
- Progressively narrow down by checking boxes
- More intuitive than previous exclusion logic
- Filters act as "show me only nodes with X" requirements
📱 Mobile UX Improvements (#243)
Filter Popup
- Reduced width to 70% on mobile (prevents overflow)
- Fixed header and footer stay in place
- Only content area scrolls
- Restructured with flexbox for proper positioning
Node List (Map Page)
- Positioned tight to corner when expanded (matching collapsed state)
- Width optimized for mobile: 90vw (max 350px)
- Auto-collapse when clicking nodes with position data
- Better space utilization on small screens
Technical Fixes:
- Resolved CSS cascade issues where desktop styles overrode mobile rules
- Added
!importantflags to ensure mobile styles apply correctly - Fixed header/footer positioning with flexbox layout
🔧 Bug Fixes
Apprise Configuration (#243)
- Fixed "URLs array is required" error when saving Apprise configuration
- Now properly handles empty arrays (clears all URLs)
- Filters out whitespace and invalid entries automatically
- Users can successfully save even with blank lines
Telemetry Chart Alignment (#242)
- Synchronized time axis across all telemetry charts on Messages page
- Global time range from earliest data to current time
- Easier temporal comparisons across different metrics
- Visual consistency with Dashboard page behavior
📖 Documentation
Configuration Documentation (#241)
- Added
DISABLE_ANONYMOUSenvironment variable documentation - Updated deployment guides with anonymous access control
- Clearer security configuration examples
🔄 Migration Notes
Tileset Settings
- Existing users will see OpenStreetMap (standard) as default
- Settings will persist across browser/device changes when logged in
- Anonymous users' tileset preferences stored in localStorage only
Node Filters
- Important: Filter defaults changed to "show all" (unchecked)
- Previous filter state will be reset on first load
- Users may need to reapply their preferred filters
🐳 Docker Deployment
Pull the latest image:
docker pull ghcr.io/yeraze/meshmonitor:v2.8.0
docker pull ghcr.io/yeraze/meshmonitor:latestOr use docker-compose:
services:
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:v2.8.0
# ... rest of config📊 Technical Details
New Dependencies
- No new dependencies added
API Changes
- GET
/api/settingsnow accessible to anonymous users (for tileset preferences) - Apprise configuration validation improved for empty arrays
Performance
- Service worker now caches tiles from all 6 providers
- Improved mobile CSS specificity for faster rendering
- Optimized filter logic for better performance with large node lists
🙏 Contributors
- @Yeraze - Primary development and testing
- Claude Code - AI-assisted development
Full Changelog: v2.7.3...v2.8.0