The old /updateserver used the equivalent of
git pull --rebase
(if that fails)
git stash && git pull --rebase && git stash pop
The new /updateserver works on
git fetch && git rebase --autostash FETCH_HEAD
Which is a lot simpler and should in theory be more resilient to merge
conflicts while stashing.
This is the source of the infamous !om g issue.
The new design looks better, anyway, and allows !formatshelp to also
be braodcast since it's no longer spammy.
!om searching will also now only search OMs.
This unifies modjoin checks (both Room#modjoin and Room#staffRoom join
restrictions) under one function, Room#checkModjoin.
This makes it easier for commands to check whether a user should know
about a room's existence, which, previously, had been duplicated
unreliably in each command's implementation.
Fixes#2426
PMs no longer special-case commands. The implementation of /invite,
/me, etc in commands have been fully moved from messages.js back to
commands.js and the rest. This makes Messages command support a lot
closer to how CommandParser itself handles commands; the two files
should be mergeable soon.
/me has been refactored, and now supports /ME, /me's, etc in PMs and
regular chat exactly the same way.
context.pmTarget is now guaranteed to be `User|undefined`, rather than
its previous specification of `User|string|undefined`. The previous
use-case of putting a string in context.pmTarget was to support
errorReply when PMing a nonexistent user, but special-casing that
case is easier than having to support a possible string pmTarget
everywhere.
The main reason I think this should be added is that a lot of people don't know this command, and so having it in the roomsettings should make it better-known to the relevant users that it's actually a thing.
This presents ghost guest nicks from appearing when logging out and renaming to
the user's guest nick and prevents being able to spam rename messages when
renaming to the user's current username.
Aliases like /j used to not work when called from the global room while not in
lobby.
Using rest parameters for TestPattern#register instead of a
single array came out to be faster.
/roomtopic also isn't a command.
This now makes it so that if a user can broadcast but cannot declare in that room, and they attempt to broadcast it, it will now send them the error reply themselves instead of broadcasting the error reply to the room.
Credits to Slayer95 for this fix!