<?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-03-01T03:44:08+00:00</updated><id>/feed.xml</id><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><entry><title type="html">Anope 2.1.18 Release</title><link href="/news/2025/anope-2118-release.html" rel="alternate" type="text/html" title="Anope 2.1.18 Release" /><published>2025-10-01T00:00:00+00:00</published><updated>2025-10-01T00:00:00+00:00</updated><id>/news/2025/anope-2118-release</id><content type="html" xml:base="/news/2025/anope-2118-release.html"><![CDATA[<p>Anope 2.1.18 has been released. This is a development release.</p>

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

<ul>
  <li>Added a check that a non-deprecated database module is loaded.</li>
  <li>Added support for flexible and monospace layouts to make text easier to read on clients that use a variable-width font.</li>
  <li>Added support for logging about deprecated modules on boot.</li>
  <li>Added support for per-IRCd hints when a link fails.</li>
  <li>Added support for self-service validation of vhosts using DNS TXT records.</li>
  <li>Added support for separate bad password limits for pre-connection SASL authentication.</li>
  <li>Added support for SRV and TXT records to the dns module.</li>
  <li>Added the –nodb option to disable database and encrytption module checks.</li>
  <li>Added the hostserv/validate command.</li>
  <li>Added the nickname registration date to the nickserv/glist output.</li>
  <li>Added the nickserv/saset/layout command.</li>
  <li>Added the nickserv/set/layout command.</li>
  <li>Added the ns_sasl_anonymous module.</li>
  <li>Added the ns_sasl_external module.</li>
  <li>Added the ns_sasl_plain module.</li>
  <li>Added the ns_set_layout module.</li>
  <li>Added the ns_set_op module.</li>
  <li>Added {hs_request}:validationcooldown (defaults to 5 minutes).</li>
  <li>Added {hs_request}:validationrecord (defaults to “anope-dns-validation”).</li>
  <li>Added {ns_sasl}:badpasslimit (defaults to options:badpasslimit).</li>
  <li>Added {ns_sasl}:badpasstimeout (defaults to options:badpasstimeout).</li>
  <li>Changed db_flatfile to be import-only (migrate to db_json).</li>
  <li>Changed the default registration confirmation type to code validation.</li>
  <li>Changed the fantasy !help command to not require the FANTASY privilege by default.</li>
  <li>Changed various length measurement code to be UTF-8 aware.</li>
  <li>Disabled the nickname registration delay by default.</li>
  <li>Fixed reporting the MySQL version that the mysql module was built against.</li>
  <li>Improved the layout of the nickserv/info command.</li>
  <li>Modularised the ns_sasl module to make it easier to pick SASL mechanisms.</li>
  <li>Moved duration rounding logic from Anope::Expires to Anope::Duration.</li>
  <li>Moved nickserv/set/autoop and nickserv/saset/autoop to the ns_set_op module.</li>
  <li>Moved nickserv/set/display and nickserv/saset/display to the ns_set_group module.</li>
  <li>Moved nickserv/set/neverop and nickserv/saset/neverop to the ns_set_op module.</li>
  <li>Removed support for importing old databases from 1.8.</li>
  <li>Removed support for verifying “old MD5” passwords from 1.7.</li>
  <li>Removed the db_old module.</li>
  <li>Removed the enc_old module.</li>
  <li>Removed {db_flatfile}:fork (module is now import-only).</li>
  <li>Removed {db_flatfile}:keepbackups (module is now import-only).</li>
  <li>Removed {db_flatfile}:nobackupokay (module is now import-only).</li>
  <li>Reworked how memory is allocated when formatting messages.</li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.17...2.1.18">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">40c8f59118f7ee2d0f4a66a3e1ab022dc91fcad3ff89ea4e6e3fc20de09dc3af</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.18.tar.gz">anope-2.1.18.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">da4f82d9c44b9a02b44d34528998ec5df0a8fc880a8c4fb47735eff28c3ea684</code> <a href="https://github.com/anope/anope/releases/download/2.1.18/anope-2.1.18.exe">anope-2.1.18.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.18 has been released. This is a development release. The most notable changes are: Added a check that a non-deprecated database module is loaded. Added support for flexible and monospace layouts to make text easier to read on clients that use a variable-width font. Added support for logging about deprecated modules on boot. Added support for per-IRCd hints when a link fails. Added support for self-service validation of vhosts using DNS TXT records. Added support for separate bad password limits for pre-connection SASL authentication. Added support for SRV and TXT records to the dns module. Added the –nodb option to disable database and encrytption module checks. Added the hostserv/validate command. Added the nickname registration date to the nickserv/glist output. Added the nickserv/saset/layout command. Added the nickserv/set/layout command. Added the ns_sasl_anonymous module. Added the ns_sasl_external module. Added the ns_sasl_plain module. Added the ns_set_layout module. Added the ns_set_op module. Added {hs_request}:validationcooldown (defaults to 5 minutes). Added {hs_request}:validationrecord (defaults to “anope-dns-validation”). Added {ns_sasl}:badpasslimit (defaults to options:badpasslimit). Added {ns_sasl}:badpasstimeout (defaults to options:badpasstimeout). Changed db_flatfile to be import-only (migrate to db_json). Changed the default registration confirmation type to code validation. Changed the fantasy !help command to not require the FANTASY privilege by default. Changed various length measurement code to be UTF-8 aware. Disabled the nickname registration delay by default. Fixed reporting the MySQL version that the mysql module was built against. Improved the layout of the nickserv/info command. Modularised the ns_sasl module to make it easier to pick SASL mechanisms. Moved duration rounding logic from Anope::Expires to Anope::Duration. Moved nickserv/set/autoop and nickserv/saset/autoop to the ns_set_op module. Moved nickserv/set/display and nickserv/saset/display to the ns_set_group module. Moved nickserv/set/neverop and nickserv/saset/neverop to the ns_set_op module. Removed support for importing old databases from 1.8. Removed support for verifying “old MD5” passwords from 1.7. Removed the db_old module. Removed the enc_old module. Removed {db_flatfile}:fork (module is now import-only). Removed {db_flatfile}:keepbackups (module is now import-only). Removed {db_flatfile}:nobackupokay (module is now import-only). Reworked how memory is allocated when formatting 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: 40c8f59118f7ee2d0f4a66a3e1ab022dc91fcad3ff89ea4e6e3fc20de09dc3af anope-2.1.18.tar.gz SHA256 Sum: da4f82d9c44b9a02b44d34528998ec5df0a8fc880a8c4fb47735eff28c3ea684 anope-2.1.18.exe]]></summary></entry><entry><title type="html">Anope 2.1.17 Release</title><link href="/news/2025/anope-2117-release.html" rel="alternate" type="text/html" title="Anope 2.1.17 Release" /><published>2025-08-01T00:00:00+00:00</published><updated>2025-08-01T00:00:00+00:00</updated><id>/news/2025/anope-2117-release</id><content type="html" xml:base="/news/2025/anope-2117-release.html"><![CDATA[<p>Anope 2.1.17 has been released. This is a development release.</p>

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

<ul>
  <li>Added the nickserv/resend oper privilege.</li>
  <li>Allowed opers to resend passwords for users in nickserv/resend.</li>
  <li>Fixed HostServ using a different valid username character set to the protocol module.</li>
  <li>Fixed losing the channel and nickname registration time when upgrading from an earlier 2.1 release.</li>
  <li>Improved the messages sent when a user is forced off a protected nickname.</li>
  <li>Simplified copying modules to the runtime directory on Windows.</li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.16...2.1.17">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">1aac7e1c0440d589418bfc51398fc61570e6d2d261f2308c9fd8b350b60fba3c</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.17.tar.gz">anope-2.1.17.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">73cd1b55b800a25f635969e8bdf963006d6d09514d62aedcc91b79b90dbc5582</code> <a href="https://github.com/anope/anope/releases/download/2.1.17/anope-2.1.17.exe">anope-2.1.17.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.17 has been released. This is a development release. The most notable changes are: Added the nickserv/resend oper privilege. Allowed opers to resend passwords for users in nickserv/resend. Fixed HostServ using a different valid username character set to the protocol module. Fixed losing the channel and nickname registration time when upgrading from an earlier 2.1 release. Improved the messages sent when a user is forced off a protected nickname. Simplified copying modules to the runtime directory on Windows. 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: 1aac7e1c0440d589418bfc51398fc61570e6d2d261f2308c9fd8b350b60fba3c anope-2.1.17.tar.gz SHA256 Sum: 73cd1b55b800a25f635969e8bdf963006d6d09514d62aedcc91b79b90dbc5582 anope-2.1.17.exe]]></summary></entry><entry><title type="html">Anope 2.1.16 Release</title><link href="/news/2025/anope-2116-release.html" rel="alternate" type="text/html" title="Anope 2.1.16 Release" /><published>2025-07-01T00:00:00+00:00</published><updated>2025-07-01T00:00:00+00:00</updated><id>/news/2025/anope-2116-release</id><content type="html" xml:base="/news/2025/anope-2116-release.html"><![CDATA[<p>Anope 2.1.16 has been released. This is a development release.</p>

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

<ul>
  <li>Added fantasy:require_privilege (defaults to yes).</li>
  <li>Added support for on-IRC code confirmation.</li>
  <li>Added the ability for fantasy commands to be executable without the FANTASY privilege.</li>
  <li>Added the ability to prepend to topics as well as appending to them.</li>
  <li>Added the nickserv/confirm/email command.</li>
  <li>Added the nickserv/confirm/email oper privilege.</li>
  <li>Added the nickserv/confirm/register command.</li>
  <li>Added the ns_confirm module.</li>
  <li>Added {ns_email}:changeexpire (defaults to 1 day).</li>
  <li>Added {ns_resetpass}:resetexpire (defaults to 1 day).</li>
  <li>Changed various fields to serialize to the database as a string not an integer.</li>
  <li>Disabled db_flatfile by default in preparation for becoming import-only.</li>
  <li>Fixed a memory leak in the db_json module.</li>
  <li>Fixed building on OpenSSL 1.1.1 (for now).</li>
  <li>Fixed removed and later re-added temporary bans being removed automatically.</li>
  <li>Fixed sometimes sending malformed LMODE messages on InspIRCd.</li>
  <li>Fixed the “did you mean” message suggesting unloaded commands.</li>
  <li>Fixed various issues with the example config files.</li>
  <li>Marked db_json as the recommended database module.</li>
  <li>Moved the BAN, UNBAN, and KICK commands to the chanserv/management group.</li>
  <li>Removed support for the 1.8-style seen command.</li>
  <li>Removed the irc2sql module (migrate to JSON-RPC instead).</li>
  <li>Removed {ns_seen}:simple (1.8-style seen has been removed).</li>
  <li>Renamed the nickserv/confirm oper privilege to nickserv/confirm/register.</li>
  <li>Reworked confirmation to allow confirmation of multiple account actions.</li>
  <li>When dropping a display nickname the new display will now be the oldest in the group.</li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.15...2.1.16">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">dffc17e39b21216a064738931de078bb9328d5a615d4173399213c5730c2a933</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.16.tar.gz">anope-2.1.16.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">b1953cf37053e4b931e9ca2496b60c77cc822eae117fdbbd71d4dfb0a9fe52f2</code> <a href="https://github.com/anope/anope/releases/download/2.1.16/anope-2.1.16.exe">anope-2.1.16.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.16 has been released. This is a development release. The most notable changes are: Added fantasy:require_privilege (defaults to yes). Added support for on-IRC code confirmation. Added the ability for fantasy commands to be executable without the FANTASY privilege. Added the ability to prepend to topics as well as appending to them. Added the nickserv/confirm/email command. Added the nickserv/confirm/email oper privilege. Added the nickserv/confirm/register command. Added the ns_confirm module. Added {ns_email}:changeexpire (defaults to 1 day). Added {ns_resetpass}:resetexpire (defaults to 1 day). Changed various fields to serialize to the database as a string not an integer. Disabled db_flatfile by default in preparation for becoming import-only. Fixed a memory leak in the db_json module. Fixed building on OpenSSL 1.1.1 (for now). Fixed removed and later re-added temporary bans being removed automatically. Fixed sometimes sending malformed LMODE messages on InspIRCd. Fixed the “did you mean” message suggesting unloaded commands. Fixed various issues with the example config files. Marked db_json as the recommended database module. Moved the BAN, UNBAN, and KICK commands to the chanserv/management group. Removed support for the 1.8-style seen command. Removed the irc2sql module (migrate to JSON-RPC instead). Removed {ns_seen}:simple (1.8-style seen has been removed). Renamed the nickserv/confirm oper privilege to nickserv/confirm/register. Reworked confirmation to allow confirmation of multiple account actions. When dropping a display nickname the new display will now be the oldest in the group. 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: dffc17e39b21216a064738931de078bb9328d5a615d4173399213c5730c2a933 anope-2.1.16.tar.gz SHA256 Sum: b1953cf37053e4b931e9ca2496b60c77cc822eae117fdbbd71d4dfb0a9fe52f2 anope-2.1.16.exe]]></summary></entry><entry><title type="html">Anope 2.1.15 Release</title><link href="/news/2025/anope-2115-release.html" rel="alternate" type="text/html" title="Anope 2.1.15 Release" /><published>2025-06-01T00:00:00+00:00</published><updated>2025-06-01T00:00:00+00:00</updated><id>/news/2025/anope-2115-release</id><content type="html" xml:base="/news/2025/anope-2115-release.html"><![CDATA[<p>Anope 2.1.15 has been released. This is a development release.</p>

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

<ul>
  <li>Added a workaround to the jsonrpc module for JavaScript truncating big integers.</li>
  <li>Added an example Ruby library for accessing the RPC interface.</li>
  <li>Added away state and tls usage to the anope.user RPC event.</li>
  <li>Added support for looking up accounts by identifier in the anope.account RPC event.</li>
  <li>Added support for storing the setter and set time and setter of list modes and restoring them on InspIRCd and Solanum.</li>
  <li>Added support for token authentication to the RPC modules.</li>
  <li>Added the anope.checkCredentials, anope.identify, anope.listCommands, and anope.command RPC events to the new rpc_user module.</li>
  <li>Added the ns_email module.</li>
  <li>Added the rpc_user module.</li>
  <li>Added {jsonrpc}:integer_bits (defaults to 64).</li>
  <li>Added {jsonrpc}:token.</li>
  <li>Added {nickserv}:enforcerreal (defaults to “Services Enforcer”).</li>
  <li>Added {xmlrpc}:token.</li>
  <li>Bumped the minimum supported version of ircd-hybrid to 8.2.34.</li>
  <li>Deprecated irc2sql in favour of rpc_data.</li>
  <li>Dropped support for Bahamut as it has no known users.</li>
  <li>Fixed creating duplicate Stats rows on some servers.</li>
  <li>Fixed loading databases in db_json.</li>
  <li>Fixed restoring cloaked hosts on InspIRCd when the cloak module is not loaded.</li>
  <li>Fixed some variable shadowing that potentially caused issues with the SQL database backends.</li>
  <li>Fixed sometimes writing accounts to the database without a unique identifier.</li>
  <li>Fixed various documentation issues with the example JavaScript JSON-RPC client.</li>
  <li>Improved CTCP handling and added support for more CTCP types.</li>
  <li>Moved nickserv/set/email and nickserv/saset/email to the ns_email module.</li>
  <li>Removed the bahamut module.</li>
  <li>Removed the ns_getemail module (load ns_email instead).</li>
  <li>Removed the ns_maxemail module (load ns_email instead).</li>
  <li>Removed the rpc_main module (migrate to the other RPC modules).</li>
  <li>Removed {chanstats}:cs_def_chanstats (add CS_STATS to {chanserv}:defaults instead).</li>
  <li>Removed {chanstats}:ns_def_chanstats (add NS_STATS to {nickserv}:defaults instead).</li>
  <li>Renamed service:gecos to service:real.</li>
</ul>

<p>The full change log can be found on <a href="https://github.com/anope/anope/compare/2.1.14...2.1.15">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">adebe78bbb22cf175f68449012c41d0eebcb7d72e868211d24347bc66be0bc64</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.1.15.tar.gz">anope-2.1.15.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">02025083f2f9f1b4db11e20aba02f7346eac2aedc0be61db0e9bf3902be86705</code> <a href="https://github.com/anope/anope/releases/download/2.1.15/anope-2.1.15.exe">anope-2.1.15.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.1.15 has been released. This is a development release. The most notable changes are: Added a workaround to the jsonrpc module for JavaScript truncating big integers. Added an example Ruby library for accessing the RPC interface. Added away state and tls usage to the anope.user RPC event. Added support for looking up accounts by identifier in the anope.account RPC event. Added support for storing the setter and set time and setter of list modes and restoring them on InspIRCd and Solanum. Added support for token authentication to the RPC modules. Added the anope.checkCredentials, anope.identify, anope.listCommands, and anope.command RPC events to the new rpc_user module. Added the ns_email module. Added the rpc_user module. Added {jsonrpc}:integer_bits (defaults to 64). Added {jsonrpc}:token. Added {nickserv}:enforcerreal (defaults to “Services Enforcer”). Added {xmlrpc}:token. Bumped the minimum supported version of ircd-hybrid to 8.2.34. Deprecated irc2sql in favour of rpc_data. Dropped support for Bahamut as it has no known users. Fixed creating duplicate Stats rows on some servers. Fixed loading databases in db_json. Fixed restoring cloaked hosts on InspIRCd when the cloak module is not loaded. Fixed some variable shadowing that potentially caused issues with the SQL database backends. Fixed sometimes writing accounts to the database without a unique identifier. Fixed various documentation issues with the example JavaScript JSON-RPC client. Improved CTCP handling and added support for more CTCP types. Moved nickserv/set/email and nickserv/saset/email to the ns_email module. Removed the bahamut module. Removed the ns_getemail module (load ns_email instead). Removed the ns_maxemail module (load ns_email instead). Removed the rpc_main module (migrate to the other RPC modules). Removed {chanstats}:cs_def_chanstats (add CS_STATS to {chanserv}:defaults instead). Removed {chanstats}:ns_def_chanstats (add NS_STATS to {nickserv}:defaults instead). Renamed service:gecos to service:real. 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: adebe78bbb22cf175f68449012c41d0eebcb7d72e868211d24347bc66be0bc64 anope-2.1.15.tar.gz SHA256 Sum: 02025083f2f9f1b4db11e20aba02f7346eac2aedc0be61db0e9bf3902be86705 anope-2.1.15.exe]]></summary></entry><entry><title type="html">Anope 2.0.18 Release</title><link href="/news/2025/anope-2018-release.html" rel="alternate" type="text/html" title="Anope 2.0.18 Release" /><published>2025-05-08T00:00:00+00:00</published><updated>2025-05-08T00:00:00+00:00</updated><id>/news/2025/anope-2018-release</id><content type="html" xml:base="/news/2025/anope-2018-release.html"><![CDATA[<p>Anope 2.0.18 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>Backported better sendmail error messages from 2.1.</li>
  <li>Backported the Windows CI fom 2.1.</li>
  <li>Fixed a CMake error when it encounters a hard to parse header file.</li>
  <li>Fixed being able to group guest nicknames.</li>
  <li>Fixed building Anope with CMake 4.</li>
  <li>Fixed compatibility with MariaDB.</li>
  <li>Fixed counting email addresses in ns_maxemail.</li>
  <li>Fixed importing user ICQ and URL data from 1.8.</li>
  <li>Fixed operserv/ignore not being prioritised first.</li>
  <li>Fixed resetting the stats with operserv/stats.</li>
  <li>Updated the Dutch translation.</li>
</ul>

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

<p>SHA256 Sum: <code class="language-plaintext highlighter-rouge">40c8f59118f7ee2d0f4a66a3e1ab022dc91fcad3ff89ea4e6e3fc20de09dc3af</code> <a href="https://github.com/anope/anope/archive/refs/tags/2.0.18.tar.gz">anope-2.0.18.tar.gz</a>
<br />
SHA256 Sum: <code class="language-plaintext highlighter-rouge">da4f82d9c44b9a02b44d34528998ec5df0a8fc880a8c4fb47735eff28c3ea684</code> <a href="https://github.com/anope/anope/releases/download/2.0.18/anope-2.0.18.exe">anope-2.0.18.exe</a></p>]]></content><author><name>Sadie</name></author><category term="2025" /><summary type="html"><![CDATA[Anope 2.0.18 has been released. This is a stable release which fixes various bugs that have been found since the previous release. The notable changes include: Backported better sendmail error messages from 2.1. Backported the Windows CI fom 2.1. Fixed a CMake error when it encounters a hard to parse header file. Fixed being able to group guest nicknames. Fixed building Anope with CMake 4. Fixed compatibility with MariaDB. Fixed counting email addresses in ns_maxemail. Fixed importing user ICQ and URL data from 1.8. Fixed operserv/ignore not being prioritised first. Fixed resetting the stats with operserv/stats. Updated the Dutch translation. All users are recommended to upgrade. SHA256 Sum: 40c8f59118f7ee2d0f4a66a3e1ab022dc91fcad3ff89ea4e6e3fc20de09dc3af anope-2.0.18.tar.gz SHA256 Sum: da4f82d9c44b9a02b44d34528998ec5df0a8fc880a8c4fb47735eff28c3ea684 anope-2.0.18.exe]]></summary></entry></feed>