obbyworld / obbyworld/obby

Custom channels list

Open
#45 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement feature request help wanted IRC Client IRC Server
Dominant language
TypeScript
Stars
233
Forks
19
Avg merge
9d 20h
Merged PRs (30d)
3

Description

I would like to implement a channels list which contains not only the channel topic and number of users, but also show things like how active the conversation is, the current mood/vibe of the channel, as well as a short summary of the channel conversation, updated periodically.

There are also other things to consider such as if I want to mark a channel as "nsfw" for example, and be able to include or filter these explicitly in results.

I have a few considerations with regards to server-side implementation:

  • METADATA - By setting this information as channel METADATA we could, as a client, query each value for each channel as they are received by the client. The problem with this is that could take a while to render depending on the size of the channels list.
  • Message Tags - By including values in the Message Tag body, prefixed to the 322 numeric, we can easily reference all the data we need about a channel for the list frame by frame, meaning rendering might still be a little bit slow but each result will already be fully-formed. This also means we would need to implement some custom commands to set and change the values and propagate them to the client later in some new invented format.

I think we should go for a mix of both of these for most things, i.e. a channel operator could set the channel as nsfw using METADATA, which a user won't need to subscribe to but can still be shown in the channels list via tags, or maybe something like music or channel icon/avatar which a user could subscribe to and also show in the channels list via tags.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing channel-list handling and the IRC 322 numeric in the TypeScript client and server-related code. Compare the proposed METADATA and message-tag approaches, including how channel operators would set values and how clients would filter them. Done means a defined, implemented, and documented channel-list format supporting the requested metadata and filters.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend-api-design, full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.