CI Report:
https://ci-tests.linuxserver.io/linuxserver/thelounge/nightly-78cadc5f-ls218/index.html
LinuxServer Changes:
No changes
Remote Changes:
ircv3: monitor and extended-monitor (#5045)
Updated version of #4550. Closes #337, closes #872 (#337 can't be fully
addressed — tracking nick changes isn't really possible atm).
Summary
Query windows show whether the person behind them is online, and whether
they are away, using
MONITOR rather than
polling. Network keeps the monitor list: queries are registered in
batched MONITOR + commands once RPL_ISUPPORT tells us the server
supports it, and one at a time as new query windows open. The limit
advertised in MONITOR=<n> is respected, with anything over it waiting
for a slot; MONITOR=0 means no monitoring at all, a bare MONITOR
means no limit. A nick change on a monitored query swaps the target in
place so the query keeps its slot.
extended-monitor
is requested too, so away, nick, account and chghost updates arrive for
monitored nicks we share no channel with. Away state for people we do
share a channel with comes from a WHO on join.
The indicator is a dot on the query in the sidebar and next to the nick
in the message bubble, with a tooltip and an img role so it isn't
colour-only, and it can be turned off under Appearance.
Known limitation: a server that enforces a monitor limit it doesn't
advertise will reject part of a batch with ERR_MONLISTFULL; the user
gets a message in the lobby, but the client's own list isn't reconciled
until reconnect.
Test Plan
- Unit tests for the monitor list: add, case-insensitive dedupe,
queueing at the limit, removal draining the queue, batching, and the
rename path. - Ran the server against a local IRCd and watched the wire: opening
queries sendsMONITOR + <nick>each, a reconnect with four open
queries sends a singleMONITOR + bob,carol,dave,mallory, 730/731 drive
the online/offline state, a rename sendsMONITOR - bobthenMONITOR + bob2,MONITOR=0sends nothing at all, and a bareMONITORbehaves as
unlimited.

