[0.16.15] - 2026-07-26
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
Added
Changed
Fixed
- JMAP:
Email/copyshould returnalreadyExistswhen copying a message to a mailbox that already contains it.Email/copywithonSuccessDestroyOriginaldestroys the copy's creation id instead of the source Email id.CalendarEvent/setdoes not generate auidon create when the client omits it.CalendarEvent/setdoes not refresh theupdatedproperty (iCalendarDTSTAMP) on create or update.EmailSubmission/setrejects valid recipients whose domain is itself a public suffix (e.g.gov.in,co.uk).- Requests are rejected with
notRequestwhen a method name contains a JSON-escaped solidus (e.g.Core\/echo).
- MTA: Panic when MTA-STS is disabled and a remote MTA fetched
/.well-known/mta-sts.txt. - Auth: Scoped credentials with
SysApiKeyCreateorSysApiKeyUpdatepermissions can regain its own account's full rights. - Web Push: Valid VAPID keys are rejected when PEM-encoded with explicit EC parameters, in SEC1 (
EC PRIVATE KEY) format, or with a leading byte-order mark. - Encryption at rest: Appended messages are encrypted for accounts that did not opt in to
encryptOnAppend. - Cache: Account caches silently discard entries larger than a single
quick-cacheshard, causing constant database rebuilds. - Registry: Id references (e.g.
#certificate-...) fail to resolve ondefaultCertificateId,defaultAdminRoleIds,listenerIdsandpublicKey. - Search:
reindexdrops calendar and contact index tasks for accounts with fewer than a full batch of items. - Migration: Abort
--importwhen the target already contains data in the key range being imported. - Cluster: Broadcast subscriber re-subscribes after every message, losing bursts of cluster broadcasts during the reconnect window.
- Enterprise: Per-tenant logo is not shown on the OAuth login password and OTP screens, which are served from the server's canonical host rather than the tenant domain.