v0.0.10
Bug-fix release: crossed session initiation no longer wedges a pair.
If two peers messaged each other before either received (easy to do — both run retalk send after swapping fingerprints), each side overwrote its only stored Olm session with the inbound one, and every later message failed with OlmDecryptionException: invalid MAC — permanently.
- Multi-session storage — a pair can hold several Olm sessions; decrypt tries each, prekey messages add (never overwrite), send uses the freshest. Existing stores migrate automatically on first use.
- No more crashes — mail that matches no stored session is refused (signed nack) with a clear warning, and
receive/--followkeep polling. - Self-healing — a sender whose ciphertext was refused drops its sessions with that peer and starts fresh, so pairs already wedged on ≤0.0.9 heal by themselves once both sides upgrade: refuse → reset → resume. (Anything that was refused needs to be re-sent by its author.)
New regression suite tests/test_crossed_sessions.py (crossed initiation, wedged-pair healing, legacy-store migration), verified live over both a local relay and retalk-relay.mcgill-nlp.org.
Upgrade: pip install -U retalk