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

Option to overcome cluttered channels tree #805

Open
Svetlana-T opened this issue Dec 4, 2022 · 2 comments
Open

Option to overcome cluttered channels tree #805

Svetlana-T opened this issue Dec 4, 2022 · 2 comments
Milestone

Comments

@Svetlana-T
Copy link

Is your feature request related to a problem? Please describe.
I'm always frustrated when I'm in 200 channels and they are all listed in the list of channels. I end up having to pick manually which channels are my favourite, and either

(i) reading their complete scrollback, because they are a project I am actively involved in
or
(ii) glancing through a channel name in the channel list to double check whether someone sent a new message to it - those kind of channels are small, about 10 people, but important to me and I would like to contribute by answering questions quickly.

There is another category of channels

(iii) that are not my favourite (like #fedora because I do not use it very often) which I read about once a month, and they are continuously active. Sometimes I get a highlight there. Normally I don't want to see them in the channel list, they are annoying, and there is many of them - unless I go to the channel and mark it as important to me.

This kind of scanning of the channel list is laborious and time consuming and I think there should be a way for convos to store my preferences about which category the channel is in, and what to do about it.

Describe the solution you'd like
For each channel there should be option to either

  • always show it in the list of channels, or
  • normally hide it and then only show it when a new message has been sent to it (then it is automatically unhidden)
  • normally hide it and then only show it when i go to it and click unhide, or when i click on a highlight from this channel in my highlights log

Describe alternatives you've considered
Marking the first category as favourites and having a 'only show favourites' option would help. However, there would be about 50 channels that are dead most of the time, and the channel list would remain cluttered. I would suggest implementing this as three categories of channels as described above. This feature is present in the command line clients such as irssi and weechat and as far as I know their activity notify level is implemented on per-channel basis.

Alternatively, if multiple channels could be put together into a single buffer, then I can put multiple channels into one group. There needs to be a counter of 'new messages' shown for the entire group (if a new message is sent to one channel in the group, the group is marked the same way a channel would if it has one unread message). This is also a feature that irssi and weechat have.

Additional context
None added.

@jhthorsen jhthorsen added this to the 7.xx milestone Dec 8, 2022
@jhthorsen
Copy link
Collaborator

jhthorsen commented Dec 8, 2022

We've been wanting to be able to "favorite" channels for a while, but in your case, it might be useful to actually "hide" channels instead. I'm thinking we could add a visibility attribute (other name is more than welcome) to a conversation object and use that in any way we want in the user interface.

  1. Add a visibility attribute to https://github.com/convos-chat/convos/blob/main/lib/Convos/Core/Conversation.pm. This could be a number, where -1 = hide, 0 = normal, and let's say 100 could be favorite. This attribute must also be added to TO_JSON, and the relevant tests must be updated.
  2. One hurdle is that there isn't any good way to change the Conversation object by the user, so we either need a new endpoint in https://github.com/convos-chat/convos/blob/main/public/convos-api.yaml and a new controller to update the given object, or we could just make a new command in https://github.com/convos-chat/convos/blob/main/lib/Convos/Core/Connection/Irc.pm#L37 to change the visibility, like /visibility #convos -1. If we go for the command, it would be nice to steal the command from other clients.
  3. After that, we need new logic in https://github.com/convos-chat/convos/blob/main/assets/components/ChatSidebar.svelte to sort by visibility and hide those with -1. The -1 conversations should however appear if searched for and maybe we should display them if notifications is above 0?

If anyone wants to work on this, then https://convos.chat/doc/develop should give you an idea on how to get started.

@mostlyvirtual
Copy link
Contributor

This would be the new section in the menu - it can be hidden if there are no Favourites.

favourites-menu

And this could be one option to make a channel a favourite, but I would need to figure out how that stores the state. I saw that disabling Notify me on new messages on that section creates a new key in localStorage called convos:chat:wantNotifications, so the same could be done for favourite? Where is that localStorage key coming from? Is it from the API?

favourites-conversation-settings

@jhthorsen jhthorsen modified the milestones: 7.xx, 8.xx Oct 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants