feat(l2): recent packets on the map - the flow legend's tap lists the last 10 placed packets, a tap plays one again, Play all plays them in turn

PacketFlow keeps them (each with up to 3 ways it came, contacts by key
prefix) once a frontend asks, in PSRAM; the map frames a replay that's off
screen. Back on the map closes a popup first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-26 22:40:30 +01:00
co-authored by Claude Opus 5.5
parent e8553d276d
commit f4ad1bd643
5 changed files with 217 additions and 7 deletions
+3 -2
View File
@@ -145,6 +145,7 @@ void UITask::begin(DisplayDriver* display_drv, SensorManager* sensors, NodePrefs
_core = new UiCore();
_core->begin(node_prefs, sensors, this);
_core->flow.keepHistory(); // the map's recent packets, to play again
{ // history kept on the SD card: back into the ring, then every new entry to it
int hk = lvport::loadHistKeep();
s_archive.setKeep(histstore::KEEP[hk >= 0 && hk < histstore::KEEP_COUNT ? hk : histstore::KEEP_DEFAULT]);
@@ -1312,10 +1313,10 @@ void UITask::back() {
if (_node_from_scan) showScanPopup();
break;
case SCR_MAP:
if (_nav_overlay) { navClosePopup(); break; } // a popup over the map first
if (_route_pick) { routeMapDone(); break; }
if (_route_show) { routeShowDone(); break; }
if (_nav_overlay) navClosePopup();
else if (areaSelecting()) areaSelectEnd();
if (areaSelecting()) areaSelectEnd();
else if (_dl_overlay) mapDownloadClose();
else if (_map_nodes || !_map_nav) showNearby(); // opened from Nodes
else showHome();