๐ What's New
๐ Bug Fixes
Server-side Timestamp Fixes (#273) - Fixes #272
Nodes with incorrect system clocks (e.g., year 2099) were causing messages and nodes to sort incorrectly.
What Changed:
- Message Sorting - Messages now sort by server receive time (
rxTime) instead of potentially incorrect node-reported timestamps - Node Last Heard - Node list now shows accurate "Last Seen" times based on when the server received information, not what the node claims
- Update Banner Dismiss - Added dismiss button (โ) to the update notification banner
Why This Matters:
Some Meshtastic nodes have incorrect system clocks (battery issues, misconfiguration, etc.), which was causing:
- Messages to appear out of order in chat
- Nodes to show incorrect "last seen" times
- Chat history to be confusing and unreliable
Technical Details:
- Database queries now use
COALESCE(rxTime, timestamp)for backwards compatibility - All
lastHeardtimestamps use server receive time (meshPacket.rxTimeorDate.now()) - Server time is always reliable since it's controlled by your infrastructure
๐งน Code Quality & Testing
Component Refactoring (#271, #268)
Improved code organization and test coverage:
- NodesTab Extraction - Separated NodesTab component from App.tsx for better maintainability
- MapCenterController Extraction - Created dedicated component for map centering logic with detailed documentation
- Test Coverage - Added comprehensive tests for NodesTab helper functions:
- Date comparison functions (
isToday,areSameDay) - Edge cases for month/year boundaries
- All tests passing (714 tests total)
- Date comparison functions (
Benefits:
- Better code organization and separation of concerns
- Easier to maintain and test individual components
- Improved documentation for map interaction logic
- Reduced complexity in main App component
๐ง Technical Improvements
- All TypeScript checks passing โ
- All 714 tests passing โ
- Improved component modularity
- Better separation between UI and logic layers
๐ Files Changed
src/services/database.ts- Updated message sorting queriessrc/server/meshtasticManager.ts- Fixed lastHeard timestamp logic (5 locations)src/App.tsx- Added dismiss button, cleaner structuresrc/App.css- Dismiss button stylingsrc/components/NodesTab.tsx- Extracted componentsrc/components/MapCenterController.tsx- Extracted componentsrc/components/NodesTab.test.tsx- New test file
Full Changelog: v2.8.5...v2.8.6
Install: docker pull ghcr.io/yeraze/meshmonitor:2.8.6
๐ MeshMonitor v2.8.6
๐ฆ Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:v2.8.6๐งช 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.