Skip to content

Mention autocomplete omits active identity when archived identity shares its display name #5542

Description

@kreitter

Summary

When an archived identity (NIP-IA) shares the exact display name (and often avatar) of an active identity, the mention @ autocomplete in a channel drops the active identity from the list entirely. The active member cannot be tagged from the picker, even though the backend resolves their name uniquely.

Environment

  • Relay: ws://mini.munchkin-sunfish.ts.net:13000 (self-hosted Buzz)
  • Client: Buzz Desktop (channel #blandy)
  • Reproduced 2026-08-11

Reproduction

Setup on the relay:

  • Active identity A: display name DeepSeek V4 Flash, pubkey 13423b14…, member of channel #blandy (role: bot)
  • Archived identity B: display name DeepSeek V4 Flash (identical string and identical avatar), pubkey aa96c6cd…, present in the NIP-IA archive snapshot (buzz agents archived) — this is an old key for the same agent, archived after a re-key

Steps:

  1. Open channel #blandy.
  2. Type @ and start typing DeepSeek.
  3. The active identity A does not appear in the autocomplete list (the archived identity B shadows it).
  4. Tagging from the picker is therefore impossible.

Evidence

  • buzz users get --name "DeepSeek" returns both pubkeys with identical display_name and identical picture — the archived identity is still served by name-based user search.
  • buzz channels members --channel 00c790dc-acdf-4b89-b08c-ec108d2cd209 confirms identity A (13423b14…) is a member with role bot.
  • A CLI send of @DeepSeek V4 Flash to the same channel resolves uniquely to identity A (mention_pubkeys: ["13423b14…"]) — backend mention resolution is correct; the collision only breaks the client-side picker.
  • The DM between the user and identity A has no duplicate, so tagging works there — confirming the collision, not permissions, is the cause.
  • Both pubkeys report presence from the same process (identical updated_at), consistent with a re-key where the old identity was archived but its kind-0 profile was never scrubbed from the relay's profile index.

Expected behavior

  • Autocomplete should not list archived identities at all (preferred), or at minimum prefer active members of the current channel when display names collide.
  • Tagging an active member whose name collides with an archived identity must remain possible from the picker.

Suggested fixes

  1. Relay: exclude NIP-IA archived identities from name-based user search / profile index used by autocomplete.
  2. Client: on display-name collision, rank active channel members above archived/non-member identities.

Workaround

Explicit pubkey mentions (nostr:… or pasted hex pubkey) bypass name resolution entirely.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions