forked from wagtail/wagtail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
2366 lines (1996 loc) · 173 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
=========
2.16 (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~~
* 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, Tidjani Dia)
* Added Aging Pages report (Tidjani Dia)
* 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 (Tidjani Dia)
* Add secondary actions menu in edit page headers (Tidjani Dia)
* Removed WOFF fonts
* Add system check for missing core Page fields in `search_fields` (LB (Ben Johnston))
* Improve CircleCI frontend & backend build caches (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 (Tidjani 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)
* 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)
* Fix: Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast (Sakshi Uppoor)
* 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)
2.15.2 (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~~~~
* 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 (Tidjani 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 (Tidjani Dia)
* Fix: The Wagtail admin urls will now respect the `APPEND_SLASH` setting (Tidjani 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.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)
* Fix: Ensure link to add a new user works when no users are visible in the users list (LB (Ben Johnston))
* Fix: `AbstractEmailForm` saved submission fields are now aligned with the email content fields, `form.cleaned_data` will be used instead of `form.fields` (Haydn Greatnews)
* Fix: Removed ARIA `role="table"` from TableBlock output (Thibaud Colas)
* Fix: Set Cache-Control header to prevent page preview responses from being cached (Tomas Walch)
* Fix: Accept unicode characters in slugs on the "copy page" form (François Poulain)
* Fix: Remove top padding when `FieldRowPanel` is used inside a `MultiFieldPanel` (Jérôme Lebleu)
* Fix: Add Wagtail User Bar back to page previews and ensure moderation actions are available (Coen van der Kamp)
* Fix: Resolve issue where queryset annotations were lost (e.g. `.annotate_score()`) when using specific models in page query (Dan Bentley)
* Fix: Prevent date/time picker from losing an hour on losing focus when 12-hour times are in use (Jacob Topp-Mugglestone)
* Fix: Strip out HTML tags from `RichTextField` & `RichTextBlock` search index content (Timothy Bautista)
* Fix: Avoid using null on string `Site.site_name` blank values to avoid different values for no name (Coen van der Kamp)
* Fix: Fix deprecation warnings on Elasticsearch 7 (Yngve Høiseth)
* Fix: Remove use of Node.forEach for IE 11 compatibility in admin menu items (Thibaud Colas)
* Fix: Fix incorrect method name in SiteMiddleware deprecation warning (LB (Ben Johnston))
* Fix: `wagtail.contrib.sitemaps` no longer depends on SiteMiddleware (Matt Westcott)
* Fix: Purge image renditions cache when renditions are deleted (Pascal Widdershoven, Matt Westcott)
* Fix: Image / document forms now display non-field errors such as `unique_together` constraints (Matt Westcott)
* Fix: Make "Site" chooser in site settings translatable (Andreas Bernacca)
* Fix: Add missing dropdown icons to image upload, document upload, and site settings screens (Andreas Bernacca)
* Fix: Prevent snippets’ bulk delete button from being present for screen reader users when it’s absent for sighted users (LB (Ben Johnston))
* Fix: Fix group permission checkboxes not being clickable in IE11 (LB (Ben Johnston))
2.9.3 (20.07.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-15118 - prevent HTML injection through form field help text (Timothy Bautista, Matt Westcott)
2.9.2 (03.07.2020)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent startup failure when `wagtail.contrib.sitemaps` is in `INSTALLED_APPS` (Matt Westcott)
2.9.1 (30.06.2020)
~~~~~~~~~~~~~~~~~~
* Fix: Fix incorrect method name in SiteMiddleware deprecation warning (LB (Ben Johnston))
* Fix: `wagtail.contrib.sitemaps` no longer depends on SiteMiddleware (Matt Westcott)
* Fix: Purge image renditions cache when renditions are deleted (Pascal Widdershoven, Matt Westcott)
2.9 (04.05.2020)
~~~~~~~~~~~~~~~~
* Removed support for Django 2.1
* Added data exports in XLSX and CSV format for reports, ModelAdmin and form submissions (Jacob Topp-Mugglestone)
* Added support for creating custom reports (Jacob Topp-Mugglestone)
* Skip page validation when unpublishing a page (Samir Shah)
* Added `MultipleChoiceBlock` block type for StreamField (James O'Toole)
* ChoiceBlock now accepts a `widget` keyword argument (James O'Toole)
* Reduced contrast of rich text toolbar (Jack Paine)
* Support the rel attribute on custom ModelAdmin buttons (Andy Chosak)
* Server-side page slug generation now respects `WAGTAIL_ALLOW_UNICODE_SLUGS` (Arkadiusz Michał Ryś)
* Wagtail admin no longer depends on SiteMiddleware, avoiding incompatibility with Django sites framework and redundant database queries (aritas1, timmysmalls, Matt Westcott)
* Tag field autocompletion now handles custom tag models (Matt Westcott)
* `wagtail_serve` URL route can now be omitted for headless sites (Storm Heg)
* Allow free tagging to be disabled on custom tag models (Matt Westcott)
* Allow disabling page preview by setting `preview_modes` to an empty list (Casper Timmers)
* Add Vidyard to oEmbed provider list (Steve Lyall)
* Optimise compiling media definitions for complex StreamBlocks (pimarc)
* FieldPanel now accepts a 'heading' argument (Jacob Topp-Mugglestone)
* Replaced deprecated `ugettext` / `ungettext` calls with `gettext` / `ngettext` (Mohamed Feddad)
* ListBlocks now call child block `bulk_to_python` if defined (Andy Chosak)
* Site settings are now identifiable/cacheable by request as well as site (Andy Babic)
* Added `select_related` attribute to site settings to enable more efficient fetching of foreign key values (Andy Babic)
* Add caching of image renditions (Tom Dyson, Tim Kamanin)
* Add documentation for reporting security issues and internationalisation (Matt Westcott)
* Fields on a custom image model can now be defined as required `blank=False` (Matt Westcott)
* Fix: CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
* Fix: Added ARIA alert role to live search forms in the admin (Casper Timmers)
* Fix: Reorder login form elements to match expected tab order (Kjartan Sverrisson)
* Fix: Re-add 'Close Explorer' button on mobile viewports (Sævar Öfjörð Magnússon)
* Fix: Add a more descriptive label to Password reset link for screen reader users (Casper Timmers, Martin Coote)
* Fix: Improve Wagtail logo contrast by adding a background (Brian Edelman, Simon Evans, Ben Enright)
* Fix: Prevent duplicate notification messages on page locking (Jacob Topp-Mugglestone)
* Fix: Fix InlinePanel item non field errors not visible (Storm Heg)
* Fix: `{% image ... as var %}` now clears the context variable when passed None as an image (Maylon Pedroso)
* Fix: `refresh_index` method on Elasticsearch no longer fails (Lars van de Kerkhof)
* Fix: Document tags no longer fail to update when replacing the document file at the same time (Matt Westcott)
* Fix: Prevent error from very tall / wide images being resized to 0 pixels (Fidel Ramos)
* Fix: Remove excess margin when editing snippets (Quadric)
* Fix: Added `scope` attribute to table headers in TableBlock output (Quadric)
* Fix: Prevent KeyError when accessing a StreamField on a deferred queryset (Paulo Alvarado)
* Fix: Hide empty 'view live' links (Karran Besen)
* Fix: Mark up a few strings for translation (Luiz Boaretto)
* Fix: Invalid focal_point attribute on image edit view (Michał (Quadric) Sieradzki)
* Fix: No longer expose the `.delete()` method on the default Page.objects manager (Nick Smith)
* Fix: `exclude_fields_in_copy` on Page models will now work for for modelcluster parental / many to many relations (LB (Ben Johnston))
* Fix: Response header (content disposition) now correctly handles filenames with non-ascii characters when using a storage backend (Rich Brennan)
* Fix: Improved accessibility fixes for `main`, `header` and `footer` elements in the admin page layout (Mitchel Cabuloy)
* Fix: Prevent version number from obscuring long settings menus (Naomi Morduch Toubman)
* Fix: Admin views using TemplateResponse now respect the user's language setting (Jacob Topp-Mugglestone)
* Fix: Fixed incorrect language code for Japanese in language setting dropdown (Tomonori Tanabe)
2.8.2 (04.05.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
2.8.1 (14.04.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
2.8 (03.02.2020)
~~~~~~~~~~~~~~~~
* Django 3.0 support (Matt Westcott, Mads Jensen)
* Improved page locking to give editors exclusive edit access (Karl Hobley, Jacob Topp-Mugglestone)
* Removed support for Django 2.0
* Removed leftover Python 2.x compatibility code (Sergey Fedoseev)
* Combine flake8 configurations (Sergey Fedoseev)
* Improve diffing behavior for text fields (Aliosha Padovani)
* Improve contrast of disabled inputs (Nick Smith)
* Added `get_document_model_string` function (Andrey Smirnov)
* Added support for Cloudflare API tokens for frontend cache invalidation (Tom Usher)
* Cloudflare frontend cache invalidation requests are now sent in chunks of 30 to fit within API limits (Tom Usher)
* Added `ancestors` field to the pages endpoint in admin API (Karl Hobley)
* Removed Django admin management of `Page` & `Site` models (Andreas Bernacca)
* Cleaned up Django docs URLs in documentation (Pete Andrew)
* Add StreamFieldPanel to available panel types in documentation (Dan Swain)
* Add `{{ block.super }}` example to ModelAdmin customisation in documentation (Dan Swain)
* Add ability to filter image index by a tag (Benedikt Willi)
* Add partial experimental support for nested InlinePanels (Matt Westcott, Sam Costigan, Andy Chosak, Scott Cranfill)
* Added cache control headers when serving documents (Johannes Vogel)
* Use `sensitive_post_parameters` on password reset form (Dan Braghis)
* Add `WAGTAILEMBEDS_RESPONSIVE_HTML` setting to remove automatic addition of `responsive-object` around embeds (Kalob Taulien)
* Fix: Rename documents listing column 'uploaded' to 'created' (LB (Ben Johnston))
* Fix: Unbundle the l18n library as it was bundled to avoid installation errors which have been resolved (Matt Westcott)
* Fix: Prevent error when comparing pages that reference a model with a custom primary key (Fidel Ramos)
* Fix: Moved `get_document_model` location so it can be imported when Models are not yet loaded (Andrey Smirnov)
* Fix: Use correct HTML escaping of Jinja2 form templates for StructBlocks (Brady Moe)
* Fix: All templates with wagtailsettings and modeladmin now use `block.super` for `extra_js` & `extra_css` (Timothy Bautista)
* Fix: Layout issue when using `FieldRowPanel` with a heading (Andreas Bernacca)
* Fix: `file_size` and `file_hash` now updated when Document file changed (Andreas Bernacca)
* Fix: Fixed order of URLs in project template so that static / media URLs are not blocked (Nick Smith)
* Fix: Added `verbose_name_plural` to form submission model (Janneke Janssen)
* Fix: Prevent `update_index` failures and incorrect front-end rendering on blank `TableBlock` (Carlo Ascani)
* Fix: Dropdown initialisation on the search page after AJAX call (Eric Sherman)
* Fix: Make sure all modal chooser search results correspond to the latest search by cancelling previous requests (Esper Kuijs)
2.7.4 (20.07.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-15118 - prevent HTML injection through form field help text (Timothy Bautista, Matt Westcott)
* Fix: Expand Pillow dependency range to include 7.x (Harris Lapiroff, Matt Westcott)
2.7.3 (04.05.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-11037 - avoid potential timing attack on password-protected private pages (Thibaud Colas)
2.7.2 (14.04.2020)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2020-11001 - prevent XSS attack via page revision comparison view (Vlad Gerasimenko, Matt Westcott)
2.7.1 (08.01.2020)
~~~~~~~~~~~~~~~~~~
* Fix: Management command startup checks under `ManifestStaticFilesStorage` no longer fail if `collectstatic` has not been run first (Alex Tomkins)
2.7 LTS (06.11.2019)
~~~~~~~~~~~~~~~~~~~~
* Improved StreamField design (Bertrand Bordage)
* Added WebP image support (frmdstryr, Karl Hobley, Matt Westcott)
* Added Elasticsearch 7 support (pySilver)
* Added Python 3.8 support (John Carter, Matt Westcott)
* Added `construct_page_listing_buttons` hook (Michael van Tellingen)
* Added more detailed documentation and troubleshooting for installing OpenCV for feature detection (Daniele Procida)
* Added Table Block caption for accessibility (Rahmi Pruitt)
* Move and refactor upgrade notification JS (Jonny Scholes)
* Add ability to insert internal anchor links/links with fragment identifiers in Draftail (rich text) fields (Iman Syed)
* Remove need for Elasticsearch `update_all_types` workaround, upgrade minimum release to 6.4.0 or above (Jonathan Liuti)
* Add ability for users to change their own name via the account settings page (Kevin Howbrook)
* Add ability to insert telephone numbers as links in Draftail (rich text) fields (Mikael Engström and Liam Brenner)
* Increase delay before search in the snippet chooser, to prevent redundant search request round trips (Robert Rollins)
* Add `WAGTAIL_EMAIL_MANAGEMENT_ENABLED` setting to determine whether users can change their email address (Janne Alatalo)
* Recognise Soundcloud artist URLs as embeddable (Kiril Staikov)
* Add `WAGTAILDOCS_SERVE_METHOD` setting to determine how document downloads will be linked to and served (Tobias McNulty, Matt Westcott)
* Add `WAGTAIL_MODERATION_ENABLED` setting to enable / disable the 'Submit for Moderation' option (Jacob Topp-Mugglestone)
* Added settings to customise pagination page size for the Images admin area (Brian Whitton)
* Added ARIA role to TableBlock output (Matt Westcott)
* Added cache-busting query parameters to static files within the Wagtail admin (Matt Westcott)
* Allow `register_page_action_menu_item` and `construct_page_action_menu` hooks to override the default menu action (Rahmi Pruitt, Matt Westcott)
* `WAGTAILIMAGES_MAX_IMAGE_PIXELS` limit now takes the number of animation frames into account (Karl Hobley)
* Fix: Added line breaks to long filenames on multiple image / document uploader (Kevin Howbrook)
* Fix: Added https support for Scribd oEmbed provider (Rodrigo)
* Fix: Changed StreamField group labels color so labels are visible (Catherine Farman)
* Fix: Prevented images with a very wide aspect ratio from being displayed distorted in the rich text editor (Iman Syed)
* Fix: Prevent exception when deleting a model with a protected One-to-one relationship (Neal Todd)
* Fix: Added labels to snippet bulk edit checkboxes for screen reader users (Martey Dodoo)
* Fix: Middleware responses during page preview are now properly returned to the user (Matt Westcott)
* Fix: Default text of page links in rich text uses the public page title rather than the admin display title (Andy Chosak)
* Fix: Specific page permission checks are now enforced when viewing a page revision (Andy Chosak)
* Fix: `pageurl` and `slugurl` tags no longer fail when `request.site` is `None` (Samir Shah)
* Fix: Output form media on add/edit image forms with custom models (Matt Westcott)
* Fix: Output form media on add/edit document forms with custom models (Sergey Fedoseev)
* Fix: Layout for the clear checkbox in default FileField widget (Mikalai Radchuk)
* Fix: Remove ASCII conversion from Postgres search backend, to support stemming in non-Latin alphabets (Pavel Denisov)
* Fix: Prevent tab labels on page edit view from being cut off on very narrow screens (Kevin Howbrook)
* Fix: Very long words in page listings are now broken where necessary (Kevin Howbrook)
* Fix: Language chosen in user preferences no longer persists on subsequent requests (Bojan Mihelac)
* Fix: Prevent new block IDs from being assigned on repeated calls to `StreamBlock.get_prep_value` (Colin Klein)
* Fix: Prevent broken images in notification emails when static files are hosted on a remote domain (Eduard Luca)
* Fix: Replace styleguide example avatar with default image to avoid issues when custom user model is used (Matt Westcott)
* Fix: `DraftailRichTextArea` is no longer treated as a hidden field by Django's form logic (Sergey Fedoseev)
* Fix: Replace format() placeholders in translatable strings with % formatting (Matt Westcott)
* Fix: Altering Django REST Framework's `DEFAULT_AUTHENTICATION_CLASSES` setting no longer breaks the page explorer menu and admin API (Matt Westcott)
* Fix: Regression - missing label for external link URL field in link chooser (Stefani Castellanos)
2.6.3 (22.10.2019)
~~~~~~~~~~~~~~~~~~
* Fix: Altering Django REST Framework's `DEFAULT_AUTHENTICATION_CLASSES` setting no longer breaks the page explorer menu and admin API (Matt Westcott)
2.6.2 (19.09.2019)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent search indexing failures on Postgres 9.4 and Django >= 2.2.1 (Matt Westcott)
2.6.1 (05.08.2019)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent JavaScript errors caused by unescaped quote characters in translation strings (Matt Westcott)
2.6 (01.08.2019)
~~~~~~~~~~~~~~~~
* 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)
* Added "don't delete" option to confirmation screen when deleting images, documents and modeladmin models (Kevin Howbrook)
* Added `branding_title` template block for the admin title prefix (Dillen Meijboom)
* Add image dimensions in image gallery and image choosers for screen reader users (Helen Chapman)
* Added support for custom search handler classes to modeladmin's IndexView, and added a class that uses the default Wagtail search backend for searching (Seb Brown, Andy Babic)
* Improved heading structure for screen reader users navigating the CMS admin (Beth Menzies, Helen Chapman)
* Updated group edit view to expose the Permission object for each checkbox (George Hickman)
* Improve performance of Pages for Moderation panel (Fidel Ramos)
* Add more contextual information for screen readers in the explorer menu’s links (Helen Chapman)
* Added `process_child_object` and `exclude_fields` arguments to ``Page.copy()`` to make it easier for third-party apps to customise copy behavior (Karl Hobley)
* Added `Page.with_content_json()`, allowing revision content loading behaviour to be customised on a per-model basis (Karl Hobley)
* Improved screen-reader labels for action links in page listing (Helen Chapman, Katie Locke)
* Added screen-reader labels for table headings in page listing (Helen Chapman, Katie Locke)
* Added screen reader labels for page privacy toggle, edit lock, status tag in page explorer & edit views (Helen Chapman, Katie Locke)
* Added screen-reader labels for dashboard summary cards (Helen Chapman, Katie Locke)
* Added screen-reader labels for privacy toggle of collections (Helen Chapman, Katie Locke)
* Added `construct_settings_menu` hook (Jordan Bauer, Quadric)
* Fixed compatibility of date / time choosers with wagtail-react-streamfield (Mike Hearn)
* Performance optimization of several admin functions, including breadcrumbs, home and index pages (Fidel Ramos)
* 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 occurrences 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 translatable (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)
* Fix: Make icon font implementation more screen-reader-friendly (Thibaud Colas)
* Fix: Remove duplicate labels in image gallery and image choosers for screen reader users (Helen Chapman)
* Fix: Restore custom "Date" icon for scheduled publishing panel in Edit page’s Settings tab (Helen Chapman)
* Fix: Added missing form media to user edit form template (Matt Westcott)
* Fix: Add a label to the modals’ “close” button for screen reader users (Helen Chapman, Katie Locke)
* Fix: Ensure the 'add child page' button displays when focused (Helen Chapman, Katie Locke)
* Fix: Remove tab order customisations in CMS admin (Jordan Bauer)
* Fix: Add labels to permission checkboxes for screen reader users (Helen Chapman, Katie Locke)
* Fix: Page.copy() no longer copies child objects when the accessor name is included in `exclude_fields_in_copy` (Karl Hobley)
* Fix: Move focus to the pages explorer menu when open (Helen Chapman)
* Fix: Clicking the privacy toggle while the page is still loading no longer loads the wrong data in the page (Helen Chapman)
* Fix: Added missing `is_stored_locally` method to `AbstractDocument` (jonny5532)
* Fix: Query model no longer removes punctuation as part of string normalisation (William Blackie)
* Fix: Make login test helper work with user models with non-default username fields (Andrew Miller)
* Fix: Delay dirty form check to prevent "unsaved changes" warning from being wrongly triggered (Thibaud Colas)
* Fix: Make "Collection" and "Parent" form field labels translatable (Thibaud Colas)
2.5.2 (01.08.2019)
~~~~~~~~~~~~~~~~~~
* Fix: Delay dirty form check to prevent "unsaved changes" warning from being wrongly triggered (Thibaud Colas)
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 `<p>` and `<br>` 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 cancelling 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)
* Removed support for Django 1.11 (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)