A fix release for pairing. Before this, a pairing could quietly fail to finish on one side, and messages from that person were then dropped without any warning.
What was broken
When you share an invite and someone accepts it, their phone adds you right away, but your phone only finishes its side the next time it checks the relay. If your app stayed closed until the invite's 24 hours were up, your phone gave up on it, the relay deleted the record, and the pairing never finished on your side. Their messages then reached your phone, couldn't be verified, and were deleted after a few attempts. Neither side saw an error.
What's fixed
Pairing finishes even if your app was closed. An invite that was accepted while your app was closed now completes the next time you open it, for up to 30 days. The relay keeps accepted invites around for that window.
The other side can finish it directly. Accepting an invite now also sends a small pairing message to the person who made it, so their phone can finish the pairing from its inbox even if the relay record is gone.
Messages are held, not dropped. A message from someone whose pairing hasn't finished on your phone is now kept on the device and opens on its own once the pairing completes. The inbox shows how many are waiting.
You can see when pairing isn't finished. After you accept someone's invite, the conversation says so until their side confirms.
These fixes work best when both phones are on 3.1.0, or on the matching iOS update.
About this build
The attached APK is the FOSS build. It carries the SMS transport and contains no Google or Firebase code, so it is the build for F-Droid, IzzyOnDroid, and direct install.
Verify
The APK is signed with the CarrierPony release key. It also ships a detached GPG signature made with the CarrierPony key:
A0CB C8F6 5AAC E56F 1C5B 7677 53F9 798E 4919 DE62
gpg --verify carrierpony-3.1.0.apk.asc carrierpony-3.1.0.apk