Changelog ========= 2.6 (xx.xx.xxxx) - IN DEVELOPMENT ~~~~~~~~~~~~~~~~ * Removed support for Python 3.4 * Added support for `short_description` for field labels in modeladmin's `InspectView` (Wesley van Lee) * Rearranged SCSS folder structure to the client folder and split them approximately according to ITCSS. (Naomi Morduch Toubman, Jonny Scholes, Janneke Janssen, Hugo van den Berg) * Added support for specifying cell alignment on TableBlock (Samuel Mendes) * Added more informative error when a non-image object is passed to the `image` template tag (Deniz Dogan) * Added more ARIA landmarks across the admin interface and welcome page for screen reader users to navigate the CMS more easily (Beth Menzies) * Added ButtonHelper examples in the modelAdmin primer page within documentation (Kalob Taulien) * Multiple clarifications, grammar and typo fixes throughout documentation (Dan Swain) * Use correct URL in API example in documentation (Michael Bunsen) * Move datetime widget initialiser JS into the widget's form media instead of page editor media (Matt Westcott) * Add form field prefixes for input forms in chooser modals (Matt Westcott) * Increase font-size across the whole admin (Beth Menzies, Katie Locke) * Improved text color contrast across the whole admin (Beth Menzies, Katie Locke) * Added consistent focus outline styles across the whole admin (Thibaud Colas) * Removed version number from the logo link’s title. The version can now be found under the Settings menu (Thibaud Colas) * Fix: ModelAdmin no longer fails when filtering over a foreign key relation (Jason Dilworth, Matt Westcott) * Fix: The Wagtail version number is now visible within the Settings menu (Kevin Howbrook) * Fix: Scaling images now rounds values to an integer so that images render without errors (Adrian Brunyate) * Fix: Revised test decorator to ensure TestPageEditHandlers test cases run correctly (Alex Tomkins) * Fix: Wagtail bird animation in admin now ends correctly on all browsers (Deniz Dogan) * Fix: Explorer menu no longer shows sibling pages for which the user does not have access (Mike Hearn) * Fix: Fixed occurences of invalid HTML across the CMS admin (Thibaud Colas) * Fix: Admin HTML now includes the correct `dir` attribute for the active language (Andreas Bernacca) * Fix: Fix type error when using `--chunk_size` argument on `./manage.py update_index` (Seb Brown) * Fix: Avoid rendering entire form in EditHandler's `repr` method (Alex Tomkins) * Fix: Add empty alt attributes to HTML output of Embedly and oEmbed embed finders (Andreas Bernacca) * Fix: Add empty alt attributes to all images in the CMS admin (Andreas Bernacca) * Fix: Make URL generator preview image alt translateable (Thibaud Colas) * Fix: Clear pending AJAX request if error occurs on page chooser (Matt Westcott) * Fix: Prevent text from overlapping in focal point editing UI (Beth Menzies) * Fix: Screen readers now announce "Dashboard" for the main nav’s logo link instead of Wagtail’s version number (Thibaud Colas) * Fix: Screen readers now treat page-level action dropdowns as navigation instead of menus (Helen Chapman) 2.5.1 (07.05.2019) ~~~~~~~~~~~~~~~~~~ * Fix: Prevent crash when comparing StructBlocks in revision history (Adrian Turjak, Matt Westcott) 2.5 (24.04.2019) ~~~~~~~~~~~~~~~~ * Django 2.2 support (Matt Westcott, Andy Babic) * Added support for customising EditHandler-based forms on a per-request basis (Bertrand Bordage) * Added more informative error message when `|richtext` filter is applied to a non-string value (mukesh5) * Automatic search indexing can now be disabled on a per-model basis via the `search_auto_update` attribute (Karl Hobley) * Improved diffing of StreamFields when comparing page revisions (Karl Hobley) * Highlight broken links to pages and missing documents in rich text (Brady Moe) * Preserve links when copy-pasting rich text content from Wagtail to other tools (Thibaud Colas) * Rich text to contentstate conversion now prioritises more specific rules, to accommodate `
` and `
` elements with attributes (Matt Westcott)
* Added limit image upload size by number of pixels (Thomas Elliott)
* Added `manage.py wagtail_update_index` alias to avoid clashes with `update_index` commands from other packages (Matt Westcott)
* Renamed `target_model` argument on `PageChooserBlock` to `page_type` (Loic Teixeira)
* `edit_handler` and `panels` can now be defined on a `ModelAdmin` definition (Thomas Kremmel)
* Add Learn Wagtail to third-party tutorials in documentation (Matt Westcott)
* Add a Django setting `TAG_LIMIT` to limit number of tags that can be added to any taggit model (Mani)
* Added instructions on how to generate urls for `ModelAdmin` to documentation (LB (Ben Johnston), Andy Babic)
* Added option to specify a fallback URL on `{% pageurl %}` (Arthur Holzner)
* Add support for more rich text formats, disabled by default: `blockquote`, `superscript`, `subscript`, `strikethrough`, `code` (Md Arifin Ibne Matin)
* Added `max_count_per_parent` option on page models to limit the number of pages of a given type that can be created under one parent page (Wesley van Lee)
* `StreamField` field blocks now accept a `validators` argument (Tom Usher)
* Added edit / delete buttons to snippet index and "don't delete" option to confirmation screen, for consistency with pages (Kevin Howbrook)
* Added support for Markdown shortcuts for inline formatting in rich text editor, e.g. `**` for bold, `_` for italic, etc. (Thibaud Colas)
* Added name attributes to all built-in page action menu items (LB (Ben Johnston))
* Added validation on the filter string to the Jinja2 image template tag (Jonny Scholes)
* Changed the pages reordering UI toggle to make it easier to find (Katie Locke, Thibaud Colas)
* Added support for rich text link rewrite handlers for `external` and `email` links (Md Arifin Ibne Matin)
* Clarify installation instructions in documentation, especially regarding virtual environments. (Naomi Morduch Toubman)
* Fix: Set `SERVER_PORT` to 443 in `Page.dummy_request()` for HTTPS sites (Sergey Fedoseev)
* Fix: Include port number in `Host` header of `Page.dummy_request()` (Sergey Fedoseev)
* Fix: Validation error messages in `InlinePanel` no longer count towards `max_num` when disabling the 'add' button (Todd Dembrey, Thibaud Colas)
* Fix: Rich text to contentstate conversion now ignores stray closing tags (frmdstryr)
* Fix: Escape backslashes in `postgres_search` queries (Hammy Goonan)
* Fix: Parent page link in page chooser search results no longer navigates away (Asanka Lihiniyagoda, Sævar Öfjörð Magnússon)
* Fix: `routablepageurl` tag now correctly omits domain part when multiple sites exist at the same root (Gassan Gousseinov)
* Fix: Added missing collection column specifier on document listing template (Sergey Fedoseev)
* Fix: Page Copy will now also copy ParentalManyToMany field relations (LB (Ben Johnston))
* Fix: Admin HTML header now includes correct language code (Matt Westcott)
* Fix: Unclear error message when saving image after focal point edit (Hugo van den Berg)
* Fix: `send_mail` now correctly uses the `html_message` kwarg for HTML messages (Tiago Requeijo)
* Fix: Page copying no longer allowed if page model has reached its `max_count` (Andy Babic)
* Fix: Don't show page type on page chooser button when multiple types are allowed (Thijs Kramer)
* Fix: Make sure page chooser search results correspond to the latest search by canceling previous requests (Esper Kuijs)
* Fix: Inform user when moving a page from one parent to another where there is an already existing page with the same slug (Casper Timmers)
* Fix: User add/edit forms now support form widgets with JS/CSS media (Damian Grinwis)
* Fix: Rich text processing now preserves non-breaking spaces instead of converting them to normal spaces (Wesley van Lee)
* Fix: Prevent autocomplete dropdowns from appearing over date choosers on Chrome (Kevin Howbrook)
* Fix: Prevent crash when logging HTTP errors from Cloudflare (Kevin Howbrook)
* Fix: Prevent rich text editor crash when filtering copy-pasted content and the last block is to be removed, e.g. unsupported image (Thibaud Colas)
* Fix: Removing rich text links / documents now also works when the text selection is backwards (Thibaud Colas)
* Fix: Prevent the rich text editor from crashing when copy-paste filtering removes all of its content (Thibaud Colas)
* Fix: Page chooser now respects custom `get_admin_display_title` methods on parent page and breadcrumb (Haydn Greatnews)
* Fix: Added consistent whitespace around sortable table headings (Matt Westcott)
* Fix: Moved locale names for Chinese (Simplified) and Chinese (Traditional) to `zh_Hans` and `zh_Hant` (Matt Westcott)
* Fix: Increase max length on `Embed.thumbnail_url` to 255 characters (Kevin Howbrook)
2.4 (19.12.2018)
~~~~~~~~~~~~~~~~
* Added support for Python 3.7 (Matt Westcott)
* Added `max_count` option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)
* Document and image choosers now show the document / image's collection (Alejandro Garza, Janneke Janssen)
* Added new "Welcome to your Wagtail site" Starter Page when using wagtail start command (Timothy Allen, Scott Cranfill)
* Added ability to run individual tests through tox (Benjamin Bach)
* Collection listings are now ordered by name (Seb Brown)
* Added `file_hash` field to documents (Karl Hobley, Dan Braghis)
* Added last login to the user overview (Noah B Johnson)
* Changed design of image editing page (Janneke Janssen, Ben Enright)
* Added Slovak character map for JavaScript slug generation (Andy Chosak)
* Make documentation links on welcome page work for prereleases (Matt Westcott)
* Allow overridden `copy()` methods in `Page` subclasses to be called from the page copy view (Robert Rollins)
* Users without a preferred language set on their profile now use language selected by Django's `LocaleMiddleware` (Benjamin Bach)
* Added hooks to customise the actions menu on the page create/edit views (Matt Westcott)
* Cleanup: Use `functools.partial()` instead of `django.utils.functional.curry()` (Sergey Fedoseev)
* Squashed migrations for wagtailimages (Karl Hobley)
* Added `before_move_page` and `after_move_page` hooks (Maylon Pedroso)
* Bulk deletion button for snippets is now hidden until items are selected (Karl Hobley)
* Fix: Query objects returned from `PageQuerySet.type_q` can now be merged with `|` (Brady Moe)
* Fix: Add `rel="noopener noreferrer"` to target blank links (Anselm Bradford)
* Fix: Additional fields on custom document models now show on the multiple document upload view (Robert Rollins, Sergey Fedoseev)
* Fix: Help text is partially hidden when using a combination of BooleanField and FieldPanel in page model (Dzianis Sheka)
* Fix: Allow custom logos of any height in the admin menu (Meteor0id)
* Fix: Allow nav menu to take up all available space instead of scrolling (Meteor0id)
* Fix: Redirects now return 404 when destination is unspecified or a page with no site (Hillary Jeffrey)
* Fix: Refactor all breakpoint definitions, removing style overlaps (Janneke Janssen)
* Fix: Updated draftjs_exporter to 2.1.5 to fix bug in handling adjacent entities (Thibaud Colas)
* Fix: Page titles consisting only of stopwords now generate a non-empty default slug (Andy Chosak, Janneke Janssen)
* Fix: Sitemap generator now allows passing a sitemap instance in the URL configuration (Mitchel Cabuloy, Dan Braghis)
2.3 LTS (23.10.2018)
~~~~~~~~~~~~~~~~~~~~
* Added support for Django 2.1 (Ryan Verner, Matt Westcott)
* Improved colour contrast (Coen van der Kamp, Naomi Morduch Toubman, Naa Marteki Reed, Edd Baldry, Ben Enright)
* Added 'scale' image filter (Oliver Wilkerson)
* Added meta tag to prevent search engines from indexing admin pages (Karl Hobley)
* EmbedBlock now validates against recognised embed providers on save (Bertrand Bordage)
* Made cache control headers on Wagtail admin consistent with Django admin (Tomasz Knapik)
* Notification emails now include an "Auto-Submitted: auto-generated" header (Dan Braghis)
* Image chooser panels now show alt text as title (Samir Shah)
* Added `download_url` field to images in the API (Michael Harrison)
* Dummy requests for preview now preserve the HTTP Authorization header (Ben Dickinson)
* Fix: Respect next param on login (Loic Teixeira)
* Fix: InlinePanel now handles relations that specify a related_query_name (Aram Dulyan)
* Fix: before_delete_page / after_delete_page hooks now run within the same database transaction as the page deletion (Tomasz Knapik)
* Fix: Snippet chooser modal no longer fails on snippet models with UUID primary keys (Sævar Öfjörð Magnússon)
* Fix: Restored localisation in date/time pickers (David Moore, Thibaud Colas)
* Fix: Tag input field no longer treats 'б' on Russian keyboards as a comma (Michael Borisov)
* Fix: Disabled autocomplete dropdowns on date/time chooser fields (Janneke Janssen)
* Fix: Split up `wagtail.admin.forms` to make it less prone to circular imports (Matt Westcott)
* Fix: Disable linking to root page in rich text, making the page non-functional (Matt Westcott)
* Fix: Pages should be editable and save-able even if there are broken page or document links in rich text (Matt Westcott)
* Fix: Avoid redundant round-trips of JSON StreamField data on save, improving performance and preventing consistency issues on fixture loading (Andy Chosak, Matt Westcott)
* Fix: Users are not logged out when changing their own password through the Users area (Matt Westcott)
2.2.2 (29.08.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Seek to the beginning of image files when uploading, to restore compatibility with django-storages Google Cloud and Azure backends (Mikalai Radchuk)
* Fix: Respect next param on login (Loic Teixeira)
2.2.1 (13.08.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
* Fix: Prevent AppRegistryNotReady error when wagtail.contrib.sitemaps is in INSTALLED_APPS (Matt Westcott)
2.2 (10.08.2018)
~~~~~~~~~~~~~~~~
* Added faceted search using the `.facet()` method (Karl Hobley)
* Added page type filtering and ordering to the Wagtail admin page search (Karl Hobley)
* Added another valid AudioBoom oEmbed pattern (Bertrand Bordage)
* Added `annotate_score` support to PostgreSQL search backend (Bertrand Bordage)
* Pillow's image optimisation is now applied when saving PNG images (Dmitry Vasilev)
* JS / CSS media files can now be associated with Draftail feature definitions (Matt Westcott)
* The `{% slugurl %}` template tag is now site-aware (Samir Shah)
* Added `file_size` field to documents (Karl Hobley)
* Added `file_hash` field to images (Karl Hobley)
* Update documentation (configuring Django for Wagtail) to contain all current settings options (Matt Westcott, LB (Ben Johnston))
* Added `defer` flag to `PageQuerySet.specific` (Karl Hobley)
* Snippets can now be deleted from the listing view (LB (Ben Johnston))
* Increased max length of redirect URL field to 255 (Michael Harrison)
* Added documentation for new JS/CSS media files association with Draftail feature definitions (Ed Henderson)
* Added accessible colour contrast guidelines to the style guide (Catherine Farman)
* Admin modal views no longer rely on Javascript `eval()`, for better CSP compliance (Matt Westcott)
* Update editor guide for embeds and documents in rich text (Kevin Howbrook)
* Improved performance of sitemap generation (Michael van Tellingen, Bertrand Bordage)
* Added an internal API for autocomplete (Karl Hobley, Bertrand Bordage)
* Fix: Handle all exceptions from `Image.get_file_size` (Andrew Plummer)
* Fix: Fix display of breadcrumbs in ModelAdmin (LB (Ben Johnston))
* Fix: Remove duplicate border radius of avatars (Benjamin Thurm)
* Fix: Site.get_site_root_paths() preferring other sites over the default when some sites share the same root_page (Andy Babic)
* Fix: Pages with missing model definitions no longer crash the API (Abdulmalik Abdulwahab)
* Fix: Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
* Fix: Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Andrew Crewdson, Matt Westcott)
* Fix: Permission checks no longer prevent a non-live page from being unscheduled (Abdulmalik Abdulwahab)
* Fix: Copy-paste between Draftail editors now preserves all formatting/content (Thibaud Colas)
* Fix: Fix alignment of checkboxes and radio buttons on Firefox (Matt Westcott)
2.1.3 (13.08.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
2.1.2 (06.08.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Bundle the l18n package to avoid installation issues on systems with a non-Unicode locale (Matt Westcott)
* Fix: Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
2.1.1 (04.07.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Site.get_site_root_paths() preferring other sites over the default when some sites share the same root_page (Andy Babic)
* Fix: Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
* Fix: Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)
2.1 (22.05.2018)
~~~~~~~~~~~~~~~~
* Add `HelpPanel` to add HTML within an edit form (Keving Chung)
* Added direct profile picture upload to account preferences (Daniel Chimeno, Pierre Geier, Matt Westcott)
* Added API endpoint for finding pages by HTML path (Karl Hobley)
* Added time zone setting to account preferences (David Moore)
* Added Elasticsearch 6 support (Karl Hobley)
* Persist tab hash in URL to allow direct navigation to tabs in the admin interface (Ben Weatherman)
* Animate the chevron icon when opening sub-menus in the admin (Carlo Ascani)
* Look through the target link and target page slug (in addition to the old slug) when searching for redirects in the admin (Michael Harrison)
* Remove support for IE6 to IE9 from project template (Samir Shah)
* Remove outdated X-UA-Compatible meta from admin template (Thibaud Colas)
* Add JavaScript source maps in production build for packaged Wagtail (Thibaud Colas)
* Removed `assert` statements from Wagtail API (Kim Chee Leong)
* Update `jquery-datetimepicker` dependency to make Wagtail more CSP-friendly (`unsafe-eval`) (Pomax)
* Added error notification when running the `wagtail` command on Python <3.4 (Matt Westcott)
* `update_index` management command now accepts a `--chunk_size` option to determine the number of items to load at once (Dave Bell)
* Added hook `register_account_menu_item` to add new account preference items (Michael van Tellingen)
* Added change email functionality from the account settings (Alejandro Garza, Alexs Mathilda)
* Add request parameter to edit handlers (Rajeev J Sebastian)
* ImageChooser now sets a default title based on filename (Coen van der Kamp)
* Added error handling to the Draftail editor (Thibaud Colas)
* Add new `wagtail_icon` template tag to facilitate making admin icons accessible (Sander Tuit)
* Set `ALLOWED_HOSTS` in the project template to allow any host in development (Tom Dyson)
* Expose reusable client-side code to build Draftail extensions (Thibaud Colas)
* Added `WAGTAILFRONTENDCACHE_LANGUAGES` setting to specify the languages whose URLs are to be purged when using `i18n_patterns` (PyMan Claudio Marinozzi)
* Added `extra_footer_actions` template blocks for customising the add/edit page views (Arthur Holzner)
* Fix: Status button on 'edit page' now links to the correct URL when live and draft slug differ (LB (Ben Johnston))
* Fix: Image title text in the gallery and in the chooser now wraps for long filenames (LB (Ben Johnston), Luiz Boaretto)
* Fix: Move image editor action buttons to the bottom of the form on mobile (Julian Gallo)
* Fix: StreamField icons are now correctly sorted into groups on the 'append' menu (Tim Heap)
* Fix: Draftail now supports features specified via the `WAGTAILADMIN_RICH_TEXT_EDITORS` setting (Todd Dembrey)
* Fix: Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
* Fix: `UserAttributeSimilarityValidator` is now correctly enforced on user creation / editing forms (Tim Heap)
* Fix: Focal area removal not working in IE11 and MS Edge (Thibaud Colas)
* Fix: Rewrite password change feedback message to be more user-friendly (Casper Timmers)
* Fix: Correct dropdown arrow styling in Firefox, IE11 (Janneke Janssen, Alexs Mathilda)
* Fix: Password reset no indicates specific validation errors on certain password restrictions (Lucas Moeskops)
* Fix: Confirmation page on page deletion now respects custom `get_admin_display_title` methods (Kim Chee Leong)
* Fix: Adding external link with selected text now includes text in link chooser (Tony Yates, Thibaud Colas, Alexs Mathilda)
* Fix: Editing setting object with no site configured no longer crashes (Harm Zeinstra)
* Fix: Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)
* Fix: Localization of image and apps verbose names
* Fix: Draftail editor no longer crashes after deleting image/embed using DEL key (Thibaud Colas)
* Fix: Breadcrumb navigation now respects custom `get_admin_display_title` methods (Arthur Holzner, Wietze Helmantel, Matt Westcott)
* Fix: Inconsistent order of heading features when adding h1, h5 or h6 as default feature for Hallo RichText editor (Loic Teixeira)
* Fix: Add invalid password reset link error message (Coen van der Kamp)
* Fix: Bypass select/prefetch related optimisation on `update_index` for `ParentalManyToManyField` to fix crash (Tim Kamanin)
* Fix: 'Add user' is now rendered as a button due to the use of quotes within translations (Benoît Vogel)
* Fix: Menu icon no longer overlaps with title in Modeladmin on mobile (Coen van der Kamp)
* Fix: Background color overflow within the Wagtail documentation (Sergey Fedoseev)
* Fix: Page count on homepage summary panel now takes account of user permissions (Andy Chosak)
* Fix: Explorer view now prevents navigating outside of the common ancestor of the user's permissions (Andy Chosak)
* Fix: Generate URL for the current site when multiple sites share the same root page (Codie Roelf)
* Fix: Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
* Fix: Stop revision comparison view from crashing when non-model FieldPanels are in use (LB (Ben Johnston))
* Fix: Ordering in the page explorer now respects custom `get_admin_display_title` methods when sorting <100 pages (Matt Westcott)
* Fix: Use index-specific Elasticsearch endpoints for bulk insertion, for compatibility with providers that lock down the root endpoint (Karl Hobley)
* Fix: Fix usage URL on the document edit page (Jérôme Lebleu)
2.0.2 (13.08.2018)
~~~~~~~~~~~~~~~~~~
* Fix: Restored ability to use non-model fields with FieldPanel (Matt Westcott, LB (Ben Johnston))
* Fix: Fix usage URL on the document edit page (Jérôme Lebleu)
* Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
2.0.1 (04.04.2018)
~~~~~~~~~~~~~~~~~~
* Added error notification when running the `wagtail` command on Python <3.4 (Matt Westcott)
* Added error handling to the Draftail editor (Thibaud Colas)
* Fix: Draftail now supports features specified via the `WAGTAILADMIN_RICH_TEXT_EDITORS` setting (Todd Dembrey)
* Fix: Password reset form no longer indicates whether the email is recognised, as per standard Django behaviour (Bertrand Bordage)
* Fix: `UserAttributeSimilarityValidator` is now correctly enforced on user creation / editing forms (Tim Heap)
* Fix: Editing setting object with no site configured no longer crashes (Harm Zeinstra)
* Fix: Creating a new object with inlines while mandatory fields are empty no longer crashes (Bertrand Bordage)
2.0 (28.02.2018)
~~~~~~~~~~~~~~~~
* Added support for Django 2.0 (Matt Westcott, Karl Hobley, LB (Ben Johnston), Mads Jensen)
* Reorganised module paths (Karl Hobley, Matt Westcott)
* Replaced the hallo.js rich text editor with Draftail (Thibaud Colas, Loïc Teixeira, Matt Westcott)
* Removed support for Python 2.7, Django 1.8 and Django 1.10
* Removed support for Elasticsearch 1.x
* Added the ability to schedule updates to existing published pages (Patrick Woods)
* Moved Wagtail API v1 implementation (`wagtail.contrib.api`) to an external app (https://github.com/wagtail/wagtailapi_legacy) (Karl Hobley)
* The page chooser now searches all fields of a page, instead of just the title (Bertrand Bordage)
* Implement ordering by date in form submission view (LB (Ben Johnston))
* Elasticsearch scroll API is now used when fetching more than 100 search results (Karl Hobley)
* Added hidden field to the form builder (Ross Crawford-d'Heureuse)
* Usage count now shows on delete confirmation page when WAGTAIL_USAGE_COUNT_ENABLED is active (Kees Hink)
* Added usage count to snippets (Kees Hink)
* Moved usage count to the sidebar on the edit page (Kees Hink)
* Explorer menu now reflects customisations to the page listing made via the `construct_explorer_page_queryset` hook and `ModelAdmin.exclude_from_explorer` property (Tim Heap)
* "Choose another image" button changed to "Change image" to avoid ambiguity (Edd Baldry)
* Added hooks `before_create_user`, `after_create_user`, `before_delete_user`, `after_delete_user`, `before_edit_user`, `after_edit_user` (Jon Carmack)
* Added `exclude_fields_in_copy` property to Page to define fields that should not be included on page copy (LB (Ben Johnston))
* Improved error message on incorrect `{% image %}` tag syntax (LB (Ben Johnston))
* Optimized preview data storage (Bertrand Bordage)
* Added `render_landing_page` method to `AbstractForm` to be easily overridden and pass `form_submission` to landing page context (Stein Strindhaug)
* Added `heading` kwarg to `InlinePanel` to allow heading to be set independently of button label (Adrian Turjak)
* The value type returned from a `StructBlock` can now be customised (LB (Ben Johnston))
* Added `bgcolor` image operation (Karl Hobley)
* Added `WAGTAILADMIN_USER_LOGIN_FORM` setting for overriding the admin login form (Mike Dingjan)
* Snippets now support custom primary keys (Sævar Öfjörð Magnússon)
* Upgraded jQuery to version 3.2.1 (Janneke Janssen)
* Updated documentation styling (LB (Ben Johnston))
* Rich text fields now take feature lists into account when whitelisting HTML elements (Matt Westcott)
* FormPage lists and Form submission lists in admin now use class based views for easy overriding (Johan Arensman)
* Form submission csv exports now have the export date in the filename and can be customized (Johan Arensman)
* FormBuilder class now uses bound methods for field generation, adding custom fields is now easier and documented (LB (Ben) Johnston)
* Added `WAGTAILADMIN_NOTIFICATION_INCLUDE_SUPERUSERS` setting to determine whether superusers are included in moderation email notifications (Bruno Alla)
* Added a basic Dockerfile to the project template (Tom Dyson)
* StreamField blocks now allow custom `get_template` methods for overriding templates in instances (Christopher Bledsoe)
* Simplified edit handler API (Florent Osmont, Bertrand Bordage)
* Made 'add/change/delete collection' permissions configurable from the group edit page (Matt Westcott)
* Update autoprefixer configuration to better match browser support targets (Janneke Janssen)
* Update React and related dependencies to latest versions (Janneke Janssen, Hugo van den Berg)
* Remove Hallo editor `.richtext` CSS class in favour of more explicit extension points (Thibaud Colas)
* Expose React-related dependencies as global variables for extension in the admin interface (Thibaud Colas)
* Added helper functions for constructing form data for use with `assertCanCreate` (Tim Heap, Matt Westcott)
* Fix: Do not remove stopwords when generating slugs from non-ASCII titles, to avoid issues with incorrect word boundaries (Sævar Öfjörð Magnússon)
* Fix: The PostgreSQL search backend now preserves ordering of the `QuerySet` when searching with `order_by_relevance=False` (Bertrand Bordage)
* Fix: Using `modeladmin_register` as a decorator no longer replaces the decorated class with `None` (Tim Heap)
* Fix: Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
* Fix: The `{% routablepageurl %}` template tag no longer generates invalid URLs when the `WAGTAIL_APPEND_SLASH` setting was set to `False` (Venelin Stoykov)
* Fix: The "View live" button is no longer shown if the page doesn't have a routable URL (Tim Heap)
* Fix: Fixed rendering of border on dropdown arrow buttons on Chrome (Bertrand Bordage)
* Fix: Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
* Fix: Form submissions pagination no longer looses date filter when changing page (Bertrand Bordage)
* Fix: PostgreSQL search backend now removes duplicate page instances from the database (Bertrand Bordage)
* Fix: `FormSubmissionsPanel` now recognises custom form submission classes (LB (Ben Johnston))
* Fix: Prevent the footer and revisions link from unnecessarily collapsing on mobile (Jack Paine)
* Fix: Empty searches were activated when paginating through images and documents (LB (Ben Johnston))
* Fix: Summary numbers of pages, images and documents were not responsive when greater than 4 digits (Michael Palmer)
* Fix: Project template now has password validators enabled by default (Matt Westcott)
* Fix: Alignment options correctly removed from `TableBlock` context menu (LB (Ben Johnston))
* Fix: Fix support of `ATOMIC_REBUILD` for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)
* Fix: Fixed error on Elasticsearch backend when passing a queryset as an `__in` filter (Karl Hobley, Matt Westcott)
* Fix: `__isnull` filters no longer fail on Elasticsearch 5 (Karl Hobley)
* Fix: Prevented intermittent failures on Postgres search backend when a field is defined as both a `SearchField` and a `FilterField` (Matt Westcott)
* Fix: Alt text of images in rich text is no longer truncated on double-quote characters (Matt Westcott)
* Fix: Ampersands in embed URLs within rich text are no longer double-escaped (Matt Westcott)
* Fix: Using RGBA images no longer crashes with Pillow >= 4.2.0 (Karl Hobley)
* Fix: Copying a page with PostgreSQL search enabled no longer crashes (Bertrand Bordage)
* Fix: Style of the page unlock button was broken (Bertrand Bordage)
* Fix: Admin search no longer floods browser history (Bertrand Bordage)
* Fix: Version comparison now handles custom primary keys on inline models correctly (LB (Ben Johnston))
* Fix: Fixed error when inserting chooser panels into FieldRowPanel (Florent Osmont, Bertrand Bordage)
* Fix: Reinstated missing error reporting on image upload (Matt Westcott)
* Fix: Only load Hallo CSS if Hallo is in use (Thibaud Colas)
* Fix: Prevent style leak of Wagtail panel icons in widgets using ``h2`` elements (THibaud Colas)
1.13.4 (13.08.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
1.13.3 (13.08.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
* Fix: Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
1.13.2 (04.07.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Fix support of `ATOMIC_REBUILD` for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)
* Fix: Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
* Fix: Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
* Fix: Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)
1.13.1 (17.11.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: API listing views no longer fail when no site records are defined (Karl Hobley)
* Fix: Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
* Fix: Fixed incorrect z-index on userbar causing it to appear behind page content (Stein Strindhaug)
* Fix: Fixed error in Postgres search backend when searching specific fields of a specific() Page queryset (Bertrand Bordage, Matt Westcott)
* Fix: Fixed error on Elasticsearch backend when passing a queryset as an `__in` filter (Karl Hobley, Matt Westcott)
* Fix: `__isnull` filters no longer fail on Elasticsearch 5 (Karl Hobley)
* Fix: Prevented intermittent failures on Postgres search backend when a field is defined as both a `SearchField` and a `FilterField` (Matt Westcott)
1.13 LTS (16.10.2017)
~~~~~~~~~~~~~~~~~~~~~
* Front-end cache invalidator now supports purging URLs as a batch (Karl Hobley)
* Custom document model is now documented (Emily Horsman)
* Use minified versions of CSS in the admin by adding minification to the front-end tooling (Vincent Audebert, Thibaud Colas)
* Wagtailforms serve view now passes `request.FILES`, for use in custom form handlers (LB (Ben Johnston))
* Documents and images are now given new filenames on re-uploading, to avoid old versions being kept in cache (Bertrand Bordage)
* Added custom 404 page for admin interface (Jack Paine)
* Breadcrumb navigation now uses globe icon to indicate tree root, rather than home icon (Matt Westcott)
* Updated React to 15.6.2 due to relicensing (Janneke Janssen)
* User search in the Wagtail admin UI now works across multiple fields (Will Giddens)
* `Page.last_published_at` is now a filterable field for search (Mikalai Radchuk)
* Page search results and usage listings now include navigation links (Matt Westcott)
* Fix: "Open Link in New Tab" on a right arrow in page explorer should open page list (Emily Horsman)
* Fix: Using `order_by_relevance=False` when searching with PostgreSQL now works (Mitchel Cabuloy)
* Fix: Inline panel first and last sorting arrows correctly hidden in non-default tabs (Matt Westcott)
* Fix: `WAGTAILAPI_LIMIT_MAX` now accepts None to disable limiting (jcronyn)
* Fix: In PostgreSQL, new default ordering when ranking of objects is the same (Bertrand Bordage)
* Fix: Fixed overlapping header elements on form submissions view on mobile (Jack Paine)
* Fix: Fixed avatar position in footer on mobile (Jack Paine)
* Fix: Custom document models no longer require their own post-delete signal handler (Gordon Pendleton)
* Fix: Deletion of image / document files now only happens when database transaction has completed (Gordon Pendleton)
* Fix: Fixed Node build scripts to work on Windows (Mikalai Radchuk)
* Fix: Stop breadcrumb home icon from showing as ellipsis in Chrome 60 (Matt Westcott)
* Fix: Prevent `USE_THOUSAND_SEPARATOR = True` from breaking the image focal point chooser (Sævar Öfjörð Magnússon)
* Fix: Removed deprecated `SessionAuthenticationMiddleware` from project template (Samir Shah)
* Fix: Custom display page titles defined with `get_admin_display_title` are now shown in search results (Ben Sturmfels, Matt Westcott)
* Fix: Custom PageManagers now return the correct PageQuerySet subclass (Matt Westcott)
* Fix: API listing views no longer fail when no site records are defined (Karl Hobley)
1.12.6 (13.08.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin Beautiful Soup to 4.6.0 due to further regressions in formatting empty elements (Matt Westcott)
1.12.5 (13.08.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin django-taggit to <0.23 to restore Django 1.8 compatibility (Matt Westcott)
* Fix: Mark Beautiful Soup 4.6.1 as incompatible due to bug in formatting empty elements (Matt Westcott)
1.12.4 (04.07.2018)
~~~~~~~~~~~~~~~~~~~
* Fix: Fix support of `ATOMIC_REBUILD` for projects with Elasticsearch client >=1.7.0 (Mikalai Radchuk)
* Fix: Logging an indexing failure on an object with a non-ASCII representation no longer crashes on Python 2 (Aram Dulyan)
* Fix: Rich text image chooser no longer skips format selection after a validation error (Matt Westcott)
* Fix: Null characters in URLs no longer crash the redirect middleware on PostgreSQL (Matt Westcott)
1.12.3 (17.11.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: API listing views no longer fail when no site records are defined (Karl Hobley)
* Fix: Pinned Django REST Framework to <3.7 to restore Django 1.8 compatibility (Matt Westcott)
* Fix: Fixed crash in XML sitemap generator when all pages on the site are private (Stein Strindhaug)
* Fix: Fixed error in Postgres search backend when searching specific fields of a specific() Page queryset (Bertrand Bordage, Matt Westcott)
* Fix: Fixed error on Elasticsearch backend when passing a queryset as an `__in` filter (Karl Hobley, Matt Westcott)
* Fix: `__isnull` filters no longer fail on Elasticsearch 5 (Karl Hobley)
* Fix: Prevented intermittent failures on Postgres search backend when a field is defined as both a `SearchField` and a `FilterField` (Matt Westcott)
1.12.2 (18.09.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: Migration for addition of `Page.draft_title` field is now reversible (Venelin Stoykov)
* Fix: Fixed failure on application startup when `ManifestStaticFilesStorage` is in use and `collectstatic` has not yet been run (Matt Westcott)
* Fix: Fixed handling of Vimeo and other oEmbed providers with a format parameter in the endpoint URL (Mitchel Cabuloy)
* Fix: Fixed regression in rendering save button in wagtail.contrib.settings edit view (Matt Westcott)
1.12.1 (30.08.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent home page draft title from displaying as blank (Mikalai Radchuk, Matt Westcott)
* Fix: Fix regression on styling of preview button with more than one preview mode (Jack Paine)
* Fix: Enabled translations within date-time chooser widget (Lucas Moeskops)
1.12 LTS (21.08.2017)
~~~~~~~~~~~~~~~~~~~~~
* Ability to configure the feature set of rich text fields on a per-field basis (Matt Westcott)
* New class-based configuration for media embeds (Karl Hobley)
* The admin interface now displays a title of the latest draft (Mikalai Radchuk)
* `RoutablePageMixin` now has a default "index" route (Andreas Nüßlein, Matt Westcott)
* Added multi-select form field to the form builder (dwasyl)
* Improved performance of sitemap generation (Levi Adler)
* StreamField now respects the `blank` setting; StreamBlock accepts a `required` setting (Loic Teixeira)
* StreamBlock now accepts `min_num`, `max_num` and `block_counts` settings to control the minimum and maximum numbers of blocks (Edwar Baron, Matt Westcott)
* Users can no longer remove their own active / superuser flags through Settings -> Users (Stein Strindhaug, Huub Bouma)
* The `process_form_submission` method of form pages now return the created form submission object (cho-leukeleu)
* Added `WAGTAILUSERS_PASSWORD_ENABLED` and `WAGTAILUSERS_PASSWORD_REQUIRED` settings to permit creating users with no Django-side passwords, to support external authentication setups (Matt Westcott)
* Added help text parameter to `DecimalBlock` and `RegexBlock` (Tomasz Knapik)
* Optimised caudal oscillation parameters on logo (Jack Paine)
* Fix: FieldBlocks in StreamField now call the field's `prepare_value` method (Tim Heap)
* Fix: Initial disabled state of InlinePanel add button is now set correctly on non-default tabs (Matthew Downey)
* Fix: Redirects with unicode characters now work (Rich Brennan)
* Fix: Prevent explorer view from crashing when page model definitions are missing, allowing the offending pages to be deleted (Matt Westcott)
* Fix: Hide the userbar from printed page representation (Eugene Morozov)
* Fix: Prevent the page editor footer content from collapsing into two lines unnecessarily (Jack Paine)
* Fix: StructBlock values no longer render HTML templates as their `str` representation, to prevent infinite loops in debugging / logging tools (Matt Westcott)
* Fix: Removed deprecated jQuery ``load`` call from TableBlock initialisation (Jack Paine)
* Fix: Position of options in mobile nav-menu (Jack Paine)
* Fix: Center page editor footer regardless of screen width (Jack Paine)
* Fix: Change the design of the navbar toggle icon so that it no longer obstructs page headers (Jack Paine)
* Fix: Document add/edit forms no longer render container elements for hidden fields (Jeffrey Chau)
1.11.1 (07.07.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: Custom display page titles defined with `get_admin_display_title` are now shown within the page explorer menu (Matt Westcott, Janneke Janssen)
1.11 (30.06.2017)
~~~~~~~~~~~~~~~~~
* Added a new page explorer menu built with the admin API and React (Karl Hobley, Josh Barr, Thibaud Colas, Janneke Janssen, Rob Moorman, Maurice Bartnig, Jonny Scholes, Matt Westcott, Sævar Öfjörð Magnússon, Eirikur Ingi Magnusson, Harris Lapiroff, Hugo van den Berg, Olly Willans, Andy Babic, Ben Enright, Bertrand Bordage)
* Added privacy settings for documents (Ulrich Wagner, Matt Westcott)
* Optimised page URL generation by caching site paths in the request scope (Tobias McNulty, Matt Westcott)
* The current live version of a page is now tracked on the revision listing view (Matheus Bratfisch)
* Each block created in a `StreamField` is now assigned a globally unique identifier (Matt Westcott)
* Mixcloud oEmbed pattern has been updated (Alice Rose)
* Added `last_published_at` field to the Page model (Matt Westcott)
* Added `show_in_menus_default` flag on page models, to allow "show in menus" to be checked by default (LB (Ben Johnston))
* "Copy page" form now validates against copying to a destination where the user does not have permission (Henk-Jan van Hasselaar)
* Allows reverse relations in `RelatedFields` for elasticsearch & PostgreSQL search backends (Lucas Moeskops, Bertrand Bordage)
* Added oEmbed support for Facebook (Mikalai Radchuk)
* Added oEmbed support for Tumblr (Mikalai Radchuk)
* Fix: Unauthenticated AJAX requests to admin views now return 403 rather than redirecting to the login page (Karl Hobley)
* Fix: `TableBlock` options `afterChange`, `afterCreateCol`, `afterCreateRow`, `afterRemoveCol`, `afterRemoveRow` and `contextMenu` can now be overridden (Loic Teixeira)
* Fix: The lastmod field returned by wagtailsitemaps now shows the last published date rather than the date of the last draft edit (Matt Westcott)
* Fix: Document chooser upload form no longer renders container elements for hidden fields (Jeffrey Chau)
* Fix: Prevented exception when visiting a preview URL without initiating the preview (Paul Kamp)
1.10.1 (19.05.2017)
~~~~~~~~~~~~~~~~~~~
* Fix: Fix admin page preview that was broken 24 hours after previewing a page (Martin Hill)
* Fix: Removed territory-specific translations for Spanish, Polish, Swedish, Russian and Chinese (Taiwan) that block more complete translations from being used (Matt Westcott)
1.10 (03.05.2017)
~~~~~~~~~~~~~~~~~
* Added PostgreSQL search engine (Bertrand Bordage, Jaap Roes, Arne de Laat, Ramon de Jezus)
* Django 1.11 support (Tim Graham, Matt Westcott, Mikalai Radchuk, Bertrand Bordage)
* Dropped Django 1.9 and Python 3.3 support; note that Django 1.8.x is still supported
* Added user-preferred admin language along with `WAGTAILADMIN_PERMITTED_LANGUAGES` (Daniel Chimeno)
* Added `WAGTAIL_AUTO_UPDATE_PREVIEW` setting that when set to `True`, allows the preview window to be refreshed when changes have been made in the editor (Bertrand Bordage)
* Dropped support for generating static sites using django-medusa
* Use minified versions of jQuery and jQuery UI in the admin. Total savings without compression 371 KB (Tom Dyson)
* Hooks can now specify the order in which they are run (Gagaro)
* Added a `submit_buttons` block to login template (Gagaro)
* Added `construct_image_chooser_queryset`, `construct_document_chooser_queryset` and `construct_page_chooser_queryset` hooks (Gagaro)
* The homepage created in the project template is now titled "Home" rather than "Homepage" (Karl Hobley)
* Signal receivers for custom `Image` and `Rendition` models are connected automatically (Mike Dingjan)
* `PageChooserBlock` can now accept a list/tuple of page models as `target_model` (Mikalai Radchuk)
* Styling tweaks for the ModelAdmin's `IndexView` to be more inline with the Wagtail styleguide (Andy Babic)
* Added `.nvmrc` to the project root for Node versioning support (Janneke Janssen)
* Added `form_fields_exclude` property to ModelAdmin views (Matheus Bratfisch)
* User creation / edit form now enforces password validators set in `AUTH_PASSWORD_VALIDATORS` (Bertrand Bordage)
* Added support for showing `non_field_errors` when validation fails in the page editor (Matt Westcott)
* Added `WAGTAILADMIN_RECENT_EDITS_LIMIT` setting to to define the number of your most recent edits on the dashboard (Maarten Kling)
* Creating / editing users through the Wagtail admin no longer modifies the `is_staff` flag (Matt Westcott)
* Added link to the full Elasticsearch setup documentation from the Performance page (Matt Westcott)
* Tag input fields now accept spaces in tags by default, and can be overridden with the `TAG_SPACES_ALLOWED` setting (Kees Hink, Alex Gleason)
* Page chooser widgets now display the required page type where relevant (Christine Ho)
* Site root pages are now indicated with a globe icon in the explorer listing (Nick Smith, Huub Bouma)
* Draft page view is now restricted to users with edit / publish permission over the page (Kees Hink)
* Added the option to delete a previously saved focal point on a image (Maarten Kling)
* Page explorer menu item, search and summary panel are now hidden for users with no page permissions (Tim Heap)
* Added support for custom date and datetime formats in input fields (Bojan Mihelac)
* Added support for custom Django REST framework serialiser fields in `Page.api_fields` using a new `APIField` class (Karl Hobley)
* Added `classname` argument to `StreamFieldPanel` (Christine Ho)
* Added `group` keyword argument to StreamField blocks for grouping related blocks together in the block menu (Andreas Nüßlein)
* Update the sitemap generator to use the Django sitemap module (Michael van Tellingen, Mike Dingjan)
* Fix: Marked 'Date from' / 'Date to' strings in wagtailforms for translation (Vorlif)
* Fix: "File" field label on image edit form is now translated (Stein Strindhaug)
* Fix: Unreliable preview is now reliable by always opening in a new window (Kjartan Sverrisson)
* Fix: Fixed placement of `{{ block.super }}` in `snippets/type_index.html` (LB (Ben Johnston))
* Fix: Optimised database queries on group edit page (Ashia Zawaduk)
* Fix: Choosing a popular search term for promoted search results now works correctly after pagination (Janneke Janssen)
* Fix: IDs used in tabbed interfaces are now namespaced to avoid collisions with other page elements (Janneke Janssen)
* Fix: Page title not displaying page name when moving a page (Trent Holliday)
* Fix: The ModelAdmin module can now work without the wagtailimages and wagtaildocs apps installed (Andy Babic)
* Fix: Cloudflare error handling now handles non-string error responses correctly (hdnpl)
* Fix: Search indexing now uses a defined query ordering to prevent objects from being skipped (Christian Peters)
* Fix: Ensure that number localisation is not applied to object IDs within admin templates (Tom Hendrikx)
* Fix: Paginating with a search present was always returning the 1st page in Internet Explorer 10 & 11 (Ralph Jacobs)
* Fix: RoutablePageMixin and wagtailforms previews now set the `request.is_preview` flag (Wietze Helmantel)
* Fix: The save and preview buttons in the page editor are now mobile-friendly (Maarten Kling)
* Fix: Page links within rich text now respect custom URLs defined on specific page models (Gary Krige, Huub Bouma)
* Fix: Default avatar no longer visible when using a transparent gravatar image (Thijs Kramer)
* Fix: Scrolling within the datetime picker is now usable again for touchpads (Ralph Jacobs)
* Fix: List-based fields within form builder form submissions are now displayed as comma-separated strings rather than as Python lists (Christine Ho, Matt Westcott)
* Fix: The page type usage listing now have a translatable page title (Ramon de Jezus)
* Fix: Styles for submission filtering form now have a consistent height. (Thijs Kramer)
* Fix: Custom user models with a primary key type requiring `get_db_prep_value` conversion are now supported (thenewguy)
* Fix: Slicing a search result set no longer loses the annotation added by `annotate_score` (Karl Hobley)
* Fix: String-based primary keys are now escaped correctly in ModelAdmin URLs (Andreas Nüßlein)
* Fix: Empty search in the API now works (Morgan Aubert)
* Fix: `RichTextBlock` toolbar now correctly positioned within `StructBlock` (Janneke Janssen)
* Fix: Fixed display of ManyToMany fields and False values on the ModelAdmin inspect view (Andy Babic)
* Fix: Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
* Fix: Specifying the full file name in documents URL is mandatory (Morgan Aubert)
* Fix: Reordering inline forms now works correctly when moving past a deleted form (Janneke Janssen)
* Fix: Removed erroneous ``|safe`` filter from search results template in project template (Karl Hobley)
1.9.1 (21.04.2017)
~~~~~~~~~~~~~~~~~~
* Fix: Removed erroneous `|safe` filter from search results template in project template (Karl Hobley)
* Fix: Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
1.9 (16.02.2017)
~~~~~~~~~~~~~~~~
* Added support for comparing page revisions (Karl Hobley, Janneke Janssen, Matt Westcott)
* Added support for many-to-many relations on page models (Thejaswi Puthraya, Matt Westcott)
* Form builder form submissions can now be bulk-deleted (Karl Hobley)
* `get_context` methods on StreamField blocks can now access variables from the parent context (Mikael Svensson, Peter Baumgartner)
* Updated admin dashboard welcome message for multi-tenanted installations (Jeffrey Chau)
* Changed text of "Draft" and "Live" buttons to "View draft" and "View live" (Dan Braghis)
* Added `get_api_representation` method to streamfield blocks allowing the JSON representation in the API to be customised (Marco Fucci)
* Added `before_copy_page` and `after_copy_page` hooks (Matheus Bratfisch)
* View live / draft links in the admin now consistently open in a new window (Marco Fucci)
* `ChoiceBlock` now omits the blank option if the block is required and has a default value (Andreas Nüßlein)
* The `add_subpage` view now maintains a `next` URL parameter to specify where to redirect to after completing page creation (Robert Rollins)
* The `wagtailforms` module now allows to define custom form submission model, add custom data to CSV export and some other customisations (Mikalai Radchuk)
* The Webpack configuration is now in a subfolder, and uses env-specific configurations (Janneke Janssen, Thibaud Colas)
* Added page titles to title text on action buttons in the explorer, for improved accessibility (Matt Westcott)
* Fix: Help text for StreamField is now visible and does not cover block controls (Stein Strindhaug)
* Fix: "X minutes ago" timestamps are now marked for translation (Janneke Janssen, Matt Westcott)
* Fix: Avoid indexing unsaved field content on `save(update_fields=[...])` operations (Matt Westcott)
* Fix: Corrected ordering of arguments passed to ModelAdmin `get_extra_class_names_for_field_col` / `get_extra_attrs_for_field_col` methods (Andy Babic)
* `pageurl` / `slugurl` tags now function when request.site is not available (Tobias McNulty, Matt Westcott)
1.8.2 (21.04.2017)
~~~~~~~~~~~~~~~~~~
* Fix: Removed erroneous `|safe` filter from search results template in project template (Karl Hobley)
* Fix: Avoid indexing unsaved field content on `save(update_fields=[...])` operations (Matt Westcott)
* Fix: Prevent pages from being recursively copied into themselves (Matheus Bratfisch)
1.8.1 (26.01.2017)
~~~~~~~~~~~~~~~~~~
* Fix: Reduced `Rendition.focal_point_key` field length to prevent migration failure when upgrading to Wagtail 1.8 on MySQL with `utf8` character encoding (Andy Chosak, Matt Westcott)
1.8 LTS (15.12.2016)
~~~~~~~~~~~~~~~~~~~~
* New page privacy options (Shawn Makinson, Tom Miller, Luca Perico, Matt Westcott)
* New 'bulk delete' permission type for deleting pages with children (Matt Westcott)
* Elasticsearch 5 support (Karl Hobley)
* Added support of a custom `edit_handler` in site settings (Axel Haustant)
* Added `get_landing_page_template` getter method to `AbstractForm` (Gagaro)
* Added `Page.get_admin_display_title` method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)
* Added support for specifying custom HTML attributes for table rows on ModelAdmin index pages (Andy Babic)
* Added `first_common_ancestor` method to `PageQuerySet` (Tim Heap)
* Page chooser now opens at the deepest ancestor page that covers all the pages of the required page type (Tim Heap)
* `PageChooserBlock` now accepts a `target_model` option to specify the required page type (Tim Heap)
* Modeladmin forms now respect `fields` / `exclude` options passed on custom model forms (Thejaswi Puthraya)
* Added new StreamField block type `StaticBlock` (Benoît Vogel)
* Added new StreamField block type `BlockQuoteBlock` (Scot Hacker)
* Updated Cloudflare cache module to use the v4 API (Albert O'Connor)
* Added `exclude_from_explorer` attribute to the `ModelAdmin` class to allow hiding instances of a page type from Wagtail's explorer views (Andy Babic)
* Added `above_login`, `below_login`, `fields` and `login_form` customisation blocks to the login page template (Tim Heap)
* `ChoiceBlock` now accepts a callable as the choices list (Mikalai Radchuk)
* Redundant action buttons are now omitted from the root page in the explorer (Nick Smith)
* Locked pages are now disabled from editing at the browser level (Edd Baldry)
* Added `in_site` method for filtering page querysets to pages within the specified site (Chris Rogers)
* Added the ability to override the default index settings for Elasticsearch (PyMan Claudio Marinozzi)
* Extra options for the Elasticsearch constructor should be now defined with the new key `OPTIONS` of the `WAGTAILSEARCH_BACKENDS` setting (PyMan Claudio Marinozzi)
* Breadcrumb in the page explorer is now restricted to the pages the user has permission over (Jeffrey Chau, Robert Rollins, Matt Westcott)
* Fix: `AbstractForm` now respects custom `get_template` methods on the page model (Gagaro)
* Fix: Use specific page model for the parent page in the explore index (Gagaro)
* Fix: Remove responsive styles in embed when there is no ratio available (Gagaro)
* Fix: Parent page link in page search modal no longer disappears on hover (Dan Braghis)
* Fix: ModelAdmin views now consistently call `get_context_data` (Andy Babic)
* Fix: Header for search results on the redirects index page now shows the correct count when the listing is paginated (Nick Smith)
* Fix: `set_url_paths` management command is now compatible with Django 1.10 (Benjamin Bach)
* Fix: Form builder email notifications now output multiple values correctly (Sævar Öfjörð Magnússon)
* Fix: Closing 'more' dropdown on explorer no longer jumps to the top of the page (Ducky)
* Fix: Users with only publish permission are no longer given implicit permission to delete pages (Matt Westcott)
* Fix: `search_garbage_collect` management command now works when wagtailsearchpromotions is not installed (Morgan Aubert)
* Fix: `wagtail.contrib.settings` context processor no longer fails when `request.site` is unavailable (Diederik van der Boor)
* Fix: `TableBlock` content is now indexed for search (Morgan Aubert)
* Fix: `Page.copy()` is now marked as `alters_data`, to prevent template code from triggering it (Diederik van der Boor)
1.7 (20.10.2016)
~~~~~~~~~~~~~~~~
* Elasticsearch 2 support (Karl Hobley)
* Added parameters to image tag to specify file type and JPEG compression level (Karl Hobley)
* Added support for AWS CloudFront in frontend cache invalidation module (Rob Moorman)
* Unpublishing a page now gives the option to unpublish subpages too (Jordi Joan)
* The ``|embed`` filter has been converted into a templatetag ``{% embed %}`` (Janneke Janssen)
* The `wagtailforms` module now provides a `FormSubmissionPanel` for displaying details of form submissions (João Luiz Lorencetti)
* The Wagtail version number can now be obtained as a tuple using `from wagtail import VERSION` (Tim Heap)
* `send_mail` logic has been moved from `AbstractEmailForm.process_form_submission` into `AbstractEmailForm.send_mail`. Now it's easier to override this logic (Tim Leguijt)
* Added `before_create_page`, `before_edit_page`, `before_delete_page` hooks (Karl Hobley)
* Updated font sizes and colours to improve legibility of admin menu and buttons (Stein Strindhaug)
* Added pagination to "choose destination" view when moving pages (Nick Smith, Žan Anderle)
* Added ability to annotate search results with score (Karl Hobley)
* Added ability to limit access to form submissions (Mikalai Radchuk)
* Added the ability to configure the number of days search logs are kept for (Stephen Rice)
* `SnippetChooserBlock` now supports passing the model name as a string (Nick Smith)
* Redesigned account settings / logout area in the sidebar for better clarity (Janneke Janssen)
* Pillow's image optimisation is now applied when saving JPEG images (Karl Hobley)
* Fix: Migrations for wagtailcore and project template are now reversible (Benjamin Bach)
* Fix: Migrations no longer depend on wagtailcore and taggit's `__latest__` migration, logically preventing those apps from receiving new migrations (Matt Westcott)
* Fix: The default image format label text ('Full width', 'Left-aligned', 'Right-aligned') is now localised (Mikalai Radchuk)
* Fix: Text on the front-end 'password required' form is now marked for translation (Janneke Janssen)
* Fix: Text on the page view restriction form is now marked for translation (Luiz Boaretto)
* Fix: Fixed toggle behaviour of userbar on mobile (Robert Rollins)
* Fix: Image rendition / document file deletion now happens on a post_delete signal, so that files are not lost if the deletion does not proceed (Janneke Janssen)
* Fix: "Your recent edits" list on dashboard no longer leaves out pages that another user has subsequently edited (Michael Cordover, Kees Hink, João Luiz Lorencetti)
* Fix: `InlinePanel` now accepts a `classname` parameter as per the documentation (emg36, Matt Westcott)
* Fix: Disabled use of escape key to revert content of rich text fields, which could cause accidental data loss (Matt Westcott)
* Fix: Setting `USE_THOUSAND_SEPARATOR = True` no longer breaks the rendering of numbers in JS code for InlinePanel (Mattias Loverot, Matt Westcott)
* Fix: Images / documents pagination now preserves GET parameters (Bojan Mihelac)
* Fix: Wagtail's UserProfile model now sets a related_name of ``wagtail_userprofile`` to avoid naming collisions with other user profile models (Matt Westcott)
* Fix: Non-text content is now preserved when adding or editing a link within rich text (Matt Westcott)
* Fix: Fixed preview when `SECURE_SSL_REDIRECT = True` (Aymeric Augustin)
* Fix: Prevent hang when truncating an image filename without an extension (Ricky Robinett)
1.6.3 (30.09.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Restore compatibility with django-debug-toolbar 1.5 (Matt Westcott)
* Fix: Edits to StreamFields are no longer ignored in page edits on Django >=1.10.1 when a default value exists (Matt Westcott)
1.6.2 (02.09.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Initial values of checkboxes on group permission edit form now are visible on Django 1.10 (Matt Westcott)
1.6.1 (26.08.2016)
~~~~~~~~~~~~~~~~~~
* Added ``WAGTAIL_ALLOW_UNICODE_SLUGS`` setting to make Unicode support optional in page slugs (Matt Westcott)
* Fix: Wagtail's middleware classes are now compatible with Django 1.10's new-style middleware (Karl Hobley)
* Fix: The `Pages.can_create_at` method is now checked in the create page view (Mikalai Radchuk)
* Fix: Fixed regression on Django 1.10.1 causing Page subclasses to fail to use PageManager (Matt Westcott)
* Fix: ChoiceBlocks with lazy translations as option labels no longer break Elasticsearch indexing (Matt Westcott)
* Fix: The page editor no longer fails to load JavaScript files with ``ManifestStaticFilesStorage`` (Matt Westcott)
* Fix: Django 1.10 enables client-side validation for all forms by default, but it fails to handle all the nuances of how forms are used in Wagtail. The client-side validation has been disabled for the Wagtail UI (Matt Westcott)
1.6 (15.08.2016)
~~~~~~~~~~~~~~~~
* Django 1.10 support
* Added the ``include_block`` template tag for improved StreamField template inclusion (Matt Westcott, Mikalai Radchuk)
* Page slugs now allow unicode on Django >= 1.9 (Behzad Nategh)
* Explorer sidebar menu now limits the displayed pages to the ones the user has permission for (Robert Rollins, Matt Westcott)
* Image upload form in image chooser now performs client side validation so that the selected file is not lost in the submission (Jack Paine)
* oEmbed URL for audioBoom was updated (Janneke Janssen)
* Remember tree location in page chooser when switching between Internal / External / Email link (Matt Westcott)
* `FieldRowPanel` now creates equal-width columns automatically if `col*` classnames are not specified (Chris Rogers)
* Form builder now validates against multiple fields with the same name (Richard McMillan)
* The 'choices' field on the form builder no longer has a maximum length (Johannes Spielmann)
* Multiple ChooserBlocks inside a StreamField are now prefetched in bulk, for improved performance (Michael van Tellingen, Roel Bruggink, Matt Westcott)
* Add new EmailBlock and IntegerBlock (Oktay Altay)
* Added a new FloatBlock, DecimalBlock and a RegexBlock (Oktay Altay, Andy Babic)
* Wagtail version number is now shown on the settings menu (Chris Rogers)
* Added a system check to validate that fields listed in `search_fields` are defined on the model (Josh Schneier)
* Added formal APIs for customising the display of StructBlock forms within the page editor (Matt Westcott)
* `wagtailforms.models.AbstractEmailForm` now supports multiple email recipients (Serafeim Papastefanos)
* Added ability to delete users through Settings -> Users (Vincent Audebert; thanks also to Ludolf Takens and Tobias Schmidt for alternative implementations)
* Page previews now pass additional HTTP headers, to simulate the page being viewed by the logged-in user and avoid clashes with middleware (Robert Rollins)
* Added back buttons to page delete and unpublish confirmation screens (Matt Westcott)
* Recognise Flickr embed URLs using HTTPS (Danielle Madeley)
* Success message when publishing a page now correctly respects custom URLs defined on the specific page class (Chris Darko)
* Required blocks inside StreamField are now indicated with asterisks (Stephen Rice)
* Fix: Email templates and document uploader now support custom `STATICFILES_STORAGE` (Jonny Scholes)
* Fix: Removed alignment options (deprecated in HTML and not rendered by Wagtail) from `TableBlock` context menu (Moritz Pfeiffer)
* Fix: Fixed incorrect CSS path on ModelAdmin's "choose a parent page" view
* Fix: Prevent empty redirect by overnormalisation (Franklin Kingma, Ludolf Takens)
* Fix: "Remove link" button in rich text editor didn't trigger "edit" event, leading to the change to sometimes not be persisted (Matt Westcott)
* Fix: `RichText` values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage)
* Fix: wagtailforms no longer assumes an .html extension when determining the landing page template filename (kakulukia)
* Fix: Fixed styling glitch on bi-colour icon + text buttons in Chrome (Janneke Janssen)
* Fix: StreamField can now be used in an InlinePanel (Gagaro)
* Fix: StreamField block renderings using templates no longer undergo double escaping when using Jinja2 (Aymeric Augustin)
* Fix: RichText objects no longer undergo double escaping when using Jinja2 (Aymeric Augustin, Matt Westcott)
* Fix: Saving a page by pressing enter key no longer triggers a "Changes may not be saved message" (Sean Muck, Matt Westcott)
* Fix: RoutablePageMixin no longer breaks in the presence of instance-only attributes such as those generated by FileFields (Fábio Macêdo Mendes)
* Fix: The `--schema-only` flag on update_index no longer expects an argument (Karl Hobley)
* Fix: Added file handling to support custom user add/edit forms with images/files (Eraldo Energy)
* Fix: Placeholder text in modeladmin search now uses the correct template variable (Adriaan Tijsseling)
* Fix: Fixed bad SQL syntax for updating URL paths on Microsoft SQL Server (Jesse Legg)
* Fix: Added workaround for Django 1.10 bug https://code.djangoproject.com/ticket/27037 causing forms with file upload fields to fail validation (Matt Westcott)
1.5.3 (18.07.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
1.5.2 (08.06.2016)
~~~~~~~~~~~~~~~~~~
* Fixed regression in 1.5.1 on editing external links (Stephen Rice)
1.5.1 (07.06.2016)
~~~~~~~~~~~~~~~~~~
* Fix: When editing a document link in rich text, the document ID is no longer erroneously interpreted as a page ID (Stephen Rice)
* Fix: Removing embedded media from rich text by mouse click action now gets correctly registered as a change to the field (Loic Teixeira)
* Fix: Rich text editor is no longer broken in InlinePanels (Matt Westcott, Gagaro)
* Fix: Rich text editor is no longer broken in settings (Matt Westcott)
* Fix: Link tooltip now shows correct urls for newly inserted document links (Matt Westcott)
* Fix: Now page chooser (in a rich text editor) opens up at the link's parent page, rather than at the page itself (Matt Westcott)
* Fix: Reverted fix for explorer menu scrolling with page content, as it blocked access to menus that exceed screen height
* Fix: Image listing in the image chooser no longer becomes unpaginated after an invalid upload form submission (Stephen Rice)
* Fix: Applied correct translation tags for 'permanent' / 'temporary' labels on redirects (Matt Westcott)
1.5 (31.05.2016)
~~~~~~~~~~~~~~~~
* Added wagtail.contrib.modeladmin, an app for configuring arbitrary Django models to be edited through the Wagtail admin (Andy Babic)
* Added TableBlock, a StreamField block for table-based content (Moritz Pfeiffer, David Seddon, Brad Busenius)
* The "dynamic serve view" for images has been greatly improved. See release notes for details
* Moved lesser-user actions in the page explorer into a 'More' dropdown
* Added a hook `register_page_listing_buttons` for adding action buttons to the page explorer
* Added the ability to edit existing links in the rich text editor (Loic Teixeira)
* Rich text fields now show link destinations as tooltips (Loic Teixeira)
* Password reset email now reminds the user of their username (Matt Westcott)
* Added 'revisions' action to pages list (Roel Bruggink)
* Added jinja2 support for the ``settings`` template tag (Tim Heap)
* Added a hook `insert_global_admin_js` for inserting custom JavaScript throughout the admin backend (Tom Dyson)
* Recognise instagram embed URLs with `www` prefix (Matt Westcott)
* The type of the ``search_fields`` attribute on ``Page`` models (and other searchable models) has changed from a tuple to a list (Tim Heap)
* Use `PasswordChangeForm` when user changes their password, requiring the user to enter their current password (Matthijs Melissen)
* Highlight current day in date picker (Jonas Lergell)
* Eliminated the deprecated `register.assignment_tag` on Django 1.9 (Josh Schneier)
* Increased size of Save button on site settings (Liam Brenner)
* Optimised Site.find_for_request to only perform one database query (Matthew Downey)
* Notification messages on creating / editing sites now include the site name if specified (Chris Rogers)
* Added `--schema-only` option to `update_index` management command
* Added meaningful default icons to `StreamField` blocks (Benjamin Bach)
* Added title text to action buttons in the page explorer (Liam Brenner)
* Changed project template to explicitly import development settings via `settings.dev` (Tomas Olander)
* Improved L10N and I18N for revisions list (Roel Bruggink)
* The multiple image uploader now displays details of server errors (Nigel Fletton)
* Added `WAGTAIL_APPEND_SLASH` setting to determine whether page URLs end in a trailing slash (Andrew Tork Baker)
* Added auto resizing text field, richtext field, and snippet chooser to styleguide (Liam Brenner)
* Support field widget media inside `StreamBlock` blocks (Karl Hobley)
* Spinner was added to Save button on site settings (Liam Brenner)
* Added success message after logout from Admin (Liam Brenner)
* Added `get_upload_to` method to `AbstractRendition` which, when overridden, allows control over where image renditions are stored (Rob Moggach and Matt Westcott)
* Added a mechanism to customise the add / edit user forms for custom user models (Nigel Fletton)
* Added internal provision for swapping in alternative rich text editors (Karl Hobley)
* Fix: The currently selected day is now highlighted only in the correct month in date pickers (Jonas Lergell)
* Fix: Fixed crash when an image without a source file was resized with the "dynamic serve view"
* Fix: Registered settings admin menu items now show active correctly (Matthew Downey)
* Fix: Direct usage of `Document` model replaced with `get_document_model` function in `wagtail.contrib.wagtailmedusa` and in `wagtail.contrib.wagtailapi`
* Fix: Failures on sending moderation notification emails now produce a warning, rather than crashing the admin page outright (Matt Fozard)
* Fix: All admin forms that could potentially include file upload fields now specify `multipart/form-data` where appropriate (Tim Heap)
* Fix: REM units in Wagtailuserbar caused incorrect spacing (Vincent Audebert)
* Fix: Explorer menu no longer scrolls with page content (Vincent Audebert)
* Fix: `decorate_urlpatterns` now uses `functools.update_wrapper` to keep view names and docstrings (Mario César)
* Fix: StreamField block controls are no longer hidden by the StreamField menu when prepending a new block (Vincent Audebert)
* Fix: Removed invalid use of `__` alias that prevented strings getting picked up for translation (Juha Yrjölä)
* Fix: Routable pages without a main view no longer raise a `TypeError` (Bojan Mihelac)
* Fix: Fixed UnicodeEncodeError in wagtailforms when downloading a CSV for a form containing non-ASCII field labels on Python 2 (Mikalai Radchuk)
* Fix: Server errors during search indexing on creating / updating / deleting a model are now logged, rather than causing the overall operation to fail (Karl Hobley)
* Fix: Objects are now correctly removed from search indexes on deletion (Karl Hobley)
* Fix: Confirmation message on the ModelAdmin delete view no longer errors if the model's string representation depends on the primary key (Yannick Chabbert)
1.4.6 (18.07.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Pin html5lib to version 0.999999 to prevent breakage caused by internal API changes (Liam Brenner)
1.4.5 (19.05.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Paste / drag operations done entirely with the mouse are now correctly picked up as edits within the rich text editor (Matt Fozard)
* Fix: Logic for cancelling the "unsaved changes" check on form submission has been fixed to work cross-browser (Stephen Rice)
* Fix: The "unsaved changes" confirmation was erroneously shown on IE / Firefox when previewing a page with validation errors (Matt Westcott)
* Fix: The up / down / delete controls on the "Promoted search results" form no longer trigger a form submission (Matt Westcott)
* Fix: Opening preview window no longer performs user-agent sniffing, and now works correctly on IE11 (Matt Westcott)
* Fix: Tree paths are now correctly assigned when previewing a newly-created page underneath a parent with deleted children (Matt Westcott)
* Fix: Added BASE_URL setting back to project template
* Fix: Clearing the search box in the page chooser now returns the user to the browse view (Matt Westcott)
* Fix: The above fix also fixed an issue where Internet Explorer got stuck in the search view upon opening the page chooser (Matt Westcott)
1.4.4 (10.05.2016)
~~~~~~~~~~~~~~~~~~
* New translation for Slovenian (Mitja Pagon)
* Fix: The `wagtailuserbar` template tag now gracefully handles situations where the `request` object is not in the template context (Matt Westcott)
* Fix: Meta classes on StreamField blocks now handle multiple inheritance correctly (Tim Heap)
* Fix: Now user can upload images / documents only into permitted collection from choosers
* Fix: Keyboard shortcuts for save / preview on the page editor no longer incorrectly trigger the "unsaved changes" message (Jack Paine, Matt Westcott)
* Fix: Redirects no longer fail when both a site-specific and generic redirect exist for the same URL path (Nick Smith, João Luiz Lorencetti)
* Fix: Wagtail now checks that Group is registered with the Django admin before unregistering it (Jason Morrison)
* Fix: Previewing inaccessible pages no longer fails with `ALLOWED_HOSTS = ['*']` (Robert Rollins)
* Fix: The submit button 'spinner' no longer activates if the form has client-side validation errors (Jack Paine, Matt Westcott)
* Fix: Overriding `MESSAGE_TAGS` in project settings no longer causes messages in the Wagtail admin to lose their styling (Tim Heap)
* Fix: Border added around explorer menu to stop it blending in with StreamField block listing; also fixes invisible explorer menu in Firefox 46 (Alex Gleason)
1.4.3 (04.04.2016)
~~~~~~~~~~~~~~~~~~
* Fixed regression introduced in 1.4.2 which caused Wagtail to query the database during a system check (Tim Heap)
1.4.2 (31.03.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Streamfields no longer break on validation error
* Fix: Number of validation errors in each tab in the editor is now correctly reported again
* Fix: Userbar now opens on devices with both touch and mouse (Josh Barr)
* Fix: `wagtail.wagtailadmin.wagtail_hooks` no longer calls `static` during app load, so you can use `ManifestStaticFilesStorage` without calling the `collectstatic` command
* Fix: Fixed crash on page save when a custom `Page` edit handler has been specified using the `edit_handler` attribute (Tim Heap)
1.4.1 (17.03.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Fixed erroneous rendering of up arrow icons (Rob Moorman)
1.4 LTS (16.03.2016)
~~~~~~~~~~~~~~~~~~~~
* Added support for viewing previous revisions of pages, and previewing or rolling back to earlier versions
* Introduced collections, for image / document organisation
* The Wagtail userbar on the frontend has been redesigned, and no longer depends on an iframe (Thomas Winter, Gareth Price).
* The page editor now produces a warning if the user navigates away without saving changes
* 'Add document' interface now supports uploading multiple documents at once
* The `Document` model can now be overridden using the new `WAGTAILDOCS_DOCUMENT_MODEL` setting (Alex Gleason)
* Wagtail no longer depends on django-compressor
* The page search interface now searches all fields instead of just the title (Kait Crawford)
* Snippets now support a custom `edit_handler` property (Mikalai Radchuk)
* Date/time pickers now respect the locale's 'first day of week' setting (Peter Quade)
* Refactored the way forms are constructed for the page editor, to allow custom forms to be used
* Notification message on publish now indicates whether the page is being published now or scheduled for publication in future (Chris Rogers)
* Server errors when uploading images / documents through the chooser modal are now reported back to the user (Nigel Fletton)
* Added a hook `insert_global_admin_css` for inserting custom CSS throughout the admin backend (Tom Dyson)
* Added a hook `construct_explorer_page_queryset` for customising the set of pages displayed in the page explorer
* Page models now perform field validation, including testing slugs for uniqueness within a parent page, at the model level on saving
* Page slugs are now auto-generated at the model level on page creation if one has not been specified explicitly
* The `Page` model now has two new methods `get_site()` and `get_url_parts()` to aid with customising the page URL generation logic
* Upgraded jQuery to 2.2.1 (Charlie Choiniere)
* Multiple homepage summary items (`construct_homepage_summary_items` hook) now better vertically spaced (Nicolas Kuttler)
* Email notifications can now be sent in HTML format (Mike Dingjan)
* `StreamBlock` now has provision for throwing non-field-specific validation errors
* Wagtail now works with Willow 0.3, which supports auto-correcting the orientation of images based on EXIF data
* New translations for Hungarian, Swedish (Sweden) and Turkish
* Fix: Custom page managers no longer raise an error when used on an abstract model
* Fix: Wagtail's migrations are now all reversible (Benjamin Bach)
* Fix: Deleting a page content type now preserves existing pages as basic Page instances, to prevent tree corruption
* Fix: The `Page.path` field is now explicitly given the "C" collation on PostgreSQL to prevent tree ordering issues when using a database created with the Slovak locale
* Fix: Wagtail's compiled static assets are now put into the correct directory on Windows (Aarni Koskela)
* Fix: `ChooserBlock` now correctly handles models with primary keys other than `id` (alexpilot11)
* Fix: Fixed typo in Wistia oEmbed pattern (Josh Hurd)
* Fix: Added more accurate help text for the Administrator flag on user accounts (Matt Fozard)
* Fix: Tags added on the multiple image uploader are now saved correctly
* Fix: Documents created by a user are no longer deleted when the user is deleted
* Fix: Fixed a crash in `RedirectMiddleware` when a middleware class before `SiteMiddleware` returns a response (Josh Schneier)
* Fix: Fixed error retrieving the moderator list on pages that are covered by multiple moderator permission records (Matt Fozard)
* Fix: Ordering pages in the explorer by reverse 'last updated' time now puts pages with no revisions at the top
* Fix: WagtailTestUtils now works correctly on custom user models without a ``username`` field (Adam Bolfik)
* Fix: Logging in to the admin as a user with valid credentials but no admin access permission now displays an error message, rather than rejecting the user silently
* Fix: StreamBlock HTML rendering now handles non-ASCII characters correctly on Python 2 (Mikalai Radchuk)
* Fix: Fixed a bug preventing pages with a OneToOneField from being copied (Liam Brenner)
* Fix: SASS compilation errors during Wagtail development no longer cause exit of Gulp process, instead throws error to console and continues (Thomas Winter)
* Fix: Explorer page listing now uses specific page models, so that custom URL schemes defined on Page subclasses are respected
* Fix: Made settings menu clickable again in Firefox 46.0a2 (Juha Kujala)
* Fix: User management index view no longer assumes the presence of `username`, `first_name`, `last_name` and `email` fields on the user model (Eirik Krogstad)
1.3.1 (05.01.2016)
~~~~~~~~~~~~~~~~~~
* Fix: Applied workaround for failing wagtailimages migration on Django 1.8.8 / 1.9.1 with Postgres (see