Wagtail 8.0 release notes - IN DEVELOPMENT

Unreleased

What’s new

Other features

  • Add customizability for all remaining page views to PageViewSet (Sage Abdullah)

  • Set FieldPanel(required_on_save=True) for AbstractFormField’s field_type field (Alex Tomkins)

  • Handle pasting of multiple tags separated by newlines or commas (Matthias Brück)

  • Make Button component render a <button> element when no URL is supplied (Nayeli De Jesus, LB (Ben Johnston), Sage Abdullah)

  • Show site name in site switcher dropdown in site settings editor (Jack Morgan)

  • Improve clarity of different task states in workflow details dialog (Dan Braghis)

  • Add submenu_hook attribute to ViewSetGroup for collecting submenu items registered via a hook (Hunzlah Malik, MariyaOT, Sage Abdullah)

  • Respect ViewSet.menu_order when used in a ViewSetGroup (Sage Abdullah)

  • Use a more accessible label for blank values of ChoiceBlock (Sage Abdullah)

  • Use a more accessible label for blank values of dropdowns in locked page report filters (Sage Abdullah)

  • Make audit log messages for scheduling/unscheduling generic (Sage Abdullah)

Bug fixes

  • Make SnippetChooserViewSet.widget_class a class instead of an instance (Amrinder Singh, Sage Abdullah)

  • Prevent an error when approving a workflow that has been cancelled in a different session (Kailesh)

  • Accommodate multilingual sites in skipping the “choose parent” step when creating a new page from a flat page listing (Amrinder Singh)

  • Prevent error when moving a page to a destination with missing translations and WAGTAILSIMPLETRANSLATION_SYNC_PAGE_TREE = True (Sahil Kumar)

  • Handle Pillow detecting decompression bombs when validating image pixel count (Jake Howard, Sage Abdullah)

  • Use canonical URL for TED oEmbed provider (Marquis Nobles)

  • Prevent stale content types from breaking audit log message formatting (Thibaud Colas)

  • Prevent icons from capturing clicks inside buttons (Maciek Baron)

Documentation

  • Add reference documentation entry for SnippetChooserViewSet (Sage Abdullah)

  • Fix panel classname and deprecated usage of format_html in construct_homepage_panels example (Andreas Nüßlein)

Maintenance

  • Rename request argument to cache_object in Page._get_site_root_paths() for correctness (Kailesh)

  • Fix blank choice tests for Django 6.1 (Sage Abdullah)

  • Ignore EMAIL_BACKEND setting deprecation on Django 6.1 when running project template tests (Sage Abdullah)

  • Use uv with lockfile in CI configurations (Sage Abdullah)

  • Add one and not match support to RulesController (LB (Ben Johnston))

  • Refactor pages’ function-based views to class-based views (Sage Abdullah)

  • Add CI job for testing with latest versions of all dependencies (Sage Abdullah)

  • Set up zizmor to lint GitHub Actions for security gotchas (Dan Braghis)

  • Pin all GitHub Actions dependencies to specific versions (Thibaud Colas)

  • Add renovate configuration to automate Python dependencies management (Sage Abdullah)

  • Use Renovate to update GitHub Actions dependencies pins (Sage Abdullah)

Upgrade considerations - removal of deprecated features from Wagtail 6.4 - 7.3

Features previously deprecated in Wagtail 6.4, 7.0, 7.1, 7.2, and 7.3 have been fully removed:

  • The construct_wagtail_userbar hook now receives a third argument page in addition to request and items; hook functions that only accept two arguments will now fail.

  • The JavaScript functions buildExpandingFormset and initPrefillTitleFromFilename are removed.

  • The settings TAG_LIMIT and TAG_SPACES_ALLOWED are replaced by WAGTAIL_TAG_LIMIT and WAGTAIL_TAG_SPACES_ALLOWED.

  • Custom listing views using the template wagtailadmin/generic/index.html must now provide a breadcrumbs_items context variable.

  • The template wagtailadmin/pages/_editor_js.html is removed.

  • The PageListingButton, SnippetListingButton and UserListingButton classes are removed in favour of ListingButton and Button.

  • The function wagtail.admin.signals.init_new_page is moved to wagtail.signals.init_new_page.

  • The module wagtail.telepath is moved to wagtail.admin.telepath.

  • The module wagtail.widget_adapters is moved to wagtail.admin.telepath.widgets.

  • The JavaScript include wagtailadmin/js/telepath/telepath.js is removed.

  • The INDEX option on WAGTAILSEARCH_BACKENDS is replaced by INDEX_PREFIX (for example, "INDEX": "mysite" now becomes "INDEX_PREFIX": "mysite_").

  • Userbar items now follow the template component API and do not provide a render method.

  • The resetValue property is removed from TeleportController.

For additional details on these changes, see:

Upgrade considerations - changes affecting all projects

Upgrade considerations - deprecation of old functionality

Upgrade considerations - changes affecting Wagtail customizations

SnippetChooserViewSet.widget_class is now a class

The SnippetChooserViewSet.widget_class attribute now correctly returns a widget class instead of an instance, consistent with ChooserViewSet.widget_class. This change may require updates to any customizations that relied on the previous behavior, such as an override in a SnippetChooserViewSet subclass that uses super().widget_class.

ViewSet.menu_order is now respected when used in a ViewSetGroup

ViewSets that are registered as part of a ViewSetGroup now have their menu_order respected instead of always using its position in ViewSetGroup.items.

If you rely on the previous behavior that used the items ordering, remove menu_order in your ViewSet definition.

Upgrade considerations - changes to undocumented internals

request argument to Page._get_site_root_paths is now cache_object

The request argument to the undocumented method Page._get_site_root_paths() is renamed to cache_object to reflect the fact that it is not always a request object, but may be any object that can be used for caching purposes.

If you pass request as a positional argument, no changes are needed. If you pass request as a keyword argument to this method, you will need to update the argument name to cache_object in your code or turn it into a positional argument.

Passing a request keyword argument will continue to work for now and raise a deprecation warning, but support for this will be removed in a future release.