Skip to content

huddle 1.2.0 — DMs + friend requests actually flow over the relay

Choose a tag to compare

@richer-richard richer-richard released this 04 Jun 09:58
· 60 commits to main since this release
v1.2.0
924af8a

The relay now carries DMs and friend requests

Earlier builds delivered relay traffic only by room membership, so a 1:1 DM or a friend request needed both sides to have independently subscribed the exact same room before anything flowed — a fragile convergence that often left the chat window silently empty. 1.2 moves that into the server.

Highlights

  • Fingerprint-addressed direct delivery (server). New SendDirect primitive: a message addressed to a recipient's fingerprint is delivered to every connection that identity has open, or queued in its per-fingerprint mailbox when offline — no shared-room subscription required. DMs and friend requests ride this; group rooms keep membership fan-out. Wire-compatible (older clients still work over the membership path).
  • Offline first-contact works. Add someone by HD-ID while they're offline and the signed request now waits in their mailbox and is handed over on their next connect. Two bugs killed this before: the request needed a live inbox subscription, and the mailboxed signed envelope was rejected as "outside the ±5-minute replay window." 1.2 exempts store-and-forward control messages (contact requests, member announces, session-key requests) from the wall-clock window — the signature still proves identity and replaying them is idempotent.
  • Robust relay membership across reconnects/restart. Every room you belong to — including encrypted groups and DMs awaiting a key/passphrase — is re-asserted to the relay on every (re)connect.
  • Honest composer (TUI + GUI). The message box is gated on real deliverability: when no transport can carry a message it says so and keeps your text instead of a fake "sent" echo.
  • DMs self-heal. A DM that delivery reaches but that wasn't open locally is lazily re-activated so the partner's first message / key announce isn't dropped.

Operators

Redeploy the relay to 1.2.0 — the SendDirect handler must be present for DM-by-fingerprint to work (clients otherwise fall back to the old membership path).

All four crates bumped 1.1.5 → 1.2.0.