mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 16:14:40 +00:00
A Buzz community member (kind 13534 roster / 8000-8001 deltas) can read and post across every channel on the relay, but `RelayGroupChannel.membershipOf()` read only the per-channel NIP-29 roster (39001/39002), so a community member/admin who wasn't explicitly added to a private channel resolved as NONE and was wrongly gated (Join lock, hidden composer). Add `BuzzCommunityMembership`, a per-relay registry fed by the relay-signed NIP-43 events, and consult it as a Buzz-only fallback in `membershipOf` (mapped to MEMBER only, never channel ADMIN, to avoid over-granting per-channel moderation). Wire `LocalCache.consume` for kinds 13534/8000/8001 to update the registry (LWW on created_at) and poke the relay's channels so the gate re-renders live. This complements the open-channel fix: open channels no longer require membership at all, and members of private channels are now recognized community-wide. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>