Skip to content

Releases: ergochat/ergo

v2.14.0

01 Jul 04:50
v2.14.0
Compare
Choose a tag to compare

We're pleased to be publishing v2.14.0, a new stable release. This release contains primarily bug fixes, with the addition of some new authentication mechanisms for integrating with web clients.

This release includes changes to the config file format, all of which are fully backwards-compatible and do not require updating the file before upgrading. It includes no changes to the database file format.

Many thanks to @al3xandros, donio, @eeeeeta, @emersion, @Eriner, @eskimo, @Herringway, @jwheare, @knolley, @mengzhuo, pathof, @poVoq, @progval, @RNDpacman, and @xnaas for contributing patches, reporting issues, and helping test.

Config changes

  • Added accounts.oauth2 and accounts.jwt-auth blocks for configuring OAuth2 and JWT authentication (#2004)
  • Added protocol and local-address options to accounts.registration.email-verification, to force emails to be sent over IPv4 (or IPv6) or to force the use of a particular source address (#2142)
  • Added limits.realnamelen, a configurable limit on the length of realnames. If unset, no limit is enforced beyond the IRC protocol line length limits (the previous behavior). (#2123, thanks @eskimo!)
  • Added the accept-hostname option to the webirc config block, allowing Ergo to accept hostnames passed from reverse proxies on the WEBIRC line. Note that this will have no effect under the default/recommended configuration, in which cloaks are used instead (#1686, #2146, thanks @RNDpacman!)
  • The default/recommended value of limits.chan-list-modes (the size limit for ban/except/invite lists) was raised to 100 (#2081, #2165, #2167)

Added

  • Added support for the OAUTHBEARER SASL mechanism, allowing Ergo to interoperate with Gamja and an OAuth2 provider (#2004, #2122, thanks @emersion!)
  • Added support for the IRCV3BEARER SASL mechanism, allowing Ergo to accept OAuth2 or JWT bearer tokens (#2158)
  • Added support for the legacy rfc1459 and rfc1459-strict casemappings (#2099, #2159, thanks @xnaas!)
  • The new ergo defaultconfig subcommand prints a copy of the default config file to standard output (#2157, #2160, thanks @al3xandros!)

Fixed

  • Even with allow-truncation: false (the recommended default), some oversized messages were being accepted and relayed with truncation. These messages will now be rejected with 417 ERR_INPUTTOOLONG as expected (#2170)
  • NICK and QUIT from invisible members of auditorium channels are no longer recorded in history (#2133, #2137, thanks @knolley and @poVoq!)
  • If channel registration was disabled, registered channels could become inaccessible after rehash; this has been fixed (#2130, thanks @eeeeeta!)
  • Attempts to use unrecognized SASL mechanisms no longer count against the login throttle, improving compatibility with Pidgin (#2156, thanks donio and pathof!)
  • Fixed database autoupgrade on Windows, which was previously broken due to the use of a colon in the backup filename (#2139, #2140, thanks @Herringway!)
  • Fixed handling of NS CERT ADD <user> <fp> when an unprivileged user invokes it on themself (#2128, #2098, thanks @Eriner!)
  • Fixed missing human-readable trailing parameters for two multiline FAIL messages (#2043, #2162, thanks @jwheare and @progval!)
  • Fixed symbol sent by 353 RPL_NAMREPLY for secret channels (#2144, #2145, thanks savoyard!)

Changed

  • Trying to claim a registered nickname that is also actually in use by another client now produces 433 ERR_NICKNAMEINUSE as expected (#2135, #2136, thanks savoyard!)
  • SAMODE now overrides the enforcement of limits.chan-list-modes (the size limit for ban/except/invite lists) (#2081, #2165)
  • Certain unsuccessful MODE changes no longer send 324 RPL_CHANNELMODEIS and 329 RPL_CREATIONTIME (#2163)
  • Debug logging for environment variable configuration overrides no longer prints the value, only the key (#2129, #2132, thanks @eeeeeta!)

Internal

  • Official release builds use Go 1.22.4
  • Added a linux/riscv64 release (#2172, #2173, thanks @mengzhuo!)

v2.14.0-rc2

16 Jun 08:59
v2.14.0-rc2
bb6c7ee
Compare
Choose a tag to compare
v2.14.0-rc2 Pre-release
Pre-release

Due to the discovery of a bug (predating v2.14.0-rc1), we are releasing a new release candidate for v2.14.0 (the official release should follow within a week or so).

Please see the changelog for v2.14.0-rc1 for other changes since v2.13.1.

Fixed

  • Even with allow-truncation: false (the recommended default), some oversized messages were being accepted and relayed with truncation. These messages will now be rejected with 417 ERR_INPUTTOOLONG as expected (#2170)

v2.14.0-rc1

09 Jun 07:32
v2.14.0-rc1
2aec5e1
Compare
Choose a tag to compare
v2.14.0-rc1 Pre-release
Pre-release

We're pleased to be publishing the release candidate for v2.14.0 (the official release should follow within two weeks or so). This release contains primarily bug fixes, with the addition of some new authentication mechanisms for integrating with web clients.

This release includes changes to the config file format, all of which are fully backwards-compatible and do not require updating the file before upgrading. It includes no changes to the database file format.

Many thanks to @al3xandros, donio, @eeeeeta, @emersion, @Eriner, @eskimo, @Herringway, @jwheare, @knolley, pathof, @poVoq, @progval, @RNDpacman, and @xnaas for contributing patches, reporting issues, and helping test.

Config changes

  • Added accounts.oauth2 and accounts.jwt-auth blocks for configuring OAuth2 and JWT authentication (#2004)
  • Added protocol and local-address options to accounts.registration.email-verification, to force emails to be sent over IPv4 (or IPv6) or to force the use of a particular source address (#2142)
  • Added limits.realnamelen, a configurable limit on the length of realnames. If unset, no limit is enforced beyond the IRC protocol line length limits (the previous behavior). (#2123, thanks @eskimo!)
  • Added the accept-hostname option to the webirc config block, allowing Ergo to accept hostnames passed from reverse proxies on the WEBIRC line. Note that this will have no effect under the default/recommended configuration, in which cloaks are used instead (#1686, #2146, thanks @RNDpacman!)
  • The default/recommended value of limits.chan-list-modes (the size limit for ban/except/invite lists) was raised to 100 (#2081, #2165, #2167)

Added

  • Added support for the OAUTHBEARER SASL mechanism, allowing Ergo to interoperate with Gamja and an OAuth2 provider (#2004, #2122, thanks @emersion!)
  • Added support for the IRCV3BEARER SASL mechanism, allowing Ergo to accept OAuth2 or JWT bearer tokens (#2158)
  • Added support for the legacy rfc1459 and rfc1459-strict casemappings (#2099, #2159, thanks @xnaas!)
  • The new ergo defaultconfig subcommand prints a copy of the default config file to standard output (#2157, #2160, thanks @al3xandros!)

Fixed

  • NICK and QUIT from invisible members of auditorium channels are no longer recorded in history (#2133, #2137, thanks @knolley and @poVoq!)
  • If channel registration was disabled, registered channels could become inaccessible after rehash; this has been fixed (#2130, thanks @eeeeeta!)
  • Attempts to use unrecognized SASL mechanisms no longer count against the login throttle, improving compatibility with Pidgin (#2156, thanks donio and pathof!)
  • Fixed database autoupgrade on Windows, which was previously broken due to the use of a colon in the backup filename (#2139, #2140, thanks @Herringway!)
  • Fixed handling of NS CERT ADD <user> <fp> when an unprivileged user invokes it on themself (#2128, #2098, thanks @Eriner!)
  • Fixed missing human-readable trailing parameters for two multiline FAIL messages (#2043, #2162, thanks @jwheare and @progval!)
  • Fixed symbol sent by 353 RPL_NAMREPLY for secret channels (#2144, #2145, thanks savoyard!)

Changed

  • Trying to claim a registered nickname that is also actually in use by another client now produces 433 ERR_NICKNAMEINUSE as expected (#2135, #2136, thanks savoyard!)
  • SAMODE now overrides the enforcement of limits.chan-list-modes (the size limit for ban/except/invite lists) (#2081, #2165)
  • Certain unsuccessful MODE changes no longer send 324 RPL_CHANNELMODEIS and 329 RPL_CREATIONTIME (#2163)
  • Debug logging for environment variable configuration overrides no longer prints the value, only the key (#2129, #2132, thanks @eeeeeta!)

Internal

  • Official release builds use Go 1.22.4

v2.13.1

06 May 06:57
v2.13.1
fb595fa
Compare
Choose a tag to compare

Ergo 2.13.1 is a bugfix release, fixing an exploitable deadlock that could lead to a denial of service. We regret the oversight.

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

Security

  • Fixed an exploitable deadlock that could lead to a denial of service (#2149)

Internal

  • Official release builds use Go 1.22.2

v2.13.0

14 Jan 22:48
v2.13.0
Compare
Choose a tag to compare

We're pleased to be publishing v2.13.0, a new stable release. This is a bugfix release that fixes some issues, including a crash.

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

Many thanks to @dallemon, @jwheare, @Mikaela, @nealey, and @Sheikah45 for contributing patches, reporting issues, and helping test.

Fixed

  • Fixed a (hopefully rare) crash when persisting always-on client statuses (#2113, #2117, thanks @Sheikah45!)
  • Fixed not being able to message channels with / (or the configured RELAYMSG separator) in their names (#2114, thanks @Mikaela!)
  • Verification emails now always include a Message-ID header, improving compatibility with Gmail (#2108, #2110)
  • Improved human-readable description of REDACT_FORBIDDEN (#2101, thanks @jwheare!)

Removed

Internal

  • Upgraded the Docker base image from Alpine 3.13 to 3.19. The resulting images are incompatible with Docker 19.x and lower (all currently non-EOL Docker versions should be supported). (#2103)
  • Official release builds use Go 1.21.6

v2.13.0-rc1

07 Jan 06:08
v2.13.0-rc1
9d388d8
Compare
Choose a tag to compare
v2.13.0-rc1 Pre-release
Pre-release

We're pleased to be publishing the release candidate for v2.13.0 (the official release should follow within a week or so). This is a bugfix release that fixes some issues, including a crash.

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

Many thanks to @dallemon, @jwheare, @Mikaela, and @Sheikah45 for contributing patches, reporting issues, and helping test.

Fixed

  • Fixed a (hopefully rare) crash when persisting always-on client statuses (#2113, #2117, thanks @Sheikah45!)
  • Fixed not being able to message channels with / (or the configured RELAYMSG separator) in their names (#2114, thanks @Mikaela!)
  • Verification emails now always include a Message-ID header, improving compatibility with Gmail (#2108, #2110)
  • Improved human-readable description of REDACT_FORBIDDEN (#2101, thanks @jwheare!)

Removed

Internal

  • Upgraded the Docker base image from Alpine 3.13 to 3.19. The resulting images are incompatible with Docker 19.x and lower (all currently non-EOL Docker versions should be supported). (#2103)
  • Official release builds use Go 1.21.5

v2.12.0

11 Oct 13:58
v2.12.0
Compare
Choose a tag to compare

We're pleased to be publishing v2.12.0, a new stable release. This is another bugfix release aimed at improving client compatibility and keeping up with the IRCv3 specification process.

This release includes changes to the config file format, one of which is a compatibility break: if you were using accounts.email-verification.blacklist-regexes, you can restore the previous functionality by renaming blacklist-regexes to address-blacklist and setting the additional key address-blacklist-syntax: regex. See default.yaml for an example; for more details, see the "Changed" section below.

This release includes a database change. If you have datastore.autoupgrade set to true in your configuration, it will be automatically applied when you restart Ergo. Otherwise, you can update the database manually by running ergo upgradedb (see the manual for complete instructions).

Many thanks to @adsr, @avollmerhaus, @csmith, @EchedeyLR, @emersion, @eskimo, @julio-b, knolle, @KoxSosen, @Mikaela, @mogad0n, and @progval for contributing patches, reporting issues, and helping test.

Config changes

  • Removed accounts.email-verification.blacklist-regexes in favor of address-blacklist, address-blacklist-syntax, and address-blacklist-file. See the "Changed" section below for the semantics of these new keys. (#1997, #2088)
  • Added implicit-tls (TLS from the first byte) support for MTAs (#2048, #2049, thanks @EchedeyLR!)

Fixed

  • Fixed an edge case under allow-truncation: true (the recommended default is false) where Ergo could truncate a message in the middle of a UTF-8 codepoint (#2074)
  • Fixed CHATHISTORY TARGETS being sent in a batch even without negotiation of the batch capability (#2066, thanks @julio-b!)
  • Errors from /REHASH are now properly sanitized before being sent to the user, fixing an edge case where they would be dropped (#2031, thanks @eskimo!
  • Fixed some edge cases in auto-away aggregation (#2044)
  • Fixed a FAIL code sent by draft/account-registration (#2092, thanks @progval!)
  • Fixed a socket leak in the ident client (default/recommended configurations of Ergo disable ident and are not affected by this issue) (#2089)

Changed

  • Bouncer reattach from an "insecure" session is no longer disallowed. We continue to recommend that operators preemptively disable all insecure transports, such as plaintext listeners (#2013)
  • Email addresses are now converted to lowercase before checking them against the blacklist (#1997, #2088)
  • The default syntax for the email address blacklist is now "glob" (expressions with * and ? as wildcard characters), as opposed to the full Go regular expression syntax. To enable full regular expression syntax, set address-blacklist-syntax: regex.
  • Due to line length limitations, some capabilities are now hidden from clients that only support version 301 CAP negotiation. To the best of our knowledge, all clients that support these capabilities also support version 302 CAP negotiation, rendering this moot (#2068)
  • The default/recommended configuration now advertises the SCRAM-SHA-256 SASL method. We still do not recommend using this method in production. (#2032)
  • Improved KILL messages (#2053, #2041, thanks @mogad0n!)

Added

Internal

  • Release builds are now statically linked by default. This should not affect normal chat operations, but may disrupt attempts to connect to external services (e.g. MTAs) that are configured using a hostname that relies on libc's name resolution behavior. To restore the old behavior, build from source with CGO_ENABLED=1. (#2023)
  • Upgraded to Go 1.21 (#2045, #2084); official release builds use Go 1.21.3, which includes a fix for CVE-2023-44487
  • The default make target is now build (which builds an ergo binary in the working directory) instead of install (which builds and installs an ergo binary to ${GOPATH}/bin/ergo). Take note if building from source, or testing Ergo in development! (#2047)
  • make irctest now depends on make install, in an attempt to ensure that irctest runs against the intended development version of Ergo (#2047)

v2.12.0-rc1

18 Sep 03:16
v2.12.0-rc1
Compare
Choose a tag to compare
v2.12.0-rc1 Pre-release
Pre-release

We're pleased to be publishing the release candidate for v2.12.0 (the official release should follow within a few weeks). This is another bugfix release aimed at improving client compatibility and keeping up with the IRCv3 specification process.

This release includes changes to the config file format, one of which is a compatibility break: if you were using accounts.email-verification.blacklist-regexes, you can restore the previous functionality by renaming blacklist-regexes to address-blacklist and setting the additional key address-blacklist-syntax: regex. See default.yaml for an example; for more details, see the "Changed" section below.

This release includes a database change. If you have datastore.autoupgrade set to true in your configuration, it will be automatically applied when you restart Ergo. Otherwise, you can update the database manually by running ergo upgradedb (see the manual for complete instructions).

Many thanks to @adsr, @avollmerhaus, @csmith, @EchedeyLR, @emersion, @eskimo, @julio-b, knolle, @KoxSosen, @mogad0n, and @progval for contributing patches, reporting issues, and helping test.

Config changes

  • Removed accounts.email-verification.blacklist-regexes in favor of address-blacklist, address-blacklist-syntax, and address-blacklist-file. See the "Changed" section below for the semantics of these new keys. (#1997, #2088)
  • Added implicit-tls (TLS from the first byte) support for MTAs (#2048, #2049, thanks @EchedeyLR!)

Fixed

  • Fixed an edge case under allow-truncation: true (the recommended default is false) where Ergo could truncate a message in the middle of a UTF-8 codepoint (#2074)
  • Fixed CHATHISTORY TARGETS being sent in a batch even without negotiation of the batch capability (#2066, thanks @julio-b!)
  • Errors from /REHASH are now properly sanitized before being sent to the user, fixing an edge case where they would be dropped (#2031, thanks @eskimo!
  • Fixed some edge cases in auto-away aggregation (#2044)
  • Fixed a socket leak in the ident client (default/recommended configurations of Ergo disable ident and are not affected by this issue) (#2089)

Changed

  • Bouncer reattach from an "insecure" session is no longer disallowed. We continue to recommend that operators preemptively disable all insecure transports, such as plaintext listeners (#2013)
  • Email addresses are now converted to lowercase before checking them against the blacklist (#1997, #2088)
  • The default syntax for the email address blacklist is now "glob" (expressions with * and ? as wildcard characters), as opposed to the full Go regular expression syntax. To enable full regular expression syntax, set address-blacklist-syntax: regex.
  • Due to line length limitations, some capabilities are now hidden from clients that only support version 301 CAP negotiation. To the best of our knowledge, all clients that support these capabilities also support version 302 CAP negotiation, rendering this moot (#2068)
  • The default/recommended configuration now advertises the SCRAM-SHA-256 SASL method. We still do not recommend using this method in production. (#2032)
  • Improved KILL messages (#2053, #2041, thanks @mogad0n!)

Added

Internal

  • Release builds are now statically linked by default. This should not affect normal chat operations, but may disrupt attempts to connect to external services (e.g. MTAs) that are configured using a hostname that relies on libc's name resolution behavior. To restore the old behavior, build from source with CGO_ENABLED=1. (#2023)
  • Upgraded to Go 1.21 (#2045, #2084)
  • The default make target is now build (which builds an ergo binary in the working directory) instead of install (which builds and installs an ergo binary to ${GOPATH}/bin/ergo). Take note if building from source, or testing Ergo in development! (#2047)
  • make irctest now depends on make install, in an attempt to ensure that irctest runs against the intended development version of Ergo (#2047)

v2.11.1

22 Jan 21:23
v2.11.1
Compare
Choose a tag to compare

Ergo 2.11.1 is a bugfix release, fixing a denial-of-service issue in our websocket implementation. We regret the oversight.

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

Security

  • Fixed a denial-of-service issue affecting websocket clients (#2039)

v2.11.0

25 Dec 07:30
v2.11.0
1e1acda
Compare
Choose a tag to compare

We're pleased to be publishing v2.11.0, a new stable release. This is another bugfix release aimed at improving client compatibility and keeping up with the IRCv3 specification process.

This release includes changes to the config file format, all of which are fully backwards-compatible and do not require updating the file before upgrading. It includes no changes to the database file format.

Many thanks to dedekro, @emersion, @eskimo, @FiskFan1999, hauser, @jwheare, @kingter-sutjiadi, knolle, @Mikaela, @mogad0n, @PeGaSuS-Coder, and @progval for contributing patches, reporting issues, and helping test.

Config changes

  • Added fakelag.command-budgets, which allows each client session a limited number of specific commands that are exempt from fakelag. This improves compatibility with Goguma in particular. For the current recommended default, see default.yaml (#1978, thanks @emersion!)
  • The recommended value of server.casemapping is now ascii instead of precis. PRECIS remains fully supported; if you are already running an Ergo instance, we do not recommend changing the value unless you are confident that your existing users are not relying on non-ASCII nicknames and channel names. (#1718)

Changed

  • Network services like NickServ now appear in WHO responses where applicable (#1850, thanks @emersion!)
  • The extended-monitor capability now appears under its ratified name (#2006, thanks @progval!)
  • TAGMSG no longer receives automatic RPL_AWAY responses (#1983, thanks @eskimo!)
  • UBAN now states explicitly that bans without a time limit have "indefinite" duration (#1988, thanks @mogad0n!)

Fixed

  • WHO with a bare nickname as an argument now shows invisible users, comparable to WHOIS (#1991, thanks @emersion!)
  • MySQL did not work on 32-bit architectures; this has been fixed (#1969, thanks hauser!)
  • Fixed the name of the CHATHISTORY 005 token (#2008, #2009, thanks @emersion!)
  • Fixed handling of the address ::1 in WHOX output (#1980, thanks knolle!)
  • Fixed handling of AWAY with an empty parameter (the de facto standard is to treat as a synonym for no parameter, which means "back") (#1996, thanks @emersion, @jwheare!)
  • Fixed incorrect handling of some invalid modes in CS AMODE (#2002, thanks @eskimo!)
  • Fixed incorrect help text for NS SAVERIFY (#2021, thanks @FiskFan1999!)

Added

  • Added the draft/persistence capability and associated PERSISTENCE command. This is a first attempt to standardize Ergo's "always-on" functionality so that clients can interact with it programmatically. (#1982)
  • Sending SIGUSR1 to the Ergo process now prints a full goroutine stack dump to stderr, allowing debugging even when the HTTP pprof listener is disabled (#1975)

Internal

  • Upgraded to Go 1.19; this makes further architecture-specific bugs like #1969 much less likely (#1987, #1989)
  • The test suite is now parallelized (#1976, thanks @progval!)