soju v0.2.0 This release brings a set of bug fixes and new features. New features include: - Support for a new soju.im/bouncer-networks extension, allowing clients to automatically integrate with soju's multi-network functionality. gamja and Weechat (via a script) take advantage of it. - Support for CHATHISTORY BETWEEN and TARGETS, allowing better chat history integration in clients. - Improved handling of MOTD, LUSERS, STATS and unknown IRC commands Alexey Yerin (1): service: show SHA-512 fingerprint Drew DeVault (1): db: refactor into interface Gregory Anders (3): Forward MOTD messages downstream Forward user mode changes in single-upstream mode Slightly relax new log file permissions Hubert Hirtz (6): Implement CHATHISTORY BETWEEN Fix CAP LIST listing disabled capabilities Don't forward label tags Don't build soju when calling "make install" Hand-made word splitter for BouncerServ Add a C compiler to the list of dependencies Jake Nelson (1): Sort `channel status` channels by name Philip K (1): Directly return self-messages to user in multi-upstream mode Rafael Castillo (1): Check for TLS config in wss listeners Simon Ser (57): Add more context to chathistory errors Check message stores implement expected interfaces contrib/clients: add gamja and senpai Silence net.ErrClosed errors Relay self-WHO/WHOIS in single-upstream mode readme: move quickstart to dedicated doc page readme: add link to IRC channel doc/soju.1: document -connect-command doc/soju.1: document user delete command readme: link to rendered man page Pass-through the BOT ISUPPORT token Implement the soju.im/bouncer-networks extension Add pass to bouncer network attributes Send network settings in LISTNETWORKS Introduce the soju.im/bouncer-networks-notify capability Don't send connection status NOTICEs with bouncer-networks Vendor BATCH bouncer-networks type contrib/clients: add note about bouncer-networks Add channel status service command Add support for IRCv3 setname doc/getting-started: s/Freenode/Libera Chat/ Allow networks to be disabled Broadcast BOUNCER notifications to all downstream connections Fix typo in BOUNCER notifications: s/status/state/ Reject JOIN with invalid channel names Send placeholder when no network/channel is returned by BouncerServ Forward unknown commands to upstream in single-upstream mode doc/ext/bouncer-networks: fix typo Implement CHATHISTORY TARGETS Prune detached channels from CHATHISTORY TARGETS Add downstreamConn.SendBatch helper Make user MODE commands fail in multi-upstream mode Don't suggest users to /motd in multi-upstream mode doc/soju.1: explain http-origin defaults contrib/clients: add reference to Weechat script Add support for account-tag Add support for utf8-only Forward LUSERS and STATS messages after initial registration Unify downstream PRIVMSG and NOTICE handling Allow admins to broadcast message to all bouncer users doc/soju.1: document bouncer-wide broadcasts Disallow '$' in nicks readme: list dependencies Add per-user realname setting Only update realname if specified in "user udpate" Merge "change-password" into "user update" doc/soju.1: improve "user create" docs Introduce user.updateUser ci: add gofmt check contrib/clients: sort alphabetically and wrap lines Pass-through CLIENTTAGDENY in ISUPPORT go fmt: add go:build tags Don't send network notification when removed Split unmarshalEntity into two functions Don't require upstream to be connected for CHATHISTORY Send empty history for service Upgrade dependencies delthas (2): service: Introduce network quote contrib/clients: Mention Hexchat