github Yeraze/meshmonitor v2.8.0
v2.8.0 - Map Tilesets, Mobile UX, and Filter Improvements

latest releases: v2.20.1, v2.20.0, v2.19.14...
one month ago

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/settings for 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 !important flags 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_ANONYMOUS environment 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:latest

Or 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/settings now 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

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.