# Wagtail 4.1 release notes - IN DEVELOPMENT ```{contents} --- local: depth: 1 --- ``` Wagtail 4.1 is designated a Long Term Support (LTS) release. Long Term Support releases will continue to receive maintenance updates as necessary to address security and data-loss related issues, up until the next LTS release (typically a period of 12 months). ## What's new ### Other features * Add basic keyboard control and screen reader support for page listing re-ordering (Paarth Agarwal, Thomas van der Hoeven) * Add `PageQuerySet.private` method as an alias of `not_public` (Mehrdad Moradizadeh) * Most images in the admin will now only load once they are visible on screen (Jake Howard) * Allow setting default attributes on image tags [](adding_default_attributes_to_images) (Jake Howard) * Optimise the performance of the Wagtail userbar to remove duplicated queries, improving page loads when viewing live pages while signed in (Jake Howard) * Remove legacy styling classes for buttons and refactor button styles to be more maintainable (Paarth Agarwal, LB (Ben Johnston)) * Add button variations to the pattern library (Paarth Agarwal) * Provide a more accessible page title where the unique information is shown first and the CMS name is shown last (Mehrdad Moradizadeh) * Pull out behaviour from `AbstractFormField` to `FormMixin` and `AbstractEmailForm` to `EmailFormMixin` to allow use with subclasses of `Page` [](form_builder_mixins) (Mehrdad Moradizadeh, Kurt Wall) * Add a `docs.wagtail.org/.well-known/security.txt` so that the security policy is available as per the specification on [https://securitytxt.org/](https://securitytxt.org/) (Jake Howard) * Add unit tests for the `classnames` Wagtail admin template tag (Mehrdad Moradizadeh) * Show an inverse locked indicator when the page has been locked by the current user in reports and dashboard listings (Vaibhav Shukla, LB (Ben Johnston)) * Add clarity to the development documentation that `admonition` should not be used and titles for `note` are not supported, including clean up of some existing incorrect usage (LB (Ben Johnston)) * Unify the styling of delete/destructive button styles across the admin interface (Paarth Agarwal) * Adopt new designs and unify the styling styles for `.button-secondary` buttons across the admin interface (Paarth Agarwal) * Refine designs for disabled buttons throughout the admin interface (Paarth Agarwal) * Update expanding formset add buttons to use `button` not link for behaviour and remove support for disabled as a class (LB (Ben) Johnston) * Add robust unit testing for authentication scenarios across the user management admin pages (Mehrdad Moradizadeh) * Avoid assuming an integer PK named 'id' on multiple upload views (Matt Westcott) * Add a toggle to collapse/expand all page panels at once (Helen Chapman) * Improve the GitHub Workflows (CI) security (Alex (sashashura)) ### Bug fixes * Prevent `PageQuerySet.not_public` from returning all pages when no page restrictions exist (Mehrdad Moradizadeh) * Ensure that duplicate block ids are unique when duplicating stream blocks in the page editor (Joshua Munn) * Revise colour usage so that privacy & locked indicators can be seen in Windows High Contrast mode (LB (Ben Johnston)) * Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal) * Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson) * Support `formfield_callback` handling on `ModelForm.Meta` for future Django 4.2 release (Matt Westcott) * Ensure that `ModelAdmin` correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer) * Add missing translated values to site settings' headers plus models presented in listings and audit report filtering labels (Stefan Hammer) * Remove `capitalize()` calls to avoid issues with other languages or incorrectly presented model names for reporting and parts of site settings (Stefan hammer) ## Upgrade considerations ### Button styling class changes The `button-secondary` class is no longer compatible with either the `.serious` or `.no` classes, this partially worked previously but is no longer officially supported. When adding custom buttons using the `ModelAdmin` `ButtonHelper` class, custom buttons will no longer include the `button-secondary` class by default in index listings. If using the hook `register_user_listing_buttons` to register buttons along with the undocumented `UserListingButton` class, the `button-secondary` class will no longer be included by default. Avoid using `disabled` as a class on `button` elements, instead use the [`disabled` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled) as support for this as a class may be removed in a future version of Wagtail and is not accessible. If using custom `expanding-formset` the add button will no longer support the `disabled` class but instead must require the `disabled` attribute to be set. The following button classes have been removed, none of which were being used within the admin but may have been used by custom code or packages: * `button-neutral` * `button-strokeonhover` * `hover-no` * `unbutton` * `yes`