Skip to content

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
dev
Dec 19, 2025

Conversation

@MrAlders0n
Copy link
Collaborator

TL;DR

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.


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

  • Implements 7-second RX listening window after each ping
  • Uses pre-computed SHA-256 channel hash for message correlation
  • Decrypts AES-ECB encrypted payloads to verify message content matches
  • Tracks unique repeater IDs with deduplication and best-SNR selection
  • Sends heard_repeats field to MeshMapper API
  • Updates session log entries with repeater telemetry

💬 Status Message System

  • Enforces 500ms minimum visibility for all status messages
  • Implements smart message queuing to prevent flickering
  • Hybrid countdown timer approach (first update respects minimum, subsequent are immediate)

📝 Documentation

  • New STATUS_MESSAGES. md documenting all 25 status message patterns

🧹 Code Quality

  • Standardized status message text (consistent capitalization, punctuation, terminology)
  • Pre-computed channel keys at startup for performance
  • Captured GPS coordinates at ping time for accurate API posts
  • Added aes-js library for AES-ECB decryption

Files Changed

  • README.md - Version bump to 1.3.0
  • STATUS_MESSAGES.md - New documentation file
  • content/wardrive. js - Core feature implementation
  • index.html - Added aes-js CDN, removed unused config reference

Testing

  • Manual ping with repeater echo tracking
  • Auto ping mode with repeater tracking
  • Status message minimum visibility
  • Countdown timer behavior
  • API post with heard_repeats field
  • Session log with repeater data

Version

1.2.1 → 1.3.0

Copilot AI and others added 30 commits December 19, 2025 03:41
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>
Copilot AI and others added 14 commits December 19, 2025 14:42
- 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
@MrAlders0n MrAlders0n merged commit efbd235 into main Dec 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants