IRC: no notify list, so nobody's arrival is ever announced #128

Closed
opened 2026-09-06 12:04:37 -04:00 by Salastil · 1 comment
Owner

Every IRC client people come from has a notify or friends list: a handful of nicks it
watches, and a line when one of them comes online. moho has none. MONITOR appears once
in the daemon and only in a comment (backend/irc.rs:226), where ISON is used to
answer whether one person is there right now - which is a different question from
being told when they arrive.

This is what people use IRC's private messaging around: you cannot see somebody's
status the way you can on Discord or Matrix, so the notify list is how you know they
are back.

What is needed

  • MONITOR where the server has it (MONITOR +/-, with RPL_MONONLINE and
    RPL_MONOFFLINE), falling back to polled ISON where it does not - the same
    fallback the existing comment describes, but for a list rather than one nick.
  • The list stored per account beside the autojoin channels, since it is a property of
    the connection.
  • Arrival and departure shown the way a mention is: something you can be told about
    while reading something else.

Done looks like: a name on the list, and a notification when they appear.

Reference: HexChat's notify list, WeeChat's /notify.

Every IRC client people come from has a notify or friends list: a handful of nicks it watches, and a line when one of them comes online. moho has none. MONITOR appears once in the daemon and only in a comment (`backend/irc.rs:226`), where ISON is used to answer whether one person is there right now - which is a different question from being told when they arrive. This is what people use IRC's private messaging around: you cannot see somebody's status the way you can on Discord or Matrix, so the notify list is how you know they are back. **What is needed** - MONITOR where the server has it (`MONITOR +`/`-`, with `RPL_MONONLINE` and `RPL_MONOFFLINE`), falling back to polled ISON where it does not - the same fallback the existing comment describes, but for a list rather than one nick. - The list stored per account beside the autojoin channels, since it is a property of the connection. - Arrival and departure shown the way a mention is: something you can be told about while reading something else. **Done looks like:** a name on the list, and a notification when they appear. Reference: HexChat's notify list, WeeChat's `/notify`.
Salastil added the featureprotocol labels 2026-09-06 12:04:37 -04:00
Author
Owner

Finished — https://git.salastil.com/Salastil/nobilis/commit/d888104 and https://git.salastil.com/Salastil/moho/commit/7e9f07b

/notify <nick>, /unnotify <nick>, and a bare /notify to list — the same spelling HexChat and WeeChat use, registered in the slash-command menu so they appear with usage. The list lives on the account rather than in the window, because the server is what watches it.

MONITOR where the server has it, the ISON poll that already ran where it does not. One rule over both: an announcement needs a previous state, so signing on and finding somebody already there is not an arrival — only a change is.

Verified live on Libera: /notify mohoprobeB said "watching mohoprobeB" and printed nothing (they were already on); the probe quitting produced "mohoprobeB is offline" and reconnecting "mohoprobeB is online"; /unnotify cleaned up.

Finished — https://git.salastil.com/Salastil/nobilis/commit/d888104 and https://git.salastil.com/Salastil/moho/commit/7e9f07b `/notify <nick>`, `/unnotify <nick>`, and a bare `/notify` to list — the same spelling HexChat and WeeChat use, registered in the slash-command menu so they appear with usage. The list lives on the account rather than in the window, because the server is what watches it. MONITOR where the server has it, the ISON poll that already ran where it does not. One rule over both: an announcement needs a previous state, so signing on and finding somebody already there is not an arrival — only a change is. Verified live on Libera: `/notify mohoprobeB` said "watching mohoprobeB" and printed nothing (they were already on); the probe quitting produced "mohoprobeB is offline" and reconnecting "mohoprobeB is online"; `/unnotify` cleaned up.
Salastil removed the protocol label 2026-09-06 12:49:17 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#128