152 commits · 240 files changed · 51K insertions / 55K deletions · 44 PRs merged · 7 contributors
Highlights
Timestamp Controls — Toggle between relative ("3m ago") and absolute timestamps across all pages. UTC/local timezone, format presets, admin-configurable defaults. New Display tab in customizer.
Channel Region Filtering — Multi-region deployments no longer show cross-region message crosstalk. Server-side SQL prefilter + frontend WS guard.
Disable Internal Mosquitto — DISABLE_MOSQUITTO=true in .env skips the built-in broker for users running their own.
Port Negotiation — manage.sh setup detects port conflicts, suggests alternatives, persists choices to .env.
Packet Store Eviction — In-memory packet store now has configurable memory limits with LRU eviction to prevent OOM on long-running instances.
Telemetry Decoding — Battery voltage and temperature decoded from sensor adverts and displayed on node detail pages.
Observer Identity — Go ingestor now persists model, firmware, client version, and radio from observer status messages.
Hash Size Analytics — Dominant hash size computation (mode, not last-seen), multi-byte hash usage matrix with stats and tooltips, distribution by repeaters.
Performance — O(n) slice prepend eliminated on packet ingest, parallel coverage collector (8min → 30-60s), packet store query optimizations.
Decoder Alignment — Packet decoder aligned with MeshCore firmware spec, TRACE path hops parsed correctly.
manage.sh Overhaul — Compose-only wrapper, .env as single source of truth, config migration from repo root to data directory, CRLF auto-fix, tilde expansion.
CI/CD — Go server E2E tests replace Node.js, Playwright suite, workflow_dispatch for manual triggers, repo-wide LF normalization with blame history preservation.
Mobile Responsive — Live bottom-sheet, perf layout, nodes column hiding for small screens.
Configurable Health Thresholds — Node health thresholds now configurable in hours via config.json.
pprof Profiling — Optional pprof endpoints controlled by ENABLE_PPROF env var for production debugging.
Breaking Changes
- Config location moved —
config.jsonnow lives in the data directory (~/meshcore-data/config.json).manage.shauto-migrates from repo root onupdate/start. - Node.js backend fully removed — all backend code is Go. If you were running the Node.js server directly, you must switch to the Docker image.
Known Issues
- FAQ/home page customizer editing can cause steps to disappear — needs architectural fix (#284, #325)
- Observer telemetry (battery, uptime, noise_floor) reads wrong JSON level (#320)
- SNR/RSSI case-sensitive key lookup may miss lowercase variants (#321)
- Repeater hash stats may not update after hash size change (#303)
- VCR timeline ignores UTC/local timezone setting (#324)
- Top nav bar controls invisible on narrow screens (#322)