MeshMonitor v2.5.0
๐ New Features
Channel Information Modal
- Interactive Channel Details: Click "info" link on any channel button to view comprehensive channel information
- Security-Focused PSK Display: Pre-shared keys are masked by default with a show/hide toggle to prevent accidental exposure
- Complete Channel Metadata:
- Channel name and number
- Encryption status with visual indicators (๐/๐)
- Base64-encoded PSK with masked display
- MQTT uplink/downlink configuration (โ/โ)
- Discovery and last updated timestamps
- Keyboard Accessible: Press Escape to close modal
- Performance Optimized: Memoized channel lookups prevent redundant rendering
Enhanced Channel Buttons
- Restructured Layout: Channel info on left, status indicators on right
- Encryption Indicators:
- ๐ for encrypted channels (PSK != AQ==)
- ๐ for unencrypted channels
- Data-driven detection (no hardcoded channel names)
- Refined MQTT Arrows: Smaller up/down arrows positioned on right edge
- Quick Info Access: "info" link for immediate channel details
Map Position Visualization
- Uncertainty Circles: Visual representation of position accuracy/confidence
- Displayed for estimated/approximate positions
- Transparent overlays showing uncertainty radius
- Helps distinguish precise GPS positions from estimated locations
- Enhanced Position Context: Better understanding of node location reliability
Messages Tab UX Improvements
- Enhanced message display and interaction patterns
- Improved visual hierarchy and readability
- Better handling of message metadata
๐ Bug Fixes
MQTT Configuration Display
- Fixed: All channels incorrectly showed both uplink and downlink enabled
- Solution: Now properly reads
uplinkEnabled/downlinkEnabledfrom Meshtastic device - Impact: Accurate MQTT status display for each channel
PSK Storage & Encryption Detection
- Fixed: PSK values stored as placeholder 'Set' instead of actual values
- Solution: Store actual base64-encoded PSK from device for proper inspection
- Impact: Correct encryption detection (AQ== = unencrypted default key)
๐ง Technical Improvements
Code Quality
- Named Constants: Extracted magic string 'AQ==' to
DEFAULT_UNENCRYPTED_PSK - Error Handling: Added try-catch for PSK buffer conversion with informative warnings
- Type Safety: Proper TypeScript interfaces for channel data
Performance Optimizations
- Memoized Channel Lookups:
useMemoprevents redundant array searches - Optimized Rendering: Modal only recalculates when dependencies change
Security Enhancements
- PSK Masking: Sensitive keys hidden by default, requires explicit user action to reveal
- Prevents Accidental Exposure: Protects against screenshots and screen sharing leaks
Accessibility
- Keyboard Navigation: Full Escape key support for modal dismissal
- Standard UX Patterns: Follows accessibility best practices
๐ Technical Changes
Modified Files:
src/App.tsx: Channel info modal, state management, memoization, keyboard handlerssrc/App.css: Modal styling, button layout, channel indicatorssrc/server/meshtasticManager.ts: PSK conversion with error handling, MQTT settingssrc/services/database.ts: MQTT uplink/downlink storage supportpackage.json: Version bump to 2.5.0helm/meshmonitor/Chart.yaml: Helm chart version updates
๐ Deployment
Docker Images:
docker pull ghcr.io/yeraze/meshmonitor:2.5.0
docker pull ghcr.io/yeraze/meshmonitor:latestHelm Chart:
helm repo update
helm upgrade meshmonitor meshmonitor/meshmonitor --version 2.5.0๐ Upgrade Notes
- No database migrations required
- No breaking changes
- All existing functionality preserved
- New channel info modal available immediately
- MQTT settings now display correctly
๐ Acknowledgments
Special thanks to the automated code review process that identified security, performance, and accessibility improvements, making this release even better!
Full Changelog: v2.4.6...v2.5.0
๐ MeshMonitor v2.5.0
๐ฆ Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:v2.5.0๐งช Testing
โ
All tests passed
โ
TypeScript checks passed
โ
Docker images built for linux/amd64, linux/arm64, linux/arm/v7
๐ Changes
See commit history for detailed changes.