mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 16:33:27 +00:00
The in-room geohash chat now uses the same data path as every other chat (public/ephemeral/live/relay-group) instead of a hand-rolled subscription: - GeohashChatChannel.relays() resolves the cell's geographically-nearest relays from a process-wide GeoRelayDirectory.shared (populated by GeohashRelays.ensureLoaded), so the subscription layer can reach a cell before its first message arrives. - filterMessagesToGeohashChat wires kind-20000 into ChannelPublicFilterSubAssembler, so ChannelFilterAssembler assembles the geohash subscription like any channel. Own messages carry the same g tag, so no separate from-user filter is needed. - GeohashChatScreen loads the feed through ChannelFeedViewModel (LocalCache-backed, with mute-filtering for free) + ChannelFilterAssemblerSubscription, mirroring LoadEphemeralChatChannel/EphemeralChatChannelView. GeohashChatViewModel drops its bespoke client.subscribe and keeps only the geohash-specific composer bits (relay resolution for sending, anonymous identity, teleport / post-as-self, PoW). Rendering stays custom so bitchat nicknames (n tag), the teleport marker, and anonymous own-message alignment survive — the profile-based shared renderer can't express those for throwaway per-cell identities. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0172JoMccseEKenyWan6txWV