zed icon indicating copy to clipboard operation
zed copied to clipboard

Show channel indicator for new messages

Open bennetbo opened this issue 4 months ago • 6 comments

@evrsen noticed that there is no indicator on the channel itself, when there are new chat messages (although one is shown when the channel notes were changed)

https://github.com/zed-industries/zed/assets/53836821/d5eab2ef-b3e3-4003-a10f-6daf780b813c

Release Notes:

  • Show indicator when channel chat contains unseen messages

bennetbo avatar Mar 05 '24 20:03 bennetbo

And here is what it looks like when both the channel notes were changed and the chat contains new messages: image

Ideally the greenish point should be aligned with the first label, which I think is hard to do in gpui right now, so I think it's fine the way it is.

bennetbo avatar Mar 05 '24 20:03 bennetbo

When we implemented this new indicator the choice of not making unread chat messages cause the indicator to appear was an intentional one.

Chat can be pretty noisy, and we didn't want to surface unreads when you're not in the channel to make it clearer when there were notes updates.

I'll let @ConradIrwin weigh in on if we want to revisit this at all.

maxdeviant avatar Mar 05 '24 20:03 maxdeviant

When we implemented this new indicator the choice of not making unread chat messages cause the indicator to appear was an intentional one.

Chat can be pretty noisy, and we didn't want to surface unreads when you're not in the channel to make it clearer when there were notes updates.

I'll let @ConradIrwin weigh in on if we want to revisit this at all.

I see, but I feel like it's hard to find out if there are any new messages in the zed channels. @RemcoSmitsDev added the "Unread messages" badge inside the chat panel, which helps. But I still find myself clicking through all the channels to see if there are any new messages.

bennetbo avatar Mar 05 '24 20:03 bennetbo

For me, I also find myself hovering over all channels one by one just to check if there are any unread messages, so I agree with @bennetbo.

But in addition to this (I'm not sure if its worth making an issue out of this, but I'll just put the word in here) I was also thinking it would be nice to distinguish the indicators (e.g unread notes or unread messages) by colour, f.e unread notes can be yellow and unread messages can be blue, and in the case of both being unread that there would be two indicators stacked with one overflowing the other a bit.

I was also thinking that maybe having an indicator for mentions and replies would be nice, f.e a red indicator.

evrsen avatar Mar 05 '24 21:03 evrsen

But in addition to this (I'm not sure if its worth making an issue out of this, but I'll just put the word in here) I was also thinking it would be nice to distinguish the indicators (e.g unread notes or unread messages) by colour, f.e unread notes can be yellow and unread messages can be blue, and in the case of both being unread that there would be two indicators stacked with one overflowing the other a bit.

Color alone shouldn't be used as a distinguishing factor, as it's not accessible (e.g., for folks with color blindness).

maxdeviant avatar Mar 05 '24 21:03 maxdeviant

Color alone shouldn't be used as a distinguishing factor, as it's not accessible (e.g., for folks with color blindness).

Maybe we can use different shapes for different indicators? a circle for chat messages, a square for notes, and a triangle for mentions? Just something on top of my head, if anyone has a better idea please share it  :D

evrsen avatar Mar 05 '24 21:03 evrsen

Thanks for proposing this!

I am going to close this for now though, because it pushes Zed in a direction that I think we don't want to go.

As it says on zed.dev "Productive coding starts with a tool that stays out of your way"; and notification indicators are the opposite of that - they draw your attention to other things. Particularly for chat, Zed should work like Zoom/Twitch/IRC – we have chat because sometimes the easiest way to communicate is via text (here's a link to some documentation, or another line of code, or a thought that's easier to write than speak, or I'm watching you stream and can't use my mic, etc.).

In the long run we'd love to keep track of what conversations were happening (in chat or by voice) so that if you're trying to understand "why is this code this way" Zed could take you right back to the session where it was implemented with the chat and voice accessible. On the flip side, what I want to avoid is opening Zed to feel like a TODO list of unread conversations (I have Slack/Discord/Github/Email already for that :D)

All of that said, there's a lot we can do to make chat better. I think the next steps are:

  • Always notifying anyone in the current channel of a new message (@Otterpocket suggested having a sound too, which might be nice if it's subtle enough).
  • Showing if there are unread chats in the current channel (maybe we could highlight the chat icon in the status bar? Or show something in the "ChannelChat" element in the collab panel). I think the "new messages" indicator you added will help make this experience feel good.
  • Supporting links to a line of code in an open project
  • (probably) hiding the chat panel icon in the status bar unless you are in a channel or have manually opened the chat for a channel.

There is also more we can do to make the notes notifications less bad:

  • I think by default we should not show which notes are unread, but do something more like Github/Notions "watch" list (and maybe that sends an email or a notification instead of a dot, but a bit unclear).
  • We also need the equivalent of "new messages" for notes, so you can see what changed since you were last there.
  • I'd also consider just removing them completely for now (as they're 90% not useful; and even for the 2 notes I care about it's usually impossible to tell why the dot is showing when I open them).

ConradIrwin avatar Mar 07 '24 02:03 ConradIrwin