fix(backup): carry the account's own cycle symptoms into the payload

The section builder returned them, the wire schema declared them, and the
restore has read them since v1.33.1 — including the throw that replaced the
silent drop. The payload assembly copied its keys out one by one and was never
extended, so every backup written carried an empty list. An account with a
custom symptom did not get the silent drop that release removed; it got a
restore that failed outright on a key nothing had written back.

Spread the cycle and records sections instead of hand-picking their keys, so a
field added to either section interface reaches the wire by construction. Declare
labelEncrypted on the cycle section, which the builder already emitted.
This commit is contained in:
Marc-André Bombeck committed 2026-07-27 23:40:44 +02:00
1 parent 60c30e1e3a
commit e5b958cd86
2 files changed
+38 -15

No files matched your search

+10
View File
@@ -108,6 +108,16 @@ export interface CycleBackupSection {
icon: string | null;
sortOrder: number;
isActive: boolean;
/**
* The user's own words for the symptom, carried as ciphertext verbatim.
*
* The builder has always emitted it and this interface did not declare it,
* which held while the payload was assembled key by key and stopped holding
* the moment the section is spread onto the wire: an undeclared field is a
* field the wire type says is not there. Declared, so the type describes
* the file.
*/
labelEncrypted: string | null;
}>;
}