What's Changed since v3.10.0-RC4
Bug Fixes
- Fix time offset flags not persisted on SQLite —
updateNodeTimeOffsetFlagsAsyncwas missing the SQLite path, so time offset detection never showed in the frontend and log messages duplicated every scan (#2378) — #2379 - Fix duplicate traceroute pending records — outgoing traceroute was recorded twice (once on send, once on node echo), leaving a permanent "No response received" entry that hid the correct result (#2364) — #2380
- Fix channel database shadowing radio channels — server-decrypted messages now appear in both the database channel and the matching radio channel, instead of only the database channel (#2375) — #2381
- Fix PKI_UNKNOWN_PUBKEY not flagging key mismatch — PKI errors were silently suppressed when the target node wasn't in the radio's device database; now always flags keyMismatchDetected — #2382
- Fix traceroute race condition for fast-responding nodes —
recordTracerouteRequestnow properly awaited for PostgreSQL/MySQL (#2364) — #2366 - Fix packet monitor ordering within same second — added
created_at(millisecond precision) as tiebreaker sort key (#2364) — #2369 - Fix sidebar collapse on Messages/Map tabs — collapsed sidebar now shrinks to 0 width with floating expand button, reclaiming full content space — #2368
- Improve MQTT detection in traceroutes — SNR=0 (protobuf default) now correctly detected as MQTT hop; distinct lavender color and dash pattern for MQTT segments on map (@NearlCrews) — #2302
Refactoring
- Drizzle ORM Phase 1:
col()helper eliminates column quoting duplication in JOIN queries — #2372 - Drizzle ORM Phase 2:
getAffectedRows()helper normalizes affected row counts across SQLite/PG/MySQL — #2374 - Drizzle ORM Phase 3:
upsert()andinsertIgnore()helpers eliminate conflict handling duplication (10 call sites) — #2376 - Migration 014: Fix missing
decrypted_bycolumn on messages +enforceNameValidation/sortOrderon channel_database for PG/MySQL baselines — #2372 - Backend soak test: New
tests/backend-soak-test.shlaunches all 3 backends in sequence and monitors logs for errors — #2372
Documentation & Community
- Added TechTucson BBS and Mail scripts to user scripts gallery — #2370
- Updated architecture documentation with PKI error detection rules — #2382
- Translation updates from Weblate — #2273
Chores
Full Changelog: v3.10.0-RC4...v3.10.0-RC5
🚀 MeshMonitor v3.10.0-RC5
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.10.0-RC5🧪 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.