LibreNostr v0.2.1
Two follow-up fixes to the Follows/Requests split shipped in 0.2.0, found by using the app rather than by reading the code.
Fixed
A reply landing in the same relay page as the stranger's first message was still filed as a request. The classification read who you had written to from the local database, and the page that just discovered the conversation had not been saved yet — persisting happens after classification runs. A conversation whose reply and first-seen message arrive together got judged before its own evidence existed, and nothing would ever revisit it: a quiet conversation's events do not reappear in a later sync once they fall outside its window. Fixed by folding the page's own messages into the same check, so a reply counts the moment it is seen instead of waiting for a future sync to notice it already happened.
A conversation misclassified before the fix existed stayed that way forever, even carrying a reply the database had held all along. A stored conversation's relation only changed when its events reappeared in a fresh relay fetch — which an old, quiet conversation never does, so its very first classification became permanent. Every sync now sweeps every stored conversation against current local data once, correcting rows like this without needing anything back from the relays.
Install
Pick the APK for your device's ABI — arm64-v8a for essentially every phone from the last several years. Signed with the same key as prior releases, so it upgrades in place.