aboutsummaryrefslogtreecommitdiffstats
path: root/docs/MESHBAY_DESIGN.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/MESHBAY_DESIGN.md')
-rw-r--r--docs/MESHBAY_DESIGN.md21
1 files changed, 18 insertions, 3 deletions
diff --git a/docs/MESHBAY_DESIGN.md b/docs/MESHBAY_DESIGN.md
index bc6e20a..6025875 100644
--- a/docs/MESHBAY_DESIGN.md
+++ b/docs/MESHBAY_DESIGN.md
@@ -3435,9 +3435,24 @@ answered 206 by `ByteRange.kt`), so a video of gigabytes costs the WebView one
chunk of memory; the SHA-256 the ledger keeps is then read from the phone once
the node has the file. The Photos tab shows them in their albums (§9.9).
-**Location.** The manifest does not ask for `ACCESS_MEDIA_LOCATION`, so a
-photo or video read through MediaStore has its location **redacted by the
-platform** (Android 10+): a photo's EXIF, and in an MP4 or MOV the location
+**A manifest, for a restore or a merge later.** The node keeps the files; only
+the phone knew where each came from. Every file the node takes adds a line to
+a log the phone keeps (`ManifestLog.kt`): its path on the node, its path and
+album on the phone (`DCIM/Camera/PXL_….jpg`, `Camera`), when it was taken and
+last modified, its size, MIME type and the SHA-256 of the bytes sent. A run
+that sent anything ends by uploading the waiting lines as
+`<kind folder>/meshbay-manifest/manifest-<date>.jsonl`; the phone forgets them
+only once the node has that file, so a run cut short sends them with the next
+one. Restoring puts each photo back into its album and each file back under
+its own name and date; merging onto a phone that already has some of them
+compares hashes without downloading anything. Photos, videos and files have
+one; contacts, calendars and messages are each one file that describes
+itself. What the manifest cannot bring back is a photo's location, removed
+before it left the phone.
+
+**Location.** The application's Android manifest does not ask for
+`ACCESS_MEDIA_LOCATION`, so a photo or video read through MediaStore has its
+location **redacted by the platform** (Android 10+): a photo's EXIF, and in an MP4 or MOV the location
boxes MediaProvider finds (`IsoInterface`). A camera roll going to a group
does not say where its owner lives, and nobody had to do anything for it. On
Android 8 and 9 nothing redacts it.