Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pinned message thoughts #5405

Closed
lampholder opened this issue Oct 24, 2017 · 15 comments · Fixed by matrix-org/matrix-react-sdk#6096
Closed

Pinned message thoughts #5405

lampholder opened this issue Oct 24, 2017 · 15 comments · Fixed by matrix-org/matrix-react-sdk#6096
Assignees

Comments

@lampholder
Copy link
Member

  • Pinning a message could (should?) open the pinned message drawer automatically.
  • Pinned messages should perhaps show the date/time of sending
  • Pinned message drawer openness should persist moving between rooms
    • how? per-user setting? per-user-per-room? per-room?
  • Since pinned messages exist in a drawer very like a widget drawer, should they be a widget (I think probably not, just raising here for consideration)?
@turt2live
Copy link
Member

While reading this, please be aware that I'm biased as I wrote the thing :p

  • I don't like the auto-opening at all, so if it does get implemented, I'd strongly recommend (yet another) setting for it.
  • The date/time feels less important as, in general, the age of a pin doesn't usually affect the message.
    • Using the jump to message button would also help, particularly with sticky headers.
  • I also don't like the idea of it persisting open/closed between rooms and suspect that this is a result of not having the indicator visible for unread pins (PR open and in progress). Granular settings (also wip) would definitely help on this front.
  • There was some talk about using widgets for this, and overall I agree provided widgets can be made more powerful. They're very limited in what they can do, how they work, and where they go. All of which affects the usefulness of them.

@ara4n
Copy link
Member

ara4n commented Dec 14, 2017

Going to adopt this as the canonical bug for 'getting pinned messages out of labs'

@ara4n ara4n added the tracker label Dec 14, 2017
@turt2live
Copy link
Member

A bit more feedback beyond me and @lampholder disagreeing would be appreciated. I'm happy to write out the code to make some of this happen, but a few more voices about the features would be nice to guide the features.

@pafcu
Copy link
Contributor

pafcu commented Dec 19, 2017

Auto-open on pinned message should probably follow the same logic as the app drawer.

@allquixotic
Copy link

This might be outside the scope of what just riot-web can do from the clientside, but some of us using Matrix after long being on the https://chat.stackexchange.com platform would like pinned messages to be shared across users in a room, communally. So, if someone else pins a message, you would see it pinned, too. And then the number of users who pinned a message would determine the "weight" of the pin, and that weight (along with the message's age) would factor in a calculation to determine the sorting order of the pins in the list of pins (in the drawer, I guess).

Not sure how near or far from the design this request would be.

@turt2live
Copy link
Member

Pinned messages are stored in the room, so everyone in the room can see them. Riot also goes a step further to give an indication of "unread" pins on a per-user basis.

The frequency-based ordering is an interesting addition. Currently only moderators (by default) can pin messages, so there wouldn't be a whole lot of competition for pinning messages. The ability to move the pinned messages around might work better for most rooms. I can foresee opening up pinning messages to all members of the room going really badly, and would recommend against that (unless some sort of restriction gets put in place).

@allquixotic
Copy link

allquixotic commented May 22, 2018

The "star wall" mechanic in chat.stackexchange rooms works as follows (replace "star" with "pin" to muse about how this would work in Matrix/Riot):

  • Any registered user who can participate in chat, can star messages. They can also cancel their own stars at any time. Users can only star 25 messages in a 24-hour period.
  • Room Owners (basically like Matrix Moderators) can cancel all stars on a message, to prevent abuse. When cancelling stars, the stars still count against each user's 25 message per day limit.
  • Room Owners can pin messages. Pins in chat.SE parlance are actually a higher "priority" category of stars. Any pinned message will always be listed above messages that are merely starred on the Star Wall. Pinned messages can also be starred by regular users, adding weight to them, which affects the sort order of pinned messages relative to one another. Pins are distinguished from stars in that regular users can't pin anything, they can only star it, and no amount of stars will ever cause a message to be sorted higher than a pin in the list.
  • Moderators (basically like Matrix Admins) can't do anything special with stars that Room Owners can't do, but they also have the privileges of a Room Owner by default.

I can see this system as being next to useless in a room like #matrix:matrix.org or #riot:matrix.org, but for smaller rooms, star abuse is rare. Allowing regular users to star messages, and then allowing moderators/admins to pin messages that are really important, is a nice way to give people awareness of the recent goings-on in the room without having to read the entire scrollback.

To address your concern that this would work badly for large rooms, I would suggest a permission allowing moderators or admins of a room to lock down the feature to various degrees per-room. For instance:

  • Ability to modify the star/pin rate limit parameters (how many stars over how much time)
  • Ability to adjust which user power level is required to issue a star or a pin
  • Ability for admins to clear all stars/pins issued from the present dating back X hours/minutes/seconds (for example, if you get attacked with a roving band of star trolls, you could just wipe that all out with one fell swoop, after kicking/banning/de-privileging them)

Looping back to chat.stackexchange, here are a few interesting features of the star wall:

  • Sort order: If two messages are of the same star "priority" (regularly starred or pinned) and have the same number of stars, the newer message will be higher in the sort order. Sometimes, older messages receive a higher position in the star wall than newer ones, if they receive more stars. I'm not clear on the exact algorithm used to determine how much an additional star counts for, but let's say, for example, that each additional star for a message will subtract 24 hours from that message's "age". If you just convert the number of stars into an adjustment on the message's age, then you perform a simple numerical sort on each message's age to come up with the sort order for the stars. Then repeat the same process for the pinned messages, if there's more than one.
  • Star wall limit: Messages remain levied with star metadata indefinitely (it never goes away), but only the top X number of starred messages get displayed on the chat client. It actually depends on your screen size, as far as I can tell, in the chat.SE client. Better vertical screen real estate will get you a longer star wall than a small and squishy screen. You can read the scrollback of the star wall itself with a separate view of the chatroom that lists starred messages in descending order of when they were posted. An alternative might be to dynamically load more (lower-sorted) stars upon request as you scroll down, in infinite scroll style.
  • Every message on the star wall is timestamped and provides a direct link back to the normal, chronological chat backlog at the particular point in time where that message was sent. This allows you to capture context if it's missing.

The purpose of this post was to give you hopefully some ideas for how to improve this feature, not to say "I want this exactly in Matrix!" or anything like that. I feel that the best chat system possible would end up being a fusion of the best ideas from many different present and past products, so shamelessly lifting ideas from StackExchange (while they, and every other chat client, shamelessly do the same from their forebears) is fair game.

turt2live added a commit to turt2live/matrix-react-sdk that referenced this issue May 27, 2018
Addresses part of element-hq/element-web#5405

Signed-off-by: Travis Ralston <travpc@gmail.com>
turt2live added a commit to turt2live/matrix-react-sdk that referenced this issue May 27, 2018
Addresses part of element-hq/element-web#5405

Signed-off-by: Travis Ralston <travpc@gmail.com>
turt2live added a commit to turt2live/matrix-react-sdk that referenced this issue May 27, 2018
Addresses part of element-hq/element-web#5405

Signed-off-by: Travis Ralston <travpc@gmail.com>
@drseussofporn
Copy link

+1 for an auto-open pinned messages setting. I can see a couple use cases for that and including it as a user setting (and maybe a default setting in the config) could prevent it from getting abused.

@heyakyra
Copy link

Is pinning gone in Element?

@t3chguy
Copy link
Member

t3chguy commented Jul 29, 2020

Nope, it is still behind Labs like it was in Riot. develop.element.io Settings > Labs > Message pinning

@odiferousmint
Copy link

odiferousmint commented Aug 8, 2020

Why is there no Labs menu in the Arch Linux package, has it been compiled without those experimental features?

What is the status of message pinning? Is it on a per-room basis, and is there an icon to view ALL pinned messages as well? That would be neat. Plus I hope it does not have a limit as it does on Discord. Are pinned messages visible by everyone or only me?

One of my use cases of pinned messages is keeping track of things to do. For example, a pinned message would look like:

[ ] A
[ ] B
[X] C

Some I prefer having shared, some I do not. I suppose a way to do it is to create a room that only I am in (which I already did).

@auscompgeek
Copy link

auscompgeek commented Aug 8, 2020

Why is there no Labs menu in the Arch Linux package, has it been compiled without those experimental features?

@odiferousmint Labs features are disabled by default, see docs/config.md.

@t3chguy
Copy link
Member

t3chguy commented Aug 8, 2020

Plus I hope it does not have a limit as it does on Discord.

The app imposes no artificial limits. Any limits would be applied by the server your user is on, but none apply to pinning.

Are pinned messages visible by everyone or only me?

They are part of the room state, there is another open issue about "Starring" messages which would just be personal to you.

@LecrisUT
Copy link

Has this feature been removed? I can't find it in element desktop/android anymore

@t3chguy
Copy link
Member

t3chguy commented Mar 27, 2024

@LecrisUT its in labs on develop.element.io - same place its only ever been

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.