tane/apps/app_seeds/lib
vjrj b15f912ad8 fix(sync): replicate deletions and keep photos off the wire
Reusing the backup snapshot for sync had two bugs that would bite real use:

1. Deletions didn't propagate. exportInventory() filters isDeleted=false
   (user backups are tombstone-free by design) and the JSON codec dropped
   isDeleted (omitted on encode, hardcoded false on decode) — so deleting a
   variety on one device never reached the others. Now the codec round-trips
   isDeleted (emitted only when true, so backups stay byte-identical and it's
   backward compatible), and a new exportForSync() includes tombstones. The
   importer already merges them LWW-correctly.

2. Photos bloated events. The snapshot embeds photo bytes as base64, so a
   real inventory would blow past relay event-size limits and sync would
   silently fail. exportForSync() omits attachments entirely (photos stay
   device-local; media sync is a separate, deferred concern).

buildSnapshot() now uses exportForSync(); backups keep using exportInventory
(photos in, tombstones out) unchanged.

Tests: a deletion replicates as a tombstone; the sync snapshot carries no
photo bytes while a sealed backup still does.
2026-07-11 00:17:08 +02:00
..
data fix(sync): replicate deletions and keep photos off the wire 2026-07-11 00:17:08 +02:00
db feat(inventory): photo-first drafts + on-device OCR (digitization R2+R4) 2026-07-09 21:23:46 +02:00
di feat(sync): device-to-device inventory sync, end to end 2026-07-10 23:45:40 +02:00
domain Solve lint issue 2026-07-10 10:34:43 +02:00
i18n Merge branch 'claude/nostalgic-wright-acfc25': inline offer photos 2026-07-10 21:43:35 +02:00
security feat(backup): sealed backups + printable recovery sheet 2026-07-09 22:32:13 +02:00
services fix(sync): replicate deletions and keep photos off the wire 2026-07-11 00:17:08 +02:00
state refactor(social): one shared relay connection per identity 2026-07-10 21:50:34 +02:00
ui refactor(social): one shared relay connection per identity 2026-07-10 21:50:34 +02:00
app.dart refactor(social): one shared relay connection per identity 2026-07-10 21:50:34 +02:00
bootstrap.dart feat(sync): device-to-device inventory sync, end to end 2026-07-10 23:45:40 +02:00
main.dart feat(identity): switch social identity, all from the one backup 2026-07-10 20:22:24 +02:00