forked from JSKitty/Vector
-
Notifications
You must be signed in to change notification settings - Fork 8
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
Vector does not implement NIP-17 kind 10050 (DM relay list) support. This means:
- No publishing: Vector never publishes a kind 10050 event to advertise where it receives DMs
- No fetching: Vector never looks up a recipient's kind 10050 to discover their preferred DM inbox relays
- No targeted routing: DM gift wraps are broadcast to all pool relays via
client.gift_wrap()instead of being sent to the recipient's preferred relays
Current behavior
message/sending.rs:852— DM sends useclient.gift_wrap()which broadcasts to all connected pool relays- Cross-client DMs (e.g. with 0xchat) only work if there happens to be relay overlap (e.g.
relay.damus.io) - If a recipient uses DM-specific inbox relays (common with NIP-17 compliant clients), messages may never arrive
Evidence that targeted delivery is already possible
gift_wrap_to() is already used in Vector for:
- Typing indicators →
commands/realtime.rs:50 - WebXDC peer ads →
commands/realtime.rs:137
The same pattern should be applied to DM message sends.
Proposed Solution
- Publish kind 10050 on login/relay config change — advertise Vector's connected relays as DM inbox relays
- Fetch recipient's kind 10050 before sending a DM — look up their preferred DM relays
- Use
client.gift_wrap_to(recipient_dm_relays, ...)instead ofclient.gift_wrap(...)for DM sends - Fallback: if no kind 10050 is found for the recipient, fall back to current broadcast behavior
Impact
Without this, DM interoperability with other NIP-17 compliant clients (0xchat, etc.) is unreliable and depends on coincidental relay overlap rather than proper protocol-level relay discovery.
References
- NIP-17: Private Direct Messages — see "Relays" section on kind 10050
- Affects both Vector (Tauri app) and Vector-SDK
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request