<feed xmlns='http://www.w3.org/2005/Atom'>
<title>meshbay.git/packages/meshbay-hub/tests/test_android_shell.py, branch 0.20</title>
<subtitle>MeshBay — read-only public mirror</subtitle>
<id>https://git.meshbay.org/meshbay.git/atom?h=0.20</id>
<link rel='self' href='https://git.meshbay.org/meshbay.git/atom?h=0.20'/>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/'/>
<updated>2026-10-15T13:09:58Z</updated>
<entry>
<title>feat(android): no text messages backup, and one build again</title>
<updated>2026-10-15T13:09:58Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-15T13:09:58Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=39cac2878de059992cb09a1ccf09b6bcece99fae'/>
<id>urn:sha1:39cac2878de059992cb09a1ccf09b6bcece99fae</id>
<content type='text'>
READ_SMS sits behind restricted settings outside a store and Play
keeps it for the default SMS application: not worth a second build.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(auth): the recovery key never reaches the hub</title>
<updated>2026-10-15T12:25:00Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-15T12:25:00Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=28c77b7648b2a44a18be64ec44344d91cccfd742'/>
<id>urn:sha1:28c77b7648b2a44a18be64ec44344d91cccfd742</id>
<content type='text'>
Ticking "also e-mail it to me" at registration sent the recovery key R in
the register body, and the hub appended it to the verification e-mail: the
hub saw R in clear on its way out, and the resend door — no captcha — let
anyone who knew a pending username and address have the hub mail a
"recovery key" of their choosing.

The box is gone. The recovery screen offers "E-mail it to myself", a mailto:
link that opens the person's own mail application with the key filled in;
the desktop shell hands mailto: to the system (http, https and mailto only)
and the Android shell to a mail application (ACTION_SENDTO). The CLI drops
--email-recovery-key and prints the key, as before. The hub mails the code
alone, and refuses a register that still carries a recovery_key rather than
dropping it, so an older client offering the option cannot tell someone
their key was sent when it was not.

A mailbox holding R remains, with the reset code that reaches the same
mailbox, enough to recover the account's identities; the link says so, and
it is the person's choice.

Checked in Chrome and Firefox (headless, the real page against a stubbed
hub) and by the CLI's end-to-end registration against a local hub. The
Android change was not built here, and the desktop link was not clicked in
the application.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(hub): replace reCAPTCHA with a self-hosted proof of work</title>
<updated>2026-10-14T11:34:47Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-14T11:34:47Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=51705056a578d2649a989bf14a056fbcfae58a6b'/>
<id>urn:sha1:51705056a578d2649a989bf14a056fbcfae58a6b</id>
<content type='text'>
Sign-up and passphrase reset sent every visitor's address and browser
details to Google, which needed a consent the sign-up form could not ask
for freely. The hub now issues its own challenge (ALTCHA's scheme, signed
with a key derived from the hub's private key, single-use, 30 minutes)
and the page solves it with SubtleCrypto while the form is filled in.

- GET /v1/users/captcha issues a challenge; 404 captcha_disabled when off.
- [captcha] enabled / max_number replace site_key / secret_key, which are
  now ignored with a warning; MESHBAY_CAPTCHA_ENABLED replaces the old
  variables.
- No Google origin left in the CSP of the hub, the desktop shell or the
  Android shell; captcha_site_key leaves /v1/hub/info.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(android): what the first backup on a phone showed</title>
<updated>2026-10-10T15:09:12Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T15:09:12Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=b39e73cbb279ab0274e8cd0b84304a602fe1d5ef'/>
<id>urn:sha1:b39e73cbb279ab0274e8cd0b84304a602fe1d5ef</id>
<content type='text'>
Slices are asked for in the address, not a Range header the WebView drops;
a settings change runs at once; the notification is updated once a second;
the SMS section says how to lift Android's restricted setting; the photo
section says whether videos are included.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): back up WhatsApp's own chat backups, and its media if asked</title>
<updated>2026-10-10T14:29:20Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T14:29:20Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=7957fa686eb6e8cf57bcb62ff4e6d2785693030b'/>
<id>urn:sha1:7957fa686eb6e8cf57bcb62ff4e6d2785693030b</id>
<content type='text'>
A WhatsApp section takes WhatsApp's folder through the picker, sends its
encrypted Databases and Backups (not the dated copies of earlier weeks) into
&lt;folder&gt;/&lt;account&gt;-whatsapp, and names the restore set in the manifest.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): back up the files of folders the person chooses</title>
<updated>2026-10-10T13:50:39Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T13:50:39Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=1c97ffb91bb4928022e995709d7e55b19cfd18eb'/>
<id>urn:sha1:1c97ffb91bb4928022e995709d7e55b19cfd18eb</id>
<content type='text'>
A Files section takes folders through the system picker (no storage
permission), refuses DCIM, Pictures and Movies, skips what the photo backup
sends, and runs on the photo backup's own runner into &lt;folder&gt;/&lt;account&gt;-drive.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): back the calendars up as an iCalendar file</title>
<updated>2026-10-10T12:52:57Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T12:52:57Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=3bad2b50187f55463588a2d4e74fa9df4beb35b8'/>
<id>urn:sha1:3bad2b50187f55463588a2d4e74fa9df4beb35b8</id>
<content type='text'>
A Calendar section sends every calendar the person can edit, as a dated .ics,
into &lt;folder&gt;/&lt;account&gt;-calendar once a day when it changed.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): back up the personal profile only</title>
<updated>2026-10-10T12:41:02Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T12:41:02Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=be8b7fcff56a1104e7cd974cc0f506d90f1299a8'/>
<id>urn:sha1:be8b7fcff56a1104e7cd974cc0f506d90f1299a8</id>
<content type='text'>
A copy of the application inside a work profile offers no backup, and no
source reads another profile.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): back text messages up, in a build Play does not get</title>
<updated>2026-10-10T12:40:05Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T12:40:05Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=aed32f20625a6206628b577d743d96552f81e91a'/>
<id>urn:sha1:aed32f20625a6206628b577d743d96552f81e91a</id>
<content type='text'>
A Messages section sends the SMS added since the last copy, as restorable
&lt;smses&gt; XML, into &lt;folder&gt;/&lt;account&gt;-messages/YYYY. A play flavor has neither
READ_SMS nor the code that reads messages; full is the default.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(android): one backup destination, a group the account owns alone</title>
<updated>2026-10-10T12:21:46Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-10-10T12:21:46Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=2f2a9a6542d2194e50ffba6f382e4fdffd481838'/>
<id>urn:sha1:2f2a9a6542d2194e50ffba6f382e4fdffd481838</id>
<content type='text'>
Chosen once at the top of Android Sync for every kind; photos and contacts
go into &lt;folder&gt;/&lt;account&gt;-photos and -contacts. Owner and sole member are
checked at set-up and before every run.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
