feat(l2): long trails with a card copy; map follow and redraw fixes

Trail on the L2: 32768 points every 5 m, no simplification, no point
spacing setting; copied to the card every minute and restored at power-on.
The line keeps up with the position dot (incremental sync, pending point).

Map: a tap's finger jitter no longer turns follow off; the GPS button
shows when the map follows. The trail is drawn as one polyline with
breaks and off-view chunks skipped (an lv_line queued a draw task per
point).

Fewer rebuilds: conversation bubbles patched (new messages, delivery
marks), home mini-map dots reused, Nearby rows rewritten in place,
history read in runs and each file opened once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-29 22:02:49 +02:00
co-authored by Claude Opus 5.5
parent 5f6cbe34b3
commit b3b77a1f6d
15 changed files with 601 additions and 188 deletions
+6 -1
View File
@@ -312,7 +312,7 @@ private:
void buildHomeClock(lv_obj_t* box);
void buildHomeMap(lv_obj_t* box);
void homeFieldText(uint8_t field, char* buf, int n);
void homeMapFit();
bool homeMapFit();
void homeMapLayout();
void homeMapLoop();
void refreshHome();
@@ -349,6 +349,9 @@ private:
void buildNavLayers();
void buildNavControls(lv_obj_t* body);
void rebuildNavMarkers();
bool navTrailSync();
bool trailJournalTick(bool now = false); // NavMap.h: the live trail's copy on the card
void trailJournalRestore();
void layoutNav();
void refreshNavBar();
void navFrameTarget();
@@ -534,6 +537,8 @@ private:
lv_obj_t* _map_marks = nullptr;
lv_obj_t* _map_me = nullptr;
lv_obj_t* _map_zoom_lbl = nullptr;
lv_obj_t* _map_center_btn = nullptr; // accent while the map follows you
uint32_t _next_follow_ms = 0;
lv_obj_t* _map_hint = nullptr;
lv_obj_t* _map_dl_pill = nullptr; // download progress over the map
lv_obj_t* _dl_overlay = nullptr; // download popup