mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Correctness: - Discovery sort no longer reads createdAt live in the comparator (TimSort "contract violated" crash risk); orders by member count then the shared sortedByDefaultFeedOrder snapshot. - One shared resolver (relayGroupDiscoveryChannelFor) is used by the feed match, sort AND the row, so a 39000 seen on >1 relay always binds one channel — no more "sorted by relay B, rendered with relay A's empty roster". - Roster (39001/39002) arrivals now re-inject the group's 39000 into the feed and re-invalidate the datasource, so a group where a follow is an admin/ member surfaces instead of staying hidden / frozen at 0 members. - Group replies route to the group's host (resolved from the channel), never falling through to signAndComputeBroadcast — fixes the outbox leak when the parent note had no relay provenance. - Messages list (inline mode) updates group rows incrementally: the additive path now handles group-scoped messages, not just public/ephemeral/DM. - Optimistic null-relay group sends attach only to an unambiguous single channel, so a message to the "_" group on relay A no longer bleeds into "_" on relay B. Consistency: - AllFollows discovery also REQs #t/#g (not just authors), matching the local AnyOf constraint; muted-authors maps to ByPeople; community stays AllGroups — fetch and display now agree. - Global drops the 1-week `since` floor so long-lived group metadata is fetched. Performance: - #d metadata backfill scans the group cache once per filter assembly (grouped by relay), not once per relay. - Discovery rows warm content only; the directory subscription already streams metadata/rosters for the relay. - memberCount is memoized (members ∪ admins recomputed on roster change, not per read); thread re-sort extracted. - Discovery list gets rememberFeedContentPadding, contentType and animateItem. CLI: - `relaygroup edit` preserves current name/about/tags when only a flag changes. Cleanup: dropped dead relayKeys() branches and the redundant AnyOf single-lens collapse in the discovery constraint. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B5MLY4hq5LXJ2D5WeLRyXj