Skip to content

We've finally made it to v1.0.0! With this release, our list of need-to-haves is rounded out, and we reckon the software's ready for production use in smaller networks. slingamn and I have been working with our contributors and translators to prepare a cracker of a release. Thanks to @csmith our Docker builds have been updated, with automatic rebuilds as we develop the software. Thanks to @bogdomania our translation workflow has been improved a lot.

Highlights include:

  • Optional support for storing and replaying message history with the draft/resume-0.3 capability, the draft IRCv3 CHATHISTORY command, and a custom HISTORY 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.

Thanks to Mauropek, @modinfo, @bogdomania, @Shillos, Tony Chen, and Remini for adding new translations. Thanks to @Ascrod, @bogdomania, @csmith, @jesopo, @jwheare, @remini1998, @enckse, and @iNecas for finding bugs and/or writing new features.

Config Changes

  • allow-custom-enforcement key added under accounts.
  • allow-plaintext-resume key added under server.
  • history section added.
  • identlen key added under limits.
  • login-throttling section added under accounts.
  • max-channels-per-account key added under channels.registration (limiting the number of channels that can be registered).
  • max-channels-per-client key added under channels (limiting the number of channels that can be joined).
  • method key now under accounts now allows the value "optional".
  • Exemption lists now accept localhost as a value, meaning any loopback IPV4, loopback IPV6, or unix domain address.
  • Logging type server has been added, replacing the startup, rehash, and shutdown types.
  • The default logging configuration now logs to stderr only, rather than to both stderr and a file.
  • We no longer listen on port 6668 by default (this fixes Docker installs).


  • 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 automagic datastore creation on oragono run.
  • Added detection and prevention of confusing nicknames, account names, and channel names.
  • 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 @modinfo!).
  • Added new Română (ro) translation (thanks to @bogdomania!).
  • Added new Ελληνικά (el) translation (thanks to @Shillos!).
  • Added new 简体中文 (zh-CN) translation (thanks to Tony Chen and Remini!)).
  • Added proposed IRCv3 capability draft/setname.
  • Added 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.


  • SASL PLAIN logins now log more correctly.
  • Database upgrade failures now provide information about the error that occurred.
  • Halfops can now kick unprivileged users.
  • Idents (sometimes called "usernames") are now restricted to ASCII, similar to other servers.
  • Improved compatibility with ZNC's nickserv module.
  • 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 draft/resume to draft/resume-0.3.
  • When nick ownership is enabled, users can now select which enforcement mechanism to use with their nickname.


  • INVITE: Fixed bug where invited users could not join the channel they were invited to (thanks to @unendingpattern!).
  • capability was accidentally disabled, and is now re-enabled.
  • oragono genpasswd now works when piping input in (fixes Docker installs).
  • 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 (thanks to @remini1998!).
  • Fixed handling of CIDR width in connection limiting/throttling.
  • Fixed incorrect behavior of CHANSERV OP command.
  • Fixed incorrect rejection of nickmasks with Unicode RTL nicknames.
  • Fixed many responses that violated the specifications (thanks to @Ascrod, @bogdomania, @csmith, @jesopo, and @jwheare!).
  • 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.

Internal Notes

  • DLINE and KLINE refactored, and expired bans are now removed from the database.
  • Command-line parsing was upgraded to match modern best practices (thanks to @iNecas!).
  • Direct responses to client commands are now sent "synchronously", bypassing the sendq.
  • Logging system optimised.
  • Services handlers refactored.
  • Translations are now sent to/PR'd from CrowdIn automagically as we develop the software.
Assets 13
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.