Skip to content

v0.9.1 — Media delivery fix for direct chats

Choose a tag to compare

@therudywolf therudywolf released this 02 Jul 23:01
· 174 commits to main since this release

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 29c9a287911e9eaad27943714b646002070e51c326f30512fdd225b20a02d5a7CN=OneToThree, O=therudywolf.


Full details in CHANGELOG.md. Built from commit 3bb102e7.

🤖 Generated with Claude Code