v1.0.0-rc1 - Almost ready!
Our v1.0.0 is finally here! Well, almost. The final v1.0.0 should be released in a week or two, after our last bits of testing is complete and the documentation has been double and triple-checked. This version rounds out most of our need-to-haves, and leaves us with a bunch of nice-to-haves that we'll be looking at going forward. Thanks to all of our amazing translators and contributors for the work they've done this release (we'll have a proper thanks section when v1.0.0 drops).
Highlights include:
- Support for storing and replaying message history with: the
draft/resume-0.3
capability, theCHATHISTORY
command, and a customHISTORY
command. - Better detection of confusing nick/account/channel names.
- User-customizable nickname protection methods.
- An account-only mode in which all clients must have an account and login to it (using SASL) before they can join the server.
Config Changes
allow-custom-enforcement
key added underaccounts
.allow-plaintext-resume
key added underserver
.history
section added.identlen
key added underlimits
.login-throttling
section added underaccounts
.method
key now underaccounts
now allows the value"optional"
.- Logging type
server
has been added, replacing thestartup
,rehash
, andshutdown
types. - We no longer listen on port
6668
by default (this fixes Docker installs). - The default logging configuration now logs to stderr only, rather than to both stderr and a file.
max-channels-per-client
key added underchannels
(limiting the number of channels that can be joined).max-channels-per-account
key added underchannels.registration
(limiting the number of channels that can be registered).- Exemption lists now accept
localhost
as a value, meaning any loopback IPV4, loopback IPV6, or unix domain address.
Security
- Added a SASL-only mode in which all clients must authenticate with SASL.
- Added login throttling as a hardening measure against password guessing.
- Configurable limits are imposed on how many channels clients can join or register.
Added
- Added automagic datastore creation on
oragono run
. - Added limited message history for connection resuming (to be extended in future).
- Added new Español (es) translation (thanks to Mauropek!)).
- Added new Polski (pl) translation (thanks to Sebastian Korotkiewicz (modinfi)!)).
- Added new Română (ro) translation (thanks to Bogdan Mințoi!)).
- Added new Ελληνικά (el) translation (thanks to Nicholas Kyriakides (Shillos)!)).
- Added new 简体中文 (zh-CN) translation (thanks to Tony Chen and Remini!)).
- Added new subcommands to
NICKSERV
, including:PASSWD
to change account passwords.ENFORCE
to set a specific enforcement mechanism on your nick.SAREGISTER
to allow operators to manually create new user accounts.
- Added Unicode confusable detection and prevention when changing nicknames and registering accounts.
- Added proposed IRCv3 capability
draft/setname
.
Changed
SASL PLAIN
logins now log more correctly.- Database upgrade failures now provide information about the error that occurred.
- Idents (sometimes called "usernames") are now restricted to ASCII, similar to other servers.
- In addition to the founder, now auto-ops (halfop and higher) automatically bypass channel join restrictions.
- Log lines now display time down to milliseconds, instead of just seconds.
- Updated all translation files (thanks to our amazing translators!).
- Updated proposed IRCv3 capability to version
draft/resume-0.3
. - When nick ownership is enabled, users can now select which enforcement mechanism to use with their nickname.
- Improved compatibility with ZNC's nickserv module.
- Halfops can now kick unprivileged users.
Removed
Fixed
oragono.io/maxline
capability was accidentally disabled, now re-enabled.INVITE
: Fixed bug where invited users could not join the channel they were invited to.PRIVMSG
: Messages sent to multiple clients (such as channel messages) now share the same timestamp (previously each client got a very slightly different time).WHOIS
: Now responds properly for NickServ, ChanServ, etc.- Channel names with right-to-left characters are now casefolded correctly.
- Fixed incorrect rejection of nickmasks with Unicode RTL nicknames.
- Fixed nickname sync issue which could cause clients to fail to see each other.
- Invalid
ISUPPORT
tokens are now explicitly rejected. - Made
server-time
timestamp format more consistent and safer. - Oragono now exits with status (1) if it fails to start.
- Prevent logging in multiple times when using
/NS IDENTIFY
. - Prevented the db handler from automagically creating the database without initializing it (thanks @enckse!). We also now automatically create the datastore on
run
. - Updated internal command line parsing (thanks @iNecas!).
oragono genpasswd
now works when piping input in (fixes Docker installs).- Fixed handling of CIDR width in connection limiting/throttling.
- Fixed many responses that violated the specifications (thanks to Ascrod, bogdomania, csmith, jesopo, jwheare).
- Fixed incorrect behavior of
CHANSERV OP
command.
Internal Notes
DLINE
andKLINE
refactored, and expired bans are now removed from the database.- Logging system optimised.
- Services handlers refactored.
- Translations are now sent to/PR'd from CrowdIn automagically as we develop the software.
- Direct responses to client commands are now sent "synchronously", bypassing the sendq.