mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-08 23:54:39 +00:00
Surfaces block/buzz workspace channels inside the existing NIP-29 relay-group experience — one group model, dialect-aware rendering, zero impact on vanilla groups (kind-filtered feeds can never receive Buzz kinds by accident). - BuzzRelayDialect (commons): per-relay capability registry. Event-shape detection — the first Buzz-only kind consumed from a relay marks it; vanilla relays never serve those kinds, so no false positives. NIP-11 marking can be layered on later. - BuzzWorkspaceChannel (commons): sibling of RelayGroupChannel (now `open`) holding Buzz-only channel state: the kind-40003 edit overlay (never render superseded text as current) and the newest kind-40100 canvas. Kind-9 chat and kind-40002 stream messages share ONE timeline per group so mixed-dialect conversations stay whole. - LocalCache: consumes every registered Buzz kind (previously all fell into the "Event Not Supported" branch). Timeline kinds attach to the group's channel, materialized dialect-aware with an in-place upgrade (note migration) when the dialect is discovered after the channel was first created as plain NIP-29. Addressables store replaceably; the rest store as queryable regular events; ephemeral signals (typing 20002, observer 24200, huddle reaction 24810, pairing 24134) mark the dialect but are deliberately not persisted. - RelayGroupFilterBuilders: group-chat REQs widen their timeline kind set with 40002/40003/40008/40099 only for marked relays; vanilla NIP-29 REQs unchanged. Tests cover dialect detection + materialization, the plain-channel upgrade with timeline migration, newest-edit-wins overlay ordering, and that filter builders extend kinds only on marked relays. Full amethyst unit suite green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J8KBSw6smQRyXLiWHeDsZ8