mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 00:16:59 +00:00
The previous two commits refetched a group's 39000-39003 whenever the relay narrated a change, on the premise that Buzz could not stream them at all: it signs them with `d`/`p` tags and no `h`, so an `#h` filter looked unable to match and a filter without `#h` registers as a global subscription, which never receives a channel-scoped event. The first half of that was wrong. `filter_match_one` has an explicit fallback: for an `#h` filter, when the event carries no `h` tag at all, it matches against the stored `channel_id` — and these are stored channel-scoped. So an `#h` filter both indexes the subscription under the channel (which is what makes it eligible for the channel fan-out) and matches the events when they arrive. So subscribe, like the rest of the app does. The per-channel `#h` subscription that already keeps each joined group's chat live now carries its state kinds too, and every screen updates through the flows it already observes. The fetch, the event-bundle hook that triggered it and the cache lookup it needed are all gone. Buzz-only: on a relay29-family relay these events are addressable with no `channel_id` behind them, so an `#h` filter matches nothing there and the `#d` directory filters keep serving them. Verified on emulator-5554 with no fetch code left in the tree: promoting shows the `admin` badge on the open members screen within seconds, and removing the role clears it again. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>