v0.9.1 — Media delivery fix for direct chats
OneToThree is a self-hosted, end-to-end encrypted messenger — Double Ratchet v2 + X3DH for direct chats, with web, Android, and desktop clients.
🔧 Highlights
Media now delivers correctly in direct chats. Attachments — images, voice notes, video, files, and albums — in one-to-one chats were encrypted with the legacy v1 path and rejected by the recipient's v2-only receiver, so they showed up as “message could not be decrypted.” They now ride the same Double Ratchet v2 path as text messages.
✅ Fixed
- Media in DIRECT chats — attachments and albums are now sent over Double Ratchet v2 (per-device
dr_slots) instead of legacy v1 fan-out, so recipients can actually decrypt them. Text was never affected. - Attachment queue — a second file attached while the first is still uploading is no longer silently dropped.
- Decrypt stability — a message that decrypted cleanly can no longer regress to a “decrypt failed” placeholder when multiple load paths race on first chat open (message plaintext is now monotonic). Genuine key-change warnings still surface.
🧪 Quality
- Repaired the media end-to-end specs (they had been failing early and masking the bug above): decodable image fixture, locale-independent selectors, race-safe interactions, and a toast-based size-limit assertion. The full Playwright cross-delivery suite runs green, twice consecutively.
- Signed release APK verified with
apksigner(exit 0); desktop installer built via Tauri (NSIS).
📦 Downloads
| Platform | File |
|---|---|
| Android | OneToThree-0.9.1-android.apk (signed) |
| Windows | OneToThree_0.9.1_x64-setup.exe |
*.sha256 checksums are attached for verification.
Android signing certificate: SHA-256 29c9a287911e9eaad27943714b646002070e51c326f30512fdd225b20a02d5a7 — CN=OneToThree, O=therudywolf.
Full details in CHANGELOG.md. Built from commit 3bb102e7.
🤖 Generated with Claude Code