mirror of
https://github.com/logos-messaging/libchat.git
synced 2026-07-02 22:19:35 +00:00
InboxV2 gated inbound on the credential id (hex of the DelegateCredential TLV), but a sender addresses the Welcome to the invitee's routing address, which the account directory resolves to the device key HttpRegistry stores the key-package under. The two differ, so the Welcome fell through to PayloadOutcome::Empty and the invitee never joined. EphemeralRegistry hid this by keying key-packages on the credential id. This is routing-vs-credential, not account-vs-device: the TLV-wrapped credential differs from the address even when account key == device key (testnet today), so a client associating over HttpRegistry hits it; only the in-process EphemeralRegistry path is unaffected. Add IdentityProvider::routing_id() (defaults to id()); DelegateSigner derives it from its credential (the account address once associated, else id()); Core::assemble subscribes InboxV2 on routing_id(). id() still backs the MLS credential, member id, sender id, and decode_sender, so membership and attribution are unchanged. Regression test direct_v1_welcome_routes_on_routing_id over a device-key-keyed registry (as HttpRegistry) fails without the fix.
libchat
Supporting library for Logos-chat
Example app
bin/chat-cli is an end-to-end encrypted CLI chat app
built on this library. By default it uses logos-delivery
(Waku-based) as the transport so two users anywhere in the world can chat by
sharing an intro bundle. A local file transport is also bundled in; pick at
runtime with --transport <logos-delivery|file>.
# Build logos-delivery with Nix
nix build .#logos-delivery
# Build chat-cli with Cargo
LOGOS_DELIVERY_LIB_DIR=./result/lib cargo build --release -p chat-cli
# Run binary (defaults to --transport logos-delivery)
./target/release/chat-cli --name alice
See bin/chat-cli/README.md for full build,
run, and test instructions.
Description
Languages
Rust
99.5%
Nix
0.5%