fix(companion): scopes, room bot backlog, DM flood fallback, atomic trail saves

- Removing a scope moves the channels that used it to the default, not to
  unscoped.
- The room bot ignores posts older than 5 minutes: the backlog a room
  replays after login no longer gets answers.
- Adverts take the default scope from the scope list, as messages do; the
  legacy fields always mirror it, and CMD_SET_DEFAULT_FLOOD_SCOPE with a
  full list answers TABLE_FULL.
- The last DM resend drops the direct path and floods.
- /trail and /waypoints are written through a temp file.
- An admin login timeout keeps the saved password.
- History records read from the SD card are sanitised.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-12 17:54:38 +02:00
co-authored by Claude Opus 5.5
parent fd45c2219b
commit cd294613ea
8 changed files with 63 additions and 43 deletions
+1 -1
View File
@@ -485,7 +485,7 @@ public:
// device's own list too, not just in the two legacy fields. Empty name
// clears the default back to list index 0 ("*"). Calls
// rebuildRepeatScopes() and persists the list.
void setPrimaryScope(const char* name);
bool setPrimaryScope(const char* name); // false: list full, default unchanged
// Mirrors the list's current default entry back into the legacy
// NodePrefs::default_scope_name/key pair. Those two fields are the only