Mark as read on channels, categories and servers #286

Closed
opened 2026-10-07 20:43:03 -04:00 by Salastil · 1 comment
Owner

"Mark as read" exists only for rail folders (ServerRail.tsx:663-666). The server tile menu has only Mute/Browse/Leave (252-283); channel rows have no Mark as read ("Mark as unread" is Matrix-only, BufferList.tsx:961); category headings have no menu unless custom (284). store.markBuffersRead already exists (state/store.ts:3964).

Fix: Mark as read on channel rows (every service), category headings and server tiles; Esc marks the current channel read and jumps to the bottom when no popup is open; Shift+Esc marks the whole server read (Discord's shortcuts).

Part of the v1.0 UI pass.

"Mark as read" exists only for rail folders (ServerRail.tsx:663-666). The server tile menu has only Mute/Browse/Leave (252-283); channel rows have no Mark as read ("Mark as unread" is Matrix-only, BufferList.tsx:961); category headings have no menu unless custom (284). `store.markBuffersRead` already exists (state/store.ts:3964). **Fix:** Mark as read on channel rows (every service), category headings and server tiles; Esc marks the current channel read and jumps to the bottom when no popup is open; Shift+Esc marks the whole server read (Discord's shortcuts). _Part of the v1.0 UI pass._
Salastil added this to the v1.0 milestone 2026-10-07 20:43:03 -04:00
Salastil added the feature label 2026-10-07 20:43:03 -04:00
Author
Owner

Finished: 2745a2f.

Before (left) and after (right), from scripts/ui-shots.mjs.

Category heading - right-click ANIMALS. Before: nothing opened, because only headings you made had a menu. After:

category menu

Server tile - right-click a server in the rail. Mark as read now leads the menu (greyed out when nothing is waiting):

server menu

Also in this change:

  • Channel rows and the conversation header's menu offer Mark as read while something is waiting there (for every service; Mark as unread is still Matrix-only).
  • Escape reads the conversation you are in and jumps to its end; Shift+Escape reads every conversation in the server. It works from the message box, where you nearly always are, but not when a menu, dialog, picker or full-page panel is open, or another field has focus; the box's own Escapes (closing a suggestion list) still win because they handle the key first.

Checked in the isolated test copy with real key events: Esc from the message box cleared the open channel (5 → 0) and left the others alone; with a dialog open it did nothing; Shift+Esc cleared the other unread channels in the server. The rail's folder menu already had Mark Folder As Read.

Finished: [2745a2f](https://git.salastil.com/Salastil/moho/commit/2745a2f5322d01086d648e261eca428f21527993). Before (left) and after (right), from `scripts/ui-shots.mjs`. **Category heading** - right-click `ANIMALS`. Before: nothing opened, because only headings you made had a menu. After: ![category menu](https://git.salastil.com/attachments/2a3c9393-dbbc-43e8-bc90-c46ff015373a) **Server tile** - right-click a server in the rail. Mark as read now leads the menu (greyed out when nothing is waiting): ![server menu](https://git.salastil.com/attachments/50983c0d-7ea8-436b-9b8c-df8f4a49ace9) Also in this change: - **Channel rows** and the conversation header's menu offer *Mark as read* while something is waiting there (for every service; *Mark as unread* is still Matrix-only). - **Escape** reads the conversation you are in and jumps to its end; **Shift+Escape** reads every conversation in the server. It works from the message box, where you nearly always are, but not when a menu, dialog, picker or full-page panel is open, or another field has focus; the box's own Escapes (closing a suggestion list) still win because they handle the key first. Checked in the isolated test copy with real key events: Esc from the message box cleared the open channel (5 → 0) and left the others alone; with a dialog open it did nothing; Shift+Esc cleared the other unread channels in the server. The rail's folder menu already had *Mark Folder As Read*.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#286