<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-08-15T13:37:25+00:00</updated><id>/feed.xml</id><entry><title type="html">Anope 2.1.26 Release</title><link href="/news/2026/anope-2126-release.html" rel="alternate" type="text/html" title="Anope 2.1.26 Release" /><published>2026-08-15T00:00:00+00:00</published><updated>2026-08-15T00:00:00+00:00</updated><id>/news/2026/anope-2126-release</id><content type="html" xml:base="/news/2026/anope-2126-release.html"><![CDATA[<p>Anope 2.1.26 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>
    <p>Support for multi-part (hybrid HTML/text) and localised emails has been added. If you are using a custom email message you will need to move them to an external file and update your email block with the new sub-blocks for each email type. Otherwise, you can just replace the config with that from the example config.</p>
  </li>
  <li>
    <p>The hostserv/setall command has been removed. You should instead specify the SYNC flag to the hostserv/set command to synchronise vhosts across an entire command.</p>
  </li>
</ul>

<h3 id="general-changes">General Changes</h3>

<ul>
  <li>
    <p>Added support for using UNIX-style line endings with sendmail-incompatible mailers like nullmailer.</p>
  </li>
  <li>
    <p>Added the <code class="language-plaintext highlighter-rouge">{expiry}</code> template variable to the registration, email change, and password reset emails.</p>
  </li>
  <li>
    <p>Fixed a crash in the <code class="language-plaintext highlighter-rouge">chanserv/suspend</code> and <code class="language-plaintext highlighter-rouge">nickserv/suspend</code> commands.</p>
  </li>
  <li>
    <p>Fixed checking whether a nickname is a guest nickname.</p>
  </li>
  <li>
    <p>Redocumented the email configuration.</p>
  </li>
</ul>

<h3 id="developer-changes">Developer Changes</h3>

<ul>
  <li>Added <code class="language-plaintext highlighter-rouge">Mail::Template</code> for sending templatable and translatable mail messages.</li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.25...2.1.26">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">99b8dbbbfb22199748a42d155b685ee1acc16b1d862dd59da223a09f2fc0f264</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.26.tar.gz">anope-2.1.26.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">6165c2c0f89842df15e1daf9deb945da0c678d73fe07c6e648dc90de17591a9c</code> <a href="https://github.com/anope/anope/releases/download/2.1.26/anope-2.1.26.exe">anope-2.1.26.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.26 has been released. This is a development release. The most notable changes are: Breaking Changes Support for multi-part (hybrid HTML/text) and localised emails has been added. If you are using a custom email message you will need to move them to an external file and update your email block with the new sub-blocks for each email type. Otherwise, you can just replace the config with that from the example config. The hostserv/setall command has been removed. You should instead specify the SYNC flag to the hostserv/set command to synchronise vhosts across an entire command. General Changes Added support for using UNIX-style line endings with sendmail-incompatible mailers like nullmailer. Added the {expiry} template variable to the registration, email change, and password reset emails. Fixed a crash in the chanserv/suspend and nickserv/suspend commands. Fixed checking whether a nickname is a guest nickname. Redocumented the email configuration. Developer Changes Added Mail::Template for sending templatable and translatable mail messages. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: 99b8dbbbfb22199748a42d155b685ee1acc16b1d862dd59da223a09f2fc0f264 anope-2.1.26.tar.gz SHA256 Sum: 6165c2c0f89842df15e1daf9deb945da0c678d73fe07c6e648dc90de17591a9c anope-2.1.26.exe]]></summary></entry><entry><title type="html">Anope 2.1.25 Release</title><link href="/news/2026/anope-2125-release.html" rel="alternate" type="text/html" title="Anope 2.1.25 Release" /><published>2026-07-10T00:00:00+00:00</published><updated>2026-07-10T00:00:00+00:00</updated><id>/news/2026/anope-2125-release</id><content type="html" xml:base="/news/2026/anope-2125-release.html"><![CDATA[<p>Anope 2.1.25 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="general-changes">General Changes</h3>

<ul>
  <li>
    <p>Added a cooldown timer to <code class="language-plaintext highlighter-rouge">hs_request</code> for after a vhost is approved or rejected.</p>
  </li>
  <li>
    <p>Added environment variables for configuring hashing algorithms to <code class="language-plaintext highlighter-rouge">anope-mkpasswd</code>.</p>
  </li>
  <li>
    <p>Added support for building with position-independent code on supported platforms.</p>
  </li>
  <li>
    <p>Added support for prioritising WHOIS entries in <code class="language-plaintext highlighter-rouge">ns_set_misc</code>.</p>
  </li>
  <li>
    <p>Documented the <code class="language-plaintext highlighter-rouge">ns_flexible</code> and <code class="language-plaintext highlighter-rouge">ns_monospace</code> account options.</p>
  </li>
  <li>
    <p>Dropped support for the <code class="language-plaintext highlighter-rouge">+draft/reply</code> tag in favour of the non-draft variant.</p>
  </li>
  <li>
    <p>Fixed a crash on shutdown when trying to send a global without an uplink.</p>
  </li>
  <li>
    <p>Fixed a crash when a temporary ban expires.</p>
  </li>
  <li>
    <p>Fixed a crash when trying to upgrade TLS fingerprints from an older algorithm.</p>
  </li>
  <li>
    <p>Fixed a potential crash caused by unusual timestamps being passed to <code class="language-plaintext highlighter-rouge">Anope::strftime</code>.</p>
  </li>
  <li>
    <p>Fixed confirming accounts when <code class="language-plaintext highlighter-rouge">{ns_register}:registration</code> is set to “admin”.</p>
  </li>
  <li>
    <p>Fixed edge cases relating to IRCd-sent account names.</p>
  </li>
  <li>
    <p>Fixed extra CMake arguments from <code class="language-plaintext highlighter-rouge">./Config</code> being ignored.</p>
  </li>
  <li>
    <p>Fixed flag migration sometimes giving users higher privileges than they had originally when a flag provides multiple privileges.</p>
  </li>
  <li>
    <p>Fixed not being able to update the description of a flags access entry.</p>
  </li>
  <li>
    <p>Fixed not migrating the last seen time with an access entry.</p>
  </li>
  <li>
    <p>Fixed not using the extra CMake arguments from <code class="language-plaintext highlighter-rouge">./Config</code>.</p>
  </li>
  <li>
    <p>Fixed some command descriptions not being imperative statements.</p>
  </li>
  <li>
    <p>Fixed some help messages that did not reflect the default flag/level/xop access when changed in the configuration.</p>
  </li>
  <li>
    <p>Fixed the default memory hardness in the <code class="language-plaintext highlighter-rouge">enc_argon2</code> module.</p>
  </li>
  <li>
    <p>Improved configuring paths at build time.</p>
  </li>
  <li>
    <p>Improved help output for the <code class="language-plaintext highlighter-rouge">nickserv/set/timezone</code> command.</p>
  </li>
  <li>
    <p>Improved importing databases from Atheme.</p>
  </li>
  <li>
    <p>Improved support for reproducible builds.</p>
  </li>
  <li>
    <p>Redocumented the <code class="language-plaintext highlighter-rouge">nickserv/set/keepmodes</code> command.</p>
  </li>
  <li>
    <p>Separated the delay between nickname registrations from the delay between grouping nicknames.</p>
  </li>
  <li>
    <p>Updated the Portuguese translation.</p>
  </li>
  <li>
    <p>Updated the Romanian translation.</p>
  </li>
</ul>

<h3 id="developer-changes">Developer Changes</h3>

<ul>
  <li>
    <p>Added <code class="language-plaintext highlighter-rouge">Block::GetBlocks</code> to allow using a range-based for loop to iterate config blocks.</p>
  </li>
  <li>
    <p>Added an event to <code class="language-plaintext highlighter-rouge">IRCDProto</code> to populate common tags onto a S2S message.</p>
  </li>
  <li>
    <p>Added automated testing on InspIRCd, Solanum, and UnrealIRCd using irctest.</p>
  </li>
  <li>
    <p>Added support for adding ajoin entries from modules.</p>
  </li>
  <li>
    <p>Changed various configuration block index fields to use an unsigned integer.</p>
  </li>
  <li>
    <p>Changed vendored libraries to be built as static libraries and linked into the modules that require them.</p>
  </li>
  <li>
    <p>Simplified timer repeat logic by allowing tick events to return bool to control whether the timer continues running.</p>
  </li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.24...2.1.25">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">d0837d752ced2cc3ad4a1fe84c7eb89ef2c6185634c4548b4eeb5ac77ae29621</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.25.tar.gz">anope-2.1.25.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">25e5b243dfd43260694e8a6fc32d1acc8bad78200b8c63f74482150421e1d751</code> <a href="https://github.com/anope/anope/releases/download/2.1.25/anope-2.1.25.exe">anope-2.1.25.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.25 has been released. This is a development release. The most notable changes are: General Changes Added a cooldown timer to hs_request for after a vhost is approved or rejected. Added environment variables for configuring hashing algorithms to anope-mkpasswd. Added support for building with position-independent code on supported platforms. Added support for prioritising WHOIS entries in ns_set_misc. Documented the ns_flexible and ns_monospace account options. Dropped support for the +draft/reply tag in favour of the non-draft variant. Fixed a crash on shutdown when trying to send a global without an uplink. Fixed a crash when a temporary ban expires. Fixed a crash when trying to upgrade TLS fingerprints from an older algorithm. Fixed a potential crash caused by unusual timestamps being passed to Anope::strftime. Fixed confirming accounts when {ns_register}:registration is set to “admin”. Fixed edge cases relating to IRCd-sent account names. Fixed extra CMake arguments from ./Config being ignored. Fixed flag migration sometimes giving users higher privileges than they had originally when a flag provides multiple privileges. Fixed not being able to update the description of a flags access entry. Fixed not migrating the last seen time with an access entry. Fixed not using the extra CMake arguments from ./Config. Fixed some command descriptions not being imperative statements. Fixed some help messages that did not reflect the default flag/level/xop access when changed in the configuration. Fixed the default memory hardness in the enc_argon2 module. Improved configuring paths at build time. Improved help output for the nickserv/set/timezone command. Improved importing databases from Atheme. Improved support for reproducible builds. Redocumented the nickserv/set/keepmodes command. Separated the delay between nickname registrations from the delay between grouping nicknames. Updated the Portuguese translation. Updated the Romanian translation. Developer Changes Added Block::GetBlocks to allow using a range-based for loop to iterate config blocks. Added an event to IRCDProto to populate common tags onto a S2S message. Added automated testing on InspIRCd, Solanum, and UnrealIRCd using irctest. Added support for adding ajoin entries from modules. Changed various configuration block index fields to use an unsigned integer. Changed vendored libraries to be built as static libraries and linked into the modules that require them. Simplified timer repeat logic by allowing tick events to return bool to control whether the timer continues running. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: d0837d752ced2cc3ad4a1fe84c7eb89ef2c6185634c4548b4eeb5ac77ae29621 anope-2.1.25.tar.gz SHA256 Sum: 25e5b243dfd43260694e8a6fc32d1acc8bad78200b8c63f74482150421e1d751 anope-2.1.25.exe]]></summary></entry><entry><title type="html">Anope 2.0.20 Release</title><link href="/news/2026/anope-2020-release.html" rel="alternate" type="text/html" title="Anope 2.0.20 Release" /><published>2026-05-26T00:00:00+00:00</published><updated>2026-05-26T00:00:00+00:00</updated><id>/news/2026/anope-2020-release</id><content type="html" xml:base="/news/2026/anope-2020-release.html"><![CDATA[<p>Anope 2.0.20 has been released. This is a stable release which fixes various bugs that have been found since the previous release.</p>

<p>The notable changes include:</p>

<ul>
  <li>Fixed an escaped value that wasn’t escaped enough in chanstats.</li>
  <li>Fixed not having a handler for the FNAME message on InspIRCd.</li>
  <li>Fixed os_stats reporting the SGLine expiry time as the SQLine expiry time.</li>
  <li>Fixed the DNs and search filters not being escaped correctly in the ldap_authentication and ldap_oper modules.</li>
  <li>Modernised the advice in docs/LANGUAGE regarding the installation of language packs.</li>
</ul>

<p>All users are recommended to upgrade.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">646cc6d24dea62fac54285780ebb05ad794a3dbabe6aca1ae6c69a939b0a0734</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.0.20.tar.gz">anope-2.0.20.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">86354a758eb0c1581fb6bbc1b4f77c2857629dfa059cd2a4aacc83492166c496</code> <a href="https://github.com/anope/anope/releases/download/2.0.20/anope-2.0.20.exe">anope-2.0.20.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.0.20 has been released. This is a stable release which fixes various bugs that have been found since the previous release. The notable changes include: Fixed an escaped value that wasn’t escaped enough in chanstats. Fixed not having a handler for the FNAME message on InspIRCd. Fixed os_stats reporting the SGLine expiry time as the SQLine expiry time. Fixed the DNs and search filters not being escaped correctly in the ldap_authentication and ldap_oper modules. Modernised the advice in docs/LANGUAGE regarding the installation of language packs. All users are recommended to upgrade. SHA256 Sum: 646cc6d24dea62fac54285780ebb05ad794a3dbabe6aca1ae6c69a939b0a0734 anope-2.0.20.tar.gz SHA256 Sum: 86354a758eb0c1581fb6bbc1b4f77c2857629dfa059cd2a4aacc83492166c496 anope-2.0.20.exe]]></summary></entry><entry><title type="html">Anope 2.1.24 Release</title><link href="/news/2026/anope-2124-release.html" rel="alternate" type="text/html" title="Anope 2.1.24 Release" /><published>2026-05-01T00:00:00+00:00</published><updated>2026-05-01T00:00:00+00:00</updated><id>/news/2026/anope-2124-release</id><content type="html" xml:base="/news/2026/anope-2124-release.html"><![CDATA[<p>Anope 2.1.24 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>
    <p>If a database contains duplicate corrupt entries from a prior write failure the oldest ones will now be purged from the database. This is a destructive action so make sure you take a manual backup of your database before upgrading.</p>
  </li>
  <li>
    <p>Removed support for storing the Anope database in Redis. The Redis code was extremely bitrotted, had not been tested in years, and to our knowledge has almost no (if any) users. It is recommended that db_redis users migrate to db_json or db_sql.</p>
  </li>
  <li>
    <p>SQL tables now use versioned prefixes by default. For the SQL database backends the default is <code class="language-plaintext highlighter-rouge">anope21_</code> and for ChanStats the default is <code class="language-plaintext highlighter-rouge">chanstats21_</code>. If you do not have a prefix explicitly set in your config you will need to add one it. Alternatively, you may also want to consider exporting to db_json and re-importing to update your SQL schema for the recent database layout changes.</p>
  </li>
</ul>

<h3 id="changes">Changes</h3>

<ul>
  <li>
    <p>Added some helper methods to <code class="language-plaintext highlighter-rouge">CommandSource</code> to allow quickly translting messages.</p>
  </li>
  <li>
    <p>Changed the Config script to allow multiple dashes in front of options, i.e. <code class="language-plaintext highlighter-rouge">-quick</code> and <code class="language-plaintext highlighter-rouge">--quick</code> are now equivalent.</p>
  </li>
  <li>
    <p>Converted some language strings to use format strings instead of concatenation.</p>
  </li>
  <li>
    <p>Fixed a rare crash in the ns_cert module.</p>
  </li>
  <li>
    <p>Fixed building Anope as a unity build.</p>
  </li>
  <li>
    <p>Fixed the ns_cert module erasing certificate entries if using an old database.</p>
  </li>
  <li>
    <p>Fixed users having the wrong real name in log messages on InspIRCd if it has been previously changed with <code class="language-plaintext highlighter-rouge">CHGNAME</code> or <code class="language-plaintext highlighter-rouge">SETNAME</code>.</p>
  </li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.23...2.1.24">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">db5acf490672b64820b5a1d67c60bfe72309e797e60441a30caf48ac1033e065</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.24.tar.gz">anope-2.1.24.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">030551e12b59cb028f0c8ffea18b1801fe74b5f250c44491c74ee8ce7bac1568</code> <a href="https://github.com/anope/anope/releases/download/2.1.24/anope-2.1.24.exe">anope-2.1.24.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.24 has been released. This is a development release. The most notable changes are: Breaking Changes If a database contains duplicate corrupt entries from a prior write failure the oldest ones will now be purged from the database. This is a destructive action so make sure you take a manual backup of your database before upgrading. Removed support for storing the Anope database in Redis. The Redis code was extremely bitrotted, had not been tested in years, and to our knowledge has almost no (if any) users. It is recommended that db_redis users migrate to db_json or db_sql. SQL tables now use versioned prefixes by default. For the SQL database backends the default is anope21_ and for ChanStats the default is chanstats21_. If you do not have a prefix explicitly set in your config you will need to add one it. Alternatively, you may also want to consider exporting to db_json and re-importing to update your SQL schema for the recent database layout changes. Changes Added some helper methods to CommandSource to allow quickly translting messages. Changed the Config script to allow multiple dashes in front of options, i.e. -quick and --quick are now equivalent. Converted some language strings to use format strings instead of concatenation. Fixed a rare crash in the ns_cert module. Fixed building Anope as a unity build. Fixed the ns_cert module erasing certificate entries if using an old database. Fixed users having the wrong real name in log messages on InspIRCd if it has been previously changed with CHGNAME or SETNAME. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: db5acf490672b64820b5a1d67c60bfe72309e797e60441a30caf48ac1033e065 anope-2.1.24.tar.gz SHA256 Sum: 030551e12b59cb028f0c8ffea18b1801fe74b5f250c44491c74ee8ce7bac1568 anope-2.1.24.exe]]></summary></entry><entry><title type="html">Anope 2.1.23 Release</title><link href="/news/2026/anope-2123-release.html" rel="alternate" type="text/html" title="Anope 2.1.23 Release" /><published>2026-04-01T00:00:00+00:00</published><updated>2026-04-01T00:00:00+00:00</updated><id>/news/2026/anope-2123-release</id><content type="html" xml:base="/news/2026/anope-2123-release.html"><![CDATA[<p>Anope 2.1.23 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="changes">Changes</h3>

<ul>
  <li>
    <p>Added examples to several BotServ commands.</p>
  </li>
  <li>
    <p>Added missing fields to the <code class="language-plaintext highlighter-rouge">RPL_STATSLINKINFO</code> output.</p>
  </li>
  <li>
    <p>Added support for migrating access entries between systems (currently only <code class="language-plaintext highlighter-rouge">chanserv/flags</code> is supported).</p>
  </li>
  <li>
    <p>Added the default levels to the <code class="language-plaintext highlighter-rouge">chanserv/levels</code> DESC help.</p>
  </li>
  <li>
    <p>Changed access listing commands to only show their own access entries unless <code class="language-plaintext highlighter-rouge">ALL</code> is specified.</p>
  </li>
  <li>
    <p>Fixed a non-translatable string which has been marked as translatable.</p>
  </li>
  <li>
    <p>Fixed the missing AUTOLOGIN extension.</p>
  </li>
  <li>
    <p>Fixed translating the help output when the flexible layout is used.</p>
  </li>
  <li>
    <p>Improved the accuracy of the X-line expiry time in <code class="language-plaintext highlighter-rouge">operserv/stats</code>.</p>
  </li>
  <li>
    <p>Updated the Portuguese translation.</p>
  </li>
  <li>
    <p>Updated the Romanian translation.</p>
  </li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.22...2.1.23">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">8847c8cb73214c6fb338e09cc812e5ae43014d762321f0a1e440efa267ff9b53</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.23.tar.gz">anope-2.1.23.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">b519b250cc0c3f9d0d6e5ed7091b5829c95d08d56d2d25c4d7ffa1f3c617b0d7</code> <a href="https://github.com/anope/anope/releases/download/2.1.23/anope-2.1.23.exe">anope-2.1.23.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.23 has been released. This is a development release. The most notable changes are: Changes Added examples to several BotServ commands. Added missing fields to the RPL_STATSLINKINFO output. Added support for migrating access entries between systems (currently only chanserv/flags is supported). Added the default levels to the chanserv/levels DESC help. Changed access listing commands to only show their own access entries unless ALL is specified. Fixed a non-translatable string which has been marked as translatable. Fixed the missing AUTOLOGIN extension. Fixed translating the help output when the flexible layout is used. Improved the accuracy of the X-line expiry time in operserv/stats. Updated the Portuguese translation. Updated the Romanian translation. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: 8847c8cb73214c6fb338e09cc812e5ae43014d762321f0a1e440efa267ff9b53 anope-2.1.23.tar.gz SHA256 Sum: b519b250cc0c3f9d0d6e5ed7091b5829c95d08d56d2d25c4d7ffa1f3c617b0d7 anope-2.1.23.exe]]></summary></entry><entry><title type="html">Anope 2.1.21 Release</title><link href="/news/2026/anope-2121-release.html" rel="alternate" type="text/html" title="Anope 2.1.21 Release" /><published>2026-02-07T00:00:00+00:00</published><updated>2026-02-07T00:00:00+00:00</updated><id>/news/2026/anope-2121-release</id><content type="html" xml:base="/news/2026/anope-2121-release.html"><![CDATA[<p>Anope 2.1.21 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">{fantasy}:fantasycharacter</code> has been replaced with <code class="language-plaintext highlighter-rouge">{fantasy}:prefix</code> which allows multiple-character fantasy prefixes. If you have multiple custom fantasy characters set you should separate them with a space when upgrading your config.</p>
  </li>
  <li>
    <p>The db_json module will now terminate the process if it fails to write the database. This replicates the behaviour previously used by the db_flatfile module.</p>
  </li>
  <li>
    <p>When adding an unregistered user to an access list you must now explicitly specify their hostmask. This prevents accidentally adding a hostmask which is too wide.</p>
  </li>
</ul>

<h3 id="changes">Changes</h3>

<ul>
  <li>
    <p>Added cleaning up of hostmasks when adding them to an access list and <code class="language-plaintext highlighter-rouge">{chanserv}:disallow_malformed_hostmask</code> to allow rejecting them instead.</p>
  </li>
  <li>
    <p>Changed access commands to add the account of a user who is logged in to an account but not using a nickname belonging to that account.</p>
  </li>
  <li>
    <p>Fixed a crash when clearing channel entry messages.</p>
  </li>
  <li>
    <p>Fixed a memory leak when cloning akicks.</p>
  </li>
  <li>
    <p>Fixed cleaning up ban masks.</p>
  </li>
  <li>
    <p>Fixed confirming accounts using the webcpanel.</p>
  </li>
  <li>
    <p>Fixed importing the time a nickname was used from Atheme.</p>
  </li>
  <li>
    <p>Fixed limiting the number of accounts per email address.</p>
  </li>
  <li>
    <p>Fixed locking modes that take a parameter when they are added.</p>
  </li>
  <li>
    <p>Fixed the <code class="language-plaintext highlighter-rouge">chanserv/enforce</code> command erroneously enforcing against channel founders.</p>
  </li>
  <li>
    <p>Fixed the syntax of the <code class="language-plaintext highlighter-rouge">chanserv/suspend</code> command.</p>
  </li>
  <li>
    <p>Fixed the syntax of the <code class="language-plaintext highlighter-rouge">nickserv/suspend</code> command.</p>
  </li>
  <li>
    <p>Improved password rehash detection in the enc_argon2 module.</p>
  </li>
  <li>
    <p>Various minor improvements to how services work internally.</p>
  </li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.20...2.1.21">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">6ea51ebbafbb8919bbb85bfbb0724e9b7fd12f01397f0b2ed8555fd801d23490</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.21.tar.gz">anope-2.1.21.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">cc46333dcfad555c74a0e9b25faf7f2f6f62852860c0f3f36c80f2542ad76b23</code> <a href="https://github.com/anope/anope/releases/download/2.1.21/anope-2.1.21.exe">anope-2.1.21.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.21 has been released. This is a development release. The most notable changes are: Breaking Changes {fantasy}:fantasycharacter has been replaced with {fantasy}:prefix which allows multiple-character fantasy prefixes. If you have multiple custom fantasy characters set you should separate them with a space when upgrading your config. The db_json module will now terminate the process if it fails to write the database. This replicates the behaviour previously used by the db_flatfile module. When adding an unregistered user to an access list you must now explicitly specify their hostmask. This prevents accidentally adding a hostmask which is too wide. Changes Added cleaning up of hostmasks when adding them to an access list and {chanserv}:disallow_malformed_hostmask to allow rejecting them instead. Changed access commands to add the account of a user who is logged in to an account but not using a nickname belonging to that account. Fixed a crash when clearing channel entry messages. Fixed a memory leak when cloning akicks. Fixed cleaning up ban masks. Fixed confirming accounts using the webcpanel. Fixed importing the time a nickname was used from Atheme. Fixed limiting the number of accounts per email address. Fixed locking modes that take a parameter when they are added. Fixed the chanserv/enforce command erroneously enforcing against channel founders. Fixed the syntax of the chanserv/suspend command. Fixed the syntax of the nickserv/suspend command. Improved password rehash detection in the enc_argon2 module. Various minor improvements to how services work internally. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: 6ea51ebbafbb8919bbb85bfbb0724e9b7fd12f01397f0b2ed8555fd801d23490 anope-2.1.21.tar.gz SHA256 Sum: cc46333dcfad555c74a0e9b25faf7f2f6f62852860c0f3f36c80f2542ad76b23 anope-2.1.21.exe]]></summary></entry><entry><title type="html">Anope 2.1.22 Release</title><link href="/news/2026/anope-2122-release.html" rel="alternate" type="text/html" title="Anope 2.1.22 Release" /><published>2026-02-07T00:00:00+00:00</published><updated>2026-02-07T00:00:00+00:00</updated><id>/news/2026/anope-2122-release</id><content type="html" xml:base="/news/2026/anope-2122-release.html"><![CDATA[<p>Anope 2.1.22 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>
    <p>Automatic login using a known SSL fingerprint now requires the <code class="language-plaintext highlighter-rouge">AUTOLOGIN</code> option to be set on accounts with <code class="language-plaintext highlighter-rouge">/NS SET AUTOLOGIN ON</code>. Automatic login is largely obsolete now SASL EXTERNAL exists and is widely supported.</p>
  </li>
  <li>
    <p>Conan 2 is now used for packaging dependencies on Windows. If you are building from source you will need to upgrade Conan.</p>
  </li>
  <li>
    <p>Non-breaking spaces in translatable messages now use 0x1B instead of 0x1A due to recent msgfmt releases treating 0x1A as an EOF character. If you have an out of tree translation you will need to update it.</p>
  </li>
  <li>
    <p>User TLS certificates are now stored in their own <code class="language-plaintext highlighter-rouge">NSCert</code> table instead of as a column in the <code class="language-plaintext highlighter-rouge">NickCore</code> table. If you are reading this information you will need to update your code.</p>
  </li>
</ul>

<h3 id="changes">Changes</h3>

<ul>
  <li>
    <p>Fixed <code class="language-plaintext highlighter-rouge">{botserv}:botmodes</code> erroneously allowing setting non-status modes on channels.</p>
  </li>
  <li>
    <p>Fixed echoing message tags on Solanum.</p>
  </li>
  <li>
    <p>Fixed handling incoming <code class="language-plaintext highlighter-rouge">FIDENT</code> messages on InspIRCd.</p>
  </li>
  <li>
    <p>Fixed matching stacked extended bans on InspIRCd and UnrealIRCd.</p>
  </li>
  <li>
    <p>Fixed parameter modes in <code class="language-plaintext highlighter-rouge">chanserv/mode</code> locks erroneously requiring a parameter to unset a lock.</p>
  </li>
  <li>
    <p>Fixed restoring the object identifier when unserialising objects in db_json.</p>
  </li>
  <li>
    <p>Fixed the consistency of indenting and line wrapping command examples in help output.</p>
  </li>
  <li>
    <p>Redesigned the output of <code class="language-plaintext highlighter-rouge">nickserv/list</code> to show more relevant information.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV LIST *
-NickServ- List of entries matching *:
-NickServ- alice (account: alice)
-NickServ- alice|work (account: alice)
-NickServ- bob -- Unconfirmed (account: bob)
-NickServ- mallory -- Suspended (account: mallory)
-NickServ- End of list - 4/4 matches shown.
</code></pre></div>    </div>
  </li>
  <li>
    <p>The cs_set_misc and ns_set_misc modules now can use a separate title from the command name.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV SET MASTODON @example@mastodon.social
-NickServ- Mastodon for testuser set to @example@mastodon.social
</code></pre></div>    </div>
  </li>
  <li>
    <p>The cs_set_misc and ns_set_misc modules now support validation of user-specified data.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV SET MASTODON example.mastodon.social
-NickServ- Mastodon syntax is invalid.
-NickServ- Syntax: SET MASTODON [@user@host.tld]
</code></pre></div>    </div>
  </li>
  <li>
    <p>The db_atheme module can now import arbitrary metadata to fields from the ns_set_misc module.</p>
  </li>
  <li>
    <p>The local clock will now be checked for synchronisation with the IRCd clock on UnrealIRCd.</p>
  </li>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">nickserv/cert</code> command will now show the time a TLS certificate was created and the nickname of the creator if the <code class="language-plaintext highlighter-rouge">VIEW</code> subcommand is used.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV CERT VIEW
-NickServ- d41d8cd98f00b204e9800998ecf8427e -- created by nick1 at Wed 25 Feb 00:18:50 GMT
</code></pre></div>    </div>
  </li>
  <li>
    <p>The ns_set_misc module can now add account data to the WHOIS output of authenticated users on InspIRCd (with the swhois_ext module) and UnrealIRCd.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/WHOIS nick1
* [nick1] (nick1@example.com): nick1
* [nick1] Mastodon: @example@mastodon.social
* [nick1] irc.example.com :Example-IRC server
...
* [nick1] End of WHOIS list.
</code></pre></div>    </div>
  </li>
  <li>
    <p>The regex_posix module is now available on Windows (using the PCRE2 POSIX compatibility layer).</p>
  </li>
  <li>
    <p>The regex_tre module is now available on Windows.</p>
  </li>
  <li>
    <p>The Windows dependencies have been updated.</p>
  </li>
</ul>

<hr />

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.21...2.1.22">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">9bbba41cf5c67fb56b019835c8b5b799f1fed734cb57d1fd79d58a63cb872d30</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.22.tar.gz">anope-2.1.22.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">54aa679b43c57972b8ee3d051a78fd484d660326eef3fcbb7110b2a483204096</code> <a href="https://github.com/anope/anope/releases/download/2.1.22/anope-2.1.22.exe">anope-2.1.22.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.1.22 has been released. This is a development release. The most notable changes are: Breaking Changes Automatic login using a known SSL fingerprint now requires the AUTOLOGIN option to be set on accounts with /NS SET AUTOLOGIN ON. Automatic login is largely obsolete now SASL EXTERNAL exists and is widely supported. Conan 2 is now used for packaging dependencies on Windows. If you are building from source you will need to upgrade Conan. Non-breaking spaces in translatable messages now use 0x1B instead of 0x1A due to recent msgfmt releases treating 0x1A as an EOF character. If you have an out of tree translation you will need to update it. User TLS certificates are now stored in their own NSCert table instead of as a column in the NickCore table. If you are reading this information you will need to update your code. Changes Fixed {botserv}:botmodes erroneously allowing setting non-status modes on channels. Fixed echoing message tags on Solanum. Fixed handling incoming FIDENT messages on InspIRCd. Fixed matching stacked extended bans on InspIRCd and UnrealIRCd. Fixed parameter modes in chanserv/mode locks erroneously requiring a parameter to unset a lock. Fixed restoring the object identifier when unserialising objects in db_json. Fixed the consistency of indenting and line wrapping command examples in help output. Redesigned the output of nickserv/list to show more relevant information. /NICKSERV LIST * -NickServ- List of entries matching *: -NickServ- alice (account: alice) -NickServ- alice|work (account: alice) -NickServ- bob -- Unconfirmed (account: bob) -NickServ- mallory -- Suspended (account: mallory) -NickServ- End of list - 4/4 matches shown. The cs_set_misc and ns_set_misc modules now can use a separate title from the command name. /NICKSERV SET MASTODON @example@mastodon.social -NickServ- Mastodon for testuser set to @example@mastodon.social The cs_set_misc and ns_set_misc modules now support validation of user-specified data. /NICKSERV SET MASTODON example.mastodon.social -NickServ- Mastodon syntax is invalid. -NickServ- Syntax: SET MASTODON [@user@host.tld] The db_atheme module can now import arbitrary metadata to fields from the ns_set_misc module. The local clock will now be checked for synchronisation with the IRCd clock on UnrealIRCd. The nickserv/cert command will now show the time a TLS certificate was created and the nickname of the creator if the VIEW subcommand is used. /NICKSERV CERT VIEW -NickServ- d41d8cd98f00b204e9800998ecf8427e -- created by nick1 at Wed 25 Feb 00:18:50 GMT The ns_set_misc module can now add account data to the WHOIS output of authenticated users on InspIRCd (with the swhois_ext module) and UnrealIRCd. /WHOIS nick1 * [nick1] (nick1@example.com): nick1 * [nick1] Mastodon: @example@mastodon.social * [nick1] irc.example.com :Example-IRC server ... * [nick1] End of WHOIS list. The regex_posix module is now available on Windows (using the PCRE2 POSIX compatibility layer). The regex_tre module is now available on Windows. The Windows dependencies have been updated. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: 9bbba41cf5c67fb56b019835c8b5b799f1fed734cb57d1fd79d58a63cb872d30 anope-2.1.22.tar.gz SHA256 Sum: 54aa679b43c57972b8ee3d051a78fd484d660326eef3fcbb7110b2a483204096 anope-2.1.22.exe]]></summary></entry><entry><title type="html">Anope 2.0.19 Release</title><link href="/news/2026/anope-2019-release.html" rel="alternate" type="text/html" title="Anope 2.0.19 Release" /><published>2026-01-26T00:00:00+00:00</published><updated>2026-01-26T00:00:00+00:00</updated><id>/news/2026/anope-2019-release</id><content type="html" xml:base="/news/2026/anope-2019-release.html"><![CDATA[<p>Anope 2.0.19 has been released. This is a stable release which fixes various bugs that have been found since the previous release.</p>

<p>The notable changes include:</p>

<ul>
  <li>Added a Doxygen config file.</li>
  <li>Backported various minor config changes from 2.1.</li>
  <li>Fixed chanserv/enforce enforcing against founders.</li>
  <li>Fixed creating channel entries in irc2sql.</li>
  <li>Fixed not respecting the mode state when removing a mode lock.</li>
  <li>Fixed reading the settings in m_dns.</li>
  <li>Fixed resetpass confirming accounts when not using email confirmation.</li>
  <li>Fixed trying to write to a buffered socket when there’s no data.</li>
  <li>Fixed various minor spelling issues.</li>
  <li>Updated some messages for the language used by modern BIND versions.</li>
</ul>

<p>All users are recommended to upgrade.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">9b13854a210b3d07d96de380f35e033450ea7c9441af8100d8d8dccdb9e8154b</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.0.19.tar.gz">anope-2.0.19.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">520823c37586479b24d13a9782db1e5ad0414ba01c69afe9650d050992887b45</code> <a href="https://github.com/anope/anope/releases/download/2.0.19/anope-2.0.19.exe">anope-2.0.19.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2026" /><summary type="html"><![CDATA[Anope 2.0.19 has been released. This is a stable release which fixes various bugs that have been found since the previous release. The notable changes include: Added a Doxygen config file. Backported various minor config changes from 2.1. Fixed chanserv/enforce enforcing against founders. Fixed creating channel entries in irc2sql. Fixed not respecting the mode state when removing a mode lock. Fixed reading the settings in m_dns. Fixed resetpass confirming accounts when not using email confirmation. Fixed trying to write to a buffered socket when there’s no data. Fixed various minor spelling issues. Updated some messages for the language used by modern BIND versions. All users are recommended to upgrade. SHA256 Sum: 9b13854a210b3d07d96de380f35e033450ea7c9441af8100d8d8dccdb9e8154b anope-2.0.19.tar.gz SHA256 Sum: 520823c37586479b24d13a9782db1e5ad0414ba01c69afe9650d050992887b45 anope-2.0.19.exe]]></summary></entry><entry><title type="html">Anope 2.1.20 Release</title><link href="/news/2025/anope-2120-release.html" rel="alternate" type="text/html" title="Anope 2.1.20 Release" /><published>2025-12-01T00:00:00+00:00</published><updated>2025-12-01T00:00:00+00:00</updated><id>/news/2025/anope-2120-release</id><content type="html" xml:base="/news/2025/anope-2120-release.html"><![CDATA[<p>Anope 2.1.20 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h4 id="breaking-changes">Breaking Changes</h4>

<ul>
  <li>
    <p>Changed the registration of database types added by modules to be delayed until after the module constructor has been called. This might affect any custom modules you are using.</p>
  </li>
  <li>
    <p>Moved akicks out of the core into cs_akick. Modules which depend on akicks now require the cs_akick module to be loaded.</p>
  </li>
</ul>

<h4 id="changes">Changes</h4>

<ul>
  <li>
    <p>Added <code class="language-plaintext highlighter-rouge">{db_json}:preserve_unknown_data</code> to configure whether unknown database types are kept in the JSON database. By default unknown database types from unloaded modules will be preserved in the database to allow reloading later. This setting can be used to disable this and prune the database.</p>
  </li>
  <li>
    <p>Added support for forbidding passwords. This is intended to be used with file forbids (see below).</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/OPERSERV FORBID ADD PASSWORD +30d hunter2 This password is insecure
-OperServ- Added a forbid on hunter2 of type password to expire on Mon 29 Dec
  2025 11:51:13 AM UTC (30 days from now).
</code></pre></div>    </div>
  </li>
  <li>
    <p>Added support for loading forbids from a file.</p>

    <div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">file</span>
<span class="p">{</span>
  <span class="n">type</span> <span class="o">=</span> <span class="s">"email"</span>
  <span class="n">file</span> <span class="o">=</span> <span class="s">"temp-emails.txt"</span>
  <span class="n">reason</span> <span class="o">=</span> <span class="s">"Temporary email"</span>
<span class="p">}</span>
</code></pre></div>    </div>
  </li>
  <li>
    <p>Added support for the UnrealIRCd <code class="language-plaintext highlighter-rouge">+F</code> flood profile mode.</p>
  </li>
  <li>
    <p>Added the <code class="language-plaintext highlighter-rouge">anope-mkpasswd</code> script to help generate passwords for use in the config.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./anope-mkpasswd argon2id hunter2
For use in the database:
    argon2id:$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw
      $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo

For use in an oper:
    password = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw
      $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo"
    password_hash = "argon2id"

For use in an jsonrpc/xmlrpc token:
    token = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw
      $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo"
    token_hash = "argon2id"

Make sure you have the enc_argon2 module loaded!
</code></pre></div>    </div>
  </li>
  <li>
    <p>Added the DISPLAY flag to <code class="language-plaintext highlighter-rouge">nickserv/list</code> to only show account display nicknames.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV LIST *
-NickServ- List of entries matching *:
-NickServ- nick1 (last mask: foo@example.com)
-NickServ- nick1|afk (last mask: bar@example.com)
-NickServ- nick2 (last mask: baz@example.com)
-NickServ- End of list - 3/3 matches shown.

/NICKSERV LIST * DISPLAY
-NickServ- List of entries matching *:
-NickServ- nick1 (last mask: foo@example.com)
-NickServ- nick2 (last mask: baz@example.com)
-NickServ- End of list - 2/2 matches shown.
</code></pre></div>    </div>
  </li>
  <li>
    <p>Added the hs_offer module which allows offering templated vhosts to users (based on a
modsite module by @genius3000 on GitHub).</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/HOSTSERV OFFER ADD {account}.users.example.com

/HOSTSERV OFFERLIST
-HostServ- Current host offer list:
-HostServ- 2: {account}.users.example.com / FooBar.users.example.com -- does not expire
-HostServ- End of host offer list.
</code></pre></div>    </div>
  </li>
  <li>
    <p>Changed chanserv/mode lock messages to stack the responses into one message per type instead of sending one message per mode.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/CHANSERV MODE #stest LOCK ADD +bb foo!foo@foo bar!bar@bar
-ChanServ- +bb foo!foo@foo bar!bar@bar has been locked on #stest.
</code></pre></div>    </div>
  </li>
  <li>
    <p>Changed database objects to rehook to their type when it becomes available again.</p>
  </li>
  <li>
    <p>Changed the <code class="language-plaintext highlighter-rouge">nickserv/set/language</code> and <code class="language-plaintext highlighter-rouge">nickserv/set/timezone</code> commands to allow setting back to the default value by omitting the last parameter.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV SET LANGUAGE
12:23 -NickServ- Language changed to English.

/NICKSERV SET TIMEZONE
12:24 -NickServ- Timezone changed to UTC.
</code></pre></div>    </div>
  </li>
  <li>
    <p>Changed the default install directory from <code class="language-plaintext highlighter-rouge">~/anope</code> to <code class="language-plaintext highlighter-rouge">~/anope-2.1</code>.</p>
  </li>
  <li>
    <p>Changed the enc_sha1 module to use a vendored SHA-1 implementation.</p>
  </li>
  <li>
    <p>Expanded password obscurity checks and added an event hook to allow modules to reject passwords.</p>
  </li>
  <li>
    <p>Fixed the rpc_user module sending the “invalid account” and “invalid password” error codes inverted.</p>
  </li>
  <li>
    <p>Fixed unintentionally reloading the core database when reloading a module that provides a database type.</p>
  </li>
  <li>
    <p>Removed a bunch of obsolete build system cruft.</p>
  </li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.19...2.1.20">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">f2b754de919f4fe864777a44496a9011b4d3006062f07b097c9aac43f355e5da</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.20.tar.gz">anope-2.1.20.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">9bc03aee3136199983f0ae94f8c14e0e8bec5029419879221cab1bb2d13910e7</code> <a href="https://github.com/anope/anope/releases/download/2.1.20/anope-2.1.20.exe">anope-2.1.20.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.20 has been released. This is a development release. The most notable changes are: Breaking Changes Changed the registration of database types added by modules to be delayed until after the module constructor has been called. This might affect any custom modules you are using. Moved akicks out of the core into cs_akick. Modules which depend on akicks now require the cs_akick module to be loaded. Changes Added {db_json}:preserve_unknown_data to configure whether unknown database types are kept in the JSON database. By default unknown database types from unloaded modules will be preserved in the database to allow reloading later. This setting can be used to disable this and prune the database. Added support for forbidding passwords. This is intended to be used with file forbids (see below). /OPERSERV FORBID ADD PASSWORD +30d hunter2 This password is insecure -OperServ- Added a forbid on hunter2 of type password to expire on Mon 29 Dec 2025 11:51:13 AM UTC (30 days from now). Added support for loading forbids from a file. file { type = "email" file = "temp-emails.txt" reason = "Temporary email" } Added support for the UnrealIRCd +F flood profile mode. Added the anope-mkpasswd script to help generate passwords for use in the config. $ ./anope-mkpasswd argon2id hunter2 For use in the database: argon2id:$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo For use in an oper: password = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo" password_hash = "argon2id" For use in an jsonrpc/xmlrpc token: token = "$argon2id$v=19$m=65536,t=3,p=4$AmGWdtn1OUT9WSKSqESsPw $iguvHs6oIi/hF7e3t/bGNwgqP41vl/J4qP3a/yH9SLo" token_hash = "argon2id" Make sure you have the enc_argon2 module loaded! Added the DISPLAY flag to nickserv/list to only show account display nicknames. /NICKSERV LIST * -NickServ- List of entries matching *: -NickServ- nick1 (last mask: foo@example.com) -NickServ- nick1|afk (last mask: bar@example.com) -NickServ- nick2 (last mask: baz@example.com) -NickServ- End of list - 3/3 matches shown. /NICKSERV LIST * DISPLAY -NickServ- List of entries matching *: -NickServ- nick1 (last mask: foo@example.com) -NickServ- nick2 (last mask: baz@example.com) -NickServ- End of list - 2/2 matches shown. Added the hs_offer module which allows offering templated vhosts to users (based on a modsite module by @genius3000 on GitHub). /HOSTSERV OFFER ADD {account}.users.example.com /HOSTSERV OFFERLIST -HostServ- Current host offer list: -HostServ- 2: {account}.users.example.com / FooBar.users.example.com -- does not expire -HostServ- End of host offer list. Changed chanserv/mode lock messages to stack the responses into one message per type instead of sending one message per mode. /CHANSERV MODE #stest LOCK ADD +bb foo!foo@foo bar!bar@bar -ChanServ- +bb foo!foo@foo bar!bar@bar has been locked on #stest. Changed database objects to rehook to their type when it becomes available again. Changed the nickserv/set/language and nickserv/set/timezone commands to allow setting back to the default value by omitting the last parameter. /NICKSERV SET LANGUAGE 12:23 -NickServ- Language changed to English. /NICKSERV SET TIMEZONE 12:24 -NickServ- Timezone changed to UTC. Changed the default install directory from ~/anope to ~/anope-2.1. Changed the enc_sha1 module to use a vendored SHA-1 implementation. Expanded password obscurity checks and added an event hook to allow modules to reject passwords. Fixed the rpc_user module sending the “invalid account” and “invalid password” error codes inverted. Fixed unintentionally reloading the core database when reloading a module that provides a database type. Removed a bunch of obsolete build system cruft. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: f2b754de919f4fe864777a44496a9011b4d3006062f07b097c9aac43f355e5da anope-2.1.20.tar.gz SHA256 Sum: 9bc03aee3136199983f0ae94f8c14e0e8bec5029419879221cab1bb2d13910e7 anope-2.1.20.exe]]></summary></entry><entry><title type="html">Anope 2.1.19 Release</title><link href="/news/2025/anope-2119-release.html" rel="alternate" type="text/html" title="Anope 2.1.19 Release" /><published>2025-11-01T00:00:00+00:00</published><updated>2025-11-01T00:00:00+00:00</updated><id>/news/2025/anope-2119-release</id><content type="html" xml:base="/news/2025/anope-2119-release.html"><![CDATA[<p>Anope 2.1.19 has been released. This is a development release.</p>

<p>The most notable changes are:</p>

<h4 id="breaking-changes">Breaking Changes</h4>

<ul>
  <li><code class="language-plaintext highlighter-rouge">pkg-config</code> is now required to find dependencies for the following modules on UNIX systems:
    <ul>
      <li>enc_argon2</li>
      <li>ldap</li>
      <li>mysql</li>
      <li>regex_pcre2</li>
      <li>regex_tre</li>
    </ul>
  </li>
  <li>Support for InspIRCd v3 has been dropped ahead of it going EOL in two months. Please migrate to InspIRCd v4 to keep using Anope 2.1 with InspIRCd.</li>
</ul>

<h4 id="changes">Changes</h4>

<ul>
  <li>
    <p>Added a Romanian translation (contributed by @KidProtect on GitHub).</p>
  </li>
  <li>
    <p>Added support for associating a timezone with an account to allow users to receive timestamps in their local timezone.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV SET TIMEZONE Europe/London
-NickServ- Timezone changed to Europe/Berlin.

/NICKSERV INFO test
-NickServ- Account registered: Thu 09 Oct 2025 15:22:45 CEST (45 seconds ago)
</code></pre></div>    </div>

    <p>NOTE: This requires a compiler with C++20 timezone support.</p>
  </li>
  <li>
    <p>Added support for IRCv3 message tags when using Solanum git.</p>
  </li>
  <li>
    <p>Added support for language-specific time formats.</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/NICKSERV SET LANGUAGE tr_TR.UTF-8
-NickServ- Dil Türkçe olarak değiştirildi.

/NICKSERV INFO test
-NickServ- Hesap kaydedildi: Prş 09 Eki 2025 15:22:45 (6 dakika, 16 saniye önce)
</code></pre></div>    </div>
  </li>
  <li>
    <p>Channel entry messages are now tagged with an IRCv3 time tag for the time they were created on supporting IRCds. This defaults to on but can be disabled using <code class="language-plaintext highlighter-rouge">{cs_entrymsg}:timestamp</code>.</p>
  </li>
  <li>
    <p>Reordered the information in the <code class="language-plaintext highlighter-rouge">nickserv/info</code> command output to show the registration dates before the seen information.</p>
  </li>
  <li>
    <p>Updated the Turkish translation (contributed by @CaPaCuL on GitHub).</p>
  </li>
  <li>
    <p>Updated the vendored libraries.</p>
  </li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.18...2.1.19">GitHub</a>.</p>

<p>Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the <a href="/upgrading.html">upgrading guide</a>. If you encounter any incompatibilities that aren’t mentioned on this page then <a href="https://github.com/anope/website/issues/new">please open an issue</a>.</p>

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">f3bb685b51e1eabd019629d9caacee3f88dc8f93614dbff987c7b1c25bedf83c</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.19.tar.gz">anope-2.1.19.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">131b7aae53d6b322f108c99642f118f81826e5bb9485e14c19a06f0dce56bb2a</code> <a href="https://github.com/anope/anope/releases/download/2.1.19/anope-2.1.19.exe">anope-2.1.19.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.19 has been released. This is a development release. The most notable changes are: Breaking Changes pkg-config is now required to find dependencies for the following modules on UNIX systems: enc_argon2 ldap mysql regex_pcre2 regex_tre Support for InspIRCd v3 has been dropped ahead of it going EOL in two months. Please migrate to InspIRCd v4 to keep using Anope 2.1 with InspIRCd. Changes Added a Romanian translation (contributed by @KidProtect on GitHub). Added support for associating a timezone with an account to allow users to receive timestamps in their local timezone. /NICKSERV SET TIMEZONE Europe/London -NickServ- Timezone changed to Europe/Berlin. /NICKSERV INFO test -NickServ- Account registered: Thu 09 Oct 2025 15:22:45 CEST (45 seconds ago) NOTE: This requires a compiler with C++20 timezone support. Added support for IRCv3 message tags when using Solanum git. Added support for language-specific time formats. /NICKSERV SET LANGUAGE tr_TR.UTF-8 -NickServ- Dil Türkçe olarak değiştirildi. /NICKSERV INFO test -NickServ- Hesap kaydedildi: Prş 09 Eki 2025 15:22:45 (6 dakika, 16 saniye önce) Channel entry messages are now tagged with an IRCv3 time tag for the time they were created on supporting IRCds. This defaults to on but can be disabled using {cs_entrymsg}:timestamp. Reordered the information in the nickserv/info command output to show the registration dates before the seen information. Updated the Turkish translation (contributed by @CaPaCuL on GitHub). Updated the vendored libraries. The full change log can be found on GitHub. Users who want to test out new features are encouraged to upgrade. Before upgrading you may wish to take a backup of your databases and read the upgrading guide. If you encounter any incompatibilities that aren’t mentioned on this page then please open an issue. SHA256 Sum: f3bb685b51e1eabd019629d9caacee3f88dc8f93614dbff987c7b1c25bedf83c anope-2.1.19.tar.gz SHA256 Sum: 131b7aae53d6b322f108c99642f118f81826e5bb9485e14c19a06f0dce56bb2a anope-2.1.19.exe]]></summary></entry></feed>