Motivation
Renaming a group DM is impossible for anyone, by construction:
- The relay creates DM channels under its own identity, and every participant is enrolled with the plain
member role. No human ever gets owner or admin on a DM.
- The kind-41 handler (
crates/buzz-relay/src/handlers/side_effects.rs) requires channel owner/admin for name/about/archived/visibility/ttl changes. The only escape hatch is being the NIP-OA owner of an owner-role agent in the channel, which a DM never has either.
- Community ownership doesn't help. There is no
RELAY_OWNER_PUBKEY bypass in that code path, so even the community owner gets actor not authorized for name/about/archived/visibility/ttl changes.
- Desktop is consistent with this:
ChannelManagementSheet.tsx gates the name editor on channelType !== "dm", so the control never renders.
Net effect: a group DM is stuck displaying as "Group DM (N)" (or the participant list) forever. Ran into this on a self-hosted relay wanting to name a 3-person founders DM. The only working path I found was flipping my role to owner directly in Postgres, sending the kind-41 through the relay, then flipping it back. That obviously shouldn't be the supported path.
Proposed solution
Let DM participants rename their own DM. Slack's model here is the least surprising: any member of a group DM can set its name, and the name is scoped to that conversation. Concretely, in the kind-41 privileged-tag check, treat channelType == "dm" + actor is an active participant as sufficient for the name tag (the other privileged tags can stay locked down).
Alternatives considered
Additional context
Related but distinct: #2928 (recovering orphaned channel ownership) and #4225 (owner_only add policy has no admin override). This one differs in that there is no owner to recover — DMs never have one.
Duplicate search: none found for DM renaming specifically.
Motivation
Renaming a group DM is impossible for anyone, by construction:
memberrole. No human ever getsowneroradminon a DM.crates/buzz-relay/src/handlers/side_effects.rs) requires channelowner/adminforname/about/archived/visibility/ttlchanges. The only escape hatch is being the NIP-OA owner of an owner-role agent in the channel, which a DM never has either.RELAY_OWNER_PUBKEYbypass in that code path, so even the community owner getsactor not authorized for name/about/archived/visibility/ttl changes.ChannelManagementSheet.tsxgates the name editor onchannelType !== "dm", so the control never renders.Net effect: a group DM is stuck displaying as "Group DM (N)" (or the participant list) forever. Ran into this on a self-hosted relay wanting to name a 3-person founders DM. The only working path I found was flipping my role to
ownerdirectly in Postgres, sending the kind-41 through the relay, then flipping it back. That obviously shouldn't be the supported path.Proposed solution
Let DM participants rename their own DM. Slack's model here is the least surprising: any member of a group DM can set its name, and the name is scoped to that conversation. Concretely, in the kind-41 privileged-tag check, treat
channelType == "dm"+ actor is an active participant as sufficient for thenametag (the other privileged tags can stay locked down).Alternatives considered
ownerat creation time. Works, but resurrects the orphaned-owner problem (Add a supported, audited recovery path for orphaned channel ownership #2928) when that identity goes away.Additional context
Related but distinct: #2928 (recovering orphaned channel ownership) and #4225 (owner_only add policy has no admin override). This one differs in that there is no owner to recover — DMs never have one.
Duplicate search: none found for DM renaming specifically.