# Zulip Server: what changed from 11 to 12 - Product: Zulip Server (https://whatsnew.fyi/product/zulip-server) - Vendor: Zulip - Range: changelog entries numbered after 11.6 up to and including 12.2, stable releases only - Entries below: 3 releases (newest first) - Resolved: 11 is 11.6 and 12 is 12.2, the newest stable release of each major we track - Carrying security changes: 1 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 0 - Page: https://whatsnew.fyi/product/zulip-server/compare/11...12 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (47 changes, grouped by kind) ### Added #### 12.1 (2026-06-26) - Added an `OIDC_REQUIRE_LIMIT_TO_SUBDOMAINS` setting, like the existing `SAML_REQUIRE_LIMIT_TO_SUBDOMAINS` setting, to require each configured OIDC identity provider to declare which subdomains it can be used for - Added checks that the file upload storage backend is correctly configured - Added a timeout and debug logging for downloads of Puppet dependencies during installation and upgrade #### 12.0 (2026-04-27) - End-to-end encrypted mobile push notifications are now generally available and enabled if both server and client are modern - Added a new organization setting for media preview size, controlling image and video thumbnail sizes in message content - Added support for using Jdenticons for default profile pictures, which are the default for new organizations - Linkifiers now support reverse linkification: pasting a URL matching a linkifier pattern auto-converts to its short text form - Added a jump-to-date picker in the message feed, accessible by clicking a date separator or the date in the conversation header bar - Added support for administrators to bulk-edit most settings for existing users via the Default user settings panel - Added Nextcloud Talk, Constructor Groups, and Webex as video call provider options - Added a Report message feature, with a configurable private channel for moderators to handle reports - Added demo organizations, which allow testing Zulip without sharing an email address - Added many new default external account types for custom profile fields, made the URL pattern optional, and made external accounts available for matching users in typeahead - Added a beta data import tool for Microsoft Teams - Added a frequently used section to the web app emoji picker ### Changed #### 12.2 (2026-08-10) - Mattermost imports are considerably faster #### 12.1 (2026-06-26) - When the `require_e2ee_push_notifications` setting is enabled, legacy push notifications are now skipped entirely, rather than sent with redacted content - Improved email gateway handling of long subjects: the full subject is now included in the message body when it is truncated to fit in a topic - Improved Mattermost import tooling to handle attachment files missing from the export - The topic summarization feature now uses the OpenAI Python SDK, rather than litellm; the `TOPIC_SUMMARIZATION_MODEL` setting now takes a plain model name, with OpenAI-compatible providers configured via the new `TOPIC_SUMMARIZATION_API_BASE` setting - Improved configuration checks and error messages for Helm and Docker deployments #### 12.0 (2026-04-27) - Uploaded images and audio files now use the ![alt text](url) markdown syntax, which does not require a separate link element - Redesigned the Recent Conversations view with a new table layout, one-line conversation display, folder filter dropdown, improved column sizing and alignment, and better touchscreen support - Redesigned channel-specific settings with a much cleaner view, a dedicated Permissions tab, and support for filtering by folder - Emoji-only messages now render the emoji extra large - Improved search typeahead with topic suggestions from all subscribed channels and nicer styling for channel/topic pair suggestions - Migrated the help center to Starlight, the Astro-based static site generator, adding full-text search and a modernized design - Reworked the Zulip Docker container and published the new version as https://ghcr.io/zulip/zulip-server with improved documentation and tests for Docker Compose and Helm deployments ### Fixed #### 12.2 (2026-08-10) - Mattermost import tool now correctly preserves text that resembles an HTML tag such as or in imported messages - Fixed crashes in some database migrations that run when upgrading from Zulip 11.x #### 12.1 (2026-06-26) - Fixed signing up via an external authentication method (e.g., SAML) in organizations that require an invitation to join: pending email invitations are now honored, not just multiuse invite links - Fixed a long-standing bug where new users present in the LDAP directory could not sign up via an external authentication method (e.g., SAML); registration silently redirected back to the login page - Fixed an error preventing the data exports panel in organization settings from loading for organizations that had been imported from another Zulip server - Fixed quoting or viewing the source of messages in public channels the user is not subscribed to - Fixed user typeaheads displaying "null" in place of a hidden email address - Fixed the member list in group settings being cut off, with no way to scroll through the full list of members - Fixed a server error when saving channel descriptions containing Dropbox links - Fixed GIF search returning an error for users with certain language settings - Fixed `restore-backup` to preserve symlinked uploads and configuration directories - Fixed `restore-backup` failing on some systems where the PostgreSQL user did not have permission to read the restore scripts - Raised the locked-memory limit for PostgreSQL, fixing PostgreSQL 18 startup failures with io_uring on Linux kernels >= 6.14 - Fixed RabbitMQ setup in various scripts failing when a non-default `RABBITMQ_VHOST` was set ### Security #### 12.2 (2026-08-10) - Guest users could receive new messages sent to public channels they were not subscribed to by registering an event queue with appropriate parameters, and existing event queues continued to deliver such messages after a guest lost access to the channel - Insufficient access checks in message draft creation allowed a guest to gain access to the profile information of any other user in organizations that limit which users guests can see - In organizations with web-public channels enabled, logged-out visitors could read the custom profile field values of every user in the organization - The OpenID Connect authentication backend did not consult the email_verified claim, allowing a misconfigured identity provider to log a user into an account belonging to someone else - The message rendering endpoint did not enforce the message content length limit, allowing an authenticated user to consume excessive server resources ## Release notes ### 12.2 — Zulip Server 12.2 - Date: 2026-08-10 - Version: 12.2 - Original notes: https://github.com/zulip/zulip/releases/tag/12.2 - Permalink: https://whatsnew.fyi/product/zulip-server/releases/12.2 - **security** — Guest users could receive new messages sent to public channels they were not subscribed to by registering an event queue with appropriate parameters, and existing event queues continued to deliver such messages after a guest lost access to the channel - **security** — Insufficient access checks in message draft creation allowed a guest to gain access to the profile information of any other user in organizations that limit which users guests can see - **security** — In organizations with web-public channels enabled, logged-out visitors could read the custom profile field values of every user in the organization - **security** — The OpenID Connect authentication backend did not consult the email_verified claim, allowing a misconfigured identity provider to log a user into an account belonging to someone else - **security** — The message rendering endpoint did not enforce the message content length limit, allowing an authenticated user to consume excessive server resources - **fixed** — Mattermost import tool now correctly preserves text that resembles an HTML tag such as or in imported messages - **changed** — Mattermost imports are considerably faster - **fixed** — Fixed crashes in some database migrations that run when upgrading from Zulip 11.x _Released 2026-08-10_ - GHSA-5r8f-gq2h-fcgp: Guest users could receive new messages sent to public channels they were not subscribed to, by registering an event queue with appropriate parameters. Existing event queues also continued to deliver such messages after a guest lost access to the channel. This vulnerability was discovered in an internal audit, and independently reported by Anthony Green of GreenHat Security. - GHSA-vwqp-7j32-xfg5: Insufficient access checks in message draft creation allowed a guest to gain access to the profile information of any other user in the organization. This issue only impacted organizations that limit which users guests can see. This vulnerability was reported by @JebeenLee. - GHSA-3m37-hwq6-jrj8: In organizations with web-public channels enabled, logged-out visitors could read the custom profile field values of every user in the organization. This vulnerability was reported by Jaeyoon Kim (@jaeyoon-kim-dev) of System Security Lab, SKKU. - GHSA-xw9h-9rcm-hx4m: The OpenID Connect authentication backend did not consult the `email_verified` claim, so a misconfigured identity provider sending an untrusted `email` claim with `email_verified=false` could log a user into an account belonging to someone else. This vulnerability was reported by @JebeenLee. - GHSA-m257-w4r5-5rmf: The message rendering endpoint (`POST /json/messages/render`) did not enforce the message content length limit, allowing an authenticated user to consume excessive server resources. This vulnerability was reported by @Team-Atlanta. - Fixed the Mattermost import tool silently discarding text that resembles an HTML tag (e.g., `` or ``) from imported messages. Mattermost imports are also considerably faster as a result of this change. - Fixed crashes in some database migrations that run when upgrading from Zulip 11.x. ### 12.1 — Zulip Server 12.1 - Date: 2026-06-26 - Version: 12.1 - Original notes: https://github.com/zulip/zulip/releases/tag/12.1 - Permalink: https://whatsnew.fyi/product/zulip-server/releases/12.1 - **changed** — When the `require_e2ee_push_notifications` setting is enabled, legacy push notifications are now skipped entirely, rather than sent with redacted content - **fixed** — Fixed signing up via an external authentication method (e.g., SAML) in organizations that require an invitation to join: pending email invitations are now honored, not just multiuse invite links - **fixed** — Fixed a long-standing bug where new users present in the LDAP directory could not sign up via an external authentication method (e.g., SAML); registration silently redirected back to the login page - **fixed** — Fixed an error preventing the data exports panel in organization settings from loading for organizations that had been imported from another Zulip server - **fixed** — Fixed quoting or viewing the source of messages in public channels the user is not subscribed to - **fixed** — Fixed user typeaheads displaying "null" in place of a hidden email address - **fixed** — Fixed the member list in group settings being cut off, with no way to scroll through the full list of members - **fixed** — Fixed a server error when saving channel descriptions containing Dropbox links - **fixed** — Fixed GIF search returning an error for users with certain language settings - **changed** — Improved email gateway handling of long subjects: the full subject is now included in the message body when it is truncated to fit in a topic - **changed** — Improved Mattermost import tooling to handle attachment files missing from the export - **changed** — The topic summarization feature now uses the OpenAI Python SDK, rather than litellm; the `TOPIC_SUMMARIZATION_MODEL` setting now takes a plain model name, with OpenAI-compatible providers configured via the new `TOPIC_SUMMARIZATION_API_BASE` setting - **added** — Added an `OIDC_REQUIRE_LIMIT_TO_SUBDOMAINS` setting, like the existing `SAML_REQUIRE_LIMIT_TO_SUBDOMAINS` setting, to require each configured OIDC identity provider to declare which subdomains it can be used for - **added** — Added checks that the file upload storage backend is correctly configured - **changed** — Improved configuration checks and error messages for Helm and Docker deployments - **fixed** — Fixed `restore-backup` to preserve symlinked uploads and configuration directories - **fixed** — Fixed `restore-backup` failing on some systems where the PostgreSQL user did not have permission to read the restore scripts - **fixed** — Raised the locked-memory limit for PostgreSQL, fixing PostgreSQL 18 startup failures with io_uring on Linux kernels >= 6.14 - **fixed** — Fixed RabbitMQ setup in various scripts failing when a non-default `RABBITMQ_VHOST` was set - **added** — Added a timeout and debug logging for downloads of Puppet dependencies during installation and upgrade _Released 2026-06-26_ - When the `require_e2ee_push_notifications` setting is enabled, legacy push notifications are now skipped entirely, rather than sent with redacted content. - Fixed signing up via an external authentication method (e.g., SAML) in organizations that require an invitation to join: pending email invitations are now honored, not just multiuse invite links. - Fixed a long-standing bug where new users present in the LDAP directory could not sign up via an external authentication method (e.g., SAML); registration silently redirected back to the login page. - Fixed an error preventing the data exports panel in organization settings from loading, for organizations that had been imported from another Zulip server. This release includes a migration to fix problematic export records created by earlier versions. - Fixed quoting or viewing the source of messages in public channels the user is not subscribed to. - Fixed user typeaheads displaying “null” in place of a hidden email address. - Fixed the member list in group settings being cut off, with no way to scroll through the full list of members. - Fixed a server error when saving channel descriptions containing Dropbox links. - Fixed GIF search returning an error for users with certain language settings. - Improved email gateway handling of long subjects: the full subject is now included in the message body when it is truncated to fit in a topic. - Improved Mattermost import tooling to handle attachment files missing from the export. - The topic summarization feature now uses the OpenAI Python SDK, rather than litellm. Installations using `TOPIC_SUMMARIZATION_MODEL` must update their configuration: the setting now takes a plain model name, with OpenAI-compatible providers configured via the new `TOPIC_SUMMARIZATION_API_BASE` setting. - Added an `OIDC_REQUIRE_LIMIT_TO_SUBDOMAINS` setting, like the existing `SAML_REQUIRE_LIMIT_TO_SUBDOMAINS` setting. If enabled, each configured OIDC identity provider is required to declare which subdomains it can be used for. - Added checks that the file upload storage backend is correctly configured. - Improved configuration checks and error messages for Helm and Docker deployments. - Fixed `restore-backup` to preserve symlinked uploads and configuration directories. - Fixed `restore-backup` failing on some systems, where the PostgreSQL user did not have permission to read the restore scripts. - Raised the locked-memory limit for PostgreSQL, fixing PostgreSQL 18 startup failures with io_uring on Linux kernels >= 6.14 (e.g., Ubuntu 26.04). - Fixed RabbitMQ setup in various scripts failing when a non-default `RABBITMQ_VHOST` was set. - Added a timeout and debug logging for downloads of Puppet dependencies during installation and upgrade. - Improved documentation for Docker-based deployments. - Updated Python dependencies. ### 12.0 — Zulip Server 12.0 - Date: 2026-04-27 - Version: 12.0 - Original notes: https://github.com/zulip/zulip/releases/tag/12.0 - Permalink: https://whatsnew.fyi/product/zulip-server/releases/12.0 - **added** — End-to-end encrypted mobile push notifications are now generally available and enabled if both server and client are modern - **changed** — Uploaded images and audio files now use the ![alt text](url) markdown syntax, which does not require a separate link element - **added** — Added a new organization setting for media preview size, controlling image and video thumbnail sizes in message content - **added** — Added support for using Jdenticons for default profile pictures, which are the default for new organizations - **changed** — Redesigned the Recent Conversations view with a new table layout, one-line conversation display, folder filter dropdown, improved column sizing and alignment, and better touchscreen support - **changed** — Redesigned channel-specific settings with a much cleaner view, a dedicated Permissions tab, and support for filtering by folder - **changed** — Emoji-only messages now render the emoji extra large - **added** — Linkifiers now support reverse linkification: pasting a URL matching a linkifier pattern auto-converts to its short text form - **added** — Added a jump-to-date picker in the message feed, accessible by clicking a date separator or the date in the conversation header bar - **added** — Added support for administrators to bulk-edit most settings for existing users via the Default user settings panel - **added** — Added Nextcloud Talk, Constructor Groups, and Webex as video call provider options - **added** — Added a Report message feature, with a configurable private channel for moderators to handle reports - **added** — Added demo organizations, which allow testing Zulip without sharing an email address - **changed** — Improved search typeahead with topic suggestions from all subscribed channels and nicer styling for channel/topic pair suggestions - **added** — Added many new default external account types for custom profile fields, made the URL pattern optional, and made external accounts available for matching users in typeahead - **added** — Added a beta data import tool for Microsoft Teams - **changed** — Migrated the help center to Starlight, the Astro-based static site generator, adding full-text search and a modernized design - **changed** — Reworked the Zulip Docker container and published the new version as https://ghcr.io/zulip/zulip-server with improved documentation and tests for Docker Compose and Helm deployments - **added** — Added a frequently used section to the web app emoji picker _Released 2026-04-27_ ###### Highlights - End-to-end encrypted mobile push notifications are now generally available and enabled if both server and client are modern. - Uploaded images and audio files now use the `![alt text](url)` markdown syntax, which does not require a separate link element. - Added a new organization setting for media preview size, controlling image and video thumbnail sizes in message content. - Added support for using Jdenticons for default profile pictures. Jdenticons render better in both Zulip themes and have less privacy risk than Gravatar, and are the default for new organizations. - Redesigned the Recent Conversations view with a new table layout, one-line conversation display, folder filter dropdown, improved column sizing and alignment, and better touchscreen support. - Redesigned channel-specific settings, with a much cleaner view and a dedicated "Permissions" tab. The channel settings panel now supports filtering by folder. - Emoji-only messages now render the emoji extra large. - Linkifiers now support reverse linkification: pasting a URL matching a linkifier pattern auto-converts to its short text form. - Added a jump-to-date picker in the message feed, accessible by clicking a date separator or the date in the conversation header bar. - Added support for administrators to bulk-edit most settings for existing users via the "Default user settings" panel. Administrators can choose to only edit settings for users who haven't already changed that setting. (Security and privacy settings cannot be edited by administrators). - Added Nextcloud Talk, Constructor Groups, and Webex as video call provider options. - Added a "Report message" feature, with a configurable private channel for moderators to handle reports. - Added demo organizations, which allow testing Zulip without sharing an email address. - Improved search typeahead with topic suggestions from all subscribed channels and nicer styling for channel/topic pair suggestions. - Added many new default external account types for custom profile fields, made the URL pattern optional, and made external accounts available for matching users in typeahead. - Added a beta data import tool for Microsoft Teams. - Migrated the help center to Starlight, the Astro-based static site generator, adding full-text search and a modernized design. - The Zulip Docker container has been reworked, and the new version published as https://ghcr.io/zulip/zulip-server. This resolves nearly all outstanding issues in the issue tracker, and adds tests and substantially more documentation, for both Docker Compose and Helm deployments. See the [upgrade notes](#upgrade-notes-for-120) for details. ###### Full feature changelog - Added a "frequently used" section to the web app emoji picker. - Added a channel-specific setting for who can create topics. - Added an organization setting to disable automated messages about channel events (e.g., channel description changes). - Added a Roles tab in group settings, detailing the permissions assigned to users with specific roles. - Added a `mentions:` search operator for finding messages that mention a specific user, distinct from `has:mention` which filters to messages mentioning yourself. - Added an icon button in recipient headers to copy the topic link. - Added an "unsupported browser" warning for ancient browser versions. - Added an `is:followed` filter for topics in the left sidebar. - Added image cropping support for realm logo, realm icon, and user avatar uploads. - When deactivating a user, administrators now have convenient options to delete their messages or scrub their profile information. - Added distinct "Deleted user" display for accounts that have been permanently deleted (unlike deactivated users, which preserves metadata and is reversible). - Added Discord as an authentication option. - Added SCIM support for syncing custom profile fields. - Th _[Truncated at 4000 characters — full notes: https://github.com/zulip/zulip/releases/tag/12.0]_