- Allow configuring permissions for site settings on a per-site basis (Matt Westcott)
- Add iHeart oEmbed provider (Storm Heg)
- Add locale-aware
NumberColumn
to display numbers in universal listings (Baptiste Mispelon) - Add ability for the header breadcrumbs to save their open/closed state across navigation & refresh (Srishti Jaiswal)
- Update Twitter oEmbed provider to recognize x.com links (manu)
- Render listing buttons as template components (Sage Abdullah)
- Define default
GenericRelations
forRevisionMixin
andWorkflowMixin
, to avoid issues with deletion cascades (Sage Abdullah) - Document and relocate the
init_new_page
signal (Maciek Baron) - Use
requests
to access oEmbed endpoints, for more robust SSL certificate handling (Matt Westcott) - Ensure that bulk deletion views respect protected foreign keys (Sage Abdullah)
- Add minimum length validation for
RichTextBlock
andRichTextField
(Alec Baron) - Allow
SnippetChooserBlock
'sicon
to take precedence overSnippetViewSet.icon
(Matt Westcott) - Allow searching the users index on custom fields (Paul Craciunoiu, Sage Abdullah)
- Support
preserve-svg
in Jinja2 image tags (Vishesh Garg) - Recognize
preserve-svg
as a filter when callingImage.get_rendition
directly (Richard Allen) - Add support for
preserve-svg
forImage.get_renditions
, picture, and srcset_image tags (Matt Westcott) - Include
TypedTableBlock
content when indexing for search (Charan T M) - Preserve query parameters when redirecting from the API
find
view to thedetail
view (Andrew Hosgood) - Add 'Edit' button to success message after copying page (Dhruvi Patel)
- Restrict file dialog in multiple image uploader to the allowed image file types (Mustopha Mubarak O)
- Raise clear error when non-StreamBlock is used as top-level block in StreamField (Clifford Gama)
- Refactor user bar rendering to better support headless websites (Sage Abdullah)
- Add type-to-confirm step when deleting large numbers of pages through bulk actions (Rachel Smith)
- Add
NoFutureDateValidator
to validate against dates in the future (Talha Rizwan) - Extract separate
background_position_x
andbackground_position_y
properties fromAbstractRendition.background_position_style
(Chiemezuo Akujobi) - Add support for translated string concatenation in the locale selector when switching between a model's language in the admin (Matt Westcott, Ellie Walsh-O'Neill)
- Switch to check / cross icons for users’ active state in users listing (Sage Abdullah)
- Add a keyboard shortcut to easily toggle the visibility of the minimap side panel (Dhruvi Patel)
- Add a new user profile setting to disable Wagtail’s custom keyboard shortcuts (Dhruvi Patel)
- Add API for extracting preview page content (Sage Abdullah)
- Add toggle from grid to list layout for image listings (Joel William)
- Add
UsageCountColumn
to document and image listings (Joel William, Sage Abdullah) - Make
StructBlock
s collapsible when nested to support block settings (Sage Abdullah) - Improve
label_format
support for more widget types in StreamField (Sage Abdullah) - Add
form_attrs
support to all StreamField blocks (Sage Abdullah) - Update project template documentation to include testing instructions and include starting test file in template (Aditya (megatrron))
- Add support for
preview_value
anddefault
inBlock
meta options as callables for dynamic previews within StreamField (Ziyao Yan, Sage Abdullah) - Add previews support for generic and site settings (Sébastien Corbin, Sage Abdullah)
- Provide client-side access to the editing form panel structure (Matt Westcott)
- Make transliteration of titles to slugs locale-aware, and provide further customisation options (LB (Ben) Johnston)
- Add a keyboard shortcut to easily toggle the visibility of the main menu (Dhruvi Patel)
- Fix: Handle lazy translation strings as
preview_value
forRichTextBlock
(Seb Corbin) - Fix: Fix handling of newline-separated choices in form builder when using non-windows newline characters (Baptiste Mispelon)
- Fix: Ensure
WAGTAILADMIN_LOGIN_URL
is respected when logging out of the admin (Antoine Rodriguez, Ramon de Jezus) - Fix: Fix behavior of
ViewSet.inject_view_methods
with multiple methods (Gorlik) - Fix: Preserve query strings in URLs submitted to CloudFront for invalidation (Jigyasu Rajput)
- Fix: Handle non-JSON-safe fields in
exclude_fields_in_copy
(Matt Westcott) - Fix: Allow upload of AVIF images through image chooser on Firefox (Matt Westcott)
- Fix: Accept any string beginning with 'y' as confirmation for
import_redirects
command (Matt Westcott) - Fix: Fix error when accessing the submissions listing view with a non-form page (Sage Abdullah)
- Fix: Replace inline styles with CSS classes in HTML files (Srishti Jaiswal)
- Fix: Refactor remaining inline styles to avoid unsafe-inline style-src CSP (Chiemezuo Akujobi)
- Fix: Avoid breaking words in listing table cells unless specifically enabled (Ziyao Yan)
- Fix: Ensure that "all items in listing" option on image / document bulk actions respects user permissions (Alex Morega)
- Fix: Adjust accessibility dialog position based on user bar position (Anees Asghar, Sage Abdullah)
- Fix: Correctly handle ordering API results by mixed ascending and descending order (Rohit Sharma, Mahmoud Nasser)
- Fix: Ensure that draft changes to an editable
first_published_at
field are preserved on reloading (Talha Rizwan) - Fix: Remove ngram parser on MySQL that prevented autocomplete search from returning results (Vince Salvino)
- Fix: Only enable ManifestStaticFilesStorage in production settings, to aid test running (M. Sumair Khokhar)
- Fix: Update
BooleanColumn
icons so they can be distinguished without relying on color (Sage Abdullah) - Fix: Do not delete default homepage by ID in home app migration (Matt Westcott)
- Fix: Update the start project template to align with Django's recommendation to have the
django.middleware.security.SecurityMiddleware
first (Brylie Christopher Oxley) - Fix: Ensure keyboard usage will correctly focus on new comments, including replies, when the side panel is open or closed (Dhruvi Patel)
- Fix: Handle
help_text
kwarg inFloatBlock
(Nick Smith) - Fix: Set
aria-invalid
on StreamField widgets input when there is an error (Sage Abdullah) - Fix: Make sure the label of panel collapse buttons is translatable (Thibaud Colas)
- Fix: Ensure there is suitable padding for large numbers on pagination within universal listings (M. Sumair Khokhar)
- Fix: Use the correct localized format utils in the
human_readable_date
template tag (Seb Corbin) - Fix: Ensure the editing of translation alias pages correctly shows links to the source page if the alias was created from a draft (Dan Braghis)
- Fix: Support complex
order_by
expressions in database search backends (Seb Corbin) - Fix: Improve handling of capitalization of InlinePanel labels and headings (Stefan Hammer)
- Docs: Add missing tag library imports to footer template code in tutorial (Dimaco)
- Docs: Improve documentation around securing user-uploaded files (Jake Howard)
- Docs: Introduce search_fields in a dedicated tutorial section instead of the introduction (Matt Westcott)
- Docs: Add note about PDF XSS to security page (Matt Westcott)
- Docs: Add documentation for how to group blocks within the StreamField picker (Gaurav Verma)
- Docs: Clarify the user bar does not have moderation features (Sage Abdullah)
- Docs: Add experimental documentation for admin UI components and client-side code (Sage Abdullah)
- Docs: Clean up JSDoc documentation comments, syntax, and update spelling where suitable (LB (Ben) Johnston)
- Docs: Add more examples of all images settings and include
avif
inWAGTAILIMAGES_EXTENSIONS
example (Thibaud Colas) - Docs: Add an example of using
data-edit-form
and interacting with the editor form and preview panel (Sage Abdullah) - Maintenance: Refactor
get_embed
to removefinder
argument which was only used for mocking in unit tests (Jigyasu Rajput) - Maintenance: Simplify handling of
None
values inTypedTableBlock
(Jigyasu Rajput) - Maintenance: Remove squash.io configuration (Sage Abdullah)
- Maintenance: Use
utf8mb4
charset and collation for MySQL test database (Sage Abdullah) - Maintenance: Add
django.contrib.postgres
to test settingsINSTALLED_APPS
(Sage Abdullah) - Maintenance: Add integrity & resolved checksums to package-lock.json (Sylvain Fankhauser)
- Maintenance: Replace
SlugController
with more generic and reusableCleanController
(LB (Ben) Johnston) - Maintenance: Remove outdated nginx / uWSGI example config files from
/etc
(LB (Ben) Johnston) - Maintenance: Use browser built-in
EventTarget
instead ofevents.EventEmitter
from Webpack (Sage Abdullah) - Maintenance: Split code from
telepath/widgets.js
into separate files (Matt Westcott) - Maintenance: Update development UI guidelines to adopt best practices for image handling within the admin interface (Thibaud Colas)
- Maintenance: Bump minimum Willow version to v1.11.0 to use Pillow's built-in AVIF support (Sage Abdullah)
- Maintenance: Add overridable blocks in comments and checks side panel templates (Sage Abdullah)
- Maintenance: Rewrite Tabs component frontend to use Stimulus and TypeScript (Sai Srikar Dumpeti, LB (Ben) Johnston, Sage Abdullah)
- Maintenance: Upgrade django-tasks to 0.8.x (Jake Howard)
- Maintenance: Refresh accessibility targets in contributing docs (Thibaud Colas)