A DEBUG=1 capture from a long-running ingestor (2026-06-27 → 2026-07-22) shows Meshtastic WAYPOINT_APP packets being dropped as unsupported-port in ignored-meshtastic.txt. The dashboard currently has no ingest path or UI for waypoints.
Evidence
Two waypoints broadcast by !3769b133, both real Berlin POIs:
Name
Description
Position
Icon
Tempelhofer Feld
"There is no other place in Berlin to see further. : )"
data/: handle WAYPOINT_APP in the packet dispatch, emit a waypoint event (new contract section in data/mesh_ingestor/CONTRACTS.md).
web/: POST /api/waypoints + storage; map layer rendering the icon codepoint with name/description popup; honor expire and retention/PRIVATE invariants.
Protocol parity note: MeshCore has no waypoint equivalent — model as an optional MeshProtocol capability, not a required event.
Status
Deferred for now (maintainer decision) — captured here so the data points aren't lost.
## Context
A `DEBUG=1` capture from a long-running ingestor (2026-06-27 → 2026-07-22) shows Meshtastic `WAYPOINT_APP` packets being dropped as `unsupported-port` in `ignored-meshtastic.txt`. The dashboard currently has no ingest path or UI for waypoints.
## Evidence
Two waypoints broadcast by `!3769b133`, both real Berlin POIs:
| Name | Description | Position | Icon |
|---|---|---|---|
| Tempelhofer Feld | "There is no other place in Berlin to see further. : )" | 52.4751642, 13.4029586 | U+2708 ✈ |
| Abgedreht Bar | "Was wollen wir trinken … ;)" | 52.5158247, 13.4520138 | U+1F37B 🍻 |
## Payload fields available
`decoded.waypoint` carries: `id`, `latitudeI`/`longitudeI` (1e-7°), `name`, `description`, `icon` (unicode codepoint), `lockedTo`, `expire`.
## Proposed scope
- `data/`: handle `WAYPOINT_APP` in the packet dispatch, emit a waypoint event (new contract section in `data/mesh_ingestor/CONTRACTS.md`).
- `web/`: `POST /api/waypoints` + storage; map layer rendering the icon codepoint with name/description popup; honor `expire` and retention/`PRIVATE` invariants.
- Protocol parity note: MeshCore has no waypoint equivalent — model as an optional `MeshProtocol` capability, not a required event.
## Status
Deferred for now (maintainer decision) — captured here so the data points aren't lost.
<!-- github-sync-id:4950373891 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
A
DEBUG=1capture from a long-running ingestor (2026-06-27 → 2026-07-22) shows MeshtasticWAYPOINT_APPpackets being dropped asunsupported-portinignored-meshtastic.txt. The dashboard currently has no ingest path or UI for waypoints.Evidence
Two waypoints broadcast by
!3769b133, both real Berlin POIs:Payload fields available
decoded.waypointcarries:id,latitudeI/longitudeI(1e-7°),name,description,icon(unicode codepoint),lockedTo,expire.Proposed scope
data/: handleWAYPOINT_APPin the packet dispatch, emit a waypoint event (new contract section indata/mesh_ingestor/CONTRACTS.md).web/:POST /api/waypoints+ storage; map layer rendering the icon codepoint with name/description popup; honorexpireand retention/PRIVATEinvariants.MeshProtocolcapability, not a required event.Status
Deferred for now (maintainer decision) — captured here so the data points aren't lost.