huddle 1.2.0 — DMs + friend requests actually flow over the relay
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
SendDirectprimitive: 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.