feat(sos): the message is "[SOS]" + an editable text with placeholders; each send also adverts the position zero-hop

Like [LOC] and [WAY], a tag at the start marks an SOS for receivers, whatever
the rest says. The Note row becomes Message (sos_msg, 72 bytes, key "msg"),
"{loc} {alt} {time}" by default: {loc} (fix, "last ... 12min ago" or "no GPS"),
{alt}, {time}, {batt} (percent, as the status bar shows it). Without {loc} the
position still goes, straight after the tag; an empty placeholder leaves no
gap. Receivers read the first coordinate after [SOS]; [SOS] alone is an SOS
without a position. The old "SOS ..." text was never released and is dropped.

Each round with a position also sends a zero-hop advert carrying it at full
precision, whatever advert privacy says, so anyone in range sees it on their
map in any app (issue #56). No flooded advert, no name prefix, no accuracy.

L1: the keyboard offers the placeholders. L2: chips above the keyboard, shared
with the bot's reply editor (placeholderChips).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-11-02 12:54:37 +01:00
co-authored by Claude Opus 5.5
parent 9bbaedccce
commit a0c55c4cdb
16 changed files with 204 additions and 111 deletions
@@ -73,6 +73,7 @@ public:
void botSetGPS(bool on) override;
void applySoundPrefs() override;
void onSosRunning(bool running) override;
int battPercent() override;
bool cliCommand(const char* command, char* reply, int n) override;
// ── Navigation (called from LVGL event callbacks) ────────────────────────