Backups: one meshcore-backup-<date> name, no overwrite without a clock (#686)

With the clock unset, Export backup named the file after uptime seconds
(meshcore-backup-86.json), which read as a broken date and repeated after
every reboot, so a later export could overwrite an earlier backup.

Every timestamped backup is now meshcore-backup-YYYYMMDD-HHMMSS.json (was
meshcore-YYYYMMDD-HHMMSS.json), so the date always ends the name. Without a
set clock it is meshcore-backup-nodate-N.json; the Backups page picks the
first N not already on the card or in internal storage. The web download
uses the same pattern without the storage probe. Older names still list
and restore (the filters match meshcore-*.json).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MjAKa5hXgyBykCLqnwcjEy
This commit is contained in:
Michael A. CojocariandClaude Opus 5.5 committed 2026-10-17 19:35:48 -04:00
1 parent 5833e00d25
commit c67d07e252
2 files changed
+21 -9

No files matched your search

+2
View File
@@ -78,6 +78,8 @@ int main() {
assert(readablePath("/meshcore-backup.json"));
assert(readablePath("/meshcore-20260907-120000.json"));
assert(readablePath("/meshcore-backup-123.json"));
assert(readablePath("/meshcore-backup-20261017-143205.json"));
assert(readablePath("/meshcore-backup-nodate-1.json"));
assert(!readablePath("/transfer/.upload.part"));
assert(!readablePath("/transfer/../secret.txt"));
assert(!readablePath("/transfer/nested/file.txt"));