Open timabbott opened 3 years ago
Hello @zulip/server-misc members, this issue was labeled with the "area: topics" label, so you may want to check it out!
@zulipbot claim
Hello @m-e-l-u-h-a-n, you have been unassigned from this issue because you have not updated this issue or any referenced pull requests for over 14 days.
You can reclaim this issue or claim any other issue by commenting @zulipbot claim
on that issue.
Thanks for your contributions, and hope to see you again soon!
Hello @evykassirer, you have been unassigned from this issue because you have not updated this issue or any referenced pull requests for over 14 days.
You can reclaim this issue or claim any other issue by commenting @zulipbot claim
on that issue.
Thanks for your contributions, and hope to see you again soon!
Our current thinking is that the right model for this in Zulip is to allow pinning one or more topics within a stream, and then users can move messages into the pinned topic as needed.
Is there discussion on CZO about the product thinking behind this? I'm not convinced this is intuitive/helpful, though also I'm not sure I fully understand the suggested implementation yet, and would like to read or participate in some conversation before getting started on implementation :)
@evykassirer I'm not sure I understand the precise part you're concerned about (the whole idea? multiple pinned topics?). Anyway, the idea has been batted around a number of times over the years (you can search for "pinned topics" in public streams), but you can just kick off a new discussion thread at this point.
I'm not as much concerned, but moreso feel like I want some more information about the use cases and product thinking before I feel more confident in and excited about working on it. I'll check out the discussion in CZO tomorrow and kick off a new discussion thread if I have further questions! thanks :)
(I guess I do feel like I have very vague questions/concerns but also don't feel like I have enough context to know if they're based in anything real)
@zulipbot claim
@zulipbot claim
Exciting, @evykassirer !
Hello @evykassirer, you have been unassigned from this issue because you have not updated this issue or any referenced pull requests for over 14 days.
You can reclaim this issue or claim any other issue by commenting @zulipbot claim
on that issue.
Thanks for your contributions, and hope to see you again soon!
Still working on it, awaiting a decision made in #backend>pinned topics
Looking forward to it.
Rough ETA on this? Highly sought-after feature in my circles :)
We were looking for this feature while using Zulip for a conference this week.
@zulipbot claim
Welcome to Zulip, @joannetsaii! We just sent you an invite to collaborate on this repository at https://github.com/zulip/zulip/invitations. Please accept this invite in order to claim this issue and begin a fun, rewarding experience contributing to Zulip!
Here's some tips to get you off to a good start:
As you work on this issue, you'll also want to refer to the Zulip code contribution guide, as well as the rest of the developer documentation on that site.
See you on the other side (that is, the pull request side)!
@joannetsaii You have been unassigned from this issue because you have not made any updates for over 14 days. Please feel free to reclaim the issue if you decide to pick up again. Thanks!
Our team is still working on it. We're currently testing the changes and fixing some bugs in the backend.
@joannetsaii which branch? i am interested.
Thanks @joannetsaii for working on it, really excited about this feature!
Is there any progress?
By the way, UI-wise at least for pinning messages it seems very natural to me, that the message (2) is just pinned under the stream / topic bar (1) that is already sticky when scrolling. A collapse function (3) would be nice (e.g. in case of a longer message and elsewise cluttering the UI after having it read once).
Or does anyone have other proposals or even a prototype?
Personally, I also really like the UX of pinned messages in Telegram where you have a small bar that:
a) scrolls through all pinned messages and b) opens a separate chat/window only with the pinned messages & a link to the original message in the original chat
This would really be a nice feature to have. Especially since the only available alternative for making commonly needed info easy to find (stream descriptions) currently does not support links on mobile (https://github.com/zulip/zulip-mobile/issues/5751).
I am all for this feature as well. Being able to pin a topic to bring it to the attention of all members, especially new ones who might be overwhelmed with all the other topics floating around, would be very helpful.
@zulipbot claim
@roanster007 You have been unassigned from this issue because you have not made any updates for over 14 days. Please feel free to reclaim the issue if you decide to pick up again. Thanks!
I'm nearly done with the thing... I'll add some tests, update docs and open PR.
@zulipbot claim
@zulipbot abandon
When streaming live video from a conference, is it possible that a pinned message could be used to display a video player that "sticks" to the top of a stream and then a new topic is opened for every talk?
That's a nice suggestion! More closely related to #20745.
A popular feature of alternative chat products is being able to pin messages within a stream. We closed the original issue for this feature when we started displaying stream descriptions at the top of stream narrows. However, that implementation doesn't cover all use cases for pinning messages, and in any case doesn't presently let you display a large amount of content (though we do plan to change that). We should consider adding this a high priority given how many people were excited about #5200; we get additional requests about this from time to time.
Our current thinking is that the right model for this in Zulip is to allow pinning one or more topics within a stream, and then users can move messages into the pinned topic as needed. Here's an implementation/design plan, in a reasonable commit merging order:
We create a new
StreamTopic
database table with columns (realm: Realm
,stream_id: ForeignKey
,topic_name: str
, pinned: boolean=False). We will for now only be creating rows in this table when a topic is pinned, sopinned
will always beTrue
in real rows at first, but that will change as we add additional features associated with topics.We add API code for sending StreamTopic data to clients in
/register
for the streams the user is subscribed to. We will want an "api design" thread for how this should work. It is probably a good idea to also implementstream_topic
events to send to clients when a topic is pinned/unpinned for data synchronization; this will also allow the mobile and terminal apps to start an implementation.We tweak
populate_db
to include pinned topics in what it generates. (Possibly just a random topic should be pinned in each of the 3 alphabetically first streams). This can happen at any time; it's main purpose is to support testing the feature before we add API code (which we generally don't want to do until we are happy with the UX if one were to create one).We add UI code to sort pinned topics to the top. I expect this to involve modifying
topic_list_data.js
and in particularget_list_info
to to show pinned topics at the top of the left sidebar. I believe the following is likely to be the correct implementation:if (is_topic_pinned) {
return true;
}
Add display code to render the topic in the left sidebar with an
fa-pin
icon in the gutter where "resolved topic" checkboxes appear. A topic that is both resolved and pinned should show the pin in the gutter and the checkmark in the topic name.We add a new organization permission
pinned_topics_policy
that controls who can pin topics within the organization by default. (Later we'll do something per-stream, but that's out of scope for this issue). This setting should support all the normal policy types (including nobody/everyone) and have "Moderators" as the default value. We can merge this commit early by having the settings UI element hidden behind apage_params.development_environment
guard; so it can really happen at any time before the next bullet.We add a new
PATCH streams/<int:stream_id>/topics/{topic_name}
API endpoint for changing the settings for a topic. At present, it should just let you passpinned=true|false
.We add a new menu item to the left sidebar
\vdots
menu for a topic with "Pin topic", in the administrative actions section that sends requests to that endpoint.We add Help Center documentation for the feature.
We add the feature to marketing pages where we might want to advertise its existence.