PinnedBar.tsx reads pinnedByBuffer, which only Kick fills, and clicking it doesn't jump to the message. Matrix and Discord pins only appear in the header popover (ConversationTools.tsx:458).
Fix: pins for Discord and Matrix too, from the same data the popover loads; clicking jumps to the message; a pin count in the header.
Part of the v1.0 UI pass.
`PinnedBar.tsx` reads `pinnedByBuffer`, which only Kick fills, and clicking it doesn't jump to the message. Matrix and Discord pins only appear in the header popover (ConversationTools.tsx:458).
**Fix:** pins for Discord and Matrix too, from the same data the popover loads; clicking jumps to the message; a pin count in the header.
_Part of the v1.0 UI pass._
Salastil
added this to the v1.0 milestone 2026-10-07 20:43:18 -04:00
Pins are now something you see, not something you know to look for - for Discord and Matrix as well as Kick.
Banner over the log for Discord channels and Matrix rooms with pins: the newest, "Pinned · 1 of 3 · author", with its first line. Clicking goes to the message (through the same path search results use, so it works when the pin is far back in history) and moves on to the next pin, so a run of pins is read by clicking through them. The cross hides the banner for the session; the pins stay in the header. Kick's one-line pin is unchanged and shares the slot.
Count on the header's pin button (a badge, 99+ capped), for both services.
One answer, shared:store.loadPins asks listPinned once per conversation (Discord's pins used to be fetched only when the header list was opened) and the banner, the header list, the count and the pinned marker on rows all read it. Pinning or unpinning reloads it; so does a Matrix pin change from another client.
Before (top, nothing is shown), after (bottom):
Note: the header list's "go to" and "unpin" behaviours are the existing ones; the picture is a staged state, as no real Discord account is used for testing.
Finished: [3a74cf0](https://git.salastil.com/Salastil/moho/commit/3a74cf030b5ee8d9915fbdfc20fbe143162a14ad).
Pins are now something you see, not something you know to look for - for Discord and Matrix as well as Kick.
- **Banner over the log** for Discord channels and Matrix rooms with pins: the newest, "Pinned · 1 of 3 · author", with its first line. Clicking goes to the message (through the same path search results use, so it works when the pin is far back in history) and moves on to the next pin, so a run of pins is read by clicking through them. The cross hides the banner for the session; the pins stay in the header. Kick's one-line pin is unchanged and shares the slot.
- **Count on the header's pin button** (a badge, 99+ capped), for both services.
- **One answer, shared:** `store.loadPins` asks `listPinned` once per conversation (Discord's pins used to be fetched only when the header list was opened) and the banner, the header list, the count and the pinned marker on rows all read it. Pinning or unpinning reloads it; so does a Matrix pin change from another client.
Before (top, nothing is shown), after (bottom):

Note: the header list's "go to" and "unpin" behaviours are the existing ones; the picture is a staged state, as no real Discord account is used for testing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
PinnedBar.tsxreadspinnedByBuffer, which only Kick fills, and clicking it doesn't jump to the message. Matrix and Discord pins only appear in the header popover (ConversationTools.tsx:458).Fix: pins for Discord and Matrix too, from the same data the popover loads; clicking jumps to the message; a pin count in the header.
Part of the v1.0 UI pass.
Finished: 3a74cf0.
Pins are now something you see, not something you know to look for - for Discord and Matrix as well as Kick.
store.loadPinsaskslistPinnedonce per conversation (Discord's pins used to be fetched only when the header list was opened) and the banner, the header list, the count and the pinned marker on rows all read it. Pinning or unpinning reloads it; so does a Matrix pin change from another client.Before (top, nothing is shown), after (bottom):
Note: the header list's "go to" and "unpin" behaviours are the existing ones; the picture is a staged state, as no real Discord account is used for testing.