Releases: wagtail/wagtail
Releases · wagtail/wagtail
6.1rc1
- Refine wording of page & collection privacy using password is a shared password and should not be used for secure content (Rohit Sharma, Jake Howard)
- Add RelatedObjectsColumn to the table UI framework (Matt Westcott)
- Reduce memory usage when rebuilding search indexes (Jake Howard)
- Support creating images in .ico format (Jake Howard)
- Add the ability to disable the usage of a shared password for enhanced security for the private pages and collections (documents) feature (Salvo Polizzi, Jake Howard)
- Add system checks to ensure that
WAGTAIL_DATE_FORMAT
,WAGTAIL_DATETIME_FORMAT
,WAGTAIL_TIME_FORMAT
are correctly configured (Rohit Sharma, Coen van der Kamp) - Allow custom permissions with the same prefix as built-in permissions (Sage Abdullah)
- Allow displaying permissions linked to the Admin model's content type (Sage Abdullah)
- Add support for Draftail's JavaScript to use chooserUrls provided by entity options & for the Draftail widget to encode lazy URLs/ translations (Elhussein Almasri)
- Reimplement search promotions
IndexView
using thegeneric.IndexView
(Rohit Sharma, Sage Abdullah, Storm Heg) - Reimplement redirects
IndexView
using thegeneric.IndexView
(Rohit Sharma, Sage Abdullah, Temidayo Azeez) - Add
PageListingViewSet
for custom per-page-type page listings (Matt Westcott) - Add
ChooseParentView
toPageListingViewSet
to allow creating pages from custom page listings (Abdelrahman Hamada, Sage Abdullah) - Implement new universal listings design for image listing view (Sage Abdullah)
- Implement new universal listings design for document listing view (Sage Abdullah)
- Implement new universal listings design for site and locale listing views (Sage Abdullah)
- Implement new universal listings design for page and snippet history view (Sage Abdullah)
- Implement new universal listings design for form builder submissions view (Sage Abdullah)
- Implement new universal listings design for collections listing view (Sage Abdullah)
- Implement new universal listings design for groups views (Sage Abdullah)
- Implement new universal listings design for users views (Sage Abdullah)
- Implement new universal listings design for workflow and task views (Sage Abdullah)
- Refine slim header button style to match designs (Sage Abdullah)
- Add simple admin keyboard shortcuts overview dialog, available in the help sub-menu (Karthik Ayangar, Rohit Sharma)
- Add ability to bulk toggle permissions in the user group editing view, including shift+click for multiple selections (LB (Ben) Johnston, Kalob Taulien)
- Update the minimum version of
djangorestframework
to 3.15.1 (Sage Abdullah) - Add support for related fields in generic
IndexView.list_display
(Abdelrahman Hamada) - Improve page fetching logic and cache route results per request (Gordon Pendleton)
- Optimise rewriting of links / embeds in rich text using bulk database lookups (Andy Chosak)
- Add normalization mechanism to StreamField so that assignments and defaults can be passed in a wider range of data types (Joshua Munn, Matt Westcott)
- Allow specifying a
STORAGES
alias name forWAGTAILIMAGES_RENDITION_STORAGE
(Alec Baron) - Update
PASSWORD_REQUIRED_TEMPLATE
setting toWAGTAIL_PASSWORD_REQUIRED_TEMPLATE
with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston) - Update
DOCUMENT_PASSWORD_REQUIRED_TEMPLATE
setting toWAGTAILDOCS_PASSWORD_REQUIRED_TEMPLATE
with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston) - When editing settings (contrib) use the same icon in the editing view that was declared when registering the setting (Vince Salvino, Rohit Sharma)
- Populate django-treebeard cache during page routing to improve performance of
get_parent
(Nigel van Keulen) - Add a new user profile preference to configure user interface information density (Thibaud Colas)
- Add additional field types to Elasticsearch mapping (scott-8)
- Fix: Fix typo in
__str__
for MySQL search index (Jake Howard) - Fix: Ensure that unit tests correctly check for migrations in all core Wagtail apps (Matt Westcott)
- Fix: Correctly handle
date
objects onhuman_readable_date
template tag (Jhonatan Lopes) - Fix: Ensure re-ordering buttons work correctly when using a nested InlinePanel (Adrien Hamraoui)
- Fix: Consistently remove model's
verbose_name
in group edit view when listing custom permissions (Sage Abdullah, Neeraj Yetheendran, Omkar Jadhav) - Fix: Resolve issue local development of docs when running
make livehtml
(Sage Abdullah) - Fix: Resolve issue with unwanted padding in chooser modal listings (Sage Abdullah)
- Fix: Ensure form builder emails that have date or datetime fields correctly localize dates based on the configured
LANGUAGE_CODE
(Mark Niehues) - Fix: Ensure the Stimulus
UnsavedController
checks for nested removal/additions of inputs so that the unsaved warning shows in more valid cases when editing a page (Karthik Ayangar) - Fix: Ensure
get_add_url()
is always used to re-render the add button when the listing is refreshed in viewsets (Sage Abdullah) - Fix: Ensure dropdown content cannot get higher than the viewport and add scrolling within content if needed (Chiemezuo Akujobi)
- Fix: Prevent snippets model index view from crashing when a model does not have an
objects
manager (Jhonatan Lopes) - Fix: Fix
get_dummy_request
's resulting host name when running tests withALLOWED_HOSTS = ["*"]
(David Buxton) - Fix: Fix timezone handling in the
timesince_last_update
template tag (Matt Westcott) - Fix: Fix Postgres phrase search to respect the language set in settings (Ihar Marhitych)
- Fix: Retain query parameters when switching between locales in the page chooser (Abdelrahman Hamada, Sage Abdullah)
- Fix: Add
w-kbd-scope-value
with support forglobal
so that specific keyboard shortcuts (e.g. ctrl+s/cmd+s) trigger consistently even when focused on fields (Neeraj Yetheendran) - Fix: Improve exception handling when generating image renditions concurrently (Andy Babic)
- Fix: Respect
WAGTAIL_ALLOW_UNICODE_SLUGS
setting when auto-generating slugs (LB (Ben) Johnston) - Docs: Add contributing development documentation on how to work with a fork of Wagtail (Nix Asteri, Dan Braghis)
- Docs: Make sure the settings panel is listed in tabbed interface examples (Tibor Leupold)
- Docs: Update content and page names to their US spelling instead of UK spelling (Victoria Poromon)
- Docs: Update broken and incorrect links throughout the documentation (EK303)
- Docs: Fix formatting of
--purge-only
inwagtail_update_image_renditions
management command section (Pranith Beeram) - Docs: Update template components documentation to better explain the usage of the Laces library (Tibor Leupold)
- Docs: Update Sphinx theme to
6.3.0
with a fix for the missing favicon (Sage Abdullah) - Docs: Document risk of XSS attacks on document upload (Matt Westcott, with thanks to Georgios Roumeliotis of TwelveSec for the original report)
- Docs: Add clarity to how custom StreamField validation works (Tibor Leupold)
- Docs: Add additional reference to the
wagtail_update_image_renditions
management command on the using images page (LB (Ben) Johnston) - Docs: Correct information about line endings in Window development docs (Sage Abdullah)
- Docs: Improve code snippets for "Create a footer for all pages" tutorial section (Drikus Roor)
- Maintenance: Move RichText HTML whitelist parser to use the faster, built in
html.parser
(Jake Howard) - Maintenance: Remove duplicate 'path' in default_exclude_fields_in_copy (Ramchandra Shahi Thakuri)
- Maintenance: Update unit tests to always use the faster, built in
html.parser
& removehtml5lib
dependency (Jake Howard) - Maintenance: Adjust Eslint rules for TypeScript files (Karthik Ayangar)
- Maintenance: Rename the React
Button
that only renders links (a element) toLink
and remove unused prop & behavior that was non-compliant for aria role usage (Advik Kabra) - Maintenance: Set up an
wagtail.models.AbstractWorkflow
model to support future customizations around workflows (Hossein) - Maintenance: Improve
classnames
template tag to handle nested lists of strings, use template tag for adminbody
element (LB (Ben) Johnston) - Maintenance: Merge
UploadedDocument
andUploadedImage
into newUploadedFile
model for easier shared code usage (Advik Kabra, Karl Hobley) - Maintenance: Optimize queries in dashboard panels (Sage Abdullah)
- Maintenance: Optimize queries in group create/edit view (Sage Abdullah)
- Maintenance: Move modal-workflow.js script usage to base admin template instead of ad-hoc imports (Elhussein Almasri)
- Maintenance: Update all Draftail chooserUrls to be passed in via the Entity options instead of using
window.chooserUrls
globals, removing the need for inline scripts (Elhussein Almasri) - Maintenance: Enhance
w-init
(InitController) to support adetail
value to be dispatched on events (Chiemezuo Akujobi) - Maintenance: Remove usage of inline scripts and instead use event dispatching to instantiate standalone Draftail editor instances (Chiemezuo Akujobi)
- Maintenance: Refactor
page_breadcrumbs
tag to use sharedbreadcrumbs.html
template (Sage Abdullah) - Maintenance: Add
keyboard
icon to admin icon set (Rohit Sharma) - Maintenance: Remove dead code in the minimap when elements are not found (LB (Ben) Johnston)
- Maintenance: Ensure untrusted data sources are logged correctly in the Stimulus
SwapController
(LB (Ben) Johnston) - Maintenance: Update Wagtail logo in admin sidebar & favicon plus documentation to the latest version (Osaf AliSayed, Albina Starykova, LB (Ben) Johnston)
- Maintenance: Remove usage of inline scripts and instead use a new Stimulus controller (
w-block
/BlockController
) to instantiateStreamField
blocks (Karthik Ayangar) - Mai...
6.0.2
- Fix: Ensure that modal tabs width are not impacted by side panel opening (LB (Ben) Johnston)
- Fix: Resolve issue local development of docs when running
make livehtml
(Sage Abdullah) - Fix: Resolve issue with unwanted padding in chooser modal listings (Sage Abdullah)
- Fix: Ensure
get_add_url()
is always used to re-render the add button when the listing is refreshed in viewsets (Sage Abdullah) - Fix: Move
modal-workflow.js
script usage to base admin template instead of ad-hoc imports so that choosers work inModelViewSet
s (Elhussein Almasri) - Fix: Ensure JavaScript for common widgets such as
InlinePanel
is included by default inModelViewSet
's create and edit views (Sage Abdullah) - Fix: Reinstate styles for customizations of
extra_footer_actions
block in page create/edit templates (LB (Ben) Johnston, Sage Abdullah) - Fix: Prevent crash when loading an empty table block in the editor (Sage Abdullah)
- Docs: Update Sphinx theme to
6.3.0
with a fix for the missing favicon (Sage Abdullah)
5.2.4
- Fix: Prevent TitleFieldPanel from raising an error when the slug field is missing or read-only (Rohit Sharma)
- Fix: Fix pagination links on model history and usage views (Matt Westcott)
- Fix: Fix crash when accessing workflow reports with a deleted snippet (Sage Abdullah)
- Fix: Prevent error on submitting an empty search in the admin under Elasticsearch (Maikel Martens)
6.0.1
- Fix: Ensure
BooleanRadioSelect
uses the same styles asRadioSelect
(Thibaud Colas) - Fix: Prevent failure on
collectstatic
whenManifestStaticFilesStorage
is in use (Matt Westcott) - Fix: Prevent error on submitting an empty search in the admin under Elasticsearch (Maikel Martens)
6.0
🎉 Special 10th anniversary release! 🎉
- Added support for Django 5.0
- Implemented universal listings – a unified listing and filtering interface for Pages, Snippets, Forms (Ben Enright, Matt Westcott, Thibaud Colas, Sage Abdullah)
- Add the accessibility checker within the page and snippets editor (Thibaud Colas)
- Added
search_index
option to StreamField blocks to control whether the block is indexed for searching (Vedant Pandey) - Remember previous location on returning from page add/edit actions (Robert Rollins)
- Update settings file in project settings to address Django 4.2 deprecations (Sage Abdullah)
- Improve layout and accessibility of the image URL generator page, reduce reliance on JavaScript (Temidayo Azeez)
- Allow
UniqueConstraint
in place ofunique_together
forTranslatableMixin
's system check (Temidayo Azeez, Sage Abdullah) - Make use of
IndexView.get_add_url()
in snippets index view template (Christer Jensen, Sage Abdullah) - Allow
Page.permissions_for_user()
to be overridden by specific page types (Sébastien Corbin) - Improve visual alignment of explore icon in Page listings for longer content (Krzysztof Jeziorny)
- Add
extra_actions
blocks to Snippets and generic index templates (Bhuvnesh Sharma) - Added page types usage report (Jhonatan Lopes)
- Add support for defining
panels
/edit_handler
onModelViewSet
(Sage Abdullah) - Use a single instance of
PagePermissionPolicy
inwagtail.permissions
module (Sage Abdullah) - Add max tag length validation for multiple uploads (documents/images) (Temidayo Azeez)
- Ensure expanded side panel does not overlap form content for most viewports (Chiemezuo Akujobi)
- Add ability to modify the default ordering for the page explorer view (Shlomo Markowitz)
- Remove overly verbose image captions in image listings for screen readers (Sage Abdullah)
- Ensure screen readers and dictation tools can more easily navigate bulk actions in images, documents and page listings by streamlining labels and descriptions (Sage Abdullah)
- Remove support for Safari 14 (Thibaud Colas)
- Add ability to click to copy the URL in the image URL generator page (Sai Srikar Dumpeti)
- Add ability to filter by page type and date updated in the page listing view (Matt Westcott)
- Add ability to filter by owner and site in the page listing view (Matt Westcott)
- Improve right-to-left support by using flow-relative float styles (Thibaud Colas)
- Improve right-to-left support by mirroring Wagtail icons as needed (Sage Abdullah)
- Add support for mirroring third-party icons added in Wagtail (Sage Abdullah)
- Show edit as a main action in generic history and usage views (Sage Abdullah)
- Make styles for header buttons consistent (Sage Abdullah)
- Improve styles of slim header's search and filters (Sage Abdullah)
- Change page listing's add button to icon-only (Sage Abdullah)
- Add sublabel to breadcrumbs, including history, usage, and inspect views (Sage Abdullah)
- Standardise search form placeholder to 'Search…' (Sage Abdullah)
- Use SlugInput on all SlugFields by default (LB (Ben) Johnston)
- Show character counts on RichTextBlock with
max_length
(Elhussein Almasri) - Move locale selector in generic IndexView to a filter (Sage Abdullah)
- Add ability to customise a page's copy form (Neeraj Yetheendran)
- Add optional caption field to
TypedTableBlock
(Tommaso Amici, Cynthia Kiser) - Switch the
TableBlock
header controls to a field that requires user input (Bhuvnesh Sharma, Aman Pandey, Cynthia Kiser) - Add
WAGTAILADMIN_LOGIN_URL
setting to allow customising the login URL (Neeraj Yetheendran) - Replace legacy dropdown component with new Tippy dropdown-button (Thibaud Colas)
- Add ability to filter by existence of child pages in the page listing view (Matt Westcott)
- Polish dark theme styles and update color tokens (Thibaud Colas, Rohit Sharma)
- Keep database state of pages and snippets updated while in draft state (Stefan Hammer)
- Add
DrilldownController
andw-drilldown
component to support drilldown menus (Thibaud Colas) - Add support for
caption
on admin UI Table component (Aman Pandey) - Add API support for a redirects (contrib) endpoint (Rohit Sharma, Jaap Roes, Andreas Donig)
- Add the default ability for all
SnippetViewSet
&ModelViewSet
to support being copied (Shlomo Markowitz) - Support dynamic Wagtail guide links in the admin that are based on the running version of Wagtail (Tidiane Dia)
- Fix: Update system check for overwriting storage backends to recognise the
STORAGES
setting introduced in Django 4.2 (phijma-leukeleu) - Fix: Prevent password change form from raising a validation error when browser autocomplete fills in the "Old password" field (Chiemezuo Akujobi)
- Fix: Ensure that the legacy dropdown options, when closed, do not get accidentally clicked by other interactions on wide viewports (CheesyPhoenix, Christer Jensen)
- Fix: Add a fallback background for the editing preview iframe for sites without a background (Ian Price)
- Fix: Preserve whitespace in rendered comments (Elhussein Almasri)
- Fix: Remove search logging from project template so that new projects without the search promotions module will not error (Matt Westcott)
- Fix: Ensure text only email notifications for updated comments do not escape HTML characters (Rohit Sharma)
- Fix: Use the latest draft when copying an unpublished page for translation (Andrey Nehaychik)
- Fix: Make Workflow and Aging Pages reports only available to users with page-related permissions (Rohit Sharma)
- Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
- Fix: Use a visible border and background color to highlight active formatting in the rich text toolbar (Cassidy Pittman)
- Fix: Ensure image focal point box can be removed (Gunnar Scherf)
- Fix: Ensure that Snippets search results correctly use the
index_results.html
orindex_results_template_name
override on initial load (Stefan Hammer) - Fix: Avoid error when attempting to moderate a page drafted by a now deleted user (Dan Braghis)
- Fix: Do not show multiple error messages when editing a Site to use existing hostname and port (Rohit Sharma)
- Fix: Avoid error when exporting Aging Pages report where a page has an empty
last_published_by_user
(Chiemezuo Akujobi) - Fix: Ensure Page querysets support using
alias
andspecific
(Tomasz Knapik) - Fix: Ensure workflow dashboard panels work when the page/snippet is missing (Sage Abdullah)
- Fix: Ensure
ActionController
explicitly checks for elements that allow select functionality (Nandini Arora) - Fix: Prevent a ValueError with
FormSubmissionsPanel
on Django 5.0 when creating a new form page (Matt Westcott) - Fix: Avoid duplicate entries in "Recent edits" panel when copying pages (Matt Westcott)
- Fix: Prevent TitleFieldPanel from raising an error when the slug field is missing or read-only (Rohit Sharma)
- Fix: Ensure that the close button on the new dialog designs is visible in the non-message variant (Nandini Arora)
- Fix: Ensure the sidebar account toggle has no duplicate accessible labels (Nandini Arora)
- Fix: Avoid text overflow issues in comment replies and scroll position issues for long comments (Rohit Sharma)
- Fix: Ensure that page listing re-ordering messages and accessible labels can be translated (Aman Pandey, LB (Ben) Johnston)
- Fix: Resolve multiple issues with page listing re-ordering using keyboard and screen readers (Aman Pandey)
- Fix: Remove 'Page' from page types filter on aging pages report (Matt Westcott)
- Fix: Prevent page types filter from showing other non-Page models that match by name (Matt Westcott)
- Fix: Ensure
MultipleChooserPanel
modal works correctly whenUSE_THOUSAND_SEPARATOR
isTrue
for pages with ids over 1,000 (Sankalp, Rohit Sharma) - Fix: When using an empty table header (
th
) for visual spacing, ensure this is ignored by accessibility tooling (V Rohitansh) - Fix: Ensure the panel anchor button sizes meet accessibility guidelines for minimum dimensions (Nandini Arora)
- Fix: Raise a 404 for bulk actions for models which don't exist instead of throwing a 500 error (Alex Tomkins)
- Fix: Raise a
SiteSetting.DoesNotExist
error when retrieving settings for an unrecognised site (Nick Smith) - Fix: Ensure that defaulted or unique values declared in
exclude_fields_in_copy
are correctly excluded in new copies, resolving to the default value (Elhussein Almasri) - Fix: Ensure that
default_ordering
set on IndexView is preserved if ModelViewSet does not specify an explicit ordering (Cynthia Kiser) - Fix: Ensure that TableBlock cells are accessible when using keyboard control only (Elhussein Almasri)
- Fix: Resolve issue where clicking Publish for a Page that was in workflow in Safari would block publishing and not trigger the workflow confirmation modal (Alex Morega)
- Fix: Fix pagination links on model history and usage views (Matt Westcott)
- Fix: Fix crash when accessing workflow reports with a deleted snippet (Sage Abdullah)
- Docs: New developer tutorial (Damilola Oladele, Meagen Voss, Thibaud Colas)
- Docs: Document, for contributors, the use of translate string literals passed as arguments to tags and filters using
_()
within templates (Chiemezuo Akujobi) - Docs: Document all features for the Documents app in one location (Neeraj Yetheendran)
- Docs: Add section to testing docs about creating pages and working with page content (Mariana Bedran Lesche)
- Docs: Add more nuance to the database recommendations in performance page (Jadesola Kareem)
- Docs: Add clarity that MultipleChooserPanel may require a chooser viewset and how the functionality is expected to work (Andy Chosak)
- Docs: Clarify where documentation build commands should be run (Nikhil S Kalburgi)
- Doc...
6.0rc1
- Added support for Django 5.0
- Implemented universal listings – a unified listing and filtering interface for Pages, Snippets, Forms (Ben Enright, Matt Westcott, Thibaud Colas, Sage Abdullah)
- Add the accessibility checker within the page and snippets editor (Thibaud Colas)
- Added
search_index
option to StreamField blocks to control whether the block is indexed for searching (Vedant Pandey) - Remember previous location on returning from page add/edit actions (Robert Rollins)
- Update settings file in project settings to address Django 4.2 deprecations (Sage Abdullah)
- Improve layout and accessibility of the image URL generator page, reduce reliance on JavaScript (Temidayo Azeez)
- Allow
UniqueConstraint
in place ofunique_together
forTranslatableMixin
's system check (Temidayo Azeez, Sage Abdullah) - Make use of
IndexView.get_add_url()
in snippets index view template (Christer Jensen, Sage Abdullah) - Allow
Page.permissions_for_user()
to be overridden by specific page types (Sébastien Corbin) - Improve visual alignment of explore icon in Page listings for longer content (Krzysztof Jeziorny)
- Add
extra_actions
blocks to Snippets and generic index templates (Bhuvnesh Sharma) - Added page types usage report (Jhonatan Lopes)
- Add support for defining
panels
/edit_handler
onModelViewSet
(Sage Abdullah) - Use a single instance of
PagePermissionPolicy
inwagtail.permissions
module (Sage Abdullah) - Add max tag length validation for multiple uploads (documents/images) (Temidayo Azeez)
- Ensure expanded side panel does not overlap form content for most viewports (Chiemezuo Akujobi)
- Add ability to modify the default ordering for the page explorer view (Shlomo Markowitz)
- Remove overly verbose image captions in image listings for screen readers (Sage Abdullah)
- Ensure screen readers and dictation tools can more easily navigate bulk actions in images, documents and page listings by streamlining labels and descriptions (Sage Abdullah)
- Remove support for Safari 14 (Thibaud Colas)
- Add ability to click to copy the URL in the image URL generator page (Sai Srikar Dumpeti)
- Add ability to filter by page type and date updated in the page listing view (Matt Westcott)
- Add ability to filter by owner and site in the page listing view (Matt Westcott)
- Improve right-to-left support by using flow-relative float styles (Thibaud Colas)
- Improve right-to-left support by mirroring Wagtail icons as needed (Sage Abdullah)
- Add support for mirroring third-party icons added in Wagtail (Sage Abdullah)
- Show edit as a main action in generic history and usage views (Sage Abdullah)
- Make styles for header buttons consistent (Sage Abdullah)
- Improve styles of slim header's search and filters (Sage Abdullah)
- Change page listing's add button to icon-only (Sage Abdullah)
- Add sublabel to breadcrumbs, including history, usage, and inspect views (Sage Abdullah)
- Standardise search form placeholder to 'Search…' (Sage Abdullah)
- Use SlugInput on all SlugFields by default (LB (Ben) Johnston)
- Show character counts on RichTextBlock with
max_length
(Elhussein Almasri) - Move locale selector in generic IndexView to a filter (Sage Abdullah)
- Add ability to customise a page's copy form (Neeraj Yetheendran)
- Add optional caption field to
TypedTableBlock
(Tommaso Amici, Cynthia Kiser) - Switch the
TableBlock
header controls to a field that requires user input (Bhuvnesh Sharma, Aman Pandey, Cynthia Kiser) - Add
WAGTAILADMIN_LOGIN_URL
setting to allow customising the login URL (Neeraj Yetheendran) - Replace legacy dropdown component with new Tippy dropdown-button (Thibaud Colas)
- Add ability to filter by existence of child pages in the page listing view (Matt Westcott)
- Polish dark theme styles and update color tokens (Thibaud Colas, Rohit Sharma)
- Keep database state of pages and snippets updated while in draft state (Stefan Hammer)
- Add
DrilldownController
andw-drilldown
component to support drilldown menus (Thibaud Colas) - Add support for
caption
on admin UI Table component (Aman Pandey) - Add API support for a redirects (contrib) endpoint (Rohit Sharma, Jaap Roes, Andreas Donig)
- Add the default ability for all
SnippetViewSet
&ModelViewSet
to support being copied (Shlomo Markowitz) - Support dynamic Wagtail guide links in the admin that are based on the running version of Wagtail (Tidiane Dia)
- Fix: Update system check for overwriting storage backends to recognise the
STORAGES
setting introduced in Django 4.2 (phijma-leukeleu) - Fix: Prevent password change form from raising a validation error when browser autocomplete fills in the "Old password" field (Chiemezuo Akujobi)
- Fix: Ensure that the legacy dropdown options, when closed, do not get accidentally clicked by other interactions wide viewports (CheesyPhoenix, Christer Jensen)
- Fix: Add a fallback background for the editing preview iframe for sites without a background (Ian Price)
- Fix: Preserve whitespace in rendered comments (Elhussein Almasri)
- Fix: Remove search logging from project template so that new projects without the search promotions module will not error (Matt Westcott)
- Fix: Ensure text only email notifications for updated comments do not escape HTML characters (Rohit Sharma)
- Fix: Use the latest draft when copying an unpublished page for translation (Andrey Nehaychik)
- Fix: Make Workflow and Aging Pages reports only available to users with page-related permissions (Rohit Sharma)
- Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
- Fix: Use a visible border and background color to highlight active formatting in the rich text toolbar (Cassidy Pittman)
- Fix: Ensure image focal point box can be removed (Gunnar Scherf)
- Fix: Ensure that Snippets search results correctly use the
index_results.html
orindex_results_template_name
override on initial load (Stefan Hammer) - Fix: Avoid error when attempting to moderate a page drafted by a now deleted user (Dan Braghis)
- Fix: Do not show multiple error messages when editing a Site to use existing hostname and port (Rohit Sharma)
- Fix: Avoid error when exporting Aging Pages report where a page has an empty
last_published_by_user
(Chiemezuo Akujobi) - Fix: Ensure Page querysets support using
alias
andspecific
(Tomasz Knapik) - Fix: Ensure workflow dashboard panels work when the page/snippet is missing (Sage Abdullah)
- Fix: Ensure
ActionController
explicitly checks for elements that allow select functionality (Nandini Arora) - Fix: Prevent a ValueError with
FormSubmissionsPanel
on Django 5.0 when creating a new form page (Matt Westcott) - Fix: Avoid duplicate entries in "Recent edits" panel when copying pages (Matt Westcott)
- Fix: Prevent TitleFieldPanel from raising an error when the slug field is missing or read-only (Rohit Sharma)
- Fix: Ensure that the close button on the new dialog designs is visible in the non-message variant (Nandini Arora)
- Fix: Ensure the sidebar account toggle has no duplicate accessible labels (Nandini Arora)
- Fix: Avoid text overflow issues in comment replies and scroll position issues for long comments (Rohit Sharma)
- Fix: Ensure that page listing re-ordering messages and accessible labels can be translated (Aman Pandey, LB (Ben) Johnston)
- Fix: Resolve multiple issues with page listing re-ordering using keyboard and screen readers (Aman Pandey)
- Fix: Remove 'Page' from page types filter on aging pages report (Matt Westcott)
- Fix: Prevent page types filter from showing other non-Page models that match by name (Matt Westcott)
- Fix: Ensure
MultipleChooserPanel
modal works correctly whenUSE_THOUSAND_SEPARATOR
isTrue
for pages with ids over 1,000 (Sankalp, Rohit Sharma) - Fix: When using an empty table header (
th
) for visual spacing, ensure this is ignored by accessibility tooling (V Rohitansh) - Fix: Ensure the panel anchor button sizes meet accessibility guidelines for minimum dimensions (Nandini Arora)
- Fix: Raise a 404 for bulk actions for models which don't exist instead of throwing a 500 error (Alex Tomkins)
- Fix: Raise a
SiteSetting.DoesNotExist
error when retrieving settings for an unrecognised site (Nick Smith) - Fix: Ensure that defaulted or unique values declared in
exclude_fields_in_copy
are correctly excluded in new copies, resolving to the default value (Elhussein Almasri) - Fix: Ensure that
default_ordering
set on IndexView is preserved if ModelViewSet does not specify an explicit ordering (Cynthia Kiser) - Fix: Ensure that TableBlock cells are accessible when using keyboard control only (Elhussein Almasri)
- Fix: Resolve issue where clicking Publish for a Page that was in workflow in Safari would block publishing and not trigger the workflow confirmation modal (Alex Morega)
- Docs: New developer tutorial (Damilola Oladele, Meagen Voss, Thibaud Colas)
- Docs: Document, for contributors, the use of translate string literals passed as arguments to tags and filters using
_()
within templates (Chiemezuo Akujobi) - Docs: Document all features for the Documents app in one location (Neeraj Yetheendran)
- Docs: Add section to testing docs about creating pages and working with page content (Mariana Bedran Lesche)
- Docs: Add more nuance to the database recommendations in performance page (Jadesola Kareem)
- Docs: Add clarity that MultipleChooserPanel may require a chooser viewset and how the functionality is expected to work (Andy Chosak)
- Docs: Clarify where documentation build commands should be run (Nikhil S Kalburgi)
- Docs: Add missing import to tutorial BlogPage example (Salvo Polizzi)
- Docs: Update contributing guide documentation and GitHub templates to better support new contributors (Thibaud Colas)
- Docs: Add more CSS auth...
5.2.3
5.2.2
- Added support for Django 5.0
- Fix: Use a visible border and background color to highlight active formatting in the rich text toolbar (Cassidy Pittman)
- Fix: Ensure image focal point box can be removed (Gunnar Scherf)
- Fix: Ensure that Snippets search results correctly use the
index_results.html
orindex_results_template_name
override on initial load (Stefan Hammer) - Fix: Avoid error when attempting to moderate a page drafted by a now deleted user (Dan Braghis)
- Fix: Ensure workflow dashboard panels work when the page/snippet is missing (Sage Abdullah)
- Fix: Prevent custom controls from stacking on top of the comment button in Draftail toolbar (Ben Morse)
- Fix: Avoid error when exporting Aging Pages report where a page has an empty
last_published_by_user
(Chiemezuo Akujobi)
5.2.1
- Fix: Add a fallback background for the editing preview iframe for sites without a background (Ian Price)
- Fix: Remove search logging from project template so that new projects without the search promotions module will not error (Matt Westcott)
- Fix: Ensure text only email notifications for updated comments do not escape HTML characters (Rohit Sharma)
- Fix: Use logical OR operator to combine search fields for Django ORM in generic IndexView (Varun Kumar)
- Fix: Ensure that explorer_results views fill in the correct next_url parameter on action URLs (Matt Westcott)
- Fix: Fix crash when accessing the history view for a translatable snippet (Sage Abdullah)
- Fix: Prevent upload of SVG images from failing when image feature detection is enabled (Joshua Munn)
- Fix: Fix crash when using the locale switcher on the snippets create view (Sage Abdullah)
- Fix: Fix performance regression on reports from calling
decorate_paginated_queryset
before pagination / filtering (Alex Tomkins) - Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
- Fix: Prevent snippet permission post-migrate hook from failing on multiple database configurations (Joe Tsoi)
- Fix: Reinstate ability to filter on page type when searching on an empty query (Sage Abdullah)
- Fix: Prevent error on locked pages report when a user has locked multiple pages (Matt Westcott)
- Docs: Fix code example for
{% picture ... as ... %}
template tag (Rezyapkin)
5.2 (LTS)
- Redesigned page listing view (Ben Enright, Matt Westcott, Thibaud Colas, Sage Abdullah)
- Support OpenSearch as an alternative to Elasticsearch (Matt Westcott)
- Add support for Python 3.12 (Matt Westcott)
- Add preview-aware and page-aware fragment caching template tags,
wagtailcache
&wagtailpagecache
(Jake Howard) - Always set help text element ID for form fields with help text in
field.html
template (Sage Abdullah) - Move
SnippetViewSet
menu registration mechanism to baseViewSet
class (Sage Abdullah) - Enable reference index tracking for models registered with
ModelViewSet
(Sage Abdullah) - When copying a page or creating an alias, copy its view restrictions to the destination (Sandeep Choudhary, Suyash Singh)
- Support pickling of StreamField values (pySilver)
- Move
SnippetViewSet
template override mechanism toModelViewSet
(Sage Abdullah) - Move
SnippetViewSet.list_display
toModelViewSet
(Sage Abdullah) - Remove
wagtail.publish
log action on aliases when they are created from live source pages or the source page is published (Dan Braghis) - Remove
wagtail.unpublish
log action on aliases when source page is unpublished (Dan Braghis) - Add compare buttons to workflow dashboard panel (Matt Westcott)
- Add the ability to use filters and to export listings in generic
IndexView
(Sage Abdullah) - Move
list_filter
,filterset_class
,search_fields
,search_backend_name
,list_export
,export_filename
,list_per_page
, andordering
fromSnippetViewSet
toModelViewSet
(Sage Abdullah, Cynthia Kiser) - Add default header titles to generic
IndexView
andCreateView
(Sage Abdullah) - Allow overriding
IndexView.export_headings
viaModelViewSet
(Christer Jensen, Sage Abdullah) - Support specifying a
get_object_list
method onChooserViewSet
(Matt Westcott) - Add
linked_fields
mechanism on chooser widgets to allow choices to be limited by fields on the calling page (Matt Westcott) - Add support for merging cells within
TableBlock
with themergedCells
option (Gareth Palmer) - When adding a panel within
InlinePanel
, focus will now shift to that content similar toStreamField
(Faishal Manzar) - Show the full first published at date within a tooltip on the Page status sidebar on the relative date (Rohit Sharma)
- Extract generic breadcrumbs functionality from page breadcrumbs (Sage Abdullah)
- Add support for
placement
in thehuman_readable_date
tooltip template tag (Rohit Sharma) - Add breadcrumbs support to custom
ModelViewSet
views (Sage Abdullah) - Support passing extra context variables via the
{% component %}
tag (Matt Westcott) - Allow subclasses of
PagesAPIViewSet
override default Page model via themodel
attribute (Neeraj Yetheendran, Herbert Poul) - Allow
ModelViewSet
to be used with models that have non-integer primary keys (Sage Abdullah) - Add the ability to set an external link/text for promoted search result entries (TopDevPros, Brad Busenius)
- Add support for subject and body in the Email link chooser form (TopDevPros, Alexandre Joly)
- Extract generic
HistoryView
from snippets and add it toModelViewSet
(Sage Abdullah) - Add generic
UsageView
toModelViewSet
(Sage Abdullah) - Add the ability to define listing buttons on generic
IndexView
(Sage Abdullah) - Add a visual progress bar to the output of the
wagtail_update_image_renditions
management command (Faishal Manzar) - Increase the read buffer size to improve efficiency and performance when generating file hashes for document or image uploads, use
hashlib.file_digest
if available (Python 3.11+) (Jake Howard) - API ordering now supports multiple fields (Rohit Sharma, Jake Howard)
- Pass block value to
Block.get_template
to allow varying template based on value (Florian Delizy) - Add
InlinePanel
DOM events for when ready and when items added or removed (Faishal Manzar) - Add a new
picture
template tag for Django Templates and Jinja (Thibaud Colas) - Add a new
srcset_image
template tag for Django Templates and Jinja (Thibaud Colas) - Support
Filter
instances as input forAbstractImage.get_renditions()
(Thibaud Colas) - Improve error messages for image template tags (Thibaud Colas)
- Do not render minimap if there are no panel anchors (Sage Abdullah)
- Use dropdown buttons on listings in dashboard panels (Sage Abdullah)
- Implement breadcrumbs design refinements (Thibaud Colas)
- Support extending Wagtail client-side with Stimulus (LB (Ben) Johnston)
- Update all
FieldPanel('title')
examples to use the recommendedTitleFieldPanel('title')
panel (Chinedu Ihedioha) - The
purge_revisions
management command now respects revisions that have aon_delete=PROTECT
foreign key relation and won't delete them (Neeraj P Yetheendran, Meghana Reddy, Sage Abdullah, Storm Heg) - Add support for Shift + Click behaviour in form submissions and simple translations submissions (LB (Ben) Johnston)
- Improve filtering of audit logging based on the user's permissions (Stefan Hammer)
- Fix: Ensure that StreamField's
FieldBlock
s correctly set therequired
andaria-describedby
attributes (Storm Heg) - Fix: Avoid an error when the moderation panel (admin dashboard) contains both snippets and private pages (Matt Westcott)
- Fix: When deleting collections, ensure the collection name is correctly shown in the success message (LB (Ben) Johnston)
- Fix: Filter out comments on Page editing counts that do not correspond to a valid field / block path on the page such as when a field has been removed (Matt Westcott)
- Fix: Allow
PublishMenuItem
to more easily support overriding its label viaconstruct_page_action_menu
(Sébastien Corbin) - Fix: Allow locale selection when creating a page at the root level (Sage Abdullah)
- Fix: Ensure the admin login template correctly displays all
non_fields_errors
for any custom form validation (Sébastien Corbin) - Fix: Ensure 'mark as active' label in workflow bulk action set active form can be translated (Rohit Sharma)
- Fix: Ensure the panel title for a user's settings correctly reflects the
WAGTAIL_EMAIL_MANAGEMENT_ENABLED
setting by not showing 'email' if disabled (Omkar Jadhav) - Fix: Update Spotify oEmbed provider URL parsing to resolve correctly (Dhrűv)
- Fix: Update link colours within help blocks to meet accessible contrast requirements (Rohit Sharma)
- Fix: Ensure the search promotions popular search terms picker correctly refers to the correct model (LB (Ben) Johnston)
- Fix: Correctly quote non-numeric primary keys on snippet inspect view (Sage Abdullah)
- Fix: Prevent crash on snippet inspect view when displaying a null foreign key to an image (Sage Abdullah)
- Fix: Ensure that pages in moderation show as "Live + In Moderation" in the page explorer rather than "Live + Draft" (Sage Abdullah)
- Fix: Prevent error when updating reference index for objects with a lazy ParentalKey-related object (Chris Shaw)
- Fix: Ignore conflicts when inserting reference index entries to prevent race conditions causing uniqueness errors (Chris Shaw)
- Fix: Populate the correct return value when creating a new snippet within the snippet chooser (claudobahn)
- Fix: Reinstate missing filter by page type on page search (Matt Westcott)
- Fix: Ensure very long words can wrap when viewing saved comments (Chiemezuo Akujobi)
- Fix: Avoid forgotten password link text conflicting with the supplied aria-label (Thibaud Colas)
- Fix: Fix log message to record the correct restriction type when removing a page view restriction (Rohit Sharma, Hazh. M. Adam)
- Fix: Avoid potential race condition with new Page subscriptions on the edit view (Alex Tomkins)
- Fix: Use the correct action log when creating a redirect (Thibaud Colas)
- Fix: Ensure that all password fields consistently allow leading & trailing whitespace (Neeraj P Yetheendran)
- Docs: Expand documentation on using
ViewSet
andModelViewSet
(Sage Abdullah) - Docs: Document
WAGTAILADMIN_BASE_URL
on "Integrating Wagtail into a Django project" page (Shreshth Srivastava) - Docs: Replace incorrect screenshot for authors listing on tutorial (Shreshth Srivastava)
- Docs: Add documentation for building non-model-based choosers using the queryish library (Matt Westcott)
- Docs: Fix incorrect tag library import on focal points example (Hatim Makki Hoho)
- Docs: Add reminder about including your custom Draftail feature in any overridden
WAGTAILADMIN_RICH_TEXT_EDITORS
setting (Charlie Sue) - Docs: Mention the need to install
python3-venv
on Ubuntu (Brian Mugo) - Docs: Document the use of the Google developer documentation style guide in documentation (Damilola Oladele)
- Docs: Fix Inconsistent URL Format in Getting Started tutorial (Olumide Micheal)
- Maintenance: Fix snippet search test to work on non-fallback database backends (Matt Westcott)
- Maintenance: Update Eslint, Prettier, Jest, a11y-dialog, axe-core and js-cookie npm packages (LB (Ben) Johnston)
- Maintenance: Add npm scripts for TypeScript checks and formatting SCSS files (LB (Ben) Johnston)
- Maintenance: Run tests in parallel in some of the CI setup (Sage Abdullah)
- Maintenance: Remove unused WorkflowStatus view, urlpattern, and workflow-status.js (Storm Heg)
- Maintenance: Add support for options/attrs in Telepath widgets so that attrs render on the created DOM (Storm Heg)
- Maintenance: Update pre-commit hooks to be in sync with latest changes to Eslint & Prettier for client-side changes (Storm Heg)
- Maintenance: Add
WagtailTestUtils.get_soup()
method for testing HTML content (Storm Heg, Sage Abdullah) - Maintenance: Allow
ViewSet
subclasses to customiseurl_prefix
andurl_namespace
logic (Matt Westcott) - Maintenance: Simplify
SnippetViewSet
registration code (Sage Abdullah) - Maintenance: Rename groups `IndexView.results_template_na...