<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Prosodical Thoughts on Prosodical Thoughts</title>
  <link rel="self" href="https://blog.prosody.im/"/>
  <updated>2026-05-01T13:24:14+0100</updated>
  <id>https://blog.prosody.im/</id>
  
  <entry>
    <title>Prosody 0.12.6 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-0.12.6-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-0.12.6-released/</id>
    <published>2026-05-01T13:24:14+0100</published>
    <updated>2026-05-01T13:24:14+0100</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
This is a security release for the Prosody 0.12.x old stable series. It addresses multiple security issues, some memory leaks and some smaller bugs which have been fixed since the previous release.
Full details about the security vulnerabilities can be found in our security advisory. We encourage all Prosody operators on 0.12.5 or earlier to upgrade to 0.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;This is a security release for the Prosody 0.12.x old stable series. It
addresses multiple security issues, some memory leaks and some smaller bugs
which have been fixed since the previous release.&lt;/p&gt;

&lt;p&gt;Full details about the security vulnerabilities can be found in our &lt;a href=&#34;https://prosody.im/security/advisory_735dd9d3/&#34;&gt;security
advisory&lt;/a&gt;. We encourage all
Prosody operators on 0.12.5 or earlier to upgrade to 0.12.6 or 13.0.5 as soon
as possible, or to review the advisory and implement appropriate mitigations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Support for the 0.12.x series ends in June 2026. This means it will
no longer receive any fixes or updates, even for security issues. It is likely
that 0.12.6 will be the last release from this series. Check our guide on
&lt;a href=&#34;https://prosody.im/doc/upgrading&#34;&gt;upgrading Prosody&lt;/a&gt; and the release notes
for 13.0.0 before you upgrade to the 13.0.x series.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_proxy65: Consistently apply authorization checks&lt;/li&gt;
&lt;li&gt;mod_proxy65: Don&amp;rsquo;t proxy data until after bytestream activation&lt;/li&gt;
&lt;li&gt;mod_c2s, mod_s2s: Introduce new pre-authentication stanza size limit&lt;/li&gt;
&lt;li&gt;Add limit for stanza max child elements&lt;/li&gt;
&lt;li&gt;mod_c2s: Remove timers immediately on disconnection&lt;/li&gt;
&lt;li&gt;net.server_epoll: Clean up timers after disconnection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fix memory leak in module API&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;util.prosodyctl.check: Improve error handling of UDP socket setup (for &lt;a href=&#34;https://issues.prosody.im/1803&#34;&gt;#1803&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.5 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.5-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.5-released/</id>
    <published>2026-04-29T19:32:24+0100</published>
    <updated>2026-04-29T19:32:24+0100</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
This is a security release for the Prosody 13.0.x stable series. It fixes multiple security issues, some memory leaks and some smaller bugs and changes which have been implemented since the previous release.
Full details about the security vulnerabilities can be found in our security advisory. We encourage all Prosody operators on 13.0.4 or earlier to upgrade to 13.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;This is a security release for the Prosody 13.0.x stable series. It fixes
multiple security issues, some memory leaks and some smaller bugs and changes
which have been implemented since the previous release.&lt;/p&gt;

&lt;p&gt;Full details about the security vulnerabilities can be found in our &lt;a href=&#34;https://prosody.im/security/advisory_735dd9d3/&#34;&gt;security
advisory&lt;/a&gt;. We encourage all
Prosody operators on 13.0.4 or earlier to upgrade to 13.0.5 as soon as
possible, or to review the advisory and implement appropriate mitigations.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_proxy65: Consistently apply authorization checks&lt;/li&gt;
&lt;li&gt;mod_proxy65: Don&amp;rsquo;t proxy data until after bytestream activation&lt;/li&gt;
&lt;li&gt;mod_c2s, mod_s2s: Introduce new pre-authentication stanza size limit&lt;/li&gt;
&lt;li&gt;Add limit for stanza max child elements&lt;/li&gt;
&lt;li&gt;mod_c2s: Remove timers immediately on disconnection&lt;/li&gt;
&lt;li&gt;net.server_epoll: Clean up timers after disconnection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;net.http.parser: Fix handling of chunked request&lt;/li&gt;
&lt;li&gt;MUC: Advertise hats feature on room JID (thanks Daniel)&lt;/li&gt;
&lt;li&gt;moduleapi: Use multitable add/remove instead of set (fixes memory leak)&lt;/li&gt;
&lt;li&gt;mod_cloud_notify: Fix leaking iq response handlers by using send_iq()&lt;/li&gt;
&lt;li&gt;Improve federation with servers using only IP addresses&lt;/li&gt;
&lt;li&gt;prosody: Prevent loading local code when installed system-wide&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Improve handling of Range requests&lt;/li&gt;
&lt;li&gt;mod_carbons: Fix some carbons decision-making bugs (fixes &lt;a href=&#34;https://issues.prosody.im/1861&#34;&gt;#1861&lt;/a&gt;: mod_carbons does not forward &amp;ldquo;sent&amp;rdquo; MUC PMs to other clients)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;net.resolvers: Fix to avoid SRV lookups for IP addresses&lt;/li&gt;
&lt;li&gt;prosody: Abort earlier on incompatible Lua version&lt;/li&gt;
&lt;li&gt;mod_turn_external: hand out credentials for type == turns too&lt;/li&gt;
&lt;li&gt;mod_s2s: Fully validate stream addressing&lt;/li&gt;
&lt;li&gt;prosodyctl check features: Warn if http file sharing enabled on both host and component&lt;/li&gt;
&lt;li&gt;util.prosodyctl: Don&amp;rsquo;t check for mod_posix being disabled, it&amp;rsquo;s deprecated&lt;/li&gt;
&lt;li&gt;util.startup: Improve error message when failing to load config file&lt;/li&gt;
&lt;li&gt;util.x509: Add support for iPAddress certs&lt;/li&gt;
&lt;li&gt;prosodyctl: Trim any trailing newline from password entry&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Make cert index search path relative to config file&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Improve multi-host command handling&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Show help listing when specifying only a section name&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Ensure password validity when setting passwords for new/existing users&lt;/li&gt;
&lt;li&gt;mod_account_activity: Handle authentication provider returning no user info&lt;/li&gt;
&lt;li&gt;config: Use default value when enum option has incorrect value&lt;/li&gt;
&lt;li&gt;mod_http: &amp;ldquo;Handle&amp;rdquo; streaming requests to avoid invoking redirect handler&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Upcoming changes to Let&#39;s Encrypt and how they affect operators</title>
    <link rel="alternate" href="https://blog.prosody.im/2026-letsencrypt-changes/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/2026-letsencrypt-changes/</id>
    <published>2026-02-06T11:20:00+0000</published>
    <updated>2026-02-07T15:26:05+0100</updated>
    <summary type="html">&lt;p&gt;On 11th February, Let&amp;rsquo;s Encrypt will be rolling out a change to the
certificates they issue to servers by default. Although there is generally
nothing that Prosody operators need to do, servers using the new certificates
may experience problems connecting to some other XMPP servers on the network.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;On 11th February, Let&amp;rsquo;s Encrypt will be rolling out a change to the
certificates they issue to servers by default. Although there is generally
nothing that Prosody operators need to do, servers using the new certificates
may experience problems connecting to some other XMPP servers on the network.&lt;/p&gt;

&lt;h2 id=&#34;certificate-basics&#34;&gt;Certificate basics&lt;/h2&gt;

&lt;p&gt;First, a tiny bit of background on certificates. Certificate Authorities (CAs)
such as Let&amp;rsquo;s Encrypt work by verifying that you own or control a domain, and
then they issue you with a certificate that you can present to others as proof
of this verification. Obtaining a certificate can be done using the &amp;lsquo;certbot&amp;rsquo;
tool or any one of the large number of tools compatible with the ACME protocol.&lt;/p&gt;

&lt;p&gt;When an XMPP client connects to a server, it will expect the server to present
a certificate which is valid for the domain the client is logging in to.&lt;/p&gt;

&lt;p&gt;Likewise, certificates are also used when servers connect to other servers
(server-to-server connections are often called &amp;ldquo;s2s&amp;rdquo; or generally
&amp;ldquo;federation&amp;rdquo;). This prevents various attacks, including spoofing - because
when your server receives a message claiming to be from &amp;ldquo;user@example.com&amp;rdquo;, it
can ensure that the server it came from presented a valid certificate for
&amp;ldquo;example.com&amp;rdquo; and has been verified.&lt;/p&gt;

&lt;h2 id=&#34;certificates-can-specify-usage&#34;&gt;Certificates can specify usage&lt;/h2&gt;

&lt;p&gt;Most people know that certificates contain the domain name that has been
verified. However they contain other data too, including the details of the CA
that signed and issued the certificate, validity period, and various metadata.&lt;/p&gt;

&lt;p&gt;Another part of the certificate can specify limitations on what the
certificate can be used for. For example, a CA&amp;rsquo;s own certificate will specify
that they are allowed to use their certificate to sign other certificates.
Similar restrictions can be used to permit whether it can be used for signing
and/or encryption.&lt;/p&gt;

&lt;p&gt;One such extension, called &amp;ldquo;Extended Key Usage&amp;rdquo; can be used to restrict
whether the certificate is used for &amp;ldquo;server authentication&amp;rdquo; or &amp;ldquo;client
authentication&amp;rdquo;.&lt;/p&gt;

&lt;h2 id=&#34;what-s-changing&#34;&gt;What&amp;rsquo;s changing?&lt;/h2&gt;

&lt;p&gt;Let&amp;rsquo;s Encrypt currently issue certificates which specify they may be used for
both &amp;ldquo;server authentication&amp;rdquo; and &amp;ldquo;client authentication&amp;rdquo;. However &lt;a href=&#34;https://letsencrypt.org/2025/05/14/ending-tls-client-authentication&#34;&gt;they have
announced&lt;/a&gt;
that they will be issuing certificates for &lt;strong&gt;only&lt;/strong&gt; &amp;ldquo;server authentication&amp;rdquo; by
default &lt;strong&gt;from 11th February 2026&lt;/strong&gt;. In the rest of this post we&amp;rsquo;ll refer to
these as &amp;ldquo;server-only&amp;rdquo; certificates.&lt;/p&gt;

&lt;p&gt;Traditional interpretation of the relevant specifications would forbid use of
those certificates by a client which is connecting to a server. Unfortunately,
XMPP makes heavy use of connections between servers, and in the context of
such server-to-server connections the TLS specifications actually consider the
server that initiated the connection to be a &amp;ldquo;client&amp;rdquo; (not an XMPP client, but
a TLS client).&lt;/p&gt;

&lt;p&gt;Common TLS libraries and APIs such as OpenSSL will automatically verify the
certificate&amp;rsquo;s key usage fields, and fail certificate validation if an incoming
connection is received that uses a certificate without the &amp;ldquo;client
authentication&amp;rdquo; purpose. This has the potential to break server-to-server
connection authentication in XMPP (and also other protocols that make
connections between servers).&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;/files/client-eku-missing.svg&#34; alt=&#34;Diagram of problematic server-to-server connection&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;does-this-affect-prosody&#34;&gt;Does this affect Prosody?&lt;/h2&gt;

&lt;p&gt;Not directly. Let&amp;rsquo;s Encrypt is not the first CA to issue server-only
certificates. Many years ago, we incorporated changes into Prosody which allow
server-only certificates to be used for server-to-server connections,
regardless of which server started the connection. We believe that this is the
correct approach for XMPP.&lt;/p&gt;

&lt;p&gt;This means that Prosody will accept connections from servers that are using
the new server-only certificates from Let&amp;rsquo;s Encrypt.&lt;/p&gt;

&lt;p&gt;Unfortunately this behaviour is not standardized, partly due to controversy
outside the XMPP community about this approach. The current CA ecosystem is
&lt;strong&gt;heavily&lt;/strong&gt; driven by web browser vendors (i.e. Google, Apple, Microsoft and
Mozilla), and they are increasingly hostile towards non-browser applications
using certificates from CAs that they say only provide certificates for
consumption by web browsers.&lt;/p&gt;

&lt;p&gt;An attempt at &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-frank-mtls-via-serverauth-extension/&#34;&gt;updating the specifications&lt;/a&gt;
to clarify the expected roles of servers and clients failed to gain consensus
at the IETF.&lt;/p&gt;

&lt;h2 id=&#34;does-this-affect-the-xmpp-network&#34;&gt;Does this affect the XMPP network?&lt;/h2&gt;

&lt;p&gt;Although Prosody will accept server-only certificates, some other server
implementations do not have the alternative certificate usage validation
that Prosody has, or they added it only recently.&lt;/p&gt;

&lt;p&gt;Compatible servers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ejabberd (requires 25.08 or later)&lt;/li&gt;
&lt;li&gt;Openfire&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Operators of incompatible server versions should upgrade to a version that is
compatible with server-only certificates as soon as possible to prevent
problems with federation.&lt;/p&gt;

&lt;p&gt;Server software not listed above has not been tested, and may not accept
connections from servers using server-only certificates.&lt;/p&gt;

&lt;h2 id=&#34;what-will-happen-with-other-servers&#34;&gt;What will happen with other servers?&lt;/h2&gt;

&lt;p&gt;If a server does not use the alternative validation (because the software
doesn&amp;rsquo;t implement it, or it has not been updated) then it will treat the
certificates of all other servers as invalid for initiating s2s connections.&lt;/p&gt;

&lt;p&gt;Many servers still have the dialback protocol enabled, which will act as a
fallback authentication mechanism (using DNS), and in this case the
connections may still succeed.&lt;/p&gt;

&lt;p&gt;However if dialback is disabled on either server, or if the target server
strictly requires valid certificates, server-to-server connections will always
fail entirely.&lt;/p&gt;

&lt;p&gt;You may see errors in your Prosody log file such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Server-to-server connection failed: Could not authenticate to remote server&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In such a case, the remote server operator usually needs to update their
software.&lt;/p&gt;

&lt;h2 id=&#34;how-can-i-test-my-server&#34;&gt;How can I test my server?&lt;/h2&gt;

&lt;p&gt;Send an XMPP ping (XEP-0199) to &lt;code&gt;le-tlsserver.badxmpp.eu&lt;/code&gt; - if you get a
successful iq response, this means your server accepts server-only
certificates. If you don&amp;rsquo;t get a response, check your server&amp;rsquo;s log file for
any incoming s2s failures.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Prosody at FOSDEM 2026</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-at-fosdem-2026/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-at-fosdem-2026/</id>
    <published>2026-01-27T00:00:00+0000</published>
    <updated>2026-01-27T00:00:00+0000</updated>
    <summary type="html">&lt;p&gt;We&amp;rsquo;re looking forward to meeting new and familiar faces at &lt;a href=&#34;https://fosdem.org&#34;&gt;FOSDEM&lt;/a&gt;
in Brussels this weekend!&lt;/p&gt;

&lt;p&gt;Every February, thousands of developers (and users) of open-source and free
(as in freedom) software gather in Brussels to discuss and celebrate our
communities, and collaborate and share ideas and projects.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We&amp;rsquo;re looking forward to meeting new and familiar faces at &lt;a href=&#34;https://fosdem.org&#34;&gt;FOSDEM&lt;/a&gt;
in Brussels this weekend!&lt;/p&gt;

&lt;p&gt;Every February, thousands of developers (and users) of open-source and free
(as in freedom) software gather in Brussels to discuss and celebrate our
communities, and collaborate and share ideas and projects.&lt;/p&gt;

&lt;p&gt;If you are attending, come and find us in the AW building, Level 1. We&amp;rsquo;ll
be sharing the stand with other projects in the &lt;a href=&#34;https://xmpp.org&#34;&gt;XMPP&lt;/a&gt;
ecosystem and adjacent to other communication projects such as &lt;a href=&#34;https://linphone.org&#34;&gt;Linphone&lt;/a&gt;,
&lt;a href=&#34;https://delta.chat&#34;&gt;Delta Chat&lt;/a&gt; and &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can bring us questions about Prosody or XMPP, receive help with your own
Prosody deployment, or just stop by and say hi!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.4 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.4-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.4-released/</id>
    <published>2026-01-23T15:38:39+0000</published>
    <updated>2026-01-23T15:38:39+0000</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
Welcome to another minor release from our stable branch!
We encourage any deployments using 13.0.3 to upgrade, partly due to a bug that was introduced into UUID generation in that release. We&amp;rsquo;re not aware of any direct consequences of this bug, but it may cause compatibility problems with other software.
Although not strictly bug fixes, we sneaked in some configuration-related improvements to this release which help make configuring Prosody a little easier and more reliable.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;Welcome to another minor release from our stable branch!&lt;/p&gt;

&lt;p&gt;We encourage any deployments using 13.0.3 to upgrade, partly due to a bug that
was introduced into UUID generation in that release. We&amp;rsquo;re not aware of any
direct consequences of this bug, but it may cause compatibility problems with
other software.&lt;/p&gt;

&lt;p&gt;Although not strictly bug fixes, we sneaked in some configuration-related
improvements to this release which help make configuring Prosody a little
easier and more reliable. We&amp;rsquo;re highlighting them because these changes have a
chance to impact some rare configurations.&lt;/p&gt;

&lt;p&gt;The first change is to prevent mod_pubsub from being loaded on a VirtualHost
(easily done if you accidentally add it to your global modules_enabled list).
Loading mod_pubsub on a normal user host can lead to unexpected behaviour. Now
it will log an error and refuse to load if you do that.&lt;/p&gt;

&lt;p&gt;The second change is to simplify configuration of archiving in MUCs.
Practically all modern clients now use XEP-0313 to synchronize message
history. For VirtualHosts this is implemented in mod_mam, and for MUC
components it is implemented in mod_muc_mam. From this release, things get
much simpler: loading mod_mam (globally or directly on a MUC component) will
automatically load mod_muc_mam on the MUC component. This means most people
(e.g. who have mod_mam loaded globally on their server) can now remove
&amp;ldquo;muc_mam&amp;rdquo; from modules_enabled in their MUC component configuration. It will
be loaded automatically.&lt;/p&gt;

&lt;p&gt;This last point does mean that if you have mod_mam enabled globally, but do
&lt;strong&gt;not&lt;/strong&gt; want it enabled on your MUCs, you now have to state that explicitly
by adding &amp;ldquo;mam&amp;rdquo; to modules_disabled under the MUC&amp;rsquo;s Component. Be aware that
such a configuration may lead to missing messages in group chats.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_s2s: Fix traceback when outgoing s2s queue is full&lt;/li&gt;
&lt;li&gt;util.uuid: Fix padding of group 2 of UUIDv7 to use zeroes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;core.modulemanager: Fix shell commands on components&lt;/li&gt;
&lt;li&gt;mod_s2s: Explicitly prevent sending recursive error replies when queue is full&lt;/li&gt;
&lt;li&gt;modulemanager: Allow component modules to specify additional inherited modules&lt;/li&gt;
&lt;li&gt;prosodyctl check features: Use modulemanager to calculate modules that will actually be loaded&lt;/li&gt;
&lt;li&gt;prosodyctl check features: change recommendation from mod_muc_mam to mod_mam&lt;/li&gt;
&lt;li&gt;prosodyctl check config: Fix traceback when zero modules are enabled&lt;/li&gt;
&lt;li&gt;mod_pubsub: Fail early if loaded outside of a component to prevent misconfiguration&lt;/li&gt;
&lt;li&gt;doap: Add XEP-0486&lt;/li&gt;
&lt;li&gt;mod_pubsub/commands: Fix listing item numbers along with item names&lt;/li&gt;
&lt;li&gt;mod_account_activity: Handle authentication provider returning no user info&lt;/li&gt;
&lt;li&gt;mod_mam: Automatically load mod_muc_mam if loaded on a MUC component&lt;/li&gt;
&lt;li&gt;mod_muc: Inherit mod_mam if globally loaded&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.3 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.3-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.3-released/</id>
    <published>2026-01-05T14:02:22+0000</published>
    <updated>2026-01-05T14:02:22+0000</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
Happy new year! Our first release of 2026 is a minor release for our stable branch, with a range of tweaks, bug fixes and minor improvements for you.
A summary of changes in this release:
Fixes and improvements  mod_storage_sql: Set configurable wait time for locked SQLite3 database net.server_event: Port TLS 1.3 channel binding method to libevent backend mod_roster: Add command for cleaning out invalid contact JIDs migrator: Allow migrating between different configs of the same driver mod_admin_shell: Allow pinging any JID with xmpp:ping() mod_invites: Accept &amp;ndash;admin flag as shortcut for &amp;ndash;role prosody:admin mod_mam: Add send_legacy_offline_messages_to_mam_clients config option mod_limits: Allow configuration of general &amp;lsquo;s2s&amp;rsquo; limit, and have s2sout inherit from s2sin mod_storage_internal: Return item-not-found for unknown before/after ids MUC: Fixes for room avatar caching  Minor changes  core.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;Happy new year! Our first release of 2026 is a minor release for our stable
branch, with a range of tweaks, bug fixes and minor improvements for you.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_storage_sql: Set configurable wait time for locked SQLite3 database&lt;/li&gt;
&lt;li&gt;net.server_event: Port TLS 1.3 channel binding method to libevent backend&lt;/li&gt;
&lt;li&gt;mod_roster: Add command for cleaning out invalid contact JIDs&lt;/li&gt;
&lt;li&gt;migrator: Allow migrating between different configs of the same driver&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Allow pinging any JID with xmpp:ping()&lt;/li&gt;
&lt;li&gt;mod_invites: Accept &amp;ndash;admin flag as shortcut for &amp;ndash;role prosody:admin&lt;/li&gt;
&lt;li&gt;mod_mam: Add send_legacy_offline_messages_to_mam_clients config option&lt;/li&gt;
&lt;li&gt;mod_limits: Allow configuration of general &amp;lsquo;s2s&amp;rsquo; limit, and have s2sout inherit from s2sin&lt;/li&gt;
&lt;li&gt;mod_storage_internal: Return item-not-found for unknown before/after ids&lt;/li&gt;
&lt;li&gt;MUC: Fixes for room avatar caching&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;core.configmanager: Fix referencing previous config options &lt;a href=&#34;https://issues.prosody.im/1950&#34;&gt;#1950&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MUC: Ensure allow MUC PM setting has valid value (fixes &lt;a href=&#34;https://issues.prosody.im/1933&#34;&gt;#1933&lt;/a&gt;: PM does not work on new MUCs)&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Assert that serialization of archive:set() payload succeeds&lt;/li&gt;
&lt;li&gt;mod_smacks: Remove extra optional from sm element&lt;/li&gt;
&lt;li&gt;mod_s2s_auth_dane_in: Fix caching SHA2-512 hash&lt;/li&gt;
&lt;li&gt;MUC: Fix muc_room_default_presence_broadcast option not working&lt;/li&gt;
&lt;li&gt;util.sslconfig: Fix error when applying ssl={[port]=&amp;hellip;}&lt;/li&gt;
&lt;li&gt;net.server_epoll: Restore idle checks after pause (e.g. rate limits)&lt;/li&gt;
&lt;li&gt;util.jid: Validate domainparts using IDNA or as IP literals (fixes &lt;a href=&#34;https://issues.prosody.im/1903&#34;&gt;#1903&lt;/a&gt;: Invalid JID in Roster)&lt;/li&gt;
&lt;li&gt;util.datamanager: Fix detection of index files created on different architectures&lt;/li&gt;
&lt;li&gt;util.startup: Inform process manager about failure to reload config&lt;/li&gt;
&lt;li&gt;mod_muc: Revert f4e16e6265e6 and invalidate avatar cache only on vcard change&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Improve debug logging around unexpected file sizes&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Ensure JIDs are normalized in xmpp:ping()&lt;/li&gt;
&lt;li&gt;mod_invites: Return error when generating password reset for non-existent account&lt;/li&gt;
&lt;li&gt;util.uuid: Update UUIDv7 to match RFC 9562&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Debian repository key change</title>
    <link rel="alternate" href="https://blog.prosody.im/debian-repository-key-change/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/debian-repository-key-change/</id>
    <published>2025-07-28T11:30:55+0100</published>
    <updated>2025-07-28T11:30:55+0100</updated>
    <summary type="html">&lt;p&gt;We have been working on some changes to our Debian/Ubuntu package repository.
If you use our repository to keep up to date with new Prosody packages, &lt;strong&gt;you
need to take action before 4th August 2025&lt;/strong&gt; to continue receiving updates
smoothly.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We have been working on some changes to our Debian/Ubuntu package repository.
If you use our repository to keep up to date with new Prosody packages, &lt;strong&gt;you
need to take action before 4th August 2025&lt;/strong&gt; to continue receiving updates
smoothly.&lt;/p&gt;

&lt;h2 id=&#34;new-repository-instructions&#34;&gt;New repository instructions&lt;/h2&gt;

&lt;p&gt;The &amp;lsquo;apt&amp;rsquo; utility has been moving towards a new format for specifying package
repositories. If you are familiar with putting &lt;code&gt;deb&lt;/code&gt; lines in a &lt;code&gt;sources.list&lt;/code&gt;
file, &lt;a href=&#34;https://gitlab.com/-/snippets/4839263&#34;&gt;that method is changing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The new preferred format for package repository configuration, known as
&amp;ldquo;deb822&amp;rdquo;, has a number of advantages. One of them is simplified configuration
of additional package repositories such as ours.&lt;/p&gt;

&lt;p&gt;The new configuration format is already supported in Debian 12 (bookworm) and
Ubuntu 22.04 LTS (jammy), which means you can use it right now.&lt;/p&gt;

&lt;p&gt;If you already have our package repository configured, simply remove it and
use the &lt;a href=&#34;https://prosody.im/download/package_repository&#34;&gt;new instructions&lt;/a&gt; to
add our updated configuration.&lt;/p&gt;

&lt;h2 id=&#34;signing-key-update&#34;&gt;Signing key update&lt;/h2&gt;

&lt;p&gt;The reason existing deployments should do this before the 4th August is
because from that day, we will be rolling our repository signing key to a
new key. The old key is being retired because it is using older and weaker
algorithms which are being phased out.&lt;/p&gt;

&lt;p&gt;If you do not update the repository configuration on your system, apt will
complain that our repository is not signed by a trusted key (typically a
&lt;code&gt;NO_PUBKEY&lt;/code&gt; error).&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;Old key fingerprint:&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;107D65A0A148C237FDF00AB47393D7E674D9DBB5&lt;/code&gt; (short version: &lt;code&gt;7393D7E674D9DBB5&lt;/code&gt;)&lt;/dd&gt;
&lt;dt&gt;New key fingerprint:&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;AD3B912769C5F962DCBA7956F7A37EB33D0B25D7&lt;/code&gt; (short version: &lt;code&gt;F7A37EB33D0B25D7&lt;/code&gt;)&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;To ensure you are ready for the new key, remove the existing configuration for
our repository from your system, and follow the &lt;a href=&#34;https://prosody.im/download/package_repository#update-prosody.sources&#34;&gt;new instructions to configure
our repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;support-and-questions&#34;&gt;Support and questions&lt;/h2&gt;

&lt;p&gt;If you have any questions about this change, we&amp;rsquo;re always happy to help answer
them in &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;our community chat&lt;/a&gt;. Come and join us!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.2 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.2-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.2-released/</id>
    <published>2025-05-29T22:09:21+0200</published>
    <updated>2025-05-29T22:09:21+0200</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
This update addresses various issues that have been noticed since the previous release, as well as a few improvements, including some important fixes for invites. Some log messages and prosodyctl commands have been improved as well.
A summary of changes in this release:
Fixes and improvements  mod_storage_internal: Fix queries with only start returning extra items mod_invites_register: Stricter validation of registration events  Minor changes  MUC: Ensure allow MUC PM setting has valid value (fixes #1933: PM does not work on new MUCs) mod_storage_sql: Delay showing SQL library error until attempted load mod_storage_sql: Handle failure to deploy new UNIQUE index mod_storage_sql: Add shell command to create tables and indices (again) mod_s2s: Fix log to use formatting instead of concatenation (fixes #1461: Logging issues uncovered by mod_log_json) modulemanager, util.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;This update addresses various issues that have been noticed since the previous release, as well as a few improvements, including some important fixes for invites. Some log messages and prosodyctl commands have been improved as well.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_storage_internal: Fix queries with only start returning extra items&lt;/li&gt;
&lt;li&gt;mod_invites_register: Stricter validation of registration events&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MUC: Ensure allow MUC PM setting has valid value (fixes &lt;a href=&#34;https://issues.prosody.im/1933&#34;&gt;#1933&lt;/a&gt;: PM does not work on new MUCs)&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Delay showing SQL library error until attempted load&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Handle failure to deploy new UNIQUE index&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Add shell command to create tables and indices (again)&lt;/li&gt;
&lt;li&gt;mod_s2s: Fix log to use formatting instead of concatenation (fixes &lt;a href=&#34;https://issues.prosody.im/1461&#34;&gt;#1461&lt;/a&gt;: Logging issues uncovered by mod_log_json)&lt;/li&gt;
&lt;li&gt;modulemanager, util.pluginloader: Improve error message when load fails but some candidates were filtered&lt;/li&gt;
&lt;li&gt;prosodyctl check config: add recommendation to switch from admin_telnet to shell&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Retrieve all indices to see if the new one exists&lt;/li&gt;
&lt;li&gt;prosodyctl check config: List modules which Prosody cannot successfully load&lt;/li&gt;
&lt;li&gt;net.http.files: Fix issue with caching&lt;/li&gt;
&lt;li&gt;util.jsonschema: Fix handling of &lt;code&gt;false&lt;/code&gt; as schema&lt;/li&gt;
&lt;li&gt;mod_invites: Consider password reset a distinct type wrt invite page&lt;/li&gt;
&lt;li&gt;configmanager: Emit config warning when referencing non-existent value&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Add role:list() and role:show() commands&lt;/li&gt;
&lt;li&gt;MUC: Fix nickname registration form error handling (&lt;a href=&#34;https://issues.prosody.im/1930&#34;&gt;#1930&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;MUC: Fix Error when join stanza sent without resource (&lt;a href=&#34;https://issues.prosody.im/1934&#34;&gt;#1934&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;MUC: Factor out identification of join stanza&lt;/li&gt;
&lt;li&gt;mod_invites_register: Don&amp;rsquo;t restrict username for roster invites (thanks lissine)&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Fix matching logic in s2s:close (Thanks Menel)&lt;/li&gt;
&lt;li&gt;mod_authz_internal: Improve error message when invalid role specified&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Add media-src &amp;lsquo;self&amp;rsquo; to Content-Security-Policy header&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Visual tweaks to the output of debug:cert_index()&lt;/li&gt;
&lt;li&gt;mod_http: Log problems parsing IP addresses in X-Forwarded-For (Thanks Boris)&lt;/li&gt;
&lt;li&gt;mod_http: Fix IP address normalization (Thanks Boris)&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Improve reporting of DNS lookup problems&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.1 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.1-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.1-released/</id>
    <published>2025-04-03T20:36:26+0100</published>
    <updated>2025-04-03T20:36:26+0100</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
As is the tradition with software, here is our first patch release following shortly behind our major 13.0.0 release announced a few weeks ago. It fixes some important bugs that were discovered after the release.
Many thanks to everyone who reported issues and helped with testing the fixes for this release. We appreciate it!
For those of you on 0.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;As is the tradition with software, here is our first patch release following
shortly behind our major 13.0.0 release announced a few weeks ago. It fixes
some important bugs that were discovered after the release.&lt;/p&gt;

&lt;p&gt;Many thanks to everyone who reported issues and helped with testing the fixes
for this release. We appreciate it!&lt;/p&gt;

&lt;p&gt;For those of you on 0.12.x who haven&amp;rsquo;t upgraded yet, skip 13.0.0 and jump
straight to 13.0.1 if you can. It will be a smoother upgrade.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_admin_shell: Add debug:cert_index() command to aid debugging of automatic certificate selection&lt;/li&gt;
&lt;li&gt;mod_tls: Enable Prosody&amp;rsquo;s certificate checking for incoming s2s connections (fixes &lt;a href=&#34;https://issues.prosody.im/1916&#34;&gt;#1916&lt;/a&gt;: Impossible to override certificate verification policy in 13.0)&lt;/li&gt;
&lt;li&gt;portmanager: Multiple fixes to use correct certificates for direct TLS ports (fixes &lt;a href=&#34;https://issues.prosody.im/1915&#34;&gt;#1915&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;net.server_epoll: Use correct connection timeout when initiating Direct TLS&lt;/li&gt;
&lt;li&gt;mod_roster: Fix shell commands when a component is involved (fixes &lt;a href=&#34;https://issues.prosody.im/1908&#34;&gt;#1908&lt;/a&gt;: error in prosodyctl shell roster attempting to subscribe a component)&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Explicitly reject all unsupported ranges&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Fix off by one in Range response&lt;/li&gt;
&lt;li&gt;mod_admin_shell, prosodyctl shell: Report command failure when no password entered (fixes &lt;a href=&#34;https://issues.prosody.im/1907&#34;&gt;#1907&lt;/a&gt;: prosodyctl adduser: unexpected account creation on password mismatch)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_storage_sql: Drop legacy index without confirmation to ease upgrades&lt;/li&gt;
&lt;li&gt;util.adminstream: Fix traceback on double-close (fixes &lt;a href=&#34;https://issues.prosody.im/1913&#34;&gt;#1913&lt;/a&gt;: Prosody fails to completely stop while shell watch:log is active)&lt;/li&gt;
&lt;li&gt;certmanager: Improve logging for all cases where certs are skipped&lt;/li&gt;
&lt;li&gt;mod_tls: Collect full certificate chain validation information&lt;/li&gt;
&lt;li&gt;mod_s2s: Fix error detection with newer versions of OpenSSL&lt;/li&gt;
&lt;li&gt;portmanager: Add debug log message to state which certificate we end up using&lt;/li&gt;
&lt;li&gt;prosodyctl check certs: Use correct hostname in warning message about HTTPS&lt;/li&gt;
&lt;li&gt;prosodyctl check: Be more robust against invalid disco_items, and show warning&lt;/li&gt;
&lt;li&gt;spec/tls: Add TLS/certificate integration tests&lt;/li&gt;
&lt;li&gt;mod_http_file_share: Improve error reporting by using util.error more&lt;/li&gt;
&lt;li&gt;core.storagemanager: Fix tests by removing an assert that upset luarocks&lt;/li&gt;
&lt;li&gt;core.usermanager: Fix COMPAT layer for legacy is_admin() function&lt;/li&gt;
&lt;li&gt;certmanager: Remove obsolete and verbose index log (replaced by shell command)&lt;/li&gt;
&lt;li&gt;doap: Add XEP-0333, XEP-0334, XEP-0156 and mod_http_altconnect&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 13.0.0 released!</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-13.0.0-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-13.0.0-released/</id>
    <published>2025-03-17T11:30:00+0000</published>
    <updated>2025-03-17T11:30:00+0000</updated>
    <summary type="html">Welcome to a new major release of the Prosody XMPP server! While the 0.12 branch has served us well for a while now, this release brings a bunch of new features we&amp;rsquo;ve been busy polishing.
If you&amp;rsquo;re unfamiliar with Prosody, it&amp;rsquo;s an open-source project that implements XMPP, an open standard protocol for online communication. Prosody is widely used to power everything from small self-hosted messaging servers to worldwide real-time applications such as Jitsi Meet.</summary>
    <content type="html">

&lt;p&gt;Welcome to a new major release of the Prosody XMPP server! While the 0.12 branch has served us well for a while now, this release brings a bunch of new features we&amp;rsquo;ve been busy polishing.&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re unfamiliar with Prosody, it&amp;rsquo;s an open-source project that implements &lt;a href=&#34;https://xmpp.org&#34;&gt;XMPP&lt;/a&gt;, an open standard protocol for online communication. Prosody is widely used to power everything from small self-hosted messaging servers to worldwide real-time applications such as Jitsi Meet. It&amp;rsquo;s part of a large &lt;a href=&#34;https://xmpp.org/software&#34;&gt;ecosystem of compatible software&lt;/a&gt; that you can use for realtime online communication.&lt;/p&gt;

&lt;h2 id=&#34;before-we-begin&#34;&gt;Before we begin&amp;hellip;&lt;/h2&gt;

&lt;p&gt;The first thing anyone who has been following the project for a while will notice about this release is the version number.&lt;/p&gt;

&lt;p&gt;Long adherents of the cult of &lt;a href=&#34;https://0ver.org/&#34;&gt;0ver&lt;/a&gt;, we finally decided it was time to break away. While, as Shakespeare wrote, &amp;ldquo;That which we call a rose, by any other name would smell as sweet&amp;rdquo;, such is true of version numbers. Prosody has been stable and used in production deployments for many years, however the &amp;lsquo;0.x&amp;rsquo; version number occasionally misled people to believe otherwise. Apart from shifting the middle component leftwards, nothing has changed.&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re really curious, you can read full details in our &lt;a href=&#34;https://prosody.im/doc/packagers#versioning&#34;&gt;versioning and support policy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our version numbers have also been in step with Debian&amp;rsquo;s for several versions now. Could this become a thing? Maybe!&lt;/p&gt;

&lt;h2 id=&#34;overview-of-changes&#34;&gt;Overview of changes&lt;/h2&gt;

&lt;p&gt;This release brings a wide range of improvements that make Prosody more secure, performant, and easier to manage than ever before. Let&amp;rsquo;s review the most significant changes that administrators and users can look forward to across a range of different topics.&lt;/p&gt;

&lt;h3 id=&#34;security-and-authentication&#34;&gt;Security and authentication&lt;/h3&gt;

&lt;p&gt;Security takes centre stage in this release with several notable improvements. Building on DNSSEC, the addition of full DANE support for server-to-server connections strengthens the trust between federating XMPP servers.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve enhanced our support for channel binding, which is now compatible with TLS 1.3, and we&amp;rsquo;ve added support for XEP-0440 which helps clients know which channel binding methods the server supports. Channel binding protects your connection from certain machine-in-the-middle attacks, even if the server&amp;rsquo;s TLS certificate is compromised.&lt;/p&gt;

&lt;h3 id=&#34;account-management&#34;&gt;Account management&lt;/h3&gt;

&lt;p&gt;Administrators now have more granular control over user accounts with the ability to disable and enable them as needed. This can be particularly useful for public servers, where disabling an account can act as a reversible alternative to deletion.&lt;/p&gt;

&lt;p&gt;In fact, we now have the ability to set a grace period for deleted accounts to allow restoring an account (within the grace period) in case of accidental deletion.&lt;/p&gt;

&lt;h3 id=&#34;roles-and-permissions&#34;&gt;Roles and permissions&lt;/h3&gt;

&lt;p&gt;A new role and permissions framework provides more flexible access control. Prosody supplies several built-in roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;prosody:operator&lt;/strong&gt; - for operators of the whole Prosody instance. By default, accounts with this role have full access, including to operations that affect the whole server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prosody:admin&lt;/strong&gt; - the usual role for admins of a specific virtual host (or component). Accounts with this role have permission to manage user accounts and various other aspects of the domain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prosody:member&lt;/strong&gt; - this role is for &amp;ldquo;normal&amp;rdquo; user accounts, but specifically those ones which are trusted to some extent by the administrators. Typically accounts that are created through an invitation or through manual provisioning by the admin have this role.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prosody:registered&lt;/strong&gt; - this role is also for general user accounts, but is used by default for accounts which registered themselves, e.g. if the server has in-band registration enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prosody:guest&lt;/strong&gt; - finally, the &amp;ldquo;guest&amp;rdquo; role is used for temporary/anonymous accounts and is also the default for remote JIDs interacting with the server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more details about how to use these roles, customize permissions, and more, read our new &lt;a href=&#34;https://prosody.im/doc/roles&#34;&gt;roles and permissions documentation&lt;/a&gt;. You will also find the link there for the development documentation, so module developers can make use of the new system.&lt;/p&gt;

&lt;h3 id=&#34;shell-commands&#34;&gt;Shell commands&lt;/h3&gt;

&lt;p&gt;Since the earliest releases, the prosodyctl command has been the admin&amp;rsquo;s primary way of managing and interacting with Prosody. In 0.12 we introduced the &lt;code&gt;prosodyctl shell&lt;/code&gt; interface to send administrative commands to Prosody at runtime via a local connection. It has been a big success, and this release significantly extends its capabilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prosodyctl adduser/passwd/deluser commands now use the admin connection to create users, which improves compatibility with various storage and authentication plugins. It also ensures Prosody can instantly respond to changes, such as immediately disconnecting users when their account is deleted.&lt;/li&gt;
&lt;li&gt;Pubsub management commands have been added, to create/configure/delete nodes and items on pubsub and PEP services without needing an XMPP client.&lt;/li&gt;
&lt;li&gt;One of our own favourites as Prosody developers is the new &lt;code&gt;prosodyctl shell watch log&lt;/code&gt; command, which lets you stream debug logs in real-time without needing to store them on the filesystem.&lt;/li&gt;
&lt;li&gt;Similarly, there is now &lt;code&gt;prosodyctl shell watch stanzas&lt;/code&gt; which lets you monitor stanzas to/from arbitrary JIDs, which is incredibly helpful for developers trying to diagnose various client issues.&lt;/li&gt;
&lt;li&gt;Server-wide announcements can now be sent via the shell, optionally limiting the recipients by online status or role.&lt;/li&gt;
&lt;li&gt;MUC has gained a few new commands for interacting with MUC rooms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;improved-multi-user-chat-muc-management&#34;&gt;Improved Multi-User Chat (MUC) Management&lt;/h2&gt;

&lt;p&gt;The MUC system has received a significant overhaul focusing on security and administrative control. By default, room creation is now restricted to local users, providing better control over who can create persistent and public rooms.&lt;/p&gt;

&lt;p&gt;Server administrators get new shell commands to inspect room occupants and affiliations, making day-to-day operations more straightforward.&lt;/p&gt;

&lt;p&gt;One notable change is that component admins are no longer automatically owners. This can be reverted to the old behaviour with &lt;code&gt;component_admins_as_room_owners = true&lt;/code&gt; in the config, but this has known incompatibilities with some clients. Instead, admins can use the shell or ad-hoc commands to gain ownership of rooms when it&amp;rsquo;s necessary.&lt;/p&gt;

&lt;h3 id=&#34;better-network-performance&#34;&gt;Better Network Performance&lt;/h3&gt;

&lt;p&gt;Network connectivity sees substantial improvements with the implementation of RFC 8305&amp;rsquo;s &amp;ldquo;Happy Eyeballs&amp;rdquo; algorithm, which enhances IPv4/IPv6 dual-stack performance and increases the chance of a successful connection.&lt;/p&gt;

&lt;p&gt;Support for TCP Fast Open and deferred accept capabilities (in the server_epoll backend) can potentially reduce connection latency.&lt;/p&gt;

&lt;p&gt;The server now also better handles SRV record selection by respecting the &amp;lsquo;weight&amp;rsquo; parameter, leading to more efficient connection distribution.&lt;/p&gt;

&lt;h3 id=&#34;storage-and-performance-improvements&#34;&gt;Storage and Performance Improvements&lt;/h3&gt;

&lt;p&gt;Under the hood, Prosody now offers better query performance with its internal archive stores by generating indexes.&lt;/p&gt;

&lt;p&gt;SQLite users now have the option to use &lt;a href=&#34;http://lua.sqlite.org/&#34;&gt;LuaSQLite3&lt;/a&gt; instead of LuaDBI, potentially offering better performance and easier deployment.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve also added compatibility with &lt;a href=&#34;https://www.zetetic.net/sqlcipher/&#34;&gt;SQLCipher&lt;/a&gt;, a fork of SQLite that adds support for encrypted databases.&lt;/p&gt;

&lt;h3 id=&#34;configuration-improvements&#34;&gt;Configuration Improvements&lt;/h3&gt;

&lt;p&gt;The configuration system has been modernized to support referencing and appending to previously set options, making complex configurations more manageable.&lt;/p&gt;

&lt;p&gt;While direct Lua API usage in the config file is now deprecated, it remains accessible through the new Lua.* namespace for those who need it.&lt;/p&gt;

&lt;p&gt;Also new in this release is the ability to &lt;a href=&#34;https://prosody.im/doc/configure#credential&#34;&gt;reference credentials or other secrets&lt;/a&gt; in the configuration file, without storing them in the file itself. It is compatible with the credentials mechanisms supported by &lt;a href=&#34;https://wiki.archlinux.org/title/Systemd-creds&#34;&gt;systemd&lt;/a&gt;, &lt;a href=&#34;https://www.redhat.com/en/blog/new-podman-secrets-command&#34;&gt;podman&lt;/a&gt; and more.&lt;/p&gt;

&lt;h3 id=&#34;developer-api-changes&#34;&gt;Developer/API changes&lt;/h3&gt;

&lt;p&gt;The development experience has always been an important part of our project - we set out to make an XMPP server that was very easy to extend and customize. Our developer API has improved with every release. We&amp;rsquo;ve even had first-time coders write Prosody plugins!&lt;/p&gt;

&lt;p&gt;There are too many improvements to list here, but some notable ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage access from modules has been simplified with a new &amp;lsquo;keyval+&amp;rsquo; store type, which combines the old &amp;lsquo;keyval&amp;rsquo; (default) and &amp;lsquo;map&amp;rsquo; stores into a single interface. Before this change, many modules had to open the store twice to utilize the two APIs.&lt;/li&gt;
&lt;li&gt;Any module can now replace custom permission handling with Prosody&amp;rsquo;s own permission framework via the simple &lt;code&gt;module:may()&lt;/code&gt; API call.&lt;/li&gt;
&lt;li&gt;Providing new commands for &lt;code&gt;prosodyctl shell&lt;/code&gt; is now &lt;a href=&#34;https://prosody.im/doc/developers/shell_command&#34;&gt;much easier&lt;/a&gt; for module developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Backwards compatibility is of course generally preserved, although &lt;code&gt;is_admin()&lt;/code&gt; has been deprecated in favour of &lt;code&gt;module:may()&lt;/code&gt;. Modules that want to remain compatible with older versions can use &lt;a href=&#34;https://modules.prosody.im/mod_compat_roles&#34;&gt;mod_compat_roles&lt;/a&gt; to enable (limited) permission functionality.&lt;/p&gt;

&lt;h2 id=&#34;important-notes-for-upgrading&#34;&gt;Important Notes for Upgrading&lt;/h2&gt;

&lt;p&gt;A few breaking changes are worth noting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lua 5.1 support has been removed (this also breaks compatibility with LuaJIT, which is based primarily on Lua 5.1).&lt;/li&gt;
&lt;li&gt;Some MUC default behaviors have changed regarding room creation and admin permissions (see above).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;We&amp;rsquo;re very excited about this release, which represents a significant step forward for Prosody, and contains improvements for virtually every aspect of the server. From enhanced security to better performance and more flexible administration tools, there has never been a better time to deploy Prosody and take control of your realtime communications.&lt;/p&gt;

&lt;p&gt;For full detailed information about the changes in this release, and advice for upgrading, view the &lt;a href=&#34;https://prosody.im/doc/release/13.0.0&#34;&gt;Prosody 13.0.0 release notes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As always, if you have any problems or questions with Prosody or the new release, drop by our &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;community chat&lt;/a&gt;!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 0.12.5 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-0.12.5-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-0.12.5-released/</id>
    <published>2024-12-31T16:54:38+0000</published>
    <updated>2024-12-31T16:54:38+0000</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
Hope everyone has had a good 2024, and you&amp;rsquo;re looking forward to a better 2025!
We&amp;rsquo;re ending this year with a bugfix release for our stable 0.12 branch. This brings some general polish and a collection of fixes for various small issues people have reported in the past months.
A notable behaviour change in this release is that Prosody will no longer send delivery errors to people you have blocked.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;Hope everyone has had a good 2024, and you&amp;rsquo;re looking forward to a better 2025!&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re ending this year with a bugfix release for our stable 0.12 branch. This
brings some general polish and a collection of fixes for various small issues
people have reported in the past months.&lt;/p&gt;

&lt;p&gt;A notable behaviour change in this release is that Prosody will no longer send
delivery errors to people you have blocked. Instead it will now just silently
discard messages from the blocked JID, to avoid informing them that they have
been blocked - which tends to be the preference of people we have spoken with,
as well as the behaviour of many other online platforms. Obviously there are
trade-offs here, so the behaviour is now configurable (see the &lt;a href=&#34;https://prosody.im/doc/modules/mod_blocklist&#34;&gt;mod_blocklist
documentation&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;This will be among the last releases from the 0.12 branch, as we are preparing
a new major release with lots of new features. Stay tuned, and happy new year!&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_blocklist: Drop blocked messages without error, option to restore compliant behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;core.certmanager: Validate that &amp;lsquo;tls_profile&amp;rsquo; is one of the valid values&lt;/li&gt;
&lt;li&gt;net.http: Throw error if missing TLS context for HTTPS request&lt;/li&gt;
&lt;li&gt;net.http.parser: Reject overlarge header section earlier&lt;/li&gt;
&lt;li&gt;net.http.files: Validate argument to setup function&lt;/li&gt;
&lt;li&gt;MUC: optimizations for broadcast of visitor presence (thanks Jitsi team)&lt;/li&gt;
&lt;li&gt;net.server_event: Add &amp;lsquo;wrapserver&amp;rsquo; API&lt;/li&gt;
&lt;li&gt;scansion: Enable blocklist compat during tests to fix CI&lt;/li&gt;
&lt;li&gt;prosodyctl check: Warn about invalid domain names in the config file&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Correct modern replacement for &amp;lsquo;disallow_s2s&amp;rsquo;&lt;/li&gt;
&lt;li&gt;util.prosodyctl.cert: Ensure old cert is moved out of the way&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Improve error handling of UDP socket setup (for &lt;a href=&#34;https://issues.prosody.im/1803&#34;&gt;#1803&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;mod_smacks: Destroy timed out session in async context (fixes &lt;a href=&#34;https://issues.prosody.im/1884&#34;&gt;#1884&lt;/a&gt;: ASYNC-01 in mod_smacks hibernation timeout)&lt;/li&gt;
&lt;li&gt;mod_invites: Fix traceback when token_info isn&amp;rsquo;t set&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Allow matching on host or bare JID in c2s:show&lt;/li&gt;
&lt;li&gt;mod_admin_adhoc: Fix log messages for reloading modules.&lt;/li&gt;
&lt;li&gt;core.moduleapi: Default labels to empty list to fix error if omitted&lt;/li&gt;
&lt;li&gt;mod_muc_mam: Improve wording of enable setting&lt;/li&gt;
&lt;li&gt;mod_bookmarks: Suppress error publishing empty legacy bookmarks w/ no PEP node&lt;/li&gt;
&lt;li&gt;mod_bookmarks: Clarify log messages on failure to sync to modern PEP bookmarks&lt;/li&gt;
&lt;li&gt;mod_invites_adhoc: Fix result form type (thanks betarays)&lt;/li&gt;
&lt;li&gt;mod_disco: Advertise disco#info and #items on bare JIDs to fix &lt;a href=&#34;https://issues.prosody.im/1664&#34;&gt;#1664&lt;/a&gt;: mod_disco on account doesn&amp;rsquo;t return disco#info feature&lt;/li&gt;
&lt;li&gt;util.xtemplate: Fix error on applying each() to zero stanzas&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>New server, new sponsor</title>
    <link rel="alternate" href="https://blog.prosody.im/new-server-new-sponsor/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/new-server-new-sponsor/</id>
    <published>2024-11-04T10:00:00+0000</published>
    <updated>2024-11-04T10:00:00+0000</updated>
    <summary type="html">It shouldn&amp;rsquo;t surprise you, but here we have an obsession for self-hosting. We fought off many requests to migrate our hosting to Github (even before it was cool to hate Github - Prosody and Github were both founded in the same year!).
As a result, we self-host our XMPP service (of course), our website, our code repos, our issue tracker, package repository and our CI and build system.
This is not always easy - our project has always been a rather informal collaboration of individuals, meaning it&amp;rsquo;s not a commercial venture and we don&amp;rsquo;t have any employees.</summary>
    <content type="html">&lt;p&gt;It shouldn&amp;rsquo;t surprise you, but here we have an obsession for self-hosting. We
fought off many requests to migrate our hosting to Github (even before it was
cool to hate Github - Prosody and Github were both founded in the same year!).&lt;/p&gt;

&lt;p&gt;As a result, we self-host our XMPP service (of course), our website, our code
repos, our issue tracker, package repository and our CI and build system.&lt;/p&gt;

&lt;p&gt;This is not always easy - our project has always been a rather informal
collaboration of individuals, meaning it&amp;rsquo;s not a commercial venture and we
don&amp;rsquo;t have any employees. For better or worse, we&amp;rsquo;re firmly rooted in the
free and open-source software principles that focus on growing communities
rather than profits.&lt;/p&gt;

&lt;p&gt;As a result, we love working with people who have similar roots and values.&lt;/p&gt;

&lt;p&gt;For many years we had a happy home for our servers with &lt;a href=&#34;https://en.wikipedia.org/wiki/Bytemark&#34;&gt;Bytemark&lt;/a&gt;, who were
very supportive of open-source projects, including ours (they used Prosody
themselves for communication, and some of their employees contributed to the
project). We are grateful to them for sponsoring the hosting of our build
server for many years. However, all good things come to an end - and when Bytemark
was acquired in recent years by the much larger &lt;em&gt;iomart Group PLC&lt;/em&gt; enterprise
as part of a string of other acquisitions, we knew our good times with them
were likely drawing to a close.&lt;/p&gt;

&lt;p&gt;This was recently confirmed, as we and the other remaining Bytemark customers
were notified that all services are being moved to another location and another
of iomart&amp;rsquo;s brands. We also received an email to inform us that our
sponsorship would no longer be in effect after this transition. The monthly
price we were told we would have to pay for the server was many multiples of
what an equivalent server would cost by today&amp;rsquo;s standards, even if we had
income to pay for it.&lt;/p&gt;

&lt;p&gt;So, we bid a final farewell to Bytemark! But as one chapter ends, another can begin.&lt;/p&gt;

&lt;p&gt;At the time of the acquisition, many ex-Bytemark customers recommended various
alternatives. However among those, one independent provider, &lt;a href=&#34;https://mythic-beasts.com&#34;&gt;Mythic Beasts&lt;/a&gt;,
really stood out. You may have stumbled across them already, for their
innovative &lt;a href=&#34;https://www.mythic-beasts.com/order/rpi/&#34;&gt;Raspberry Pi hosting&lt;/a&gt; and handling Raspberry Pi launch announcements &lt;a href=&#34;https://www.mythic-beasts.com/blog/2019/06/22/raspberry-pi-on-raspberry-pi/&#34;&gt;on a stack of Raspberry Pi devices&lt;/a&gt;,
or you may have come across them on the Fediverse via their (self-hosted, of
course) &lt;a href=&#34;https://social.mythic-beasts.com/@beasts&#34;&gt;@beasts Mastodon account&lt;/a&gt;. As well
as Raspberry Pi hosting, of course they also offer conventional (dedicated and virtual) servers, DNS, traditional web space, and more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;../files/mythic-beasts-logo.svg&#34; alt=&#34;Mythic Beasts logo&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Mythic Beasts turned out to be just what we were looking for - a no-nonsense
service-driven provider where &lt;a href=&#34;https://www.mythic-beasts.com/blog/2022/10/21/the-secret-to-great-technical-support-no-support-staff/&#34;&gt;you&amp;rsquo;ll find founders answering support tickets&lt;/a&gt;
and where providing amazing service and &lt;a href=&#34;https://www.mythic-beasts.com/blog/category/staff-projects/&#34;&gt;having fun&lt;/a&gt;
while doing so are deemed more important than maximizing growth and
shareholder value.&lt;/p&gt;

&lt;p&gt;Running services with a hosting provider is a kind of partnership that
requires placing a certain amount of trust. Trust that they are competent,
that it&amp;rsquo;s easy to contact someone if things go wrong, and that their values
are aligned with yours for the long term. It&amp;rsquo;s hard to find providers that
tick all these boxes.&lt;/p&gt;

&lt;p&gt;Having used Mythic Beasts for a few things personally in recent years, I
felt increasingly confident they would be a good home for Prosody&amp;rsquo;s
infrastructure too. In fact they&amp;rsquo;ve been very supportive and understanding
from the moment I reached out about Prosody&amp;rsquo;s situation, and have generously
provided us with capacity to migrate all our services across and retire our
old servers. You may have noticed a few blips in recent weeks as we did just
that. Thanks for bearing with us!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All our services are now running smoothly on VMs provided by Mythic Beasts,
and we can&amp;rsquo;t thank them enough as they enable us to continue our journey.&lt;/strong&gt; It
feels great to be with a provider that not only knows but &lt;em&gt;cares&lt;/em&gt; about things
like open-source, &lt;a href=&#34;https://www.mythic-beasts.com/article/environment&#34;&gt;environmental impact&lt;/a&gt;,
as well as IPv6, DNSSEC and all the other internet tech we care about too.&lt;/p&gt;

&lt;p&gt;For those of you curious, here&amp;rsquo;s a list (probably not exhaustive) of things
we are currently running as part of the project&amp;rsquo;s infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prosody, of course, for our community and development chats, notifications and alerts, etc.&lt;/li&gt;
&lt;li&gt;Email (we use &lt;a href=&#34;https://www.postfix.org/&#34;&gt;postfix&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Our website

&lt;ul&gt;
&lt;li&gt;Our &lt;a href=&#34;https://hg.prosody.im/site&#34;&gt;main website&lt;/a&gt; is powered by our own Makefile + pandoc static generator&lt;/li&gt;
&lt;li&gt;Our blog uses &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im&#34;&gt;modules.prosody.im&lt;/a&gt; is again a &lt;a href=&#34;https://hg.prosody.im/mod-browser/&#34;&gt;custom generator&lt;/a&gt; (triggered automatically by pushes to the repo)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Our &lt;a href=&#34;https://hg.prosody.im/&#34;&gt;code repositories&lt;/a&gt; are served using &lt;a href=&#34;https://docs.imfreedom.org/hgkeeper/&#34;&gt;hgkeeper&lt;/a&gt;, which helps us sensibly manage repos and access control&lt;/li&gt;
&lt;li&gt;Our issue tracker (we &lt;a href=&#34;https://hg.prosody.im/issue-tracker&#34;&gt;wrote this one ourselves&lt;/a&gt;, in search of something open-source, flexible and bloat-free)&lt;/li&gt;
&lt;li&gt;Continuous Integration, builds and packages are handled by &lt;a href=&#34;https://buildbot.prosody.im/&#34;&gt;buildbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/download/package_repository#debianubuntu&#34;&gt;Debian package repository&lt;/a&gt;, generated using reprepro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you notice any post-migration issues with our site or services, drop by
the chat and let us know! Also, if you&amp;rsquo;re in need of hosting, now you know
where we would suggest looking first :)&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 0.12.4 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-0.12.4-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-0.12.4-released/</id>
    <published>2023-09-06T12:42:15+0200</published>
    <updated>2023-09-06T12:42:15+0200</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
We&amp;rsquo;re relieved to announce this overdue maintenance release containing a number of bug fixes and also some improvements from the last few months.
Especially the prosodyctl check tool which gained some new diagnostic checks as well as handling of configuration option types the same way Prosody itself does.
A summary of changes in this release:
Minor changes  core.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re relieved to announce this overdue maintenance release containing a
number of bug fixes and also some improvements from the last few months.&lt;/p&gt;

&lt;p&gt;Especially the &lt;code&gt;prosodyctl check&lt;/code&gt; tool which gained some new diagnostic
checks as well as handling of configuration option types the same way
Prosody itself does.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;core.certmanager: Update Mozilla TLS config to version 5.7&lt;/li&gt;
&lt;li&gt;util.error: Fix error on conversion of invalid error stanza &lt;a href=&#34;https://issues.prosody.im/1805&#34;&gt;#1805&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;util.array: Fix new() library function&lt;/li&gt;
&lt;li&gt;util.array: Expose new() on module table&lt;/li&gt;
&lt;li&gt;prosodyctl: Fix output of error messages containing &amp;lsquo;%&amp;rsquo;&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Correct suggested replacement for &amp;lsquo;disallow_s2s&amp;rsquo;&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Allow same config syntax variants as in Prosody for some options &lt;a href=&#34;https://issues.prosody.im/896&#34;&gt;#896&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Fix error where hostname can&amp;rsquo;t be turned into A label&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Hint about the &amp;lsquo;external_addresses&amp;rsquo; config option&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Suggest &amp;lsquo;http_cors_override&amp;rsquo; instead of older CORS settings&lt;/li&gt;
&lt;li&gt;util.prosodyctl.check: Validate format of module list options&lt;/li&gt;
&lt;li&gt;mod_websocket: Add a &amp;lsquo;pre-session-close&amp;rsquo; event &lt;a href=&#34;https://issues.prosody.im/1800&#34;&gt;#1800&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mod_smacks: Fix stray watchdog closing sessions&lt;/li&gt;
&lt;li&gt;mod_csi_simple: Disable revert-to-inactive timer when going to active mode&lt;/li&gt;
&lt;li&gt;mod_csi_simple: Clear delayed active mode timer on disable&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Fix display of remote cert status when expired etc&lt;/li&gt;
&lt;li&gt;mod_smacks: Replace existing watchdog when starting hibernation&lt;/li&gt;
&lt;li&gt;mod_http: Fix error if &amp;lsquo;access_control_allow_origins&amp;rsquo; is set&lt;/li&gt;
&lt;li&gt;mod_pubsub: Send correct &amp;lsquo;jid&amp;rsquo; attribute in disco#items&lt;/li&gt;
&lt;li&gt;mod_http: Unhook CORS handlers only if active to fix an error &lt;a href=&#34;https://issues.prosody.im/1801&#34;&gt;#1801&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mod_s2s: Add event where resolver for s2sout can be tweaked&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 0.12.3 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-0.12.3-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-0.12.3-released/</id>
    <published>2023-02-21T10:46:35+0000</published>
    <updated>2023-02-21T10:46:35+0000</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
This is a bugfix release for our stable 0.12 series. Most notably, it fixes a regression for SQL users introduced in 0.12.2, and a separate long-standing compatibility issue with archive stores on certain MySQL/MariaDB versions.
It also fixes an issue with websockets discovered by the Jitsi team, some issues with our internal HTTP client API, and we&amp;rsquo;ve improved the accuracy of &amp;lsquo;prosodyctl check dns&amp;rsquo; in certain configurations.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;This is a bugfix release for our stable 0.12 series. Most notably, it fixes a
regression for SQL users introduced in 0.12.2, and a separate long-standing
compatibility issue with archive stores on certain MySQL/MariaDB versions.&lt;/p&gt;

&lt;p&gt;It also fixes an issue with websockets discovered by the Jitsi team, some
issues with our internal HTTP client API, and we&amp;rsquo;ve improved the accuracy of
&amp;lsquo;prosodyctl check dns&amp;rsquo; in certain configurations.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_storage_sql: Don&amp;rsquo;t avoid initialization under prosodyctl (fix &lt;a href=&#34;https://issues.prosody.im/1787&#34;&gt;#1787&lt;/a&gt;: mod_storage_sql changes (d580e6a57cbb) breaks prosodyctl)&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Fix for breaking change in certain MySQL versions (&lt;a href=&#34;https://issues.prosody.im/1639&#34;&gt;#1639&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;prosodyctl check dns: Check for Direct TLS SRV records even if not configured (&lt;a href=&#34;https://issues.prosody.im/1793&#34;&gt;#1793&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mod_websocket: Fire pre-session-close event (fixes &lt;a href=&#34;https://issues.prosody.im/1800&#34;&gt;#1800&lt;/a&gt;: mod_websocket: cleanly-closed sessions are hibernated by mod_smacks)&lt;/li&gt;
&lt;li&gt;sessionmanager: Mark session as destroyed to prevent reentry (fixes &lt;a href=&#34;https://issues.prosody.im/1781&#34;&gt;#1781&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;mod_admin_socket: Return error on unhandled input to prevent apparent freeze&lt;/li&gt;
&lt;li&gt;configure: Fix quoting of $LUA_SUFFIX (thanks shellcheck/Zash)&lt;/li&gt;
&lt;li&gt;net.http.parser: Improve handling of responses without content-length&lt;/li&gt;
&lt;li&gt;net.http.parser: Fix off-by-one error in chunk parser&lt;/li&gt;
&lt;li&gt;net.http.server: Add new API to get HTTP request from a connection&lt;/li&gt;
&lt;li&gt;net.http.server: Fix double close of file handle in chunked mode with opportunistic writes (&lt;a href=&#34;https://issues.prosody.im/1789&#34;&gt;#1789&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;util.prosodyctl.shell: Close state on exit to fix saving shell history&lt;/li&gt;
&lt;li&gt;mod_invites: Prefer landing page over xmpp URI in shell command&lt;/li&gt;
&lt;li&gt;mod_muc_mam: Add mam#extended form fields &lt;a href=&#34;https://issues.prosody.im/1796&#34;&gt;#1796&lt;/a&gt; (Thanks Rain)&lt;/li&gt;
&lt;li&gt;mod_muc_mam: Copy &amp;ldquo;include total&amp;rdquo; behavior from mod_mam&lt;/li&gt;
&lt;li&gt;util.startup: Close state on exit to ensure GC finalizers are called&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Prosody 0.12.2 released</title>
    <link rel="alternate" href="https://blog.prosody.im/prosody-0.12.2-released/"/>
    <author><name>The Prosody Team</name></author>
    <id>https://blog.prosody.im/prosody-0.12.2-released/</id>
    <published>2022-12-13T21:23:13+0100</published>
    <updated>2022-12-13T21:23:13+0100</updated>
    <summary type="html">We are pleased to announce a new minor release from our stable branch.
This is a regularly delayed release containing a number of fixes for issues that we have come across since the last release of the 0.12 series.
A summary of changes in this release:
Fixes and improvements  util.stanza: Allow U+7F when constructing stazas net.unbound: Preserve built-in defaults and Prosodys settings for luaunbound (fixes #1763: luaunbound not reading resolv.</summary>
    <content type="html">

&lt;p&gt;We are pleased to announce a new minor release from our stable branch.&lt;/p&gt;

&lt;p&gt;This is a regularly delayed release containing a number of fixes for
issues that we have come across since the last release of the 0.12
series.&lt;/p&gt;

&lt;p&gt;A summary of changes in this release:&lt;/p&gt;

&lt;h2 id=&#34;fixes-and-improvements&#34;&gt;Fixes and improvements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;util.stanza: Allow U+7F when constructing stazas&lt;/li&gt;
&lt;li&gt;net.unbound: Preserve built-in defaults and Prosodys settings for luaunbound (fixes &lt;a href=&#34;https://issues.prosody.im/1763&#34;&gt;#1763&lt;/a&gt;: luaunbound not reading resolv.conf) (thanks rgd)&lt;/li&gt;
&lt;li&gt;mod_smacks: Disable not implemented resumption behavior on s2s&lt;/li&gt;
&lt;li&gt;mod_http: Allow disabling CORS in the http_cors_override option and by default&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;minor-changes&#34;&gt;Minor changes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;util.json: Accept empty arrays with whitespace (fixes &lt;a href=&#34;https://issues.prosody.im/1782&#34;&gt;#1782&lt;/a&gt;: util.json fails to parse empty array with whitespace)&lt;/li&gt;
&lt;li&gt;util.stanza: Adjust number of return values to handle change in dependency of test suite (fix test with luassert &amp;gt;=1.9)&lt;/li&gt;
&lt;li&gt;util.startup: Ensure import() is available in prosodyctl (thanks keyzer)&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Fix initialization when called from prosodyctl&lt;/li&gt;
&lt;li&gt;mod_storage_sql: Fix the summary API with Postgres (&lt;a href=&#34;https://issues.prosody.im/1766&#34;&gt;#1766&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Fixes for showing data related to disconnected sessions (fixes &lt;a href=&#34;https://issues.prosody.im/1777&#34;&gt;#1777&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;core.s2smanager: Don&amp;rsquo;t remove unrelated session on close of bidi session&lt;/li&gt;
&lt;li&gt;mod_smacks: Don&amp;rsquo;t send redundant requests for acknowledgement (&lt;a href=&#34;https://issues.prosody.im/1761&#34;&gt;#1761&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;mod_admin_shell: Rename commands &lt;code&gt;user:roles()&lt;/code&gt; to &lt;code&gt;user:setroles()&lt;/code&gt; and &lt;code&gt;user:showroles()&lt;/code&gt; to &lt;code&gt;user:roles()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;mod_smacks: Bounce unhandled stanzas from local origin (fix &lt;a href=&#34;https://issues.prosody.im/1759&#34;&gt;#1759&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;mod_bookmarks: Reduce log level of message about not having any bookmarks&lt;/li&gt;
&lt;li&gt;mod_s2s: Fix firing buffer drain events&lt;/li&gt;
&lt;li&gt;mod_http_files: Log warning about legacy modules using mod_http_files&lt;/li&gt;
&lt;li&gt;util.startup: Wait for last shutdown steps&lt;/li&gt;
&lt;li&gt;util.datamapper: Improve handling of schemas with non-obvious &amp;ldquo;type&amp;rdquo;&lt;/li&gt;
&lt;li&gt;util.jsonschema: Fix validation to not assume presence of &amp;ldquo;type&amp;rdquo; field&lt;/li&gt;
&lt;li&gt;util.jsonschema: Use same integer/float logic on Lua 5.2 and 5.3&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;download&#34;&gt;Download&lt;/h1&gt;

&lt;p&gt;As usual, download instructions for many platforms can be found on our &lt;a href=&#34;https://prosody.im/download&#34;&gt;download page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, comments or other issues with this release, &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
</feed>
