- Add support for read-only FieldPanels (Andy Babic)
- Add support for query-time boosting to Elasticsearch 6 and above (Shohan Dutta Roy)
- Add support for Elasticsearch 8 (Matt Westcott, Wesley van Lee)
- Mark calls to
md5
as not being used for secure purposes, to avoid flagging on FIPS-mode systems (Sean Kelly) - Return filters from
parse_query_string
as aQueryDict
to support multiple values (Aman Pandey) - Explicitly specify
MenuItem.name
for all admin menu and submenu items (Justin Koestinger) - Add oEmbed provider patterns for YouTube Shorts Shorts and YouTube Live URLs (valnuro, Fabien Le Frapper)
- Add initial implementation of
PagePermissionPolicy
(Sage Abdullah) - Refactor
UserPagePermissionsProxy
andPagePermissionTester
to usePagePermissionPolicy
(Sage Abdullah, Tidiane Dia) - Add a predictable default ordering of the "Object/Other permissions" in the Group Editing view, allow this ordering to be customised (Daniel Kirkham)
- Add
AbstractImage.get_renditions()
for efficient generation of multiple renditions (Andy Babic) - Optimise queries in collection permission policies using cache on the user object (Sage Abdullah)
- Phone numbers entered via a link chooser will now have any spaces stripped out, ensuring a valid href="tel:..." attribute (Sahil Jangra)
- Auto-select the
StreamField
block when only one block type is declared (Sébastien Corbin) - Add support for more advanced Draftail customisation APIs (Thibaud Colas)
- Add the ability to export snippets listing via
SnippetViewSet.list_export
(Sage Abdullah) - Add support for adding HTML
attrs
onFieldPanel
,FieldRowPanel
,MultiFieldPanel
, and others (Aman Pandey, Antoni Martyniuk, LB (Ben) Johnston) - Add support for
--template
option towagtail start
(Thibaud Colas) - Change to always cache renditions (Jake Howard)
- Update link/document rich text tooltips for consistency with the inline toolbar (Albina Starykova)
- Increase the contrast between the rich text / StreamField block picker and the page in dark mode (Albina Starykova)
- Purge revisions of non-page models in
purge_revisions
command (Sage Abdullah) - Add support for AVIF images (Aman Pandey)
- Change the default WebP quality to 80 to match AVIF (Aman Pandey)
- Adopt optimised Wagtail logo in the admin interface (Albina Starykova)
- Add support for presenting the userbar (Wagtail button) in dark mode (Albina Starykova)
- Add Inspect view to snippets (Sage Abdullah)
- Fix: Prevent choosers from failing when initial value is an unrecognised ID, e.g. when moving a page from a location where
parent_page_types
would disallow it (Dan Braghis) - Fix: Move comment notifications toggle to the comments side panel (Sage Abdullah)
- Fix: Remove comment button on InlinePanel fields (Sage Abdullah)
- Fix: Fix missing link to
UsageView
fromEditView
for snippets (Christer Jensen) - Fix: Prevent lowercase conversions of IndexView column headers (Virag Jain)
- Fix: Ensure that
RichText
objects with the same values compare as equal (NikilTn) - Fix: Use
gettext_lazy
on generic model views so that language settings are correctly used (Matt Westcott) - Fix: Prevent JS error when reverting the spinner on a submit button after a validation error (LB (Ben) Johnston)
- Fix: Prevent crash when comparing page revisions that include
MultipleChooserPanel
(Matt Westcott) - Fix: Ensure that title and slug continue syncing after entering non-URL-safe characters (LB (Ben) Johnston)
- Fix: Ensure that title and slug are synced on keypress, not just on blur (LB (Ben) Johnston)
- Fix: Add a more visible active state for side panel toggle buttons (Thibaud Colas)
- Fix: Debounce and optimise live preview panel to prevent excessive requests (Sage Abdullah)
- Fix: Use constant-time comparison for image serve URL signatures (Jake Howard)
- Fix: Ensure taggit field type-ahead options show correctly in the dark mode theme (Sage Abdullah)
- Fix: Fix the lock description message missing the model_name variable when locked only by system (Sébastien Corbin)
- Fix: Fix empty blocks created in migration operations (Sandil Ranasinghe)
- Fix: Ensure that gettext_lazy works correctly when using verbose_name on a generic Settings models (Sébastien Corbin)
- Fix: Remove unnecessary usage of
innerHTML
when modifying DOM content (LB (Ben) Johnston) - Fix: Avoid
ValueError
when extendingPagesAPIViewSet
and settingmeta_fields
to an empty list (Henry Harutyunyan, Alex Morega) - Fix: Improve accessibility for header search, remove autofocus on page load, advise screen readers that content has changed when results update (LB (Ben) Johnston)
- Fix: Fix incorrect override of
PagePermissionHelper.user_can_unpublish_obj()
in ModelAdmin (Sébastien Corbin) - Fix: Prevent memory exhaustion when updating a large number of image renditions (Jake Howard)
- Fix: Add missing Time Zone conversions and date formatting throughout the admin (Stefan Hammer)
- Fix: Ensure that audit logs and revisions consistently use UTC and add migration for existing entries (Stefan Hammer)
- Fix: Make sure "critical" buttons have enough colour contrast in dark mode (Albina Starykova)
- Fix: Improve visibility of scheduled publishing errors in status side panel (Sage Abdullah)
- Fix: Prevent 'choose' permission from being ignored when looking up 'choose', 'edit' and 'delete' permissions in combination (Sage Abdullah)
- Fix: Take user's permissions into account for image / document counts on the admin dashboard (Sage Abdullah)
- Fix: Avoid N+1 queries in users index view (Tidiane Dia)
- Fix: Use a theme-agnostic color token for read-only panels support in dark mode (Thibaud Colas)
- Fix: Ensure collapsible StreamBlocks expand as necessary to show validation errors (Storm Heg)
- Fix: Ensure userbar dialog can sit above other website content (LB (Ben) Johnston)
- Docs: Document how to add non-ModelAdmin views to a
ModelAdminGroup
(Onno Timmerman) - Docs: Document how to add StructBlock data to a StreamField (Ramon Wenger)
- Docs: Update ReadTheDocs settings to v2 to resolve urllib3 issue in linkcheck extension (Thibaud Colas)
- Docs: Update documentation for
log_action
parameter onRevisionMixin.save_revision
(Christer Jensen) - Docs: Reorganise snippets documentation to cover customisations and optional features (Sage Abdullah)
- Docs: Update color customisations guidance to include theme-agnostic options (Thibaud Colas)
- Docs: Mark LTS releases in release note page titles (Thiago C. S. Tioma)
- Docs: Revise main Getting started tutorial for clarity (Kevin Chung (kev-odin))
- Docs: Revamp the start of the getting started section, with separate quick install page (Damilola Oladele)
- Docs: Move the tutorial’s snippets section to come before tags (Damilola Oladele)
- Docs: Rewrite the getting started tutorial to address identified friction points (Damilola Oladele)
- Docs: Switch the Getting started tutorial’s snippets example to be more understandable (Damilola Oladele)
- Docs: Update the deployment documentation page and remove outdated information (Jake Howard)
- Docs: Add more items to performance page regarding pre-fetching images and frontend caching (Jake Howard)
- Docs: Add docs for managing stored queries in
searchpromotions
(Scott Foster) - Maintenance: Removed support for Python 3.7 (Dan Braghis)
- Maintenance: Switch to ruff for flake8 / isort code checking (Oliver Parker)
- Maintenance: Deprecate
insert_editor_css
in favour ofinsert_global_admin_css
(Ester Beltrami) - Maintenance: Optimise use of
specific
on Task and TaskState (Matt Westcott) - Maintenance: Use table UI component for workflow task index view (Matt Westcott)
- Maintenance: Make header search available on generic index view (Matt Westcott)
- Maintenance: Update pagination behaviour to reject out-of-range / invalid page numbers (Matt Westcott)
- Maintenance: Remove color tokens which are duplicates / unused (Thibaud Colas)
- Maintenance: Add tests to help with maintenance of theme color tokens (Thibaud Colas)
- Maintenance: Split out a base listing view from generic index view (Matt Westcott)
- Maintenance: Update type hints in admin/ui/components.py so that
parent_context
is mutable (Andreas Nüßlein) - Maintenance: Deprecate
UserPagePermissionsProxy
(Sage Abdullah) - Maintenance: Optimise the Settings context processor to avoid redundantly finding a Site to improve cache ratios (Jake Howard)
- Maintenance: Convert page listing to a class-based view (Matt Westcott)
- Maintenance: Clean up page reports and type usage views to be independent of page listing views (Matt Westcott)
- Maintenance: Migrate Tagit initialisation to a Stimulus Controller (LB (Ben) Johnston)
- Maintenance: Refactor GroupPagePermission to use Django's Permission model (Sage Abdullah)
- Maintenance: Convert the CONTRIBUTORS file to Markdown (Dan Braghis)
- Maintenance: Move
django-filter
version upper bound to v24 (Yuekui) - Maintenance: Update Pillow dependency to allow 10.x, only include support for >= 9.1.0 (Yuekui)
- Maintenance: Migrate async header search and search within the Task chooser modal to
w-swap
, a Stimulus controller (LB (Ben) Johnston) - Maintenance: Replace Bootstrap tooltips with a new
w-tooltip
Stimulus controller (LB (Ben) Johnston) - Maintenance: Replace ModelAdmin history header human readable date template tag (LB (Ben) Johnston)
- Maintenance: Update uuid to v9 and Jest to v29, with
jest-environment-jsdom
and new snapshot format (LB (Ben) Johnston) - Maintenance: Update test cases producing undesirable console output due to missing mocks, uncaught errors, warnings (LB (Ben) Johnston)
- Maintenance: Remove unused snippets _header_with_history.html template (Thibaud Colas)
- Maintenance: Migrate dialog instantiation to a new
w-dialog
Stimulus controller (Loveth Omokaro, LB (Ben) Johnston) - Maintenance: Support dialog template cloning using a new
w-teleport
Stimulus controller (Loveth Omokaro, LB (Ben) Johnston) - Maintenance: Migrate away from using the
"wagtailadmin/shared/field_as_li.html"
template include (Storm Heg) - Maintenance: Deprecate
wagtail.contrib.modeladmin
(Sage Abdullah)