Member list: avatars, presence dots, status groups, click for profile #288

Closed
opened 2026-10-07 20:43:04 -04:00 by Salastil · 1 comment
Owner
  • Member.status exists (shared/wire.ts:620) but NickList draws no presence dot and splits Online/Offline only on m.away (NickList.tsx:194-195) - idle and DND look online. Offline members are 50% opacity (app.css:1887).
  • No avatars (Member has no avatarUrl where services provide one).
  • Clicking a member inserts a mention (NickList.tsx:642); the profile is only in the right-click menu (520). Discord/Slack/Element open a profile popout on click.
  • Group DMs never show the member list (App.tsx:137-138 and Popout.tsx:71 require kind === 'channel'), so NickList's "Remove from group" (146-149, 271-285) is unreachable.

Fix: avatar + presence dot per row; group by status; click opens the profile card, mention moves to the menu and Shift+click; show the list for group DMs. Daemon: carry member avatars where the service has them.

Part of the v1.0 UI pass.

- `Member.status` exists (`shared/wire.ts:620`) but `NickList` draws no presence dot and splits Online/Offline only on `m.away` (NickList.tsx:194-195) - idle and DND look online. Offline members are 50% opacity (app.css:1887). - No avatars (Member has no avatarUrl where services provide one). - Clicking a member inserts a mention (NickList.tsx:642); the profile is only in the right-click menu (520). Discord/Slack/Element open a profile popout on click. - Group DMs never show the member list (App.tsx:137-138 and Popout.tsx:71 require `kind === 'channel'`), so NickList's "Remove from group" (146-149, 271-285) is unreachable. **Fix:** avatar + presence dot per row; group by status; click opens the profile card, mention moves to the menu and Shift+click; show the list for group DMs. Daemon: carry member avatars where the service has them. _Part of the v1.0 UI pass._
Salastil added this to the v1.0 milestone 2026-10-07 20:43:04 -04:00
Salastil added the feature label 2026-10-07 20:43:04 -04:00
Author
Owner

Finished: c912ed3.

Before (left) and after (right) - the Discord-shaped test guild's member list, with people online, idle, on do-not-disturb and offline:

members

  • A face and a status dot on every member where the service reports presence (Discord, Matrix): online green, idle amber, do-not-disturb red, offline a hollow ring - the same dots as everywhere else (#277). IRC, Sneedchat and Kick keep their plain lists of names; a column of initials there would be decoration.
  • Clicking a member opens their profile, as in Discord, Slack and Element. Shift+click, or Mention in the right-click menu, mentions them (a click used to insert a mention).
  • Nobilis now sends each Discord member's picture (avatarUrl on the member), from the avatar hash the member list already carries; members with none show their initial.
  • The split into Online and Offline already used each person's real status (only offline counts as away); idle and do-not-disturb sit with the people online and say so with their dot.

Not done: showing the member list for group DMs (it is gated to channels, and I have no way here to see whether the daemon fills a roster for them); and the picture could not be checked against a live Discord server (receive-only account), only against staged data and the existing member-window code, which has unit tests.

Finished: [c912ed3](https://git.salastil.com/Salastil/moho/commit/c912ed35227ed027b0a892d6c5a7227ad5f7f09d). Before (left) and after (right) - the Discord-shaped test guild's member list, with people online, idle, on do-not-disturb and offline: ![members](https://git.salastil.com/attachments/1715b35c-9847-4dd0-8530-2f280bdbd22d) - **A face and a status dot on every member** where the service reports presence (Discord, Matrix): online green, idle amber, do-not-disturb red, offline a hollow ring - the same dots as everywhere else (#277). IRC, Sneedchat and Kick keep their plain lists of names; a column of initials there would be decoration. - **Clicking a member opens their profile**, as in Discord, Slack and Element. **Shift+click**, or *Mention* in the right-click menu, mentions them (a click used to insert a mention). - **Nobilis now sends each Discord member's picture** (`avatarUrl` on the member), from the avatar hash the member list already carries; members with none show their initial. - The split into Online and Offline already used each person's real status (only *offline* counts as away); idle and do-not-disturb sit with the people online and say so with their dot. Not done: showing the member list for **group DMs** (it is gated to channels, and I have no way here to see whether the daemon fills a roster for them); and the picture could not be checked against a live Discord server (receive-only account), only against staged data and the existing member-window code, which has unit tests.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#288