forked from wagtail/wagtail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
2835 lines (2417 loc) · 216 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Changelog
=========
4.1 LTS (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~~~~~
* New scheduled publishing UI, available from the Status side panel (Sage Abdullah)
* 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 (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 (`unbutton`, `button-neutral`, `button-strokeonhover`, `hover-no`, `yes`) 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` (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/ (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 (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))
* Use `search` type input in documentation search (LB (Ben) Johnston)
* Fix: Prevent `PageQuerySet.not_public` from returning all pages when no page restrictions exist (Mehrdad Moradizadeh)
* Fix: Ensure that duplicate block ids are unique when duplicating stream blocks in the page editor (Joshua Munn)
* Fix: Revise colour usage so that privacy & locked indicators can be seen in Windows High Contrast mode (LB (Ben Johnston))
* Fix: Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
* Fix: Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
* Fix: Support `formfield_callback` handling on `ModelForm.Meta` for future Django 4.2 release (Matt Westcott)
* Fix: Ensure that `ModelAdmin` correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
* Fix: Add missing translated values to site settings' headers plus models presented in listings and audit report filtering labels (Stefan Hammer)
* Fix: Remove `capitalize()` calls to avoid issues with other languages or incorrectly presented model names for reporting and parts of site settings (Stefan Hammer)
4.0.2 (23.09.2022)
~~~~~~~~~~~~~~~~~~
* Update all images and sections of the Wagtail Editor's guide to align with the new admin interface changes from Wagtail 3.0 and 4.0 (Thibaud Colas)
* Ensure all images in the documentation have a suitable alt text (Thibaud Colas)
* Fix: Ensure tag autocompletion dropdown has a solid background (LB (Ben) Johnston)
* Fix: Allow inline panels to be ordered (LB (Ben) Johnston)
* Fix: Only show draft / live status tags on snippets that have `DraftStateMixin` applied (Sage Abdullah)
* Fix: Prevent JS error when initialising chooser modals with no tabs (LB (Ben) Johnston)
* Fix: Add missing vertical spacing between chooser modal header and body when there are no tabs (LB (Ben) Johnston)
* Fix: Reinstate specific labels for chooser buttons (for example 'Choose another page', 'Edit this page' not 'Change', 'Edit') so that it is clearer for users and non-English translations (Matt Westcott)
* Fix: Resolve issue where searches with a tag and a query param in the image listing would result in an `FilterFieldError` (Stefan Hammer)
* Fix: Add missing vertical space between header and content in embed chooser modal (LB (Ben) Johnston)
* Fix: Use the correct type scale for heading levels in rich text (Steven Steinwand)
* Fix: Update alignment and reveal logic of fields’ comment buttons (Steven Steinwand)
* Fix: Regression from Markdown conversion in documentation for API configuration - update to correctly use PEP-8 for example code (Storm Heg)
* Fix: Prevent 'Delete' link on page edit view from redirecting back to the deleted page (LB (Ben) Johnston)
* Fix: Prevent JS error on images index view when collections dropdown is omitted (Tidiane Dia)
* Fix: Prevent "Entries per page" dropdown on images index view from reverting to 10 (Tidiane Dia)
* Fix: Set related_name on user revision relation to avoid conflict with django-reversion (Matt Westcott)
* Fix: Ensure the "recent edits" panel on the Dashboard (home) page works when page record is missing (Matt Westcott)
* Fix: Only add Translate buttons when the `simple_translation` app is installed (Dan Braghis)
* Fix: Ensure that `MultiFieldPanel` correctly outputs all child classnames in the template (Matt Westcott)
* Fix: Remove over-eager caching on ModelAdmin permission checks (Matt Westcott, Stefan Hammer)
4.0.1 (05.09.2022)
~~~~~~~~~~~~~~~~~~
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
* Fix: Modify base template for new projects so that links opened from the preview panel open in a new window (Sage Abdullah)
* Fix: Prevent circular import error between custom document models and document chooser blocks (Matt Westcott)
4.0 (31.08.2022)
~~~~~~~~~~~~~~~~
* Added support for Django 4.1
* Added a new `BaseGenericSetting` base model class that allows defining a settings model that applies to all sites rather than just a single site (Kyle Bayliss)
* Add clarity to confirmation when being asked to convert an external link to an internal one (Thijs Kramer)
* Convert the rest of the documentation to Markdown (Khanh Hoang, Vu Pham, Daniel Kirkham, LB (Ben) Johnston, Thiago Costa de Souza, Benedict Faw, Noble Mittal, Sævar Öfjörð Magnússon, Sandeep M A, Stefano Silvestri)
* Add `base_url_path` to `ModelAdmin` so that the default URL structure of app_label/model_name can be overridden (Vu Pham, Khanh Hoang)
* Add `full_url` to the API output of `ImageRenditionField` (Paarth Agarwal)
* Use `InlinePanel`'s label when available for field comparison label (Sandil Ranasinghe)
* Drop support for Safari 13 by removing left/right positioning in favour of CSS logical properties (Thibaud Colas)
* Use `FormData` instead of jQuery's `form.serialize` when editing documents or images just added so that additional fields can be better supported (Stefan Hammer)
* Add informational Codecov status checks for GitHub CI pipelines (Tom Hu)
* Replace `PageRevision` with generic `Revision` model (Sage Abdullah)
* Make it possible to reuse and customise Wagtail’s fonts with CSS variables (LB (Ben) Johnston)
* Add better handling and informative developer errors for cross linking URLS (e.g. success after add) in generic views `wagtail.admin.views.generic` (Matt Westcott)
* Introduce `wagtail.admin.widgets.chooser.BaseChooser` to make it easier to build custom chooser inputs (Matt Westcott)
* Introduce JavaScript chooser module, including a SearchController class which encapsulates the standard pattern of re-rendering the results panel in response to search queries and pagination (Matt Westcott)
* Migrate Image and Document choosers to new JavaScript chooser module (Matt Westcott)
* Add ability to select multiple items at once within bulk actions selections when holding shift on subsequent clicks (Hitansh Shah)
* Upgrade notification, shown to admins on the dashboard if Wagtail is out of date, will now link to the release notes for the closest minor branch instead of the latest patch (Tibor Leupold)
* Upgrade notification can now be configured to only show updates when there is a new LTS available via `WAGTAIL_ENABLE_UPDATE_CHECK = 'lts'` (Tibor Leupold)
* Implement redesign of the Workflow Status dialog, fixing accessibility issues (Steven Steinwand)
* Add the ability to change the number of images displayed per page in the image library (Tidiane Dia, with sponsorship from YouGov)
* Allow users to sort by different fields in the image library (Tidiane Dia, with sponsorship from YouGov)
* Add `prefetch_renditions` method to `ImageQueryset` for performance optimisation on image listings (Tidiane Dia, Karl Hobley)
* Add ability to define a custom `get_field_clean_name` method when defining `FormField` models that extend `AbstractFormField` (LB (Ben) Johnston)
* Migrate Home (Dashboard) view to use generic Wagtail class based view (LB (Ben) Johnston)
* Combine most of Wagtail’s stylesheets into the global `core.css` file (Thibaud Colas)
* Add new Breadcrumbs and Tabs to the Wagtail pattern library (Paarth Agarwal)
* Adopt new Page Editor UI tabs in the workflow history report page (Paarth Agarwal)
* Update `ReportView` to extend from generic `wagtail.admin.views.generic.models.IndexView` (Sage Abdullah)
* Introduce a `wagtail.admin.viewsets.chooser.ChooserViewSet` module to serve as a common base implementation for chooser modals (Matt Westcott)
* Add documentation for `wagtail.admin.viewsets.model.ModelViewSet` (Matt Westcott)
* Enhance new breadcrumbs so they can be added to any header or container element (Paarth Agarwal)
* Adopt new breadcrumbs on the page explorer (listing) view and the page chooser modal, remove legacy breadcrumbs code for move page as no longer used (Paarth Agarwal)
* Added multi-site support to the API (Sævar Öfjörð Magnússon)
* Add `add_to_admin_menu` option for `ModelAdmin` (Oliver Parker)
* Implement Fuzzy matching for Elasticsearch (Nick Smith)
* Rename `Page.get_latest_revision_as_page` to `Page.get_latest_revision_as_object` (Sage Abdullah)
* Cache model permission codenames in `PermissionHelper` (Tidiane Dia)
* Selecting a new parent page for moving a page now uses the chooser modal which allows searching (Viggo de Vries)
* Move `get_snippet_edit_handler` function to `wagtail.admin.panels.get_edit_handler` (Sage Abdullah)
* Add clarity to the search indexing documentation for how `boost` works when using Postgres with the database search backend (Tibor Leupold)
* Rename `explorer_breadcrumb` template tag to `breadcrumbs` as it is now used in multiple locations (Paarth Agarwal)
* Updated `django-filter` version to support 23 (Yuekui)
* Use `.iterator()` in a few more places in the admin, to make it more stable on sites with many pages (Andy Babic)
* Migrate some simple React component files to TypeScript (LB (Ben) Johnston)
* Deprecate the usage and documentation of the `wagtail.contrib.modeladmin.menus.SubMenu` class, provide a warning if used directing developers to use `wagtail.admin.menu.Menu` instead (Matt Westcott)
* Remove legacy (non-next) breadcrumbs no longer used, remove `ModelAdmin` usage of breadcrumbs completely (Paarth Agarwal)
* Replace human-readable-date hover pattern with accessible tooltip variant across all of admin (Bernd de Ridder)
* Added `WAGTAILADMIN_USER_PASSWORD_RESET_FORM` setting for overriding the admin password reset form (Michael Karamuth)
* Prefetch workflow states in edit page view to to avoid queries in other parts of the view/templates that need it (Tidiane Dia)
* Remove the edit link from edit bird in previews to avoid confusion (Sævar Öfjörð Magnússon)
* Introduce new template fragment and block level enclosure tags for easier template composition (Thibaud Colas)
* Add a `classnames` template tag to easily build up classes from variables provided to a template (Paarth Agarwal)
* Migrate the dashboard (home) view header to the shared header template and update designs (Paarth Agarwal)
* Switch all report workflow, redirects, form submissions, site settings views to use Wagtail’s reusable header component (Paarth Agarwal)
* Update classes and styles for the shared header templates to align with UI guidelines (Paarth Agarwal)
* Clean up multiple eslint rules usage and configs to align better with the Wagtail coding guidelines (LB (Ben Johnston))
* Add inline toolbar for Draftail, to avoid clashing with the page’s header (Thibaud Colas)
* Add command palette in rich text editor to change text format with the keyboard only (Thibaud Colas)
* Add a live-updating character count to the Draftail rich text editor (Thibaud Colas)
* Add rich text editor paste to auto-create links (Thibaud Colas)
* Add rich text editor text shortcuts undo, to allow typing text normally detected as a shortcut (Thibaud Colas)
* Add support for right-to-left (RTL) languages to the rich text editor (Thibaud Colas)
* Change rich text editor placeholder to follow the user’s focus on empty blocks (Thibaud Colas)
* Add rich text editor empty block highlight by showing their block type (Thibaud Colas)
* Add ability to split a rich text field and insert a StreamField block at the same time (Jacob Topp-Mugglestone)
* Make `ModelAdmin` `InspectView` footer actions consistent with other parts of the UI (Thibaud Colas)
* Introduce a new auto-updating preview panel inside the page editor (Sage Abdullah)
* Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
* Use new modal dialog component for privacy settings modal (Sage Abdullah)
* Add `menu_item_name` to modify `MenuItem`'s name for `ModelAdmin` (Alexander Rogovskyy, Vu Pham)
* Add an extra confirmation prompt when deleting pages with a large number of child pages (Jaspreet Singh)
* Adopt the slim header in page listing views, with buttons moved under the "Actions" dropdown, including addition of translation page in the parent "more" button (Paarth Agarwal)
* Improve help block styles in Windows High Contrast Mode with less reliance on communication via colour alone (Anuja Verma)
* Add a bottom border to top messages so they stand out from the header (Anuja Verma)
* Replace latin abbreviations (i.e. / e.g.) with common English phrases so that documentation is easier to understand (Dominik Lech)
* Add shortcut for accessing StreamField blocks by block name with new `blocks_by_name` and `first_block_by_name` methods on `StreamValue` (Tidiane Dia, Matt Westcott)
* Extend support for custom user interface colours across almost all admin colours (Thibaud Colas)
* Add HTML-aware max_length validation and character count on RichTextField and RichTextBlock (Matt Westcott, Thibaud Colas)
* Remove undocumented `SearchableListMixin` (Sage Abdullah)
* Extract filtering code from ReportView to generic IndexView (Sage Abdullah)
* Extract unpublish code for pages to generic UnpublishView (Sage Abdullah)
* Retain other query params in header search behaviour (Sage Abdullah)
* Remove `is_parent` kwarg in various page button hooks as this approach is no longer required (Paarth Agarwal)
* Improve security of redirect imports by adding a file hash (signature) check for so that any tampering of file contents between requests will throw a `BadSignature` error (Jaap Roes)
* Refresh designs for Home (Dashboard) site summary panels, use theme spacing and colours, add support for RTL layouts and better support for small devices (Paarth Agarwal, LB (Ben) Johnston)
* Include all CSS system colours in allowed values in Stylelint's declaration-strict-value rule (Thibaud Colas)
* Add JavaScript `range` utility function (LB (Ben) Johnston)
* Allow generic chooser viewsets to support non-model data such as an API endpoint (Matt Westcott)
* Update all widget styles across the admin UI (Thibaud Colas)
* Update field styles across forms, with help text consistently under fields, error messages above, and comment buttons to the side (Thibaud Colas)
* Make all sections of the page editing UI collapsible by default (Thibaud Colas)
* Update the side panels to prevent overlap with form fields unless necessary (Thibaud Colas)
* Remove unused change password page, was not removed when account management view was converted to tabs (Paarth Agarwal)
* Rework layout of login and password reset pages to ensure `main` id on main element (for skip link) and consistent DOM layout for h1 header (Paarth Agarwal, LB (Ben) Johnston)
* Adopt new design, including logo, for login and password reset pages (Paarth Agarwal, LB (Ben) Johnston)
* Remove usage of inline script to focus on the username field, instead use `autofocus` (LB (Ben) Johnston)
* Improve organisation of the settings reference page in the documentation (Akash Kumar Sen)
* Added `path` and `re_path` decorators to the `RoutablePageMixin` module which emulate their Django URL utils equivalent, redirect `re_path` to the original `route` decorator (Tidiane Dia)
* `BaseChooser` widget now provides a Telepath adapter that's directly usable for any subclasses that use the chooser widget and modal JS as-is with no customisations (Matt Westcott)
* Implement the new chooser widget styles as part of the page editor redesign (Thibaud Colas)
* Update base Draftail/TextField form designs as part of the page editor redesign (Thibaud Colas)
* Move commenting trigger to inline toolbar and move block splitting to the block toolbar and command palette only in Draftail (Thibaud Colas)
* Pages are now locked when they are scheduled for publishing (Karl Hobley)
* Simplify page chooser views by converting to class-based views (Matt Westcott)
* Add support for previews, revisions and drafts on snippets (Sage Abdullah)
* Add "Translate" button within pages’ Actions dropdown when editing pages (Sage Abdullah)
* Add translated labels to the bulk actions tags and collections bulk update fields (Stefan Hammer)
* Add bulk actions support for snippet listings (Shohan Dutta Roy)
* Fix: Typo in `ResumeWorkflowActionFormatter` message (Stefan Hammer)
* Fix: Issue where `ModelAdmin` index listings with export list enabled would show buttons with an incorrect layout (Josh Woodcock)
* Fix: Throw a meaningful error when saving an image to an unrecognised image format (Christian Franke)
* Fix: Remove extra padding for headers with breadcrumbs on mobile viewport (Steven Steinwand)
* Fix: Ensure that custom document or image models support custom tag models (Matt Westcott)
* Fix: Ensure comments use translated values for their placeholder text (Stefan Hammer)
* Fix: Ensure the upgrade notification, shown to admins on the dashboard if Wagtail is out of date, content is translatable (LB (Ben) Johnston)
* Fix: Show the re-ordering option to users that have permission to publish pages within the page listing (Stefan Hammer)
* Fix: Ensure default sidebar branding (bird logo) is not cropped in RTL mode (Steven Steinwand)
* Fix: Add an accessible label to the image focal point input when editing images (Lucie Le Frapper)
* Fix: Remove unused header search JavaScript on the redirects import page (LB (Ben) Johnston)
* Fix: Ensure non-square avatar images will correctly show throughout the admin (LB (Ben) Johnston)
* Fix: Ignore translations in test files and re-include some translations that were accidentally ignored (Stefan Hammer)
* Fix: Show alternative message when no page types are available to be created (Jaspreet Singh)
* Fix: Prevent error on sending notifications for the legacy moderation process when no user was specified (Yves Serrano)
* Fix: Ensure `aria-label` is not set on locale selection dropdown within page chooser modal as it was a duplicate of the button contents (LB (Ben Johnston))
* Fix: Revise the `ModelAdmin` title column behaviour to only link to 'edit' if the user has the correct permissions, fallback to the 'inspect' view or a non-clickable title if needed (Stefan Hammer)
* Fix: Ensure that `DecimalBlock` preserves the `Decimal` type when retrieving from the database (Yves Serrano)
* Fix: When no snippets are added, ensure the snippet chooser modal would have the correct URL for creating a new snippet (Matt Westcott)
* Fix: `ngettext` in Wagtail's internal JavaScript internationalisation utilities now works (LB (Ben) Johnston)
* Fix: Ensure the linting/formatting npm scripts work on Windows (Anuja Verma)
* Fix: Fix display of dates in exported xlsx files on macOS Preview and Numbers (Jaap Roes)
* Fix: Make progress bars’ progress visible in forced colors mode (Anuja Verma)
* Fix: Make checkboxes visible in forced colors mode (Anuja Verma)
* Fix: Display the correct color for icons in forced colors mode (Anuja Verma)
* Fix: Add a border around modal dialogs so they can be identified in forced colors mode (Anuja Verma)
* Fix: Remove outdated reference to 30-character limit on usernames in help text (minusf)
* Fix: Resolve multiple form submissions index listing page layout issues including title not being visible on mobile and interaction with large tables (Paarth Agarwal)
* Fix: Ensure `ModelAdmin` single selection lists show correctly with Django 4.0 form template changes (Coen van der Kamp)
* Fix: Ensure icons within help blocks have accessible contrasting colours, and links have a darker colour plus underline to indicate they are links (Paarth Agarwal)
* Fix: Ensure consistent sidebar icon position whether expanded or collapsed (Scott Cranfill)
* Fix: Avoid redirects import error if the file had lots of columns (Jaap Roes)
* Fix: Resolve accessibility and styling issues with the expanding status panel (Sage Abdullah)
* Fix: Avoid 503 `AttributeError` when an empty search param `q=` is combined with other filters in the Images index view (Paritosh Kabra)
* Fix: Fix error with string representation of FormSubmission not returning a string (LB (Ben) Johnston)
* Fix: Ensure disabled buttons are distinguishable from active buttons in forced colors mode (Anuja Verma)
* Fix: Revise usage of `extra_actions` in new changes to shared header template to avoid invalid template variable usage (Paarth Agarwal)
* Fix: Ensure that bulk actions correctly support models with non-integer primary keys (id) (LB (Ben) Johnston)
* Fix: Make it possible to toggle collapsible panels in the edit UI with the keyboard (Thibaud Colas)
* Fix: Re-implement checkbox styles so the checked state is visible in forced colors mode (Thibaud Colas)
* Fix: Re-implement switch component styles so the checked state is visible in forced colors mode (Thibaud Colas)
* Fix: Always render select widgets consistently regardless of where they are in the admin (Thibaud Colas)
* Fix: Make sure input labels and always take up the available space (Thibaud Colas)
* Fix: Correctly style BooleanBlock within StructBlock (Thibaud Colas)
* Fix: Make sure comment icons can’t overlap with help text (Thibaud Colas)
* Fix: Make it possible to scroll input fields in admin on safari mobile (Thibaud Colas)
* Fix: Stop rich text fields from overlapping with sidebar (Thibaud Colas)
* Fix: Prevent comment buttons from overlapping with fields (Thibaud Colas)
* Fix: Resolve MySQL search compatibility issue with Django 4.1 (Andy Chosak)
* Fix: Ensure that the fields on login and password reset forms are visible in forced colors mode (Paarth Agarwal)
* Fix: Missing a outline on dropdown content and malformed tooltip arrow in forced colors mode (Anuja Verma, LB (Ben) Johnston)
* Fix: Layout issues with reports (including form submissions listings) on md device widths (Akash Kumar Sen, LB (Ben) Johnston)
* Fix: Layout issue with page explorer's inner header item on small device widths (Akash Kumar Sen)
* Fix: Ensure that `BaseSiteSetting` / `BaseGenericSetting` objects can be pickled (Andy Babic)
* Fix: Ensure `DocumentChooserBlock` can be deconstructed for migrations (Matt Westcott)
* Fix: Resolve frontend console error and unintented console logging issues (Matt Westcott, Paarth Agarwal)
* Fix: Resolve issue with sites that have not yet migrated away from `BaseSetting` when upgrading to Wagtail 4.0 (Stefan Hammer)
* Fix: Use correct classnames for showing/hiding edit button on chooser widget (Matt Westcott)
* Fix: Render MultiFieldPanel’s heading even when nested (Thibaud Colas)
* Fix: Make sure select widgets render correctly regardless of the Django field and widget type (Thibaud Colas)
* Fix: Consistently display boolean field labels above the widget so they render correctly (Thibaud Colas)
* Fix: Address form field label alignment issues by always displaying labels above the widget (Thibaud Colas)
* Fix: Make sure rich text URL editing tooltip is fully visible when displayed inside InlinePanel blocks (Thibaud Colas)
* Fix: Allow input fields to scroll horizontally in Safari iOS (Thibaud Colas)
* Fix: Ensure screen readers are made aware of page level messages added dynamically to the top of the page (Paarth Agarwal)
* Fix: Fix `updatemodulepaths` command for Python 3.7 (Matt Westcott)
* Fix: Only show locale filter in choosers when i18n is enabled in settings (Matt Westcott)
* Fix: Ensure that the live preview panel correctly clears the cache when a new page is created (Sage Abdullah)
* Fix: Ensure that there is a larger hoverable area for add block (+) within the Drafttail editor (Steven Steinwand)
* Fix: Resolve multiple header styling issues for modal, alignment on small devices, outside click handling target on medium devices, close button target size and hover styles (Paarth Agarwal)
* Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
* Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
3.0.3 (05.09.2022)
~~~~~~~~~~~~~~~~~~
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
3.0.2 (30.08.2022)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure string representation of `FormSubmission` returns a string (LB (Ben Johnston))
* Fix: Fix `updatemodulepaths` command for Python 3.7 (Matt Westcott)
* Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
* Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
3.0.1 (16.06.2022)
~~~~~~~~~~~~~~~~~~
* Add warning when `WAGTAILADMIN_BASE_URL` is not configured (Matt Westcott)
* Fix: Ensure `TabbedInterface` will not show a tab if no panels are visible due to permissions (Paarth Agarwal)
* Fix: Specific snippets list language picker was not properly styled (Sage Abdullah)
* Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the `WAGTAIL_ENABLE_UPDATE_CHECK` sends the referrer origin with `strict-origin-when-cross-origin` (Karl Hobley)
* Fix: Fix misaligned spinner icon on page action button (LB (Ben Johnston))
* Fix: Ensure radio buttons / checkboxes display vertically under Django 4.0 (Matt Westcott)
* Fix: Prevent failures when splitting blocks at the start or end of a block, or with highlighted text (Jacob Topp-Mugglestone)
* Fix: Allow scheduled publishing to complete when the initial editor did not have publish permission (Matt Westcott)
* Fix: Stop emails from breaking when `WAGTAILADMIN_BASE_URL` is absent due to the request object not being available (Matt Westcott)
* Fix: Make try/except on sending email less broad so that legitimate template rendering errors are exposed (Matt Westcott)
3.0 (16.05.2022)
~~~~~~~~~~~~~~~~
* Phase out special-purpose panel types (`StreamFieldPanel`, `RichTextFieldPanel`, `ImageChooserPanel`, `DocumentChooserPanel`, `PageChooserPanel`, `SnippetChooserPanel`) in favour of `FieldPanel` (Matt Westcott)
* Implement splitting of rich text blocks within StreamField (Jacob Topp-Mugglestone)
* Add support for image rendition prefetching (Andy Babic)
* Upgrade ESLint and Stylelint configurations to latest shared Wagtail configs (Thibaud Colas, Paarth Agarwal)
* Major updates to frontend tooling; move Node tooling from Gulp to Webpack, upgrade to Node v16 and npm v8, eslint v8, stylelint v14 and others (Thibaud Colas)
* Change comment headers’ date formatting to use browser APIs instead of requiring a library (LB (Ben Johnston))
* Lint with flake8-comprehensions and flake8-assertive, including adding a pre-commit hook for these (Mads Jensen, Dan Braghis)
* Switch the Wagtail branding font to a system font stack (Steven Steinwand, Paarth Agarwal)
* Add black configuration and reformat code using it (Dan Braghis)
* Remove UI code for legacy browser support: polyfills, IE11 workarounds, Modernizr (Thibaud Colas)
* Remove redirect auto-creation recipe from documentation as this feature is now supported in Wagtail core (Andy Babic)
* Remove IE11 warnings (Gianluca De Cola)
* Remove the legacy Hallo rich text editor as it has moved to an external package (LB (Ben Johnston))
* Increase the size of checkboxes throughout the UI, and simplify their alignment (Steven Steinwand)
* Adopt [MyST](https://myst-parser.readthedocs.io/en/latest/) for parsing documentation written in Markdown, replaces recommonmark (LB (Ben Johnston), Thibaud Colas)
* Installing docs extras requirements in CircleCI so issues with the docs requirements are picked up earlier (Thibaud Colas)
* Remove core usage of jinjalint and migrate to curlylint to resolve dependency incompatibility issues (Thibaud Colas)
* Switch focus outlines implementation to `:focus-visible` for cross-browser consistency (Paarth Agarwal)
* Remove most uppercased text styles from admin UI (Paarth Agarwal)
* Convert all UI code to CSS logical properties for Right-to-Left (RTL) language support (Thibaud Colas)
* Migrate multiple documentation pages from RST to MD - including the editor's guide (Vibhakar Solanki, LB (Ben Johnston), Shwet Khatri)
* Add documentation for defining custom form validation on models used in Wagtail's `modelAdmin` (Serafeim Papastefanos)
* Update `README.md` logo to work for GitHub dark mode (Paarth Agarwal)
* Avoid an unnecessary page reload when pressing enter within the header search bar (Images, Pages, Documents) (Riley de Mestre)
* Removed unofficial length parameter on `If-Modified-Since` header in `sendfile_streaming_backend` which was only used by IE (Mariusz Felisiak)
* Add Pinterest support to the list of default oEmbed providers (Dharmik Gangani)
* Update Jinja2 template support for Jinja2 3.x (Seb Brown)
* Add ability for `StreamField` to use `JSONField` to store data, rather than `TextField` (Sage Abdullah)
* Replace `content_json` `TextField` with `content` `JSONField` in `PageRevision` (Sage Abdullah)
* Remove `replace_text` management command (Sage Abdullah)
* Replace `data_json` `TextField` with `data` `JSONField` in `BaseLogEntry` (Sage Abdullah)
* Split up linting / formatting tasks in Makefile into client and server components (Hitansh Shah)
* Add support for embedding Instagram reels (Luis Nell)
* Use Django’s JavaScript catalog feature to manage translatable strings in JavaScript (Karl Hobley)
* Add a `page_description` to the Page model, to provide help text for a given page type (Kalob Taulien, Thibaud Colas, Matt Westcott, Stefan Hammer)
* Add `trimmed` attribute to all blocktrans tags, so spacing is more reliable in translated strings (Harris Lapiroff)
* Add documentation that describes how to use `ModelAdmin` to manage `Tag`s (Abdulmajeed Isa)
* Rename the setting `BASE_URL` (undocumented) to `WAGTAILADMIN_BASE_URL` and add to documentation, `BASE_URL` will be removed in a future release (Sandil Ranasinghe)
* Validate to and from email addresses within form builder pages when using `AbstractEmailForm` (Jake Howard)
* Add `WAGTAILIMAGES_RENDITION_STORAGE` setting to allow an alternative image rendition storage (Heather White)
* Add `wagtail_update_image_renditions` management command to regenerate image renditions or purge all existing renditions (Hitansh Shah, Onno Timmerman, Damian Moore)
* Fully remove the legacy sidebar, with slim sidebar replacing it for all users (Thibaud Colas)
* Add support for adding custom attributes for link menu items in the slim sidebar (Thibaud Colas)
* Implement new slim page editor header with breadcrumb (Steven Steinwand, Karl Hobley)
* Add the ability for choices to be separated by new lines instead of just commas within the form builder, commas will still be supported if used (Abdulmajeed Isa)
* Add internationalisation UI to modeladmin (Andrés Martano)
* Support chunking in `PageQuerySet.specific()` to reduce memory consumption (Andy Babic)
* Implement new tabs design across the admin interface (Steven Steinwand)
* Move page meta information from the header to a new status side panel component inside of the page editing UI (Steven Steinwand, Karl Hobley)
* Add useful help text to Tag fields to advise what content is allowed inside tags, including when `TAG_SPACES_ALLOWED` is `True` or `False` (Abdulmajeed Isa)
* Change `AbstractFormSubmission`'s `form_data` to use JSONField to store form submissions (Jake Howard)
* Add image duplicate detection on upload (Tidiane Dia, with sponsorship from The Motley Fool)
* Add a system font stack for monospace fonts (Rishank Kanaparti)
* Fix: When using `simple_translations` ensure that the user is redirected to the page edit view when submitting for a single locale (Mitchel Cabuloy)
* Fix: When previewing unsaved changes to `Form` pages, ensure that all added fields are correctly shown in the preview (Joshua Munn)
* Fix: When Documents (e.g. PDFs) have been configured to be served inline via `WAGTAILDOCS_CONTENT_TYPES` & `WAGTAILDOCS_INLINE_CONTENT_TYPES` ensure that the filename is correctly set in the `Content-Disposition` header so that saving the files will use the correct filename (John-Scott Atlakson)
* Fix: Improve the contrast of the “Remember me” checkbox against the login page’s background (Steven Steinwand)
* Fix: Group permission rows with custom permissions no longer have extra padding (Steven Steinwand)
* Fix: Make sure the focus outline of checkboxes is fully around the outer border (Steven Steinwand)
* Fix: Consistently set `aria-haspopup="menu"` for all sidebar menu items that have sub-menus (LB (Ben Johnston))
* Fix: Make sure `aria-expanded` is always explicitly set as a string in sidebar (LB (Ben Johnston))
* Fix: Use a button element instead of a link for page explorer menu item, for the correct semantics and behaviour (LB (Ben Johnston))
* Fix: Make sure the “Title” column label can be translated in the page chooser and page move UI (Stephanie Cheng Smith)
* Fix: Remove redundant `role="main"` attributes on `<main>` elements causing HTML validation issues (Luis Espinoza)
* Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
* Fix: Stop skipping heading levels in Wagtail welcome page (Jesse Menn)
* Fix: Add missing `lang` attributes to `<html>` elements (James Ray)
* Fix: Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang)
* Fix: Ensure `thumb_col_header_text` is correctly used by `ThumbnailMixin` within `ModelAdmin` as the column header label (Kyle J. Roux)
* Fix: Page copy in Wagtail admin ignores `exclude_fields_in_copy` (John-Scott Atlakson)
* Fix: Translation key `IntegrityError` when publishing pages with translatable `Orderable`s that were copied without being published (Kalob Taulien, Dan Braghis)
* Fix: Ignore `GenericRelation` when copying pages (John-Scott Atlakson)
* Fix: Implement ARIA tabs markup and keyboards interactions for admin tabs (Steven Steinwand)
* Fix: Ensure `wagtail updatemodulepaths` works when system locale is not UTF-8 (Matt Westcott)
* Fix: Re-establish focus trap for Pages explorer in slim sidebar (Thibaud Colas)
* Fix: Ensure the icon font loads correctly when `STATIC_URL` is not `"/static/"` (Jacob Topp-Mugglestone)
2.16.3 (05.09.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the `WAGTAIL_ENABLE_UPDATE_CHECK` sends the referrer origin with `strict-origin-when-cross-origin` (Karl Hobley)
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Ensure Python 3.10 compatibility when using Elasticsearch backend (Przemysław Buczkowski, Matt Westcott)
2.16.2 (11.04.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Update django-treebeard dependency to 4.5.1 or above (Serafeim Papastefanos)
* Fix: Fix permission error when sorting pages having page type restrictions (Thijs Kramer)
* Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
* Fix: Ensure that all descendant pages are logged when deleting a page, not just immediate children (Jake Howard)
* Fix: Refactor `FormPagesListView` in wagtail.contrib.forms to avoid undefined `locale` variable when subclassing (Dan Braghis)
* Fix: Page copy in Wagtail admin ignores `exclude_fields_in_copy` (John-Scott Atlakson)
* Fix: Translation key `IntegrityError` when publishing pages with translatable `Orderable`s that were copied without being published (Kalob Taulien, Dan Braghis)
* Fix: Ignore `GenericRelation` when copying pages (John-Scott Atlakson)
* Fix: Ensure 'next' links from image / document listings do not redirect back to partial AJAX view (Matt Westcott)
* Fix: Skip creation of automatic redirects when page cannot be routed (Matt Westcott)
* Fix: Prevent JS errors on locale switcher in page chooser (Matt Westcott)
2.16.1 (11.02.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure that correct sidebar submenus open when labels use non-Latin alphabets (Matt Westcott)
* Fix: Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych)
* Fix: Fix issue where bulk actions would not work for object IDs greater than 999 when `USE_THOUSAND_SEPARATOR` (Dennis McGregor)
* Fix: Set cookie for sidebar collapsed state to "SameSite: lax" (LB (Ben Johnston))
* Fix: Prevent error on creating automatic redirects for sites with non-standard ports (Matt Westcott)
* Fix: Restore ability to customise admin UI colours via CSS (LB (Ben Johnston))
2.16 (07.02.2022)
~~~~~~~~~~~~~~~~~
* Added support for Django 4.0
* Removed support for Django 3.0 and 3.1
* Removed support for Python 3.6
* Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidiane Dia, with sponsorship from [NHS](https://www.nhs.uk/))
* Added Aging Pages report (Tidiane Dia)
* Added automatic redirect creation feature (Andy Babic, with sponsorship from [The National Archives](https://www.nationalarchives.gov.uk))
* Added `page_slug_changed` signal for pages (Andy Babic)
* Add more SketchFab oEmbed patterns for models (Tom Usher)
* Add collapse option to `StreamField`, `StreamBlock`, and `ListBlock` which will load all sub-blocks initially collapsed (Matt Westcott)
* Private pages can now be fetched over the API (Nabil Khalil)
* Added `alias_of` field to the pages API (Dmitrii Faiazov)
* Add support for Azure CDN and Front Door front-end cache invalidation (Tomasz Knapik)
* Improved styling of workflow timeline modal view (Tidiane Dia)
* Add secondary actions menu in edit page headers (Tidiane Dia)
* Removed WOFF fonts
* Add system check for missing core Page fields in `search_fields` (LB (Ben Johnston))
* Improve CircleCI frontend & backend build caches, add automated browser accessibility test suite in CircleCI (Thibaud Colas)
* Add a 'remember me' checkbox to the admin sign in form, if unticked (default) the auth session will expire if the browser is closed (Michael Karamuth, Jake Howard)
* When returning to image or document listing views after editing, filters (collection or tag) are now remembered (Tidiane Dia)
* Improve the visibility of field error messages, in Windows high-contrast mode and out (Jason Attwood)
* Improve implementations of visually-hidden text in explorer and main menu toggle (Martin Coote)
* Add locale labels to page listings (Dan Braghis)
* Add locale labels to page reports (Dan Braghis)
* Change release check domain to releases.wagtail.org (Jake Howard)
* Add the user who submitted a page for moderation to the "Awaiting your review" homepage summary panel (Tidiane Dia)
* When moving pages, default to the current parent section (Tidiane Dia)
* `admin/expanding_formset.js` has been renamed to `admin/expanding-formset.js` (LB (Ben Johnston))
* Change docs URL to docs.wagtail.org (Jake Howard)
* Update links to wagtail.io to point to new domain wagtail.org (Jake Howard)
* Add borders to TypedTableBlock to help visualize rows and columns (Scott Cranfill)
* Set default submit button label on generic create views to 'Create' instead of 'Save' (Matt Westcott)
* Improve display of image listing for long image titles (Krzysztof Jeziorny)
* Use SVG icons in admin home page site summary items (Jérôme Lebleu)
* Ensure site summary items wrap on smaller devices on the admin home page (Jérôme Lebleu)
* Rework Workflow task chooser modal to align with other chooser modals, using consistent pagination and leveraging class based views (Matt Westcott)
* Implemented a locale switcher on the forms listing page in the admin (Dan Braghis)
* Implemented a locale switcher on the page chooser modal (Dan Braghis)
* Implemented the `wagtail_site` template tag for Jinja2 (Vladimir Tananko)
* Change webmaster to website administrator in the admin (Naomi Morduch Toubman)
* Added documentation for creating custom submenus in the admin menu (Sævar Öfjörð Magnússon)
* Choice blocks in StreamField now show label rather than value when collapsed (Jérôme Lebleu)
* Added documentation to clarify configuration of user-uploaded files (Cynthia Kiser)
* Change security contact address to [email protected] (Jake Howard)
* Fix: Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast, help/error/warning blocks for fields and general content, side comment buttons within the page editor, dropdown buttons (Sakshi Uppoor, Shariq Jamil, LB (Ben Johnston), Jason Attwood)
* Fix: Rename additional 'spin' CSS animations to avoid clashes with other libraries (Kevin Gutiérrez)
* Fix: `default_app_config` deprecations for Django >= 3.2 (Tibor Leupold)
* Fix: Refresh page from database on create before passing to hooks. Page aliases get correct `first_published_date` and `last_published_date` (Dan Braghis)
* Fix: Additional login form fields from `WAGTAILADMIN_USER_LOGIN_FORM` are now rendered correctly (Michael Karamuth)
* Fix: Icon only button styling issue on small devices where height would not be set correctly (Vu Pham)
* Fix: Add padding to the Draftail editor to ensure `ol` items are not cut off (Khanh Hoang)
* Fix: Prevent opening choosers multiple times for Image, Page, Document, Snippet (LB (Ben Johnston))
* Fix: Ensure subsequent changes to styles files are picked up by Gulp watch (Jason Attwood)
* Fix: Ensure that programmatic page moves are correctly logged as 'move' and not 'reorder' in some cases (Andy Babic)
* Fix: Add missing translation usage in Workflow templates (Anuja Verma, Saurabh Kumar)
2.15.6 (05.09.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the `WAGTAIL_ENABLE_UPDATE_CHECK` sends the referrer origin with `strict-origin-when-cross-origin` (Karl Hobley)
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Ensure Python 3.10 compatibility when using Elasticsearch backend (Przemysław Buczkowski, Matt Westcott)
2.15.5 (11.04.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
* Fix: Ensure that all descendant pages are logged when deleting a page, not just immediate children (Jake Howard)
* Fix: Translation key `IntegrityError` when publishing pages with translatable `Orderable`s that were copied without being published (Kalob Taulien, Dan Braghis)
* Fix: Ignore `GenericRelation` when copying pages (John-Scott Atlakson)
2.15.4 (11.02.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych)
* Fix: Fix issue where bulk actions would not work for object IDs greater than 999 when `USE_THOUSAND_SEPARATOR` (Dennis McGregor)
* Fix: Fix syntax when logging image rendition generation (Jake Howard)
2.15.3 (26.01.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Implement correct check for SQLite installations without full-text search support (Matt Westcott)
2.15.2 (18.01.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2022-21683 - Comment reply notifications sent to incorrect users (Ihor Marhitych, Jacob Topp-Mugglestone)
* Fix: Transform operations in Filter.run() when image has been re-oriented (Justin Michalicek)
* Fix: Remove extraneous header action buttons when creating or editing workflows and tasks (Matt Westcott)
* Fix: Ensure that bulk publish actions pick up the latest draft revision (Matt Westcott)
* Fix: Ensure the `checkbox_aria_label` is used correctly in the Bulk Actions checkboxes (Vu Pham)
* Fix: Prevent error on MySQL search backend when searching three or more terms (Aldán Creo)
* Fix: Allow wagtail.search app migrations to complete on versions of SQLite without full-text search support (Matt Westcott)
* Fix: Update Pillow dependency to allow 9.x (Matt Westcott)
2.15.1 (11.11.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Fix syntax when logging image rendition generation (Jake Howard)
* Fix: Increase version range for django-filter dependency (Serafeim Papastefanos)
* Fix: Prevent bulk action checkboxes from displaying on page reports and other non-explorer listings (Matt Westcott)
* Fix: Fix errors on publishing pages via bulk actions (Matt Westcott)
* Fix: Fix `csrf_token` issue when using the Approve or Unlock buttons on pages on the Wagtail admin home (Matt Westcott)
2.15 LTS (04.11.2021)
~~~~~~~~~~~~~~~~~~~~~
* Implemented a new database search backend that supports the FTS features of the database in use (Developed by Aldán Creo. Mentored by Karl Hobley and Cynthia Kiser. Funded by Google Summer of Code)
* Added bulk actions in the Wagtail Admin for Pages, Users, Images and Documents (Developed by Shohan Dutta Roy. Mentored by Dan Braghis, Jacob Topp-Mugglestone, and Storm Heg.)
* Extended audit logging to all models and added a history view for snippets and ModelAdmin (Matt Westcott. Sponsored by The Motley Fool)
* Allow granting collection management permissions over individual collections (Cynthia Kiser)
* Added `TypedTableBlock` block type for StreamField, for building tables with mixed data types (Matt Westcott, Coen van der Kamp, Scott Cranfill. Sponsored by YouGov)
* Add the ability for the page chooser to convert external urls that match a page to internal links (Jacob Topp-Mugglestone. Sponsored by The Motley Fool)
* Added "Extending Wagtail" section to documentation (Matt Westcott)
* Introduced template components, a standard mechanism for renderable objects in the admin (Matt Westcott)
* Support `min_num` / `max_num` options on ListBlock (Matt Westcott)
* Implemented automatic tree synchronisation for `contrib.simple_translation` (Mitchel Cabuloy)
* Added a `background_position_style` property to renditions (Karl Hobley)
* Added a distinct `wagtail.copy_for_translation` log action type (Karl Hobley)
* Add a debug logger around image rendition generation (Jake Howard)
* Convert Documents and Images to class based views for easier overriding (Matt Westcott)
* Isolate admin URLs for Documents and Images search listing results with the name `'listing_results'` (Matt Westcott)
* Removed `request.is_ajax()` usage in Documents, Image and Snippet views (Matt Westcott)
* Simplify generic admin view templates plus ensure `page_title` and `page_subtitle` are used consistently (Matt Westcott)
* Extend support for collapsing edit panels from just MultiFieldPanels to all kinds of panels (Fabien Le Frapper, Robbie Mackay)
* Add object count to header within modeladmin listing view (Jonathan "Yoni" Knoll)
* Add ability to return HTML in multiple image upload errors (Gordon Pendleton)
* Upgrade internal JS tooling; Node v14 plus other smaller package upgrades (LB (Ben Johnston))
* Add support for `non_field_errors` rendering in Workflow action modal (LB (Ben Johnston))
* Support calling `get_image_model` and `get_document_model` at import time (Matt Westcott)
* When copying a page, default the 'Publish copied page' field to false (Justin Slay)
* Open Preview and Live page links in the same tab, except where it would interrupt editing a Page (Sagar Agarwal)
* Added `ExcelDateFormatter` to `wagtail.admin.views.mixins` so that dates in Excel exports will appear in the locale's `SHORT_DATETIME_FORMAT` (Andrew Stone)
* Add TIDAL support to the list of oEmbed providers (Wout De Puysseleir)
* Add `label_format` attribute to customise the label shown for a collapsed StructBlock (Matt Westcott)
* User Group permissions will now show all custom object permissions in one row instead of a separate table (Kamil Marut)
* Create `ImageFileMixin` to extract shared file handling methods from `AbstractImage` and `AbstractRendition` (Fabien Le Frapper)
* Add `before_delete_page` and `register_permissions` examples to Hooks documentation (Jane Liu, Daniel Fairhead)
* Add clarity to modeladmin template override behaviour in the documentation (Joe Howard, Dan Swain)
* Add section about CSV exports to security documentation (Matt Westcott)
* Add initial support for Django 4.0 deprecations (Matt Westcott, Jochen Wersdörfer)
* Move translations in `nl_NL` to `nl` (Loïc Teixeira, Coen van der Kamp)
* Add documentation for how to redirect to a separate page on Form builder submissions using ``RoutablePageMixin`` (Nick Smith)
* Refactored index listing views and made column sort-by headings more consistent (Matt Westcott)
* The title field on Image and Document uploads will now default to the filename without the file extension and this behaviour can be customised (LB Johnston)
* Add support for Python 3.10 (Matt Westcott)
* Introduce, `autocomplete`, a separate method which performs partial matching on specific autocomplete fields. This is useful for suggesting pages to the user in real-time as they type their query. (Karl Hobley, Matt Westcott)
* Use SVG icons in modeladmin headers and StreamField buttons/headers (Jérôme Lebleu)
* Add tags to existing Django registered checks (LB Johnston)
* Upgrade admin frontend JS libraries jQuery to 3.6.0 (Fabien Le Frapper)
* Added `request.preview_mode` so that template rendering can vary based on preview mode (Andy Chosak)
* Fix: Delete button is now correct colour on snippets and modeladmin listings (Brandon Murch)
* Fix: Ensure that StreamBlock / ListBlock-level validation errors are counted towards error counts (Matt Westcott)
* Fix: InlinePanel add button is now keyboard navigatable (Jesse Menn)
* Fix: Remove redundant 'clear' button from site root page chooser (Matt Westcott)
* Fix: Make ModelAdmin IndexView keyboard-navigable (Saptak Sengupta)
* Fix: Prevent error on refreshing page previews when multiple preview tabs are open (Alex Tomkins)
* Fix: Multiple accessibility fixes for Windows high contrast mode; Admin fields, Dropdown button, Editor Tabs, Icon visibility, Page Editor field panels, sidebar menu, sidebar hamburger icon, sidebar search, streamfield, checkboxes (Dmitrii Faiazov, Chakita Muttaraju, Onkar Apte, Desai Akshata, LB (Ben Johnston), Amy Chan, Dan Braghis, Thibaud Colas, Shariq Jamil)
* Fix: Menu sidebar hamburger icon on smaller viewports now correctly indicates it is a button to screen readers and can be accessed via keyboard (Amy Chan, Dan Braghis)
* Fix: `blocks.MultipleChoiceBlock`, `forms.CheckboxSelectMultiple` and `ArrayField` checkboxes will now stack instead of display inline to align with all other checkboxes fields (Seb Brown)
* Fix: Screen readers can now access login screen field labels (Amy Chan)
* Fix: Admin breadcrumbs home icon now shows for users with access to a subtree only (Stefan Hammer)
* Fix: Add handling of invalid inline styles submitted to `RichText` so `ConfigException` is not thrown (Alex Tomkins)
* Fix: Ensure comment notifications dropdown handles longer translations without overflowing content (Krzysztof Jeziorny)
* Fix: Set `default_auto_field` in `postgres_search` `AppConfig` (Nick Moreton)
* Fix: Ensure admin tab JS events are handled on page load (Andrew Stone)
* Fix: `EmailNotificationMixin` and `send_notification` should only send emails to active users (Bryan Williams)
* Fix: Disable Task confirmation now shows the correct value for quantity of tasks in progress (LB Johnston)
* Fix: Page history now works correctly when it contains changes by a deleted user (Dan Braghis)
* Fix: Add `gettext_lazy` to `ModelAdmin` built in view titles so that language settings are correctly used (Matt Westcott)
* Fix: Tabbing and keyboard interaction on the Wagtail userbar now aligns with ARIA best practices (Storm Heg)
* Fix: Add full support for custom `edit_handler` usage by adding missing `bind_to` call to `PreviewOnEdit` view (Stefan Hammer)
* Fix: Only show active (not disabled) tasks in the workflow task chooser (LB Johnston)
* Fix: CSS build scripts now output to the correct directory paths on Windows (Vince Salvino)
* Fix: Capture log output from style fallback to avoid noise in unit tests (Matt Westcott)
* Fix: Switch widgets on/off states are now visually different for high-contrast mode users (Sakshi Uppoor)
* Fix: Nested InlinePanel usage no longer fails to save when creating two or more items (Indresh P, Rinish Sam, Anirudh V S)
* Fix: Changed relation name used for admin commenting from `comments` to `wagtail_admin_comments` to avoid conflicts with third-party commenting apps (Matt Westcott)
* Fix: CSS variables are now correctly used for the filtering menu in modeladmin (Noah H)
* Fix: Panel heading attribute is no longer ignored when nested inside a `MultiFieldPanel` (Jérôme Lebleu)
2.14.2 (14.10.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Allow relation name used for admin commenting to be overridden to avoid conflicts with third-party commenting apps (Matt Westcott)
* Fix: Corrected badly-formed format strings in translations (Matt Westcott)
* Fix: Page history now works correctly when it contains changes by a deleted user (Dan Braghis)
2.14.1 (12.08.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent failure on Twitter embeds and others which return cache_age as a string (Matt Westcott)
* Fix: Fix Uncaught ReferenceError when editing links in Hallo (Cynthia Kiser)
2.14 (02.08.2021)
~~~~~~~~~~~~~~~~~
* Removed support for Django 2.2
* Added `ancestor_of` API filter (Jaap Roes)
* Added support for customising group management views (Jan Seifert)
* Added `full_url` property to image renditions (Shreyash Srivastava)
* Added locale selector when choosing translatable snippets (Karl Hobley)
* Added `WAGTAIL_WORKFLOW_ENABLED` setting for enabling / disabling moderation workflows globally (Matt Westcott)
* Allow specifying `max_width` and `max_height` on EmbedBlock (Petr Dlouhý)
* Add warning when StreamField is used without a StreamFieldPanel (Naomi Morduch Toubman)
* Added keyboard and screen reader support to Wagtail user bar (LB Johnston, Storm Heg)
* Add Google Data Studio to the list of oEmbed providers (Petr Dlouhý)
* Added instructions on copying and aliasing pages to the editor's guide in documentation (Vlad Podgurschi)
* Allow ListBlock to raise validation errors that are not attached to an individual child block (Matt Westcott)
* Use `DATETIME_FORMAT` for localization in templates (Andrew Stone)
* Added documentation on multi-site, multi instance and multi tenancy setups (Coen Van Der Kamp)
* Updated Facebook / Instagram oEmbed endpoints to v11.0 (Thomas Kremmel)
* Performance improvements for admin listing pages (Jake Howard, Dan Braghis, Tom Usher)
* Fix: Invalid filter values for foreign key fields in the API now give an error instead of crashing (Tidiane Dia)
* Fix: Ordering specified in `construct_explorer_page_queryset` hook is now taken into account again by the page explorer API (Andre Fonseca)
* Fix: Deleting a page from its listing view no longer results in a 404 error (Tidiane Dia)
* Fix: The Wagtail admin urls will now respect the `APPEND_SLASH` setting (Tidiane Dia)
* Fix: Prevent “Forgotten password” link from overlapping with field on mobile devices (Helen Chapman)
* Fix: Snippet admin urls are now namespaced to avoid ambiguity with the primary key component of the url (Matt Westcott)
* Fix: Save order of promoted search results (Hardcodd)
* Fix: Prevent error on copying pages with ClusterTaggableManager relations and multi-level inheritance (Chris Pollard)
* Fix: Prevent failure on root page when registering the Page model with ModelAdmin (Jake Howard)
* Fix: Prevent error when filtering page search results with a malformed content_type (Chris Pollard)
* Fix: Prevent multiple submissions of "update" form when uploading images / documents (Mike Brown)
* Fix: Ensure HTML title is populated on project template 404 page (Matt Westcott)
* Fix: Respect cache_age parameters on embeds (Gordon Pendleton)
* Fix: Page comparison view now reflects request-level customisations to edit handlers (Matt Westcott)
* Fix: Add `block.super` to remaining `extra_js` & `extra_css` blocks (Andrew Stone)
* Fix: Ensure that `editor` and `features` arguments on RichTextField are preserved by `clone()` (Daniel Fairhead)
* Fix: Rename 'spin' CSS animation to avoid clashes with other libraries (Kevin Gutiérrez)
* Fix: Prevent crash when copying a page from a section where the user has no publish permission (Karl Hobley)
* Fix: Ensure that rich text conversion correctly handles images / embeds inside links or inline styles (Matt Westcott)
2.13.5 (14.10.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Allow relation name used for admin commenting to be overridden to avoid conflicts with third-party commenting apps (Matt Westcott)
* Fix: Corrected badly-formed format strings in translations (Matt Westcott)
* Fix: Correctly handle non-numeric user IDs for deleted users in reports (Dan Braghis)
2.13.4 (13.07.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent embed thumbnail_url migration from failing on URLs longer than 200 characters (Matt Westcott)
2.13.3 (05.07.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent error when using rich text on views where commenting is unavailable (Jacob Topp-Mugglestone)
* Fix: Include form media on account settings page (Matt Westcott)
* Fix: Avoid error when rendering validation error messages on ListBlock children (Matt Westcott)
* Fix: Prevent comments CSS from overriding admin UI colour customisations (Matt Westcott)
* Fix: Avoid validation error when editing rich text content preceding a comment (Jacob Topp-Mugglestone)
2.13.2 (17.06.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2021-32681 - fix improper escaping of HTML ('Cross-site Scripting') in Wagtail StreamField blocks (Karen Tracey, Matt Westcott)
2.13.1 (01.06.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure comment notification checkbox is fully hidden when commenting is disabled (Karl Hobley)
* Fix: Prevent commenting from failing for user models with UUID primary keys (Jacob Topp-Mugglestone)
* Fix: Fix incorrect link in comment notification HTML email (Matt Westcott)
2.13 (12.05.2021)
~~~~~~~~~~~~~~~~~
* New StreamField implementation with performance and functionality improvements (Matt Westcott, Karl Hobley)
* Added a simple translation module into `wagtail.contrib.simple_translation` (Coen van der Kamp)
* Combined account settings into a single form (Karl Hobley)
* Add support for exporting redirects (Martin Sandström)
* The documentation now uses Sphinx Wagtail Theme https://github.com/wagtail/sphinx_wagtail_theme (Storm Heg, Tibor Leupold, Thibaud Colas and Coen van der Kamp).
* Add support for Django 3.2
* Support passing `min_num`, `max_num` and `block_counts` arguments directly to `StreamField` (Haydn Greatnews, Matt Westcott)
* Add the option to set rich text images as decorative, without alt text (Helen Chapman, Thibaud Colas)
* Add support for `__year` lookup in Elasticsearch queries (Seb Brown)
* Support passing multiple models as arguments to `type()`, `not_type()`, `exact_type()` and `not_exact_type()` methods on `PageQuerySet` (Andy Babic)
* Update default attribute copying behaviour of `Page.get_specific()` and added the `copy_attrs_exclude` option (Andy Babic)
* Update `PageQueryset.specific(defer=True)` to only perform a single database query (Andy Babic)
* Add `PageQueryset.defer_streamfields()` (Andy Babic)
* Utilize `PageQuerySet.defer_streamfields()` to improve efficiency in a few key places (Andy Babic)
* Switch ``register_setting``, ``register_settings_menu_item`` to use SVG icons (Thibaud Colas)
* Add support to SVG icons for ``SearchArea`` subclasses in ``register_admin_search_area`` (Thibaud Colas)
* Add `wagtail.reorder` page audit log action (Storm Heg)
* `get_settings` template tag now supports specifying the variable name with `{% get_settings as var %}` (Samir Shah)
* Reinstate submitter's name on moderation notification email (Matt Westcott)
* Add a new switch input widget as an alternative to checkboxes (Karl Hobley)
* Allow `{% pageurl %}` fallback to be a direct URL or an object with a `get_absolute_url` method (Andy Babic)
* Support slicing on StreamField / StreamBlock values (Matt Westcott)
* Switch Wagtail choosers to use SVG icons instead of font icon (Storm Heg)
* Save revision when restart workflow (Ihor Marhitych)
* Add a visible indicator of unsaved changes to the page editor (Jacob Topp-Mugglestone)
* Fix: StreamField required status is now consistently handled by the `blank` keyword argument (Matt Westcott)
* Fix: Show 'required' asterisks for blocks inside required StreamFields (Matt Westcott)
* Fix: Make image chooser "Select format" fields translatable (Helen Chapman, Thibaud Colas)
* Fix: Move labels above the form field in the image format chooser, to avoid styling issues at tablet size (Helen Chapman)
* Fix: `{% include_block with context %}` now passes local variables into the block template (Jonny Scholes)
* Fix: Fix pagination on 'view users in a group' (Sagar Agarwal)
* Fix: Prevent page privacy menu from being triggered by pressing enter on a char field (Sagar Agarwal)
* Fix: Validate host/scheme of return URLs on password authentication forms (Susan Dreher)
* Fix: Reordering a page now includes the correct user in the audit log (Storm Heg)
* Fix: Reverse migration errors in images and documents (Mike Brown)
* Fix: Apply enough chevron padding to all applicable select elements (Scott Cranfill)
* Fix: Reduce database queries in the page edit view (Ihor Marhitych)
2.12.6 (13.07.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent embed thumbnail_url migration from failing on URLs longer than 200 characters (Matt Westcott)
2.12.5 (17.06.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2021-32681 - fix improper escaping of HTML ('Cross-site Scripting') in Wagtail StreamField blocks (Karen Tracey, Matt Westcott)
2.12.4 (19.04.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2021-29434 - fix improper validation of URLs ('Cross-site Scripting') in rich text fields (Kevin Breen, Matt Westcott)
* Fix: Reverse migration errors in images and documents (Mike Brown)
* Fix: Avoid wagtailembeds migration failure on MySQL 8.0.13+ (Matt Westcott)
2.12.3 (05.03.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Un-pin django-treebeard following upstream fix for migration issue (Matt Westcott)
* Fix: Prevent crash when copying an alias page (Karl Hobley)
* Fix: Prevent errors on page editing after changing LANGUAGE_CODE (Matt Westcott)
* Fix: Correctly handle model inheritance and `ClusterableModel` on `copy_for_translation` (Karl Hobley)
2.12.2 (18.02.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin django-treebeard to <4.5 to prevent migration conflicts (Matt Westcott)
2.12.1 (16.02.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure aliases are published when the source page is published (Karl Hobley)
* Fix: Make page privacy rules apply to aliases (Karl Hobley)
* Fix: Prevent error when saving embeds that do not include a thumbnail URL (Cynthia Kiser)
* Fix: Ensure that duplicate embed records are deleted when upgrading (Matt Westcott)
* Fix: Prevent failure when running `manage.py dumpdata` with no arguments (Matt Westcott)
2.12 (02.02.2021)
~~~~~~~~~~~~~~~~~
* Added a distinct 'choose' permission for images and documents (Robert Rollins)
* StreamField values can now be modified in-place (Matt Westcott)
* Added support for custom admin color themes (Joshua Marantz)
* Added support for Python 3.9
* Added `WAGTAILIMAGES_IMAGE_FORM_BASE` and `WAGTAILDOCS_DOCUMENT_FORM_BASE` settings to customise the forms for images and documents (Dan Braghis)
* Switch pagination icons to use SVG instead of icon fonts (Scott Cranfill)
* Added string representation to image Format class (Andreas Nüßlein)
* Support returning None from `register_page_action_menu_item` and `register_snippet_action_menu_item` to skip registering an item (Vadim Karpenko)
* Fields on a custom image model can now be defined as required / `blank=False` (Matt Westcott)
* Add combined index for Postgres search backend (Will Giddens)
* Add `Page.specific_deferred` property for accessing specific page instance without up-front database queries (Andy Babic)
* Add hash lookup to embeds to support URLs longer than 255 characters (Coen van der Kamp)
* Fix: Stop menu icon overlapping the breadcrumb on small viewport widths in page editor (Karran Besen)
* Fix: Make sure document chooser pagination preserves the selected collection when moving between pages (Alex Sa)
* Fix: Gracefully handle oEmbed endpoints returning non-JSON responses (Matt Westcott)
* Fix: Fix unique constraint on WorkflowState for SQL Server compatibility (David Beitey)
* Fix: Reinstate chevron on collection dropdown (Mike Brown)
* Fix: Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
2.11.9 (24.01.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Update Pillow dependency to allow 9.x (Rizwan Mansuri)
2.11.8 (17.06.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2021-32681 - fix improper escaping of HTML ('Cross-site Scripting') in Wagtail StreamField blocks (Karen Tracey, Matt Westcott)
2.11.7 (19.04.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: CVE-2021-29434 - fix improper validation of URLs ('Cross-site Scripting') in rich text fields (Kevin Breen, Matt Westcott)
2.11.6 (05.03.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Un-pin django-treebeard following upstream fix for migration issue (Matt Westcott)
* Fix: Prevent crash when copying an alias page (Karl Hobley)
* Fix: Prevent errors on page editing after changing LANGUAGE_CODE (Matt Westcott)
* Fix: Correctly handle model inheritance and `ClusterableModel` on `copy_for_translation` (Karl Hobley)
2.11.5 (18.02.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Pin django-treebeard to <4.5 to prevent migration conflicts (Matt Westcott)
2.11.4 (16.02.2021)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent delete button showing on collection / workflow edit views when delete permission is absent (Helder Correia)
* Fix: Ensure aliases are published when the source page is published (Karl Hobley)
* Fix: Make page privacy rules apply to aliases (Karl Hobley)
2.11.3 (10.12.2020)
~~~~~~~~~~~~~~~~~~~
* Fix: Updated project template migrations to ensure that initial homepage creation runs before addition of locale field (Dan Braghis)
* Fix: Restore ability to use translatable strings in `LANGUAGES` / `WAGTAIL_CONTENT_LANGUAGES` settings (Andreas Morgenstern)
* Fix: Allow `locale` / `translation_of` API filters to be used in combination with search (Matt Westcott)
* Fix: Prevent error on `create_log_entries_from_revisions` when checking publish state on a revision that cannot be restored (Kristin Riebe)
2.11.2 (17.11.2020)
~~~~~~~~~~~~~~~~~~~
* Add custom finder to support Instagram oEmbed API (Luis Nell)
* Add custom finder to support Facebook oEmbed API (Cynthia Kiser)
* Fix: Improve performance of permission check on translations for edit page (Karl Hobley)
* Fix: Gracefully handle missing Locale records on `Locale.get_active` and `.localized` (Matt Westcott)
* Fix: Handle `get_supported_language_variant` returning a language variant not in `LANGUAGES` (Matt Westcott)
* Fix: Reinstate missing icon on settings edit view (Jérôme Lebleu)
* Fix: Avoid performance and pagination logic issues with a large number of languages (Karl Hobley)
* Fix: Allow deleting the default locale (Matt Westcott)
2.11.1 (06.11.2020)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure that cached `wagtail_site_root_paths` structures from older Wagtail versions are invalidated (Sævar Öfjörð Magnússon)
* Fix: Avoid circular import between wagtail.admin.auth and custom user models (Matt Westcott)
* Fix: Prevent error on resolving page URLs when a locale outside of `WAGTAIL_CONTENT_LANGUAGES` is active (Matt Westcott)
2.11 LTS (02.11.2020)
~~~~~~~~~~~~~~~~~~~~~
* Add support for multi-lingual content (Karl Hobley)
* Add support for aliased pages (Karl Hobley)
* Add support for hierarchical/nested Collections (Robert Rollins)
* Extend treebeard's `fix_tree` method with the ability to non-destructively fix path issues and add a --full option to apply path fixes (Matt Westcott)
* Add `before_edit_snippet`, `before_create_snippet` and `before_delete_snippet` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
* Add `register_snippet_listing_buttons` and `construct_snippet_listing_buttons` hooks and documentation (Karl Hobley. Sponsored by the Mozilla Foundation)
* Add `wagtail --version` to available Wagtail CLI commands (Kalob Taulien)
* Add `hooks.register_temporarily` utility function for testing hooks (Karl Hobley. Sponsored by the Mozilla Foundation)
* Remove `unidecode` and use `anyascii` in for Unicode to ASCII conversion (Robbie Mackay)
* Add `render` helper to `RoutablePageMixin` to support serving template responses according to Wagtail conventions (Andy Babic)
* Specify minimum Python version in setup.py (Vince Salvino)
* Show user's full name in report views (Matt Westcott)
* Improve Wagtail admin page load performance by caching SVG icons sprite in localStorage (Coen van der Kamp)
* Support SVG icons in ModelAdmin menu items (Scott Cranfill)
* Support SVG icons in admin breadcrumbs (Coen van der Kamp)
* Serve PDFs inline in the browser (Matt Westcott)
* Make document `content-type` and `content-disposition` configurable via `WAGTAILDOCS_CONTENT_TYPES` and `WAGTAILDOCS_INLINE_CONTENT_TYPES` (Matt Westcott)
* Slug generation no longer removes stopwords (Andy Chosak, Scott Cranfill)
* Add check to disallow StreamField block names that do not match Python variable syntax (François Poulain)
* The `BASE_URL` setting is now converted to a string, if it isn't already, when constructing API URLs (thenewguy)
* Preview from 'pages awaiting moderation' now opens in a new window (Cynthia Kiser)
* Add document extension validation if `WAGTAIL_DOCS_EXTENSIONS` is set (Meghana Bhange)
* Use `django-admin` command in place of `django-admin.py` (minusf)
* Add `register_snippet_action_menu_item` and `construct_snippet_action_menu` hooks to modify the actions available when creating / editing a snippet (Karl Hobley)
* Moved `generate_signature` and `verify_signature` functions into `wagtail.images.utils` (Noah H)
* Implement `bulk_to_python` on all structural StreamField block types (Matt Westcott)
* Add natural key support to `GroupCollectionPermission` (Jim Jazwiecki)
* Implement `prepopulated_fields` for `wagtail.contrib.modeladmin` (David Bramwell)
* Change `classname` keyword argument on basic StreamField blocks to `form_classname` (Meghana Bhange)
* Replace page explorer pushPage/popPage with gotoPage for more flexible explorer navigation (Karl Hobley)
* Fix: Make page-level actions accessible to keyboard users in page listing tables (Jesse Menn)
* Fix: `WAGTAILFRONTENDCACHE_LANGUAGES` was being interpreted incorrectly. It now accepts a list of strings, as documented (Karl Hobley)
* Fix: Update oEmbed endpoints to use https where available (Matt Westcott)
* Fix: Revise `edit_handler` bind order in ModelAdmin views and fix duplicate form instance creation (Jérôme Lebleu)
* Fix: Properly distinguish child blocks when comparing revisions with nested StreamBlocks (Martin Mena)
* Fix: Correctly handle Turkish 'İ' characters in client-side slug generation (Matt Westcott)
* Fix: Page chooser widgets now reflect custom ``get_admin_display_title`` methods (Saptak Sengupta)
* Fix: `Page.copy()` now raises an error if the page being copied is unsaved (Anton Zhyltsou)
* Fix: `Page.copy()` now triggers a `page_published` if the copied page is live (Anton Zhyltsou)
* Fix: The Elasticsearch `URLS` setting can now take a string on its own instead of a list (Sævar Öfjörð Magnússon)
* Fix: Avoid retranslating month / weekday names that Django already provides (Matt Westcott)
* Fix: Fixed padding around checkbox and radio inputs (Cole Maclean)
* Fix: Fix spacing around the privacy indicator panel (Sævar Öfjörð Magnússon, Dan Braghis)
* Fix: Consistently redirect to admin home on permission denied (Matt Westcott, Anton Zhyltsou)
2.10.2 (25.09.2020)
~~~~~~~~~~~~~~~~~~~
* Fix: Avoid use of `icon` class name on userbar icon to prevent clashes with front-end styles (Karran Besen)
* Fix: Prevent focused button labels from displaying as white on white (Karran Bessen)
* Fix: Avoid showing preview button on moderation dashboard for page types with preview disabled (Dino Perovic)
* Fix: Prevent oversized buttons in moderation dashboard panel (Dan Braghis)
* Fix: `create_log_entries_from_revisions` now handles revisions that cannot be restored due to foreign key constraints (Matt Westcott)
2.10.1 (26.08.2020)
~~~~~~~~~~~~~~~~~~~
* Fix: Prevent `create_log_entries_from_revisions` command from failing when page model classes are missing (Dan Braghis)
* Fix: Prevent page audit log views from failing for user models without a `username` field (Vyacheslav Matyukhin)
* Fix: Fix icon alignment on menu items (Coen van der Kamp)
* Fix: Page editor header bar now correctly shows 'Published' or 'Draft' status when no revisions exist (Matt Westcott)
* Fix: Prevent page editor from failing when `USE_TZ` is false (Matt Westcott)
* Fix: Ensure whitespace between block-level elements is preserved when stripping tags from rich text for search indexing (Matt Westcott)
2.10 (11.08.2020)
~~~~~~~~~~~~~~~~~
* Added Django 3.1 support (Matt Westcott, Karl Hobley)
* Removed support for Python 3.5
* Implemented configurable moderation workflow (Jacob Topp-Mugglestone, Karl Hobley, Matt Westcott, Dan Braghis)
* Implemented phrase searching and structured search query expressions (Karl Hobley)
* Add ability to import redirects from an uploaded file (CSV, TSV, XLS, and XLSX) (Martin Sandström)
* Added `webpquality` and `format-webp-lossless` image filters and `WAGTAILIMAGES_WEBP_QUALITY` setting (Nikolay Lukyanov)
* Reorganised Dockerfile in project template to follow best practices (Tomasz Knapik, Jannik Wempe)
* Added filtering to locked pages report (Karl Hobley)
* Adds ability to view a group's users via standalone admin URL and a link to this on the group edit view (Karran Besen)
* Redirect to previous url when deleting/copying/unpublish a page and modify this url via the relevant hooks (Ascani Carlo)
* Added `next_url` keyword argument on `register_page_listing_buttons` and `register_page_listing_more_buttons` hooks (Ascani Carlo, Matt Westcott, LB (Ben Johnston))
* `AbstractEmailForm` will use `SHORT_DATETIME_FORMAT` and `SHORT_DATE_FORMAT` Django settings to format date/time values in email (Haydn Greatnews)
* `AbstractEmailForm` now has a separate method (`render_email`) to build up email content on submission emails (Haydn Greatnews)
* Add `pre_page_move` and `post_page_move` signals (Andy Babic)
* Add ability to sort search promotions on listing page (Chris Ranjana, LB (Ben Johnston))
* Upgrade internal JS tooling; Node v10, Gulp v4 & Jest v23 (Jim Jazwiecki, Kim LaRocca, Thibaud Colas)
* Add `after_publish_page`, `before_publish_page`, `after_unpublish_page` & `before_unpublish_page` hooks (Jonatas Baldin, Coen van der Kamp)
* Add convenience `page_url` shortcut to improve how page URLs can be accessed from site settings in Django templates (Andy Babic)
* Show more granular error messages from Pillow when uploading images (Rick van Hattem)
* Add ordering to `Site` object, so that index page and `Site` switcher will be sorted consistently (Coen van der Kamp, Tim Leguijt)
* Add Reddit to oEmbed provider list (Luke Hardwick)
* Add ability to replace the default Wagtail logo in the userbar, via `branding_logo` block (Meteor0id)
* Remove sticky footer on small devices, so that content is not blocked and more easily editable (Saeed Tahmasebi)
* Add `alt` property to `ImageRenditionField` api representation (Liam Mullens)
* Add `purge_revisions` management command to purge old page revisions (Jacob Topp-Mugglestone, Tom Dyson)
* Render the Wagtail User Bar on non `Page` views (Caitlin White, Coen van der Kamp)
* Add ability to define `form_classname` on `ListBlock` & `StreamBlock` (LB (Ben Johnston))
* Add documentation about how to use `Rustface` for image feature detection (Neal Todd)
* Improve performance of public/not_public queries in `PageQuerySet` (Timothy Bautista)
* Add `add_redirect` static method to `Redirect` class for programmatic redirect creation (Brylie Christopher Oxley, Lacey Williams Henschel)
* Add reference documentation for `wagtail.contrib.redirects` (LB (Ben Johnston))
* `bulk_delete` page permission is no longer required to move pages, even if those pages have children (Robert Rollins, LB (Ben Johnston))
* Add `after_edit_snippet`, `after_create_snippet` and `after_delete_snippet` hooks and documentation (Kalob Taulien)
* Improve performance of empty search results by avoiding downloading the entire search index in these scenarios (Lars van de Kerkhof, Coen van der Kamp)
* Replace `gulp-sass` with `gulp-dart-sass` to improve core development across different platforms (Thibaud Colas)
* Add SVG icons to resolve accessibility and customisation issues and start using them in a subset of Wagtail's admin (Coen van der Kamp, Scott Cranfill, Thibaud Colas, Dan Braghis)
* Switch userbar and header H1s to use SVG icons (Coen van der Kamp)
* Remove markup around rich text rendering by default, provide a way to use old behaviour via `wagtail.contrib.legacy.richtext` (Coen van der Kamp, Dan Braghis)
* Apply title length normalisation to improve ranking on PostgreSQL search (Karl Hobley)
* Add `WAGTAIL_TIME_FORMAT` setting (Jacob Topp-Mugglestone)
* Allow omitting the default editor from `WAGTAILADMIN_RICH_TEXT_EDITORS` (Gassan Gousseinov)
* Disable password auto-completion on user creation form (Samir Shah)
* Upgrade jQuery to version 3.5.1 to reduce penetration testing false positives (Matt Westcott)
* Add ability to extend `EditHandler` without a children attribute (Seb Brown)
* `Page.objects.specific` now gracefully handles pages with missing specific records (Andy Babic)
* StreamField 'add' buttons are now disabled when maximum count is reached (Max Gabrielsson)
* Use underscores for form builder field names to allow use as template variables (Ashia Zawaduk, LB (Ben Johnston))
* Deprecate use of unidecode within form builder field names (Michael van Tellingen, LB (Ben Johnston))
* Improve error feedback when editing a page with a missing model class (Andy Babic)
* Change Wagtail tabs implementation to only allow slug-formatted tab identifiers, reducing false positives from security audits (Matt Westcott)
* Add skip link for keyboard users to bypass Wagtail navigation in the admin (Martin Coote)
* Ensure errors during Postgres search indexing are left uncaught to assist troubleshooting (Karl Hobley)
* Add ability to edit images and embeds in rich text editor (Maylon Pedroso, Samuel Mendes, Gabriel Peracio)
* Fix: Support IPv6 domain (Alex Gleason, Coen van der Kamp)