mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-12 01:07:46 +00:00
Follows up the subgroup protocol work with four NIP-29 compliance/UX gaps. previous timeline references (spec §Timeline references): - RelayGroupChannel.previousEventRefs(): first-8-char id prefixes of the most recent events seen from the host relay, excluding the sender's own, capped at the spec's 50-event window. Only draws from events actually received in the channel so the host relay is known to have them. - Populate the `previous` tag on all outgoing group events: kind-9 chat and replies, kind-1111 minichat comments, kind-11 threads, and group replies. Custom roles (kind 39003): - Route SupportedRolesEvent onto the channel (LocalCache.consume + a RelayGroupChannel.supportedRoles field) instead of only storing it. - Members screen: when the relay advertises a role set, offer those roles when assigning (admins), and show each member's real relay-assigned role label instead of collapsing everything to admin/moderator. Falls back to the built-in admin/moderator shortcuts when no 39003 is published. Subgroup navigation (spec §Subgroups): - RelayGroupSubgroupsBar: a self-hiding bar under the pinned bar showing a breadcrumb up to the parent group and chips for the child subgroups (in the relay's `child` order), each opening that group on the same host relay. naddr invite codes (spec §Group identifier): - GroupNAddrInvite parses the `naddr1…?invite=<code>` suffix; both the tap handler (ClickableRoute) and the deep-link handler (MainActivity) now feed it into the kind-9021 join request so a shared invite naddr auto-joins. Tests for the naddr invite parser. spotless clean; quartz tests green; amethyst compiles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011Qst2JsmNYMvXitv2vxo4S