aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/MESHBAY_DESIGN.md21
-rw-r--r--docs/USERGUIDE.md13
2 files changed, 33 insertions, 1 deletions
diff --git a/docs/MESHBAY_DESIGN.md b/docs/MESHBAY_DESIGN.md
index 6025875..c01339c 100644
--- a/docs/MESHBAY_DESIGN.md
+++ b/docs/MESHBAY_DESIGN.md
@@ -3469,7 +3469,7 @@ foreground service (`BackupService`) and the WebView reported visible, like a
cast (§11.3). Android 15 limits that type to six hours a day; the service stops
when told and the run carries on at the next opening.
-### 9.13 Contacts, calendar, messages and files backup (Android)
+### 9.13 Contacts, calendar, messages, files and WhatsApp backup (Android)
The Android application sends a copy of the phone's **contacts**, its
**calendars** and its **text messages** to a folder of a group, on the photo backup's terms (§9.12): a client
@@ -3528,6 +3528,25 @@ later do not let an application choose the whole of `Download`, only folders
in it; the section says so. Hidden files (`.x`) are skipped; a name the node
would refuse is mended (`DrivePlan.safeName`), never dropped.
+**WhatsApp.** `<folder>/<account>-whatsapp/`: WhatsApp's own folder,
+`Android/media/com.whatsapp/WhatsApp`, chosen once through the same picker,
+opened on it (`EXTRA_INITIAL_URI`; Android 17 lets it be chosen, checked on a
+Pixel 9); any other folder is refused. The same class runs it as the files
+backup (`DriveChannels` with `DriveKind.WHATSAPP`), the same runner sends it.
+The chats are only ever in WhatsApp's own backups, encrypted with a key only
+it (or the person's end-to-end backup password) opens: nothing here can read
+them, a restore can use them. WhatsApp writes a full copy weekly
+(`Databases/msgstore.db.crypt14`) and an increment a night
+(`msgstore-increment-N.db.crypt14`), and renames last week's set with its
+date when a new week starts; those dated copies are earlier versions this
+backup already kept, so they are not sent again. `Backups/` (contacts,
+settings, stickers) goes too. `Media/` only if the person ticks it, as it is
+often gigabytes; what the photo backup sends is left out. Because files are
+replaced in place, a restore must take one week's copy with that week's
+increments: once anything in that set was sent, the manifest gets a
+`restore-set` line naming, for each file of the set as it is now, the copy
+on the node that goes with it.
+
**Two builds.** Play's policy gives `READ_SMS` to the default SMS application
only, so the APK has a `store` dimension: `full`, distributed directly, and
`play`, which has neither the permission (`src/full/AndroidManifest.xml`) nor
diff --git a/docs/USERGUIDE.md b/docs/USERGUIDE.md
index dc57f27..bc16ba6 100644
--- a/docs/USERGUIDE.md
+++ b/docs/USERGUIDE.md
@@ -484,6 +484,19 @@ per backup run that records where each one came from on the phone (its
album or folder, its original name and dates). It is what will let a restore
put everything back where it was. Leave it in place.
+#### WhatsApp
+
+- **Choose WhatsApp's folder** opens the picker on it
+ (`Android/media/com.whatsapp/WhatsApp`): press "Use this folder".
+- What is copied is WhatsApp's own nightly backup of your chats, still
+ encrypted by WhatsApp: MeshBay cannot read it, but you can restore it. Turn
+ on **Media too** to also copy photos, videos, voice notes and documents
+ (often several gigabytes).
+- To restore on a new phone, copy the `Databases` and `Backups` folders of the
+ latest copy into `Android/media/com.whatsapp/WhatsApp` before installing
+ WhatsApp, then restore with the same phone number (and your password or
+ 64-digit key if end-to-end encrypted backup is on).
+
If a backup cannot go on (the node's disk is full, the folder no longer accepts
files, somebody else joined the group), it stops, says why once in a
notification and on the Android Sync page, and tries again the next day.