Adds **Repeater Echo Tracking** - listens 7 seconds after each ping to capture which repeaters echoed your message, logs their IDs/SNR, and sends to MeshMapper API. Also fixes status message flickering with a new minimum visibility system.#70
Merged
MrAlders0n merged 44 commits intomainfrom Dec 19, 2025
Conversation
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…ter-tracking Add repeater echo tracking via rx_log correlation with message content verification
…rence Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…rdrive Fix async/await syntax error and remove unused config.js reference
…ion issue Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…n-issue Fix repeater echo correlation by removing trailing whitespace in buildPayload()
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Fix repeater telemetry loss due to race condition in timeout handlers
- Modified postToMeshMapperAPI to accept and include heard_repeats field - Changed RX listening flow: ping -> listen 7s -> finalize -> post API - Replaced API countdown timer with RX listening countdown timer - Updated status messages: "Listening for heard repeats (7s)" during listening - Added comprehensive debug logging for new sequence - Changed formatRepeaterTelemetry to return "None" instead of "none" - API post now happens strictly after 7s listening window completes Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…-fix-timer Add heard_repeats to API payload and fix timer sequence to post after listening window
- Extract only the first repeater ID from multi-hop paths - Example: 22d05d468b(-7.5) now becomes 22(-7.5) - Deduplication logic remains unchanged and works correctly Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Normalize heard-repeats to extract only first hop ID
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
- Add capturedPingCoords field to state to store GPS coordinates at ping time - Capture coordinates immediately when mesh ping is sent - Use stored coordinates for API post after 7-second listening window - Clear captured coordinates after API post completes - Ensure coordinates are cleared during cleanup Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
- Move coordinate clearing outside if-else block for consistency - Remove fallback to closure variables to prevent stale coordinates - Add critical error logging if coordinates are missing - Skip API post if coordinates unavailable to prevent incorrect data Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…sistency Fix GPS coordinate consistency between mesh ping and API post
…us-messages Enforce 500ms minimum visibility for transient status messages
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…ssage Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…e error format Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…tandardize tone Co-authored-by: MrAlders0n <55921894+MrAlders0n@users.noreply.github.com>
…i-post Add 3s API POST delay and standardize status messages
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
Summary
This PR introduces Repeater Echo Tracking - a major new feature that captures which mesh repeaters echo your wardriving pings, along with a complete overhaul of the status message system for better UX.
Key Changes
🎯 Repeater Echo Tracking
heard_repeatsfield to MeshMapper API💬 Status Message System
📝 Documentation
STATUS_MESSAGES. mddocumenting all 25 status message patterns🧹 Code Quality
Files Changed
README.md- Version bump to 1.3.0STATUS_MESSAGES.md- New documentation filecontent/wardrive. js- Core feature implementationindex.html- Added aes-js CDN, removed unused config referenceTesting
Version
1.2.1 → 1.3.0