Roomintros are now limited to 200 vertical pixels, with a
scrollbar for any roomintro that doesn't fit.
An exception is given to official rooms under modchat, namely the
Help room. It is expected that other official rooms won't abuse
this exception, but we can deal with that separately if it becomes
an issue.
'Confirmed' is a new pseudo-usergroup, halfway between autoconfirmed
and voice. It grants immunity to locks and works similarly to
autoconfirm status, except it's only granted by being globalvoice+,
roomdriver+, or manually confirmed.
Modjoin in public rooms is nearly always a mistake, but can
be useful when doing maintenance on a room or something.
Since the /modjoin command forces a room private, this is
only relevant for console commands, which is as intended.
Users with rank (i.e. voice+) are now demoted upon being
locked/banned. This is the first step in an update that will
allow users with rank to bypass rangelocks, locked prixies,
locked mobile networks during spammode, etc.
Rooms.global.chatRooms is a cached list of chat rooms, useful since
Rooms.rooms on Main has thousands of rooms on average, while less
than 100 of them are chat rooms.
A scan through the code reveals that private rooms are never used
(except for .isPrivate === 'voice') when we need .chatRooms, so
we can omit them to make the cache even smaller/faster.
This is a fairly minor optimization (we have fewer private rooms
than public rooms, total) and private rooms are omitted lazily
(only upon server restart) because we have to check .isPrivate
for the === 'voice' case anyway.
There was some confusion pertaining to exactly how /away and related
commands work, so this commit should clarify it all.
The naming scheme is standardized so that the canonical
command names are /blockpms, /blockchallenges, /unblockpms, and
/unblockchallenges.
/help away now accurately describes how /away is different from
/blockpms.
/away and /back are refactored into their own commands for clarity.
It is now possible for rooms in the roomlist to be visible only
to voice+. This is sort of hacked-on at the moment, but is good
enough for my purposes.
be5bf30259 and 3f8380a863 imply that blocking PMs should block challenges as well, but that is not the case.
Furthermore, away is widely known and used to block challenges.
This commit changes that so, when using away, idle, and back, you use both ignorepms and blockchallenges, checking for both.