Skip to content


Choose a tag to compare
@slingamn slingamn released this 29 May 19:30
· 262 commits to master since this release

We're pleased to be publishing v2.10.0, a new stable release.

This release contains no changes to the config file format or database file format.

Many thanks to @csmith, @FiskFan1999, @Mikaela, @progval, and @thesamesam for contributing patches, and to @emersion, @eskimo, @FiskFan1999, @jigsy1, @Mikaela, @mogad0n, @progval, and @xnaas for reporting issues and helping test.

Config changes

  • For better interoperability with Goguma, the recommended value of history.chathistory-maxmessages has been increased to 1000 (previously 100) (#1919)


  • Persistent voice (AMODE +v) in a channel is now treated as a permanent invite (i.e. overriding +i on the channel) (#1901, thanks @eskimo!)
  • If you are +R, sending a direct message to an anonymous user allows them to send you replies (#1687, #1688, thanks @Mikaela and @progval!)
  • 0 is no longer valid as a nickname or account name, with a grandfather exception if it was registered on a previous version of Ergo (#1896)
  • Implemented the ratified version of the bot mode spec; the tag name is now bot instead of draft/bot (#1938)
  • Privileged WHOX on a user with multiclient shows an arbitrarily chosen client IP address, comparable to WHO (#1897)
  • SAREGISTER is allowed even under DEFCON levels 4 and lower (#1922)
  • Operators with the history capability are now exempted from time cutoff restrictions on history retrieval (#1593, #1955)


  • Added draft/read-marker capability, allowing server-side tracking of read messages for synchronization across multiple clients. (#1926, thanks @emersion!)
  • INFO now includes the server start time (#1895, thanks @xnaas!)
  • Added ACCEPT command modeled on Charybdis/Solanum, allowing +R users to whitelist users who can DM them (#1688, thanks @Mikaela!)
  • Added NS SAVERIFY for operators to manually complete an account verification (#1924, #1952, thanks @tacerus!)


  • Having the samode operator capability made all uses of the KICK command privileged (i.e. overriding normal channel privilege checks); this has been fixed (#1906, thanks @pcho!)
  • Fixed LIST <n always returning no results (#1934, thanks @progval and @mitchr!)
  • NickServ commands are now more clear about when a nickname is unavailable because it was previously registered and unregistered (#1886, thanks @Mikaela!)
  • Fixed KLINE'd clients producing a QUIT snotice without a corresponding CONNECT snotice (#1941, thanks @tacerus, @xnaas!)
  • Fixed incorrect handling of long/multiline 319 RPL_WHOISCHANNELS responses (#1935, thanks @Mikaela!)
  • Fixed LIST returning 403 ERR_NOSUCHCHANNEL for a nonexistent channel; the correct response is an empty list (#1928, thanks @emersion!)
  • Fixed +s ("secret") channels not appearing in LIST even when the client is already a member (#1911, #1923, thanks @jigsy1 and @FiskFan1999!)
  • Fixed a spurious success message in HISTSERV DELETE by always requiring a consistent number of parameters (#1881, #1927, thanks @FiskFan1999!)
  • Sending the empty string as a nickname would not always produce the expected error numeric 431 ERR_NONICKNAMEGIVEN; this has been fixed (#1933, #1936, thanks @kylef!)
  • timestamps are now parsed as pairs of exact integers, not as floats (#1918)


  • Upgraded to Go 1.18 (#1925)
  • Upgraded Alpine version in official Docker image
  • Fixed some issues in the example OpenRC init scripts (#1914, #1920, thanks @thesamesam!)