- Add page metadata (title, description and meta tags) to the content checks panel and userbar Checks dialog, with the userbar dialog now matching the page editor's Checks panel (Thibaud Colas)
- Add formal support for Python 3.15
- Only auto-create redirects when moving or renaming live pages, not draft; use
WAGTAILREDIRECTS_AUTO_CREATE = 'always'to restore previous behaviour (Sage Abdullah) - Show allowed file types as part of document upload form help text (Bhavesh Sharma)
- Purge frontend cache when a page is moved or its slug is changed (Jake Howard)
- Add alternate links to sitemap for translated pages (Julie Rymer)
- Include pages from all locales in the sitemap when internationalisation is enabled, including pages with no live, public version in the site root page's locale (Albina Starykova)
- Add
PURGE_BATCH_SIZEparameter to Cloudflare backend to control number of URLs sent per purge request (Kevin Howbrook) - Add
response_media_typesto serve pages in more than one format based on theAcceptheader, with a matchingVaryheader (Albina Starykova) - Add support for TypedTableBlock in API v3 write requests (Sage Abdullah)
- Add support for nested inline relations in API v3 write requests (Sage Abdullah)
- Add
ImageRenditionFieldfor API v3 (Sage Abdullah) - Expand more details of ForeignKey, ManyToManyField, GenericRelation in API v3 schemas(Sage Abdullah)
- Add
HTMLToMarkdownConverterto convert arbitrary HTML, such as rendered pages, to Markdown (Albina Starykova) - Add support for workflow operations in the v3 API for pages and snippets using
WorkflowMixin(Thibaud Colas) - Describe StreamField blocks in API v3 schemas (Sage Abdullah)
- Add optional
rootparameter toqueryControllerandqueryControllerAllto scope Stimulus controller lookups to an element (Roee Sivan) - Fix: Avoid redundant writes back to the cache on
get_renditionandget_renditions(Mason Lyons, Matt Westcott) - Fix: Allow
ChooserBlock.bulk_to_python()to resolve records with primary keys that need converting to their native type, such as UUIDs (Saksham Chawla) - Fix: Prevent error when accessing the sitemap via an unknown host and no default site is configured (Jawad Khan)
- Fix: Prevent excessive memory usage when copying a page with many revisions (Taras Panasiuk)
- Fix: Prevent nested submenu labels from becoming invisible when using the slim sidebar (Neda Gilanian, Sage Abdullah)
- Fix: Prevent memory exhaustion through over-long inputs to
get_supported_content_language_variant(Matt Westcott) - Fix: Use
add_unredirected_headerto pass authorization headers to Facebook/Instagram embed APIs (Matt Westcott) - Fix: Prevent failures when instantiating form pages within migrations (Satyam Laheri)
- Fix: Fix audit log actions for copy, copy-for-translation and create-alias to log the page being copied rather than its parent (Waqas Ahmed)
- Fix: Prevent bulk deletion of automatically-created redirects when a slug change does not change the page URL (Sage Abdullah)
- Fix: Respect EXIF orientation on avatar uploads (Damien Meur)
- Fix: Improve performance of
instances_user_has_any_permission_forandexplorable_instancesinPagePermissionPolicy(Ayush Kumar) - Fix: Make
ancestor_of,child_of,descendant_ofandtranslation_offilters in V3 API correctly handle reference pages outside of the result set criteria (Satyam Laheri) - Fix: Ensure signature check failure on redirect import raises
SuspiciousOperationrather thanAttributeError(Matt Westcott) - Fix: Prevent syntax errors from crashing a dev server with a
RuntimeErrorwhen using jinja2 (Sage Abdullah, Matt Westcott) - Fix: Add
Vary: X-Requested-Withto responses from pages with anajax_template(Albina Starykova) - Fix: Protect workflow action buttons against multiple submissions that could cause a crash or an overwrite (Nick Moreton, Jakub Mastalerz, Sage Abdullah)
- Fix: Reject workflow actions if the current task state does not match what the user submitted (Sage Abdullah)
- Fix: Produce valid Markdown in V3 API
markdownrich text output for styled text around links, line breaks, multi-paragraph quotes and nested lists (Albina Starykova) - Fix: Prevent N+1 queries in
Site.get_site_root_paths()when internationalization is enabled (Andy Babic) - Fix: Skip API v3 setup and schema generation on startup when
wagtail.api.v3is not installed (Sage Abdullah) - Docs: Fix broken links to Cloudflare and Handsontable documentation (Roshan Ramani)
- Docs: Update generative AI policy to require pull request descriptions to be human-written (Matt Westcott)
- Docs: Fix documentation for
wagtail_update_image_renditionscommand to correctly describe behaviour around purging of renditions (Saksham Chawla) - Docs: Document how to cache the sitemap (Albina Starykova)
- Maintenance: Drop support for Python 3.10
- Maintenance: Remove obsolete use of
USE_L10Nsetting (DresdenGman) - Maintenance: Squash testapp migrations (Sage Abdullah)
- Maintenance: Use
format_htmlfor submit translation form help text (Keerthi Kumar) - Maintenance: Add testing section to PR template (Srishti Jaiswal)
- Maintenance: Remove jQuery usage in ExpandingFormset (Keerthi Kumar)
- Maintenance: Rewrite page privacy ancestor link formatting to verify XSS safety (Keerthi Kumar, Matt Westcott)
- Maintenance: Ensure 'parent' can be translated correctly in different contexts (Storm Heg)