mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
The Feeds section listed NavBarItem.MARMOT_GROUPS and had no cordn equivalent, so the one conversation type whose messages do not come from a relay was the only one with no way to see it apart from the mixed Messages inbox. Adds NavBarItem.CORDN_GROUPS, which puts it in the drawer beside the Marmot rooms and makes it pinnable as a bottom-bar tab like every other entry. Route.CordnGroupList opens a list of the groups this account is in. It exists alongside the inbox rather than duplicating it: the inbox mixes every type, which is right for reading and wrong for finding, and for a cordn group the question when something stops arriving is always "which coordinator" rather than "which relay". It renders from local state alone -- CordnGroupList.all, which CordnRuntime already holds -- so BottomBarFeedPreloaders has nothing to warm for it, for a different reason than Marmot's: a cordn message never arrives over a relay REQ at all, it arrives as a coordinator call the sync loop already makes. Ordered off the same `revision` signal the inbox ordering uses, because a room's newest message changes inside the room object and ordering on `all` alone would freeze after the first message. Reuses the inbox's own CordnGroupRoomCompose (now internal) rather than a second rendering of the same row: it already reads the live name, preview, annotations and unread count off the room, and two of those drifting apart would be a bug nobody would look for in a list screen. Icon is Dns, matching every other cordn surface -- a coordinator is a server, and that is what distinguishes these rows from the Marmot ones above them. Not exercised on a device. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012BfD4txdnsaPRXmNXbup9n