github Yeraze/meshmonitor v2.8.6
v2.8.6 - Timestamp Fixes & Code Quality Improvements

latest releases: v2.21.6, v2.21.5, v2.21.4...
2 months ago

๐ŸŽ‰ 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 lastHeard timestamps use server receive time (meshPacket.rxTime or Date.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)

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 queries
  • src/server/meshtasticManager.ts - Fixed lastHeard timestamp logic (5 locations)
  • src/App.tsx - Added dismiss button, cleaner structure
  • src/App.css - Dismiss button styling
  • src/components/NodesTab.tsx - Extracted component
  • src/components/MapCenterController.tsx - Extracted component
  • src/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.

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.