forked from wagtail/wagtail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
4032 lines (3511 loc) · 321 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
=========
6.1 (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~
* Refine wording of page & collection privacy using password is a shared password and should not be used for secure content (Rohit Sharma, Jake Howard)
* Add RelatedObjectsColumn to the table UI framework (Matt Westcott)
* Reduce memory usage when rebuilding search indexes (Jake Howard)
* Support creating images in .ico format (Jake Howard)
* Add the ability to disable the usage of a shared password for enhanced security for the private pages and collections (documents) feature (Salvo Polizzi, Jake Howard)
* Add system checks to ensure that `WAGTAIL_DATE_FORMAT`, `WAGTAIL_DATETIME_FORMAT`, `WAGTAIL_TIME_FORMAT` are correctly configured (Rohit Sharma, Coen van der Kamp)
* Allow custom permissions with the same prefix as built-in permissions (Sage Abdullah)
* Allow displaying permissions linked to the Admin model's content type (Sage Abdullah)
* Add support for Draftail's JavaScript to use chooserUrls provided by entity options & for the Draftail widget to encode lazy URLs/ translations (Elhussein Almasri)
* Reimplement search promotions `IndexView` using the `generic.IndexView` (Rohit Sharma, Sage Abdullah, Storm Heg)
* Reimplement redirects `IndexView` using the `generic.IndexView` (Rohit Sharma, Sage Abdullah, Temidayo Azeez)
* Add `PageListingViewSet` for custom per-page-type page listings (Matt Westcott)
* Add `ChooseParentView` to `PageListingViewSet` to allow creating pages from custom page listings (Abdelrahman Hamada, Sage Abdullah)
* Implement new universal listings design for image listing view (Sage Abdullah)
* Implement new universal listings design for document listing view (Sage Abdullah)
* Implement new universal listings design for site and locale listing views (Sage Abdullah)
* Implement new universal listings design for page and snippet history view (Sage Abdullah)
* Implement new universal listings design for form builder submissions view (Sage Abdullah)
* Implement new universal listings design for collections listing view (Sage Abdullah)
* Implement new universal listings design for groups views (Sage Abdullah)
* Implement new universal listings design for users views (Sage Abdullah)
* Implement new universal listings design for workflow and task views (Sage Abdullah)
* Refine slim header button style to match designs (Sage Abdullah)
* Add simple admin keyboard shortcuts overview dialog, available in the help sub-menu (Karthik Ayangar, Rohit Sharma)
* Add ability to bulk toggle permissions in the user group editing view, including shift+click for multiple selections (LB (Ben) Johnston, Kalob Taulien)
* Update the minimum version of `djangorestframework` to 3.15.1 (Sage Abdullah)
* Add support for related fields in generic `IndexView.list_display` (Abdelrahman Hamada)
* Improve page fetching logic and cache route results per request (Gordon Pendleton)
* Optimise rewriting of links / embeds in rich text using bulk database lookups (Andy Chosak)
* Add normalization mechanism to StreamField so that assignments and defaults can be passed in a wider range of data types (Joshua Munn, Matt Westcott)
* Allow specifying a `STORAGES` alias name for `WAGTAILIMAGES_RENDITION_STORAGE` (Alec Baron)
* Update `PASSWORD_REQUIRED_TEMPLATE` setting to `WAGTAIL_PASSWORD_REQUIRED_TEMPLATE` with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston)
* Update `DOCUMENT_PASSWORD_REQUIRED_TEMPLATE` setting to `WAGTAILDOCS_PASSWORD_REQUIRED_TEMPLATE` with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston)
* When editing settings (contrib) use the same icon in the editing view that was declared when registering the setting (Vince Salvino, Rohit Sharma)
* Populate django-treebeard cache during page routing to improve performance of `get_parent` (Nigel van Keulen)
* Add a new user profile preference to configure user interface information density (Thibaud Colas)
* Add additional field types to Elasticsearch mapping (scott-8)
* Fix: Fix typo in `__str__` for MySQL search index (Jake Howard)
* Fix: Ensure that unit tests correctly check for migrations in all core Wagtail apps (Matt Westcott)
* Fix: Correctly handle `date` objects on `human_readable_date` template tag (Jhonatan Lopes)
* Fix: Ensure re-ordering buttons work correctly when using a nested InlinePanel (Adrien Hamraoui)
* Fix: Consistently remove model's `verbose_name` in group edit view when listing custom permissions (Sage Abdullah, Neeraj Yetheendran, Omkar Jadhav)
* Fix: Resolve issue local development of docs when running `make livehtml` (Sage Abdullah)
* Fix: Resolve issue with unwanted padding in chooser modal listings (Sage Abdullah)
* Fix: Ensure form builder emails that have date or datetime fields correctly localize dates based on the configured `LANGUAGE_CODE` (Mark Niehues)
* Fix: Ensure the Stimulus `UnsavedController` checks for nested removal/additions of inputs so that the unsaved warning shows in more valid cases when editing a page (Karthik Ayangar)
* Fix: Ensure `get_add_url()` is always used to re-render the add button when the listing is refreshed in viewsets (Sage Abdullah)
* Fix: Ensure dropdown content cannot get higher than the viewport and add scrolling within content if needed (Chiemezuo Akujobi)
* Fix: Prevent snippets model index view from crashing when a model does not have an `objects` manager (Jhonatan Lopes)
* Fix: Fix `get_dummy_request`'s resulting host name when running tests with `ALLOWED_HOSTS = ["*"]` (David Buxton)
* Fix: Fix timezone handling in the `timesince_last_update` template tag (Matt Westcott)
* Fix: Fix Postgres phrase search to respect the language set in settings (Ihar Marhitych)
* Fix: Retain query parameters when switching between locales in the page chooser (Abdelrahman Hamada, Sage Abdullah)
* Fix: Add `w-kbd-scope-value` with support for `global` so that specific keyboard shortcuts (e.g. ctrl+s/cmd+s) trigger consistently even when focused on fields (Neeraj Yetheendran)
* Fix: Improve exception handling when generating image renditions concurrently (Andy Babic)
* Fix: Respect `WAGTAIL_ALLOW_UNICODE_SLUGS` setting when auto-generating slugs (LB (Ben) Johnston)
* Docs: Add contributing development documentation on how to work with a fork of Wagtail (Nix Asteri, Dan Braghis)
* Docs: Make sure the settings panel is listed in tabbed interface examples (Tibor Leupold)
* Docs: Update content and page names to their US spelling instead of UK spelling (Victoria Poromon)
* Docs: Update broken and incorrect links throughout the documentation (EK303)
* Docs: Fix formatting of `--purge-only` in `wagtail_update_image_renditions` management command section (Pranith Beeram)
* Docs: Update template components documentation to better explain the usage of the Laces library (Tibor Leupold)
* Docs: Update Sphinx theme to `6.3.0` with a fix for the missing favicon (Sage Abdullah)
* Docs: Document risk of XSS attacks on document upload (Matt Westcott, with thanks to Georgios Roumeliotis of TwelveSec for the original report)
* Docs: Add clarity to how custom StreamField validation works (Tibor Leupold)
* Docs: Add additional reference to the `wagtail_update_image_renditions` management command on the using images page (LB (Ben) Johnston)
* Docs: Correct information about line endings in Window development docs (Sage Abdullah)
* Docs: Improve code snippets for "Create a footer for all pages" tutorial section (Drikus Roor)
* Maintenance: Move RichText HTML whitelist parser to use the faster, built in `html.parser` (Jake Howard)
* Maintenance: Remove duplicate 'path' in default_exclude_fields_in_copy (Ramchandra Shahi Thakuri)
* Maintenance: Update unit tests to always use the faster, built in `html.parser` & remove `html5lib` dependency (Jake Howard)
* Maintenance: Adjust Eslint rules for TypeScript files (Karthik Ayangar)
* Maintenance: Rename the React `Button` that only renders links (a element) to `Link` and remove unused prop & behavior that was non-compliant for aria role usage (Advik Kabra)
* Maintenance: Set up an `wagtail.models.AbstractWorkflow` model to support future customizations around workflows (Hossein)
* Maintenance: Improve `classnames` template tag to handle nested lists of strings, use template tag for admin `body` element (LB (Ben) Johnston)
* Maintenance: Merge `UploadedDocument` and `UploadedImage` into new `UploadedFile` model for easier shared code usage (Advik Kabra, Karl Hobley)
* Maintenance: Optimize queries in dashboard panels (Sage Abdullah)
* Maintenance: Optimize queries in group create/edit view (Sage Abdullah)
* Maintenance: Move modal-workflow.js script usage to base admin template instead of ad-hoc imports (Elhussein Almasri)
* Maintenance: Update all Draftail chooserUrls to be passed in via the Entity options instead of using `window.chooserUrls` globals, removing the need for inline scripts (Elhussein Almasri)
* Maintenance: Enhance `w-init` (InitController) to support a `detail` value to be dispatched on events (Chiemezuo Akujobi)
* Maintenance: Remove usage of inline scripts and instead use event dispatching to instantiate standalone Draftail editor instances (Chiemezuo Akujobi)
* Maintenance: Refactor `page_breadcrumbs` tag to use shared `breadcrumbs.html` template (Sage Abdullah)
* Maintenance: Add `keyboard` icon to admin icon set (Rohit Sharma)
* Maintenance: Remove dead code in the minimap when elements are not found (LB (Ben) Johnston)
* Maintenance: Ensure untrusted data sources are logged correctly in the Stimulus `SwapController` (LB (Ben) Johnston)
* Maintenance: Update Wagtail logo in admin sidebar & favicon plus documentation to the latest version (Osaf AliSayed, Albina Starykova, LB (Ben) Johnston)
* Maintenance: Remove usage of inline scripts and instead use a new Stimulus controller (`w-block`/`BlockController`) to instantiate `StreamField` blocks (Karthik Ayangar)
* Maintenance: Update NPM Babel, TypeScript and Webpack packages (Neeraj Yetheendran)
* Maintenance: Replace ad-hoc JavaScript and vendor Mousetrap usage to a new Stimulus controller (`w-kbd`/`KeyboardController`) (Neeraj Yetheendran)
* Maintenance: Update django-filter to 24.x (Sebastian Muthwill)
* Maintenance: Remove jQuery usage in telepath widget classes (Matt Westcott)
* Maintenance: Remove `xregexp` (IE11 polyfill) along with `window.XRegExp` global util (LB (Ben) Johnston)
* Maintenance: Refactor the Django port of `urlify` to use TypeScript, officially deprecate `window.URLify` global util (LB (Ben) Johnston)
6.0.2 (03.04.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure that modal tabs width are not impacted by side panel opening (LB (Ben) Johnston)
* Fix: Resolve issue local development of docs when running `make livehtml` (Sage Abdullah)
* Fix: Resolve issue with unwanted padding in chooser modal listings (Sage Abdullah)
* Fix: Ensure `get_add_url()` is always used to re-render the add button when the listing is refreshed in viewsets (Sage Abdullah)
* Fix: Move `modal-workflow.js` script usage to base admin template instead of ad-hoc imports so that choosers work in `ModelViewSet`s (Elhussein Almasri)
* Fix: Ensure JavaScript for common widgets such as `InlinePanel` is included by default in `ModelViewSet`'s create and edit views (Sage Abdullah)
* Fix: Reinstate styles for customizations of `extra_footer_actions` block in page create/edit templates (LB (Ben) Johnston, Sage Abdullah)
* Fix: Prevent crash when loading an empty table block in the editor (Sage Abdullah)
* Docs: Update Sphinx theme to `6.3.0` with a fix for the missing favicon (Sage Abdullah)
6.0.1 (15.02.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure `BooleanRadioSelect` uses the same styles as `RadioSelect` (Thibaud Colas)
* Fix: Prevent failure on `collectstatic` when `ManifestStaticFilesStorage` is in use (Matt Westcott)
* Fix: Prevent error on submitting an empty search in the admin under Elasticsearch (Maikel Martens)
6.0 (07.02.2024)
~~~~~~~~~~~~~~~~
* Added support for Django 5.0
* Implemented universal listings – a unified listing and filtering interface for Pages, Snippets, Forms (Ben Enright, Matt Westcott, Thibaud Colas, Sage Abdullah)
* Add the accessibility checker within the page and snippets editor (Thibaud Colas)
* Added `search_index` option to StreamField blocks to control whether the block is indexed for searching (Vedant Pandey)
* Remember previous location on returning from page add/edit actions (Robert Rollins)
* Update settings file in project settings to address Django 4.2 deprecations (Sage Abdullah)
* Improve layout and accessibility of the image URL generator page, reduce reliance on JavaScript (Temidayo Azeez)
* Allow `UniqueConstraint` in place of `unique_together` for `TranslatableMixin`'s system check (Temidayo Azeez, Sage Abdullah)
* Make use of `IndexView.get_add_url()` in snippets index view template (Christer Jensen, Sage Abdullah)
* Allow `Page.permissions_for_user()` to be overridden by specific page types (Sébastien Corbin)
* Improve visual alignment of explore icon in Page listings for longer content (Krzysztof Jeziorny)
* Add `extra_actions` blocks to Snippets and generic index templates (Bhuvnesh Sharma)
* Added page types usage report (Jhonatan Lopes)
* Add support for defining `panels` / `edit_handler` on `ModelViewSet` (Sage Abdullah)
* Use a single instance of `PagePermissionPolicy` in `wagtail.permissions` module (Sage Abdullah)
* Add max tag length validation for multiple uploads (documents/images) (Temidayo Azeez)
* Ensure expanded side panel does not overlap form content for most viewports (Chiemezuo Akujobi)
* Add ability to modify the default ordering for the page explorer view (Shlomo Markowitz)
* Remove overly verbose image captions in image listings for screen readers (Sage Abdullah)
* Ensure screen readers and dictation tools can more easily navigate bulk actions in images, documents and page listings by streamlining labels and descriptions (Sage Abdullah)
* Remove support for Safari 14 (Thibaud Colas)
* Add ability to click to copy the URL in the image URL generator page (Sai Srikar Dumpeti)
* Add ability to filter by page type and date updated in the page listing view (Matt Westcott)
* Add ability to filter by owner and site in the page listing view (Matt Westcott)
* Improve right-to-left support by using flow-relative float styles (Thibaud Colas)
* Improve right-to-left support by mirroring Wagtail icons as needed (Sage Abdullah)
* Add support for mirroring third-party icons added in Wagtail (Sage Abdullah)
* Show edit as a main action in generic history and usage views (Sage Abdullah)
* Make styles for header buttons consistent (Sage Abdullah)
* Improve styles of slim header's search and filters (Sage Abdullah)
* Change page listing's add button to icon-only (Sage Abdullah)
* Add sublabel to breadcrumbs, including history, usage, and inspect views (Sage Abdullah)
* Standardise search form placeholder to 'Search…' (Sage Abdullah)
* Use SlugInput on all SlugFields by default (LB (Ben) Johnston)
* Show character counts on RichTextBlock with `max_length` (Elhussein Almasri)
* Move locale selector in generic IndexView to a filter (Sage Abdullah)
* Add ability to customize a page's copy form (Neeraj Yetheendran)
* Add optional caption field to `TypedTableBlock` (Tommaso Amici, Cynthia Kiser)
* Switch the `TableBlock` header controls to a field that requires user input (Bhuvnesh Sharma, Aman Pandey, Cynthia Kiser)
* Add `WAGTAILADMIN_LOGIN_URL` setting to allow customizing the login URL (Neeraj Yetheendran)
* Replace legacy dropdown component with new Tippy dropdown-button (Thibaud Colas)
* Add ability to filter by existence of child pages in the page listing view (Matt Westcott)
* Polish dark theme styles and update color tokens (Thibaud Colas, Rohit Sharma)
* Keep database state of pages and snippets updated while in draft state (Stefan Hammer)
* Add `DrilldownController` and `w-drilldown` component to support drilldown menus (Thibaud Colas)
* Add support for `caption` on admin UI Table component (Aman Pandey)
* Add API support for a redirects (contrib) endpoint (Rohit Sharma, Jaap Roes, Andreas Donig)
* Add the default ability for all `SnippetViewSet` & `ModelViewSet` to support being copied (Shlomo Markowitz)
* Support dynamic Wagtail guide links in the admin that are based on the running version of Wagtail (Tidiane Dia)
* Added `AbstractGroupApprovalTask` to simplify customizing behavior of custom `Task` models (John-Scott Atlakson)
* Fix: Update system check for overwriting storage backends to recognize the `STORAGES` setting introduced in Django 4.2 (phijma-leukeleu)
* Fix: Prevent password change form from raising a validation error when browser autocomplete fills in the "Old password" field (Chiemezuo Akujobi)
* Fix: Ensure that the legacy dropdown options, when closed, do not get accidentally clicked by other interactions on wide viewports (CheesyPhoenix, Christer Jensen)
* Fix: Add a fallback background for the editing preview iframe for sites without a background (Ian Price)
* Fix: Preserve whitespace in rendered comments (Elhussein Almasri)
* Fix: Remove search logging from project template so that new projects without the search promotions module will not error (Matt Westcott)
* Fix: Ensure text-only email notifications for updated comments do not escape HTML characters (Rohit Sharma)
* Fix: Use the latest draft when copying an unpublished page for translation (Andrey Nehaychik)
* Fix: Make Workflow and Aging Pages reports only available to users with page-related permissions (Rohit Sharma)
* Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
* Fix: Use a visible border and background color to highlight active formatting in the rich text toolbar (Cassidy Pittman)
* Fix: Ensure image focal point box can be removed (Gunnar Scherf)
* Fix: Ensure that Snippets search results correctly use the `index_results.html` or `index_results_template_name` override on initial load (Stefan Hammer)
* Fix: Avoid error when attempting to moderate a page drafted by a now deleted user (Dan Braghis)
* Fix: Do not show multiple error messages when editing a Site to use existing hostname and port (Rohit Sharma)
* Fix: Avoid error when exporting Aging Pages report where a page has an empty `last_published_by_user` (Chiemezuo Akujobi)
* Fix: Ensure Page querysets support using `alias` and `specific` (Tomasz Knapik)
* Fix: Ensure workflow dashboard panels work when the page/snippet is missing (Sage Abdullah)
* Fix: Ensure `ActionController` explicitly checks for elements that allow select functionality (Nandini Arora)
* Fix: Prevent a ValueError with `FormSubmissionsPanel` on Django 5.0 when creating a new form page (Matt Westcott)
* Fix: Avoid duplicate entries in "Recent edits" panel when copying pages (Matt Westcott)
* Fix: Prevent TitleFieldPanel from raising an error when the slug field is missing or read-only (Rohit Sharma)
* Fix: Ensure that the close button on the new dialog designs is visible in the non-message variant (Nandini Arora)
* Fix: Ensure the sidebar account toggle has no duplicate accessible labels (Nandini Arora)
* Fix: Avoid text overflow issues in comment replies and scroll position issues for long comments (Rohit Sharma)
* Fix: Ensure that page listing re-ordering messages and accessible labels can be translated (Aman Pandey, LB (Ben) Johnston)
* Fix: Resolve multiple issues with page listing re-ordering using keyboard and screen readers (Aman Pandey)
* Fix: Remove 'Page' from page types filter on aging pages report (Matt Westcott)
* Fix: Prevent page types filter from showing other non-Page models that match by name (Matt Westcott)
* Fix: Ensure `MultipleChooserPanel` modal works correctly when `USE_THOUSAND_SEPARATOR` is `True` for pages with ids over 1,000 (Sankalp, Rohit Sharma)
* Fix: When using an empty table header (`th`) for visual spacing, ensure this is ignored by accessibility tooling (V Rohitansh)
* Fix: Ensure the panel anchor button sizes meet accessibility guidelines for minimum dimensions (Nandini Arora)
* Fix: Raise a 404 for bulk actions for models that don't exist instead of throwing a 500 error (Alex Tomkins)
* Fix: Raise a `SiteSetting.DoesNotExist` error when retrieving settings for an unrecognized site (Nick Smith)
* Fix: Ensure that defaulted or unique values declared in `exclude_fields_in_copy` are correctly excluded in new copies, resolving to the default value (Elhussein Almasri)
* Fix: Ensure that `default_ordering` set on IndexView is preserved if ModelViewSet does not specify an explicit ordering (Cynthia Kiser)
* Fix: Ensure that TableBlock cells are accessible when using keyboard control only (Elhussein Almasri)
* Fix: Resolve issue where clicking Publish for a Page that was in workflow in Safari would block publishing and not trigger the workflow confirmation modal (Alex Morega)
* Fix: Fix pagination links on model history and usage views (Matt Westcott)
* Fix: Fix crash when accessing workflow reports with a deleted snippet (Sage Abdullah)
* Docs: New developer tutorial (Damilola Oladele, Meagen Voss, Thibaud Colas)
* Docs: Document, for contributors, the use of translate string literals passed as arguments to tags and filters using `_()` within templates (Chiemezuo Akujobi)
* Docs: Document all features for the Documents app in one location (Neeraj Yetheendran)
* Docs: Add section to testing docs about creating pages and working with page content (Mariana Bedran Lesche)
* Docs: Add more nuance to the database recommendations in performance page (Jadesola Kareem)
* Docs: Add clarity that MultipleChooserPanel may require a chooser viewset and how the functionality is expected to work (Andy Chosak)
* Docs: Clarify where documentation build commands should be run (Nikhil S Kalburgi)
* Docs: Add missing import to tutorial BlogPage example (Salvo Polizzi)
* Docs: Update contributing guide documentation and GitHub templates to better support new contributors (Thibaud Colas)
* Docs: Add more CSS authoring guidelines (Thibaud Colas)
* Docs: Update MyST documentation parser library to 2.0.0 (Neeraj Yetheendran)
* Docs: Add documentation writing guidelines for intersphinx / external links (LB (Ben) Johnston)
* Docs: Add `Page` model reference `get_children` documentation (Salvo Polizzi)
* Docs: Enforce CI build checks for documentation so that malformed links or missing images will not be allowed (Neeraj Yetheendran)
* Docs: Update spelling on customizing admin template and page model section from British to American English (Victoria Poromon)
* Docs: Add documentation for how to override the file locations for custom image models via `get_upload_to` methods (Osaf AliSayed, Dharmik Gangani)
* Docs: Update documentation theme (Sphinx Wagtail Theme) to 6.2.0, fixing the incorrect favicon (LB (Ben) Johnston, Sahil Jangra)
* Docs: Refactor promotion banner without jQuery and use sameSite cookies when storing if cleared (LB (Ben) Johnston)
* Docs: Use cross-reference for compatible Python versions in tutorial instead of the out-of-date listing (mirusu400)
* Maintenance: Update BeautifulSoup upper bound to 4.12.x (scott-8)
* Maintenance: Migrate initialization of classes (such as `body.ready`) from multiple JavaScript implementations to one Stimulus controller `w-init` (Chiemezuo Akujobi)
* Maintenance: Adopt the usage of translate string literals using `arg=_('...')` in all `wagtailadmin` module templates (Chiemezuo Akujobi)
* Maintenance: Migrate the contrib styleguide index view to a class-based view (Chiemezuo Akujobi)
* Maintenance: Update djhtml to 3.0.6 (Matt Westcott)
* Maintenance: Migrate the contrib settings edit view to a class-based view (Chiemezuo Akujobi, Sage Abdullah)
* Maintenance: Remove django-pattern-library upper bound in testing dependencies (Sage Abdullah)
* Maintenance: Split up functions in Elasticsearch backend for easier extensibility (Marcel Kornblum, Cameron Lamb, Sam Dudley)
* Maintenance: Relax draftjs_exporter dependency to allow using version 5.x (Sylvain Fankhauser)
* Maintenance: Refine styling of listings, account settings panels and the block chooser (Meli Imelda)
* Maintenance: Remove icon font support (Matt Westcott)
* Maintenance: Remove deprecated SVG icons (Matt Westcott)
* Maintenance: Remove icon font styles (Thibaud Colas)
* Maintenance: Migrate account editing view to a class-based view (Kehinde Bobade)
* Maintenance: Upgrade frontend tooling to use Node 20 (LB (Ben) Johnston)
* Maintenance: Upgrade `ruff` and replace `black` with `ruff format` (John-Scott Atlakson)
* Maintenance: Update Willow upper bound to 2.x (Dan Braghis)
* Maintenance: Removed support for Django < 4.2 (Dan Braghis)
* Maintenance: Refactor page explorer index template to extend generic index template (Sage Abdullah)
* Maintenance: Replace template components implementation with standalone `laces` library (Tibor Leupold)
* Maintenance: Refactor snippets index view and template to make better use of generic IndexView (Sage Abdullah)
* Maintenance: Introduce an internal `{% formattedfield %}` tag to replace direct use of `wagtailadmin/shared/field.html` (Matt Westcott)
* Maintenance: Update Telepath dependency to 0.3.1 (Matt Westcott)
* Maintenance: Allow `ActionController` to have a `noop` method to more easily leverage standalone Stimulus action options (Nandini Arora)
* Maintenance: Upgrade to latest TypeScript and Storybook (Thibaud Colas, Sage Abdullah)
* Maintenance: Turn on `skipLibCheck` for TypeScript (LB (Ben) Johnston)
* Maintenance: Refactor documents listing view to use generic IndexView (Sage Abdullah)
* Maintenance: Support for the Stimulus `CloneController` to auto clear the added content after a set duration (LB (Ben) Johnston)
* Maintenance: Refactor images listing view to use generic IndexView (Sage Abdullah)
* Maintenance: Refactor form pages listing view to use generic IndexView (Sage Abdullah)
* Maintenance: Update Stylelint, our linting configuration, Sass, and related code changes (LB (Ben) Johnston)
* Maintenance: Simplify browserslist and browser support documentation (Thibaud Colas)
* Maintenance: Relax django-taggit dependency to allow 5.0 (Sylvain Fankhauser)
* Maintenance: Fix various warnings when building docs (Cynthia Kiser)
* Maintenance: Upgrade sphinxcontrib-spelling to 7.x for Python 3.12 compatibility (Matt Westcott)
* Maintenance: Move logic for django-filters filtering into `BaseListingView` (Matt Westcott)
* Maintenance: Remove or replace legacy CSS classes: visuallyhidden, visuallyvisible, divider-after, divider-before, inline, inline-block, block, u-hidden, clearfix, reordering, overflow (Thibaud Colas)
* Maintenance: Prevent future issues with icon.html end-of-file newlines (Thibaud Colas)
* Maintenance: Rewrite styles using legacy `c-`, `o-`, `u-`, `t-`, `is-` prefixes (Thibaud Colas)
* Maintenance: Remove invalid CSS styles / Sass selector concatenation (Thibaud Colas)
* Maintenance: Refactor listing views to share more queryset ordering logic (Matt Westcott)
* Maintenance: Remove `initTooltips` in favor of Stimulus controller (LB (Ben) Johnston)
* Maintenance: Enhance the Stimulus `InitController` to allow for custom event dispatching when ready (Aditya, LB (Ben) Johnston)
* Maintenance: Remove inline script usage for comment initialization and adopt an event listener/dispatch approach for better CSP compliance (Aditya, LB (Ben) Johnston)
* Maintenance: Migrate styleguide ad-hoc JavaScript to use styles only to avoid CSP issues (LB (Ben) Johnston)
* Maintenance: Update Jest version - frontend tooling (Nandini Arora)
* Maintenance: Remove non-functional and inaccessible auto-focus on first field in page create forms (LB (Ben) Johnston)
* Maintenance: Migrate the unsaved form checks & confirmation trigger to Stimulus `UnsavedController` (Sai Srikar Dumpeti, LB (Ben) Johnston)
* Maintenance: Reduce gap between snippets and generic views/templates (Sage Abdullah)
* Maintenance: Migrate page listing menu re-ordering (drag & drop) from jQuery inline scripts to `OrderableController` with a more accessible solution (Aman Pandey, LB (Ben) Johnston)
* Maintenance: Clean up scss variable usage, remove unused variables and mixins, adopt more core token variables (Jai Vignesh J, Nandini Arora, LB (Ben) Johnston)
* Maintenance: Migrate Image URL generator views to class-based views (Rohit Sharma)
* Maintenance: Use Django's `FileResponse` when serving files such as Images or Documents (Jake Howard)
* Maintenance: Deprecated `WidgetWithScript` base widget class (LB (Ben) Johnston)
* Maintenance: Remove support for Django 4.1 and below (Sage Abdullah)
5.2.4 (03.04.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent TitleFieldPanel from raising an error when the slug field is missing or read-only (Rohit Sharma)
* Fix: Fix pagination links on model history and usage views (Matt Westcott)
* Fix: Fix crash when accessing workflow reports with a deleted snippet (Sage Abdullah)
* Fix: Prevent error on submitting an empty search in the admin under Elasticsearch (Maikel Martens)
5.2.3 (23.01.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent a ValueError with `FormSubmissionsPanel` on Django 5.0 when creating a new form page (Matt Westcott)
* Fix: Specify telepath 0.3.1 as the minimum supported version, for Django 5.0 compatibility (Matt Westcott)
5.2.2 (06.12.2023)
~~~~~~~~~~~~~~~~~~
* Added support for Django 5.0
* Fix: Use a visible border and background color to highlight active formatting in the rich text toolbar (Cassidy Pittman)
* Fix: Ensure image focal point box can be removed (Gunnar Scherf)
* Fix: Ensure that Snippets search results correctly use the `index_results.html` or `index_results_template_name` override on initial load (Stefan Hammer)
* Fix: Avoid error when attempting to moderate a page drafted by a now deleted user (Dan Braghis)
* Fix: Ensure workflow dashboard panels work when the page/snippet is missing (Sage Abdullah)
* Fix: Prevent custom controls from stacking on top of the comment button in Draftail toolbar (Ben Morse)
5.2.1 (16.11.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Add a fallback background for the editing preview iframe for sites without a background (Ian Price)
* Fix: Remove search logging from project template so that new projects without the search promotions module will not error (Matt Westcott)
* Fix: Ensure text only email notifications for updated comments do not escape HTML characters (Rohit Sharma)
* Fix: Use logical OR operator to combine search fields for Django ORM in generic IndexView (Varun Kumar)
* Fix: Ensure that explorer_results views fill in the correct next_url parameter on action URLs (Matt Westcott)
* Fix: Fix crash when accessing the history view for a translatable snippet (Sage Abdullah)
* Fix: Prevent upload of SVG images from failing when image feature detection is enabled (Joshua Munn)
* Fix: Fix crash when using the locale switcher on the snippets create view (Sage Abdullah)
* Fix: Fix performance regression on reports from calling `decorate_paginated_queryset` before pagination / filtering (Alex Tomkins)
* Fix: Make searching on specific fields work correctly on Elasticsearch when boost is in use (Matt Westcott)
* Fix: Prevent snippet permission post-migrate hook from failing on multiple database configurations (Joe Tsoi)
* Fix: Reinstate ability to filter on page type when searching on an empty query (Sage Abdullah)
* Fix: Prevent error on locked pages report when a user has locked multiple pages (Matt Westcott)
* Docs: Fix code example for `{% picture ... as ... %}` template tag (Rezyapkin)
5.2 LTS (01.11.2023)
~~~~~~~~~~~~~~~~~~~~
* Redesigned page listing view (Ben Enright, Matt Westcott, Thibaud Colas, Sage Abdullah)
* Support OpenSearch as an alternative to Elasticsearch (Matt Westcott)
* Add support for Python 3.12 (Matt Westcott)
* Add preview-aware and page-aware fragment caching template tags, `wagtailcache` & `wagtailpagecache` (Jake Howard)
* Always set help text element ID for form fields with help text in `field.html` template (Sage Abdullah)
* Move `SnippetViewSet` menu registration mechanism to base `ViewSet` class (Sage Abdullah)
* Enable reference index tracking for models registered with `ModelViewSet` (Sage Abdullah)
* When copying a page or creating an alias, copy its view restrictions to the destination (Sandeep Choudhary, Suyash Singh)
* Support pickling of StreamField values (pySilver)
* Move `SnippetViewSet` template override mechanism to `ModelViewSet` (Sage Abdullah)
* Move `SnippetViewSet.list_display` to `ModelViewSet` (Sage Abdullah)
* Remove `wagtail.publish` log action on aliases when they are created from live source pages or the source page is published (Dan Braghis)
* Remove `wagtail.unpublish` log action on aliases when source page is unpublished (Dan Braghis)
* Add compare buttons to workflow dashboard panel (Matt Westcott)
* Add the ability to use filters and to export listings in generic `IndexView` (Sage Abdullah)
* Move `list_filter`, `filterset_class`, `search_fields`, `search_backend_name`, `list_export`, `export_filename`, `list_per_page`, and `ordering` from `SnippetViewSet` to `ModelViewSet` (Sage Abdullah, Cynthia Kiser)
* Add default header titles to generic `IndexView` and `CreateView` (Sage Abdullah)
* Allow overriding `IndexView.export_headings` via `ModelViewSet` (Christer Jensen, Sage Abdullah)
* Support specifying a `get_object_list` method on `ChooserViewSet` (Matt Westcott)
* Add `linked_fields` mechanism on chooser widgets to allow choices to be limited by fields on the calling page (Matt Westcott)
* Add support for merging cells within `TableBlock` with the `mergedCells` option (Gareth Palmer)
* When adding a panel within `InlinePanel`, focus will now shift to that content similar to `StreamField` (Faishal Manzar)
* Show the full first published at date within a tooltip on the Page status sidebar on the relative date (Rohit Sharma)
* Extract generic breadcrumbs functionality from page breadcrumbs (Sage Abdullah)
* Add support for `placement` in the `human_readable_date` tooltip template tag (Rohit Sharma)
* Add breadcrumbs support to custom `ModelViewSet` views (Sage Abdullah)
* Support passing extra context variables via the `{% component %}` tag (Matt Westcott)
* Allow subclasses of `PagesAPIViewSet` override default Page model via the `model` attribute (Neeraj Yetheendran, Herbert Poul)
* Allow `ModelViewSet` to be used with models that have non-integer primary keys (Sage Abdullah)
* Add the ability to set an external link/text for promoted search result entries (TopDevPros, Brad Busenius)
* Add support for subject and body in the Email link chooser form (TopDevPros, Alexandre Joly)
* Extract generic `HistoryView` from snippets and add it to `ModelViewSet` (Sage Abdullah)
* Add generic `UsageView` to `ModelViewSet` (Sage Abdullah)
* Add the ability to define listing buttons on generic `IndexView` (Sage Abdullah)
* Add a visual progress bar to the output of the `wagtail_update_image_renditions` management command (Faishal Manzar)
* Increase the read buffer size to improve efficiency and performance when generating file hashes for document or image uploads, use `hashlib.file_digest` if available (Python 3.11+) (Jake Howard)
* API ordering now supports multiple fields (Rohit Sharma, Jake Howard)
* Pass block value to `Block.get_template` to allow varying template based on value (Florian Delizy)
* Add `InlinePanel` DOM events for when ready and when items added or removed (Faishal Manzar)
* Add a new `picture` template tag for Django Templates and Jinja (Thibaud Colas)
* Add a new `srcset_image` template tag for Django Templates and Jinja (Thibaud Colas)
* Support `Filter` instances as input for `AbstractImage.get_renditions()` (Thibaud Colas)
* Improve error messages for image template tags (Thibaud Colas)
* Do not render minimap if there are no panel anchors (Sage Abdullah)
* Use dropdown buttons on listings in dashboard panels (Sage Abdullah)
* Implement breadcrumbs design refinements (Thibaud Colas)
* Support extending Wagtail client-side with Stimulus (LB (Ben) Johnston)
* Update all `FieldPanel('title')` examples to use the recommended `TitleFieldPanel('title')` panel (Chinedu Ihedioha)
* The `purge_revisions` management command now respects revisions that have a `on_delete=PROTECT` foreign key relation and won't delete them (Neeraj P Yetheendran, Meghana Reddy, Sage Abdullah, Storm Heg)
* Add support for Shift + Click behaviour in form submissions and simple translations submissions (LB (Ben) Johnston)
* Improve filtering of audit logging based on the user's permissions (Stefan Hammer)
* Fix: Ensure that StreamField's `FieldBlock`s correctly set the `required` and `aria-describedby` attributes (Storm Heg)
* Fix: Avoid an error when the moderation panel (admin dashboard) contains both snippets and private pages (Matt Westcott)
* Fix: When deleting collections, ensure the collection name is correctly shown in the success message (LB (Ben) Johnston)
* Fix: Filter out comments on Page editing counts that do not correspond to a valid field / block path on the page such as when a field has been removed (Matt Westcott)
* Fix: Allow `PublishMenuItem` to more easily support overriding its label via `construct_page_action_menu` (Sébastien Corbin)
* Fix: Allow locale selection when creating a page at the root level (Sage Abdullah)
* Fix: Ensure the admin login template correctly displays all `non_fields_errors` for any custom form validation (Sébastien Corbin)
* Fix: Ensure 'mark as active' label in workflow bulk action set active form can be translated (Rohit Sharma)
* Fix: Ensure the panel title for a user's settings correctly reflects the `WAGTAIL_EMAIL_MANAGEMENT_ENABLED` setting by not showing 'email' if disabled (Omkar Jadhav)
* Fix: Update Spotify oEmbed provider URL parsing to resolve correctly (Dhrűv)
* Fix: Update link colors within help blocks to meet accessible contrast requirements (Rohit Sharma)
* Fix: Ensure the search promotions popular search terms picker correctly refers to the correct model (LB (Ben) Johnston)
* Fix: Correctly quote non-numeric primary keys on snippet inspect view (Sage Abdullah)
* Fix: Prevent crash on snippet inspect view when displaying a null foreign key to an image (Sage Abdullah)
* Fix: Ensure that pages in moderation show as "Live + In Moderation" in the page explorer rather than "Live + Draft" (Sage Abdullah)
* Fix: Prevent error when updating reference index for objects with a lazy ParentalKey-related object (Chris Shaw)
* Fix: Ignore conflicts when inserting reference index entries to prevent race conditions causing uniqueness errors (Chris Shaw)
* Fix: Populate the correct return value when creating a new snippet within the snippet chooser (claudobahn)
* Fix: Reinstate missing filter by page type on page search (Matt Westcott)
* Fix: Ensure very long words can wrap when viewing saved comments (Chiemezuo Akujobi)
* Fix: Avoid forgotten password link text conflicting with the supplied aria-label (Thibaud Colas)
* Fix: Fix log message to record the correct restriction type when removing a page view restriction (Rohit Sharma, Hazh. M. Adam)
* Fix: Avoid potential race condition with new Page subscriptions on the edit view (Alex Tomkins)
* Fix: Use the correct action log when creating a redirect (Thibaud Colas)
* Fix: Ensure that all password fields consistently allow leading & trailing whitespace (Neeraj P Yetheendran)
* Docs: Expand documentation on using `ViewSet` and `ModelViewSet` (Sage Abdullah)
* Docs: Document `WAGTAILADMIN_BASE_URL` on "Integrating Wagtail into a Django project" page (Shreshth Srivastava)
* Docs: Replace incorrect screenshot for authors listing on tutorial (Shreshth Srivastava)
* Docs: Add documentation for building non-model-based choosers using the _queryish_ library (Matt Westcott)
* Docs: Fix incorrect tag library import on focal points example (Hatim Makki Hoho)
* Docs: Add reminder about including your custom Draftail feature in any overridden `WAGTAILADMIN_RICH_TEXT_EDITORS` setting (Charlie Sue)
* Docs: Mention the need to install `python3-venv` on Ubuntu (Brian Mugo)
* Docs: Document the use of the Google developer documentation style guide in documentation (Damilola Oladele)
* Docs: Fix Inconsistent URL Format in Getting Started tutorial (Olumide Micheal)
* Maintenance: Fix snippet search test to work on non-fallback database backends (Matt Westcott)
* Maintenance: Update Eslint, Prettier, Jest, a11y-dialog, axe-core and js-cookie npm packages (LB (Ben) Johnston)
* Maintenance: Add npm scripts for TypeScript checks and formatting SCSS files (LB (Ben) Johnston)
* Maintenance: Run tests in parallel in some of the CI setup (Sage Abdullah)
* Maintenance: Remove unused WorkflowStatus view, urlpattern, and workflow-status.js (Storm Heg)
* Maintenance: Add support for options/attrs in Telepath widgets so that attrs render on the created DOM (Storm Heg)
* Maintenance: Update pre-commit hooks to be in sync with latest changes to Eslint & Prettier for client-side changes (Storm Heg)
* Maintenance: Add `WagtailTestUtils.get_soup()` method for testing HTML content (Storm Heg, Sage Abdullah)
* Maintenance: Allow `ViewSet` subclasses to customize `url_prefix` and `url_namespace` logic (Matt Westcott)
* Maintenance: Simplify `SnippetViewSet` registration code (Sage Abdullah)
* Maintenance: Rename groups `IndexView.results_template_name` to `results.html` (Sage Abdullah)
* Maintenance: Migrate form submission listing checkbox toggling to the shared `w-bulk` Stimulus implementation (LB (Ben) Johnston)
* Maintenance: Allow viewsets to define a common set of view kwargs (Matt Westcott)
* Maintenance: Migrate the editor unsaved messages popup to be driven by Stimulus using the shared `w-message` controller (LB (Ben) Johnston, Hussain Saherwala)
* Maintenance: Do not use jest inside `stubs.js` to prevent Storybook from crashing (LB (Ben) Johnston)
* Maintenance: Refactor snippets templates to reuse the shared `slim_header.html` template (Sage Abdullah)
* Maintenance: Refactor `slim_header.html` template to reduce code duplication (Sage Abdullah)
* Maintenance: Upgrade Willow to v1.6.2 to support MIME type data without reliance on `imghdr` (Jake Howard)
* Maintenance: Replace `imghdr` with Willow's built-in MIME type detection (Jake Howard)
* Maintenance: Migrate all other `data-tippy` HTML attribute usage to the Stimulus data-*-value attributes for w-tooltip & w-dropdown (Subhajit Ghosh, LB (Ben) Johnston)
* Maintenance: Replace `@total_ordering` usage with comparison functions implementation (Virag Jain)
* Maintenance: Replace `<script type="text/django-form-template"><-/script>` template approach with HTML `template` elements in InlinePanel and expanding formset (Mansi Gundre, Subhajit Ghosh, LB (Ben) Johnston)
* Maintenance: Refactor side panels code for better reuse in pages and snippets (Sage Abdullah)
* Maintenance: Deprecate legacy URL redirects in `ModelViewSet` and `SnippetViewSet` (Sage Abdullah)
* Maintenance: Simplify code for registering page listing action buttons (Matt Westcott)
* Maintenance: Removed the unused, legacy, Wagtail userbar views set up for an old iframe approach (Sage Abdullah)
* Maintenance: Optimise `lru_cache` usage (Jake Howard)
* Maintenance: Implement `date_since` in `get_most_popular` inside `search_promotions.models.Query` (TopDevPros)
* Maintenance: Refactor generic view subclasses to better reuse the generic templates and breadcrumbs (Sage Abdullah)
* Maintenance: Adopt consistent `classname` (not `classnames`) attributes for all `MenuItem` usage, including deprecation warnings (LB (Ben) Johnston)
* Maintenance: Adopt consistent `classname` (not `classnames`) attribute within the `wagtail.images.formats.Format` instance, including deprecation warnings (LB (Ben) Johnston)
* Maintenance: Deprecate `context` argument of `construct_snippet_listing_buttons` hook (Sage Abdullah)
* Maintenance: Deprecate legacy moderation system (Sage Abdullah)
* Maintenance: Update CI database versions (Jake Howard)
* Maintenance: Add changelog and issue tracker links to the PyPI project page (Panagiotis H.M. Issaris)
* Maintenance: Add better deprecation warnings to the `search.Query` & `search.QueryDailyHits` model, move final set of templates from the admin search module to the search promotions contrib module (LB (Ben) Johnston)
* Maintenance: Add generic `InspectView` to `ModelViewSet` (Sage Abdullah)
* Maintenance: Migrate select all on focus/click behavior to Stimulus, used on the image URL generator (Chiemezuo Akujobi)
* Maintenance: Add support for a `reset` method to support Stimulus driven dynamic field resets via the `w-action` controller (Chiemezuo Akujobi)
* Maintenance: Add support for a `notify` target on the Stimulus dialog for dispatching events internally (Chiemezuo Akujobi)
* Maintenance: Migrate publishing schedule dialog field resets to Stimulus (Chiemezuo Akujobi)
5.1.3 (19.10.2023)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2023-45809: Disclosure of user names via admin bulk action views (Matt Westcott)
* Fix: Fix `SnippetBulkAction` not respecting `models` definition (Sandro Rodrigues)
* Fix: Correctly quote non-numeric primary keys on snippet inspect view (Sage Abdullah)
* Fix: Prevent crash on snippet inspect view when displaying a null foreign key to an image (Sage Abdullah)
* Fix: Populate the correct return value when creating a new snippet within the snippet chooser (claudobahn)
* Fix: Reinstate missing filter by page type on page search (Matt Westcott)
* Fix: Use the correct action log when creating a redirect (Thibaud Colas)
5.1.2 (25.09.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Avoid use of `ignore_conflicts` when creating extra permissions for snippets, for SQL Server compatibility (Sage Abdullah)
* Fix: Ensure sequence on `wagtailsearchpromotions_query` table is correctly set after migrating data (Jake Howard)
* Fix: Change spreadsheet export headings to match listing view column headings (Christer Jensen, Sage Abdullah)
* Fix: Fix numbers, booleans, and `None` from being exported as strings (Christer Jensen)
* Fix: Restore fallback on full-word search for snippet choosers and generic index views (Matt Westcott)
* Fix: Restore compatibility with pre-7.15 versions of the Elasticsearch Python library, allowing use of Opensearch (Matt Westcott)
* Fix: Fix error when pickling BaseSiteSetting instances (Matt Westcott)
* Maintenance: For Python 3.13 support - upgrade Willow to v1.6.2, replace `imghdr` with Willow's built-in MIME type detection (Jake Howard)
5.1.1 (14.08.2023)
~~~~~~~~~~~~~~~~~~
* Introduce `wagtail.admin.ui.tables.BooleanColumn` to display boolean values as icons (Sage Abdullah)
* Fix: Show not-`None` falsy values instead of blank in generic table cell template (Sage Abdullah)
* Fix: Fix `read_only` panels for fields with translatable choice labels (Florent Lebreton)
5.1 (01.08.2023)
~~~~~~~~~~~~~~~~
* Add support for read-only FieldPanels (Andy Babic)
* Add support for query-time boosting to Elasticsearch 6 and above (Shohan Dutta Roy)
* Add support for Elasticsearch 8 (Matt Westcott, Wesley van Lee)
* Mark calls to `md5` as not being used for secure purposes, to avoid flagging on FIPS-mode systems (Sean Kelly)
* Return filters from `parse_query_string` as a `QueryDict` to support multiple values (Aman Pandey)
* Explicitly specify `MenuItem.name` for all admin menu and submenu items (Justin Koestinger)
* Add oEmbed provider patterns for YouTube Shorts and YouTube Live URLs (valnuro, Fabien Le Frapper)
* Add initial implementation of `PagePermissionPolicy` (Sage Abdullah)
* Refactor `UserPagePermissionsProxy` and `PagePermissionTester` to use `PagePermissionPolicy` (Sage Abdullah, Tidiane Dia)
* Add a predictable default ordering of the "Object/Other permissions" in the Group Editing view, allow this ordering to be customized (Daniel Kirkham)
* Add `AbstractImage.get_renditions()` for efficient generation of multiple renditions (Andy Babic)
* Optimise queries in collection permission policies using cache on the user object (Sage Abdullah)
* Phone numbers entered via a link chooser will now have any spaces stripped out, ensuring a valid href="tel:..." attribute (Sahil Jangra)
* Auto-select the `StreamField` block when only one block type is declared (Sébastien Corbin)
* Add support for more advanced Draftail customization APIs (Thibaud Colas)
* Add the ability to export snippets listing via `SnippetViewSet.list_export` (Sage Abdullah)
* Add support for adding HTML `attrs` on `FieldPanel`, `FieldRowPanel`, `MultiFieldPanel`, and others (Aman Pandey, Antoni Martyniuk, LB (Ben) Johnston)
* Add support for `--template` option to `wagtail start` (Thibaud Colas)
* Change to always cache renditions (Jake Howard)
* Update link/document rich text tooltips for consistency with the inline toolbar (Albina Starykova)
* Increase the contrast between the rich text / StreamField block picker and the page in dark mode (Albina Starykova)
* Purge revisions of non-page models in `purge_revisions` command (Sage Abdullah)
* Add support for AVIF images (Aman Pandey)
* Change the default WebP quality to 80 to match AVIF (Aman Pandey)
* Adopt optimized Wagtail logo in the admin interface (Albina Starykova)
* Add support for presenting the userbar (Wagtail button) in dark mode (Albina Starykova)
* Add Inspect view to snippets (Sage Abdullah)
* Fix: Prevent choosers from failing when initial value is an unrecognized ID, e.g. when moving a page from a location where `parent_page_types` would disallow it (Dan Braghis)
* Fix: Move comment notifications toggle to the comments side panel (Sage Abdullah)
* Fix: Remove comment button on InlinePanel fields (Sage Abdullah)
* Fix: Fix missing link to `UsageView` from `EditView` for snippets (Christer Jensen)
* Fix: Prevent lowercase conversions of IndexView column headers (Virag Jain)
* Fix: Ensure that `RichText` objects with the same values compare as equal (NikilTn)
* Fix: Use `gettext_lazy` on generic model views so that language settings are correctly used (Matt Westcott)
* Fix: Prevent JS error when reverting the spinner on a submit button after a validation error (LB (Ben) Johnston)
* Fix: Prevent crash when comparing page revisions that include `MultipleChooserPanel` (Matt Westcott)
* Fix: Ensure that title and slug continue syncing after entering non-URL-safe characters (LB (Ben) Johnston)
* Fix: Ensure that title and slug are synced on keypress, not just on blur (LB (Ben) Johnston)
* Fix: Add a more visible active state for side panel toggle buttons (Thibaud Colas)
* Fix: Debounce and optimise live preview panel to prevent excessive requests (Sage Abdullah)
* Fix: Use constant-time comparison for image serve URL signatures (Jake Howard)
* Fix: Ensure taggit field type-ahead options show correctly in the dark mode theme (Sage Abdullah)
* Fix: Fix the lock description message missing the model_name variable when locked only by system (Sébastien Corbin)
* Fix: Fix empty blocks created in migration operations (Sandil Ranasinghe)
* Fix: Ensure that gettext_lazy works correctly when using verbose_name on a generic Settings models (Sébastien Corbin)
* Fix: Remove unnecessary usage of `innerHTML` when modifying DOM content (LB (Ben) Johnston)
* Fix: Avoid `ValueError` when extending `PagesAPIViewSet` and setting `meta_fields` to an empty list (Henry Harutyunyan, Alex Morega)
* Fix: Improve accessibility for header search, remove autofocus on page load, advise screen readers that content has changed when results update (LB (Ben) Johnston)
* Fix: Fix incorrect override of `PagePermissionHelper.user_can_unpublish_obj()` in ModelAdmin (Sébastien Corbin)
* Fix: Prevent memory exhaustion when updating a large number of image renditions (Jake Howard)
* Fix: Add missing Time Zone conversions and date formatting throughout the admin (Stefan Hammer)
* Fix: Ensure that audit logs and revisions consistently use UTC and add migration for existing entries (Stefan Hammer)
* Fix: Make sure "critical" buttons have enough color contrast in dark mode (Albina Starykova)
* Fix: Improve visibility of scheduled publishing errors in status side panel (Sage Abdullah)
* Fix: Prevent 'choose' permission from being ignored when looking up 'choose', 'edit' and 'delete' permissions in combination (Sage Abdullah)
* Fix: Take user's permissions into account for image / document counts on the admin dashboard (Sage Abdullah)
* Fix: Avoid N+1 queries in users index view (Tidiane Dia)
* Fix: Use a theme-agnostic color token for read-only panels support in dark mode (Thibaud Colas)
* Fix: Ensure collapsible StreamBlocks expand as necessary to show validation errors (Storm Heg)
* Fix: Ensure userbar dialog can sit above other website content (LB (Ben) Johnston)
* Fix: Fix preview panel loading issues (Sage Abdullah)
* Fix: Fix `search_promotions` `0004_copy_queries` migration for long-lived Wagtail instances (Sage Abdullah)
* Fix: Guard against `TypeError` in `0088_fix_log_entry_json_timestamps` migration (Sage Abdullah)
* Fix: Add migration to replace JSON null values with empty objects in log entries' data (Sage Abdullah)
* Fix: Typo in the `page_header_buttons` template tag when accessing the context's request object (Robert Rollins)
* Fix: Ensure `ActionController` explicitly checks for elements that allow select functionality (Nandini Arora)
* Docs: Document how to add non-ModelAdmin views to a `ModelAdminGroup` (Onno Timmerman)
* Docs: Document how to add StructBlock data to a StreamField (Ramon Wenger)
* Docs: Update ReadTheDocs settings to v2 to resolve urllib3 issue in linkcheck extension (Thibaud Colas)
* Docs: Update documentation for `log_action` parameter on `RevisionMixin.save_revision` (Christer Jensen)
* Docs: Reorganise snippets documentation to cover customizations and optional features (Sage Abdullah)
* Docs: Update color customizations guidance to include theme-agnostic options (Thibaud Colas)
* Docs: Mark LTS releases in release note page titles (Thiago C. S. Tioma)
* Docs: Revise main Getting started tutorial for clarity (Kevin Chung (kev-odin))
* Docs: Revamp the start of the getting started section, with separate quick install page (Damilola Oladele)
* Docs: Move the tutorial’s snippets section to come before tags (Damilola Oladele)
* Docs: Rewrite the getting started tutorial to address identified friction points (Damilola Oladele)
* Docs: Switch the Getting started tutorial’s snippets example to be more understandable (Damilola Oladele)
* Docs: Update the deployment documentation page and remove outdated information (Jake Howard)
* Docs: Add more items to performance page regarding pre-fetching images and frontend caching (Jake Howard)
* Docs: Add docs for managing stored queries in `searchpromotions` (Scott Foster)
* Docs: Add docs for migrating from ModelAdmin to Snippets (Sage Abdullah)
* Maintenance: Removed support for Python 3.7 (Dan Braghis)
* Maintenance: Switch to ruff for flake8 / isort code checking (Oliver Parker)
* Maintenance: Deprecate `insert_editor_css` in favour of `insert_global_admin_css` (Ester Beltrami)
* Maintenance: Optimise use of `specific` on Task and TaskState (Matt Westcott)
* Maintenance: Use table UI component for workflow task index view (Matt Westcott)
* Maintenance: Make header search available on generic index view (Matt Westcott)
* Maintenance: Update pagination behaviour to reject out-of-range / invalid page numbers (Matt Westcott)
* Maintenance: Remove color tokens which are duplicates / unused (Thibaud Colas)
* Maintenance: Add tests to help with maintenance of theme color tokens (Thibaud Colas)
* Maintenance: Split out a base listing view from generic index view (Matt Westcott)
* Maintenance: Update type hints in admin/ui/components.py so that `parent_context` is mutable (Andreas Nüßlein)
* Maintenance: Deprecate `UserPagePermissionsProxy` (Sage Abdullah)
* Maintenance: Optimise the Settings context processor to avoid redundantly finding a Site to improve cache ratios (Jake Howard)
* Maintenance: Convert page listing to a class-based view (Matt Westcott)
* Maintenance: Clean up page reports and type usage views to be independent of page listing views (Matt Westcott)
* Maintenance: Migrate Tagit initialization to a Stimulus Controller (LB (Ben) Johnston)
* Maintenance: Refactor GroupPagePermission to use Django's Permission model (Sage Abdullah)
* Maintenance: Convert the CONTRIBUTORS file to Markdown (Dan Braghis)
* Maintenance: Move `django-filter` version upper bound to v23 (Yuekui)
* Maintenance: Update Pillow dependency to allow 10.x, only include support for >= 9.1.0 (Yuekui)
* Maintenance: Migrate async header search and search within the Task chooser modal to `w-swap`, a Stimulus controller (LB (Ben) Johnston)
* Maintenance: Replace Bootstrap tooltips with a new `w-tooltip` Stimulus controller (LB (Ben) Johnston)
* Maintenance: Replace ModelAdmin history header human readable date template tag (LB (Ben) Johnston)
* Maintenance: Update uuid to v9 and Jest to v29, with `jest-environment-jsdom` and new snapshot format (LB (Ben) Johnston)
* Maintenance: Update test cases producing undesirable console output due to missing mocks, uncaught errors, warnings (LB (Ben) Johnston)
* Maintenance: Remove unused snippets _header_with_history.html template (Thibaud Colas)
* Maintenance: Migrate dialog instantiation to a new `w-dialog` Stimulus controller (Loveth Omokaro, LB (Ben) Johnston)
* Maintenance: Support dialog template cloning using a new `w-teleport` Stimulus controller (Loveth Omokaro, LB (Ben) Johnston)
* Maintenance: Migrate away from using the `"wagtailadmin/shared/field_as_li.html"` template include (Storm Heg)
* Maintenance: Deprecate `wagtail.contrib.modeladmin` (Sage Abdullah)
* Maintenance: Upgrade documentation theme `sphinx_wagtail_theme` to v6.1.1 which includes multiple styling fixes and always visible code copy buttons (LB (Ben) Johnston)
* Maintenance: Don't update the reference index while deleting it (Andy Chosak)
* Maintenance: Allow `ActionController` to have a `noop` method to more easily leverage standalone Stimulus action options (Nandini Arora)
5.0.5 (19.10.2023)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2023-45809: Disclosure of user names via admin bulk action views (Matt Westcott)
5.0.4 (04.10.2023)
~~~~~~~~~~~~~~~~~~
* Maintenance: Relax Willow / Pillow dependency to allow use of current Pillow versions with security fixes (Dan Braghis)
5.0.3 (25.09.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Avoid use of `ignore_conflicts` when creating extra permissions for snippets, for SQL Server compatibility (Sage Abdullah)
* Fix: Ensure sequence on `wagtailsearchpromotions_query` table is correctly set after migrating data (Jake Howard)
* Fix: Update Pillow dependency to 9.1.0 (Daniel Kirkham)
5.0.2 (21.06.2023)
~~~~~~~~~~~~~~~~~~
* Added `TitleFieldPanel` to support title / slug field synchronization (LB (Ben) Johnston)
* Fix: Prevent JS error when reverting the spinner on a submit button after a validation error (LB (Ben) Johnston)
* Fix: Prevent crash when comparing page revisions that include `MultipleChooserPanel` (Matt Westcott)
* Fix: Ensure that title and slug continue syncing after entering non-URL-safe characters (LB (Ben) Johnston)
* Fix: Ensure that title and slug are synced on keypress, not just on blur (LB (Ben) Johnston)
* Fix: Add a more visible active state for side panel toggle buttons (Thibaud Colas)
* Fix: Use custom dark theme colors for revision comparisons (Thibaud Colas)
5.0.1 (25.05.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Rectify previous fix for TableBlock becoming uneditable after save (Sage Abdullah)
* Fix: Ensure that copying page correctly picks up the latest revision (Matt Westcott)
* Fix: Ensure comment buttons always respect `WAGTAILADMIN_COMMENTS_ENABLED` (Thibaud Colas)
* Fix: Fix error when deleting a single snippet through the bulk actions interface (Sage Abdullah)
* Fix: Pass the correct `for_update` value for `get_form_class` in `SnippetViewSet` edit views (Sage Abdullah)
* Fix: Move comment notifications toggle to the comments side panel (Sage Abdullah)
* Fix: Remove comment button on InlinePanel fields (Sage Abdullah)
* Fix: Fix missing link to `UsageView` from `EditView` for snippets (Christer Jensen)
* Fix: Prevent lowercase conversions of IndexView column headers (Virag Jain)
* Fix: Fix various color issues in dark mode (Thibaud Colas)
* Docs: Update documentation for `log_action` parameter on `RevisionMixin.save_revision` (Christer Jensen)
5.0 (02.05.2023)
~~~~~~~~~~~~~~~~
* Added support for Django 4.2
* Object usage information on deleting objects (Sage Abdullah)
* Support for SVG images (Joshua Munn, with sponsorship from YouGov)
* Custom validation support for StreamField (Matt Westcott)
* Add `WAGTAILIMAGES_EXTENSIONS` setting to restrict image uploads to specific file types (Aman Pandey, Ananjan-R)
* Update user list column level to `Access level` to be easier to understand (Vallabh Tiwari)
* Migrate `.button-longrunning` behavior to a Stimulus controller with support for custom label element & duration (Loveth Omokaro)
* Implement new simplified userbar designs (Albina Starykova)
* Add more Axe rules to the accessibility checker (Albina Starykova)
* Sort accessibility checker results by position on the page (Albina Starykova)
* Highlight elements with errors in accessibility checker (Albina Starykova)
* Add usage view for pages (Sage Abdullah)
* Copy page form now updates the slug field dynamically with a slugified value on blur (Loveth Omokaro)
* Ensure selected collection is kept when navigating from documents or images listings to add multiple views & upon upload (Aman Pandey, Bojan Mihelac)
* Keep applied filters when downloading form submissions (Suyash Srivastava)
* Messages added dynamically via JavaScript now have an icon to be consistent with those supplied in the page's HTML (Aman Pandey)
* Switch lock/unlock side panel toggle to a switch, with more appropriate confirmation message status (Sage Abdullah)
* Ensure that changed or cleared selection from choosers will dispatch a DOM `change` event (George Sakkis)
* Add the ability to disable model indexing by setting `search_fields = []` (Daniel Kirkham)
* Enhance `wagtail.search.utils.parse_query_string` to allow inner single quotes for key/value parsing (Aman Pandey)
* Add helpful properties to `Locale` for more convenient usage within templates (Andy Babic)
* Allow customizing icons for snippets via `SnippetViewSet.icon` (Daniel Kirkham, Sage Abdullah)
* Allow customizing the base URL and URL namespace for snippet views (Sage Abdullah)
* Allow customizing the default ordering and number of items per page for snippet listing views (Sage Abdullah)
* Re-label "StreamField blocks" option in block picker to "Blocks" (Thibaud Colas)
* Re-implement styleguide icons list as an auto-generated sequence of tables (Thibaud Colas)
* Switch styleguide navigation to use panel components and minimap (Thibaud Colas)
* Explicitly specify `MenuItem.name` for Snippets, Reports, and Settings menu items (Sage Abdullah)
* Move the help text of fields and blocks directly below their label for easier reading (Thibaud Colas)
* Allow filters on snippet and generic index views to be customized through the `list_filter` attribute (Sage Abdullah)
* The select all checkbox in simple translation's submit translation page will now be in sync with other checkbox changes (Hanoon)
* Update Wagtail’s default icon set to Font Awesome 6 (Thibaud Colas)
* Allow admin templates for snippets to be overridden on a per-model or per-app basis (Sage Abdullah)
* Allow overriding the base queryset to be used in snippet `IndexView` (Sage Abdullah)
* Revise alignment and spacing of form fields and sections (Thibaud Colas)
* Update Wagtail’s type scale so StreamField block labels and field labels are the same size (Thibaud Colas)
* Allow customizing the `search_fields` and search backend via SnippetViewSet (Sage Abdullah)
* Style comments as per page editor design, in side panel (Karl Hobley, Thibaud Colas)
* Add support for custom panel icons, with defaults, displayed for top-level editor panels (Sage Abdullah)
* Add new icons for StreamField blocks (Sage Abdullah)
* Reveal the minimap on click rather than hover, keeping it expanded until dismissed, with state saved between page loads (Thibaud Colas)
* Expand a collapsed form section when navigating to it with the minimap (Thibaud Colas)
* The minimap and "Collapse all" button now appear next to side panels rather than underneath, so they can be used at any time (Thibaud Colas)
* Allow `panels` / `edit_handler` to be specified via `SnippetViewSet` (Sage Abdullah)
* Introduce dark mode support for the Wagtail admin interface, with a toggle in account preferences (Thibaud Colas)
* Allow snippets to be registered into arbitrary admin menu items (Sage Abdullah)
* Add configuration APIs in user bar accessibility checker for simpler customization of the checks performed
* ReferenceIndex modified to only index Wagtail-related models, and allow other models to be explicitly registered (Daniel Kirkham)
* Fix: Ensure `label_format` on StructBlock gracefully handles missing variables (Aadi jindal)
* Fix: Adopt a no-JavaScript and more accessible solution for the 'Reset to default' switch to Gravatar when editing user profile (Loveth Omokaro)
* Fix: Ensure `Site.get_site_root_paths` works on cache backends that do not preserve Python objects (Jaap Roes)
* Fix: Ignore right clicks on side panel resizer (Sage Abdullah)
* Fix: Resize in the correct direction for RTL languages with the side panel resizer (Sage Abdullah)
* Fix: Support creating `StructValue` copies (Tidiane Dia)
* Fix: Fix image uploads on storage backends that require file pointer to be at the start of the file (Matt Westcott)
* Fix: Fix "Edit this page" missing from userbar (Satvik Vashisht)
* Fix: No longer allow invalid duplicate site hostname creation as hostnames and domain names are a case insensitive (Coen van der Kamp)
* Fix: Image and Document multiple upload update forms now correctly use the progress button (longrunning) behavior when clicked (Loveth Omokaro)
* Fix: Prevent audit log report from failing on missing models (Andy Chosak)
* Fix: Ensure that the privacy collection privacy edit button is styled as a button (Jatin Kumar)
* Fix: Fix page/snippet cannot proceed a `GroupApprovalTask` if it's locked by someone outside of the group (Sage Abdullah)
* Fix: Allow manual lock even if `WorkflowLock` is currently applied (Sage Abdullah)
* Fix: Add missing log information for `wagtail.schedule.cancel` (Stefan Hammer)
* Fix: Fix timezone activation leaking into subsequent requests in `require_admin_access()` (Stefan Hammer)
* Fix: Fix dialog component's message to have rounded corners at the top side (Sam)
* Fix: When multiple documents are uploaded and then subsequently updated, ensure that existing success messages are cleared correctly (Aman Pandey)
* Fix: Prevent matches from unrelated models from leaking into SQLite FTS searches (Matt Westcott)
* Fix: Prevent duplicate addition of StreamField blocks with the new block picker (Deepam Priyadarshi)
* Fix: Enable partial search on images and documents index view where available (Mng)
* Fix: Adopt a no-JavaScript and more accessible solution for option selection in reporting, using HTML only `radio` input fields (Mehul Aggarwal)
* Fix: Ensure that document search results count shows the correct all matches, not the paginate total (Andy Chosak)
* Fix: Fix radio and checkbox elements shrinking when using a long label (Sage Abdullah)
* Fix: Fix select elements expanding beyond their container when using a long option label (Sage Abdullah)
* Fix: Fix timezone handling of `TemplateResponse`s for users with a custom timezone (Stefan Hammer, Sage Abdullah)
* Fix: Ensure TableBlock initialization correctly runs after load and its width is aligned with the parent panel (Dan Braghis)
* Fix: Ensure that the JavaScript media files are loaded by default in Snippet index listings for date fields (Sage Abdullah)
* Fix: Fix server-side caching of the icons sprite (Thibaud Colas)
* Fix: Avoid showing scrollbars in the block picker unless necessary (Babitha Kumari)
* Fix: Always show Add buttons, guide lines, Move up/down, Duplicate, Delete; in StreamField and Inline Panel (Thibaud Colas)
* Fix: Make admin JS i18n endpoint accessible to non-authenticated users (Matt Westcott)
* Fix: Fix incorrect API serialization for document `download_url` when `WAGTAILDOCS_SERVE_METHOD` is `direct` (Swojak-A)
* Fix: Fix template configuration of snippets index results view (fidoriel, Sage Abdullah)
* Fix: Prevent long preview mode names from making the select element overflow the side panel (Sage Abdullah)
* Fix: Autosize text area field will now correctly resize when switching between comments toggle states (Suyash Srivastava)
* Fix: When i18n is not enabled, avoid making a Locale query on every page view (Dan Braghis)
* Fix: Fix initialisation of commenting widgets within StreamField (Thibaud Colas)
* Fix: Fix various regressions in the commenting UI (Thibaud Colas)
* Fix: Prevent TableBlock from becoming uneditable after save (Sage Abdullah)
* Fix: Correctly show the "new item" badge within menu sections previously dismissed (Sage Abdullah)
* Fix: Fix side panel stuck in resize state when pointer is released outside the grip (Sage Abdullah)
* Docs: Add code block to make it easier to understand contribution docs (Suyash Singh)
* Docs: Add new "Icons" page for icons customization and reuse across the admin interface (Coen van der Kamp, Thibaud Colas)
* Docs: Fix broken formatting for MultiFieldPanel / FieldRowPanel permission kwarg docs (Matt Westcott)
* Docs: Add helpful troubleshooting links and refine wording for getting started with development (Loveth Omokaro)
* Docs: Ensure search autocomplete overlay on mobile does not overflow the viewport (Ayman Makroo)
* Docs: Improve documentation for InlinePanel (Vallabh Tiwari)
* Docs: Add contributor guidelines for building Stimulus Controllers (Thibaud Colas, Loveth Omokaro, LB (Ben) Johnston)
* Docs: Fix typo in "Extending Draftail" documentation (Hans Kelson)
* Docs: Clarify `ClusterableModel` requirements for using relations with `RevisionMixin`-enabled models (Sage Abdullah)
* Docs: Add guide to making your first contribution (LB (Ben) Johnston)
* Maintenance: Removed features deprecated in Wagtail 3.0 and 4.0 (Matt Westcott)
* Maintenance: Update djhtml (html formatting) library to v 1.5.2 (Loveth Omokaro)
* Maintenance: Re-enable `strictPropertyInitialization` in tsconfig (Thibaud Colas)
* Maintenance: Refactor accessibility checker userbar item (Albina Starykova)
* Maintenance: Removed unused `Page.get_static_site_paths` method (Yosr Karoui)
* Maintenance: Provisional Django 5.0 compatibility fixes (Sage Abdullah)
* Maintenance: Add unit tests for `CollapseAll` and `MinimapItem` components (Albina Starykova)
* Maintenance: Code quality fixes (GLEF1X)
* Maintenance: Refactor image / document / snippet usage views into a shared generic view (Sage Abdullah)
* Maintenance: Rename the Stimulus `AutoFieldController` to the less confusing `SubmitController` (Loveth Omokaro)
* Maintenance: Replace `script` tags with `template` tag for image/document bulk uploads (Rishabh Kumar Bahukhandi)
* Maintenance: Remove unneeded float styles on 404 page (Fabien Le Frapper)
* Maintenance: Convert userbar implementation to TypeScript (Albina Starykova)
* Maintenance: Migrate slug field behavior to a Stimulus controller and create new `SlugInput` widget (Loveth Omokaro)
* Maintenance: Refactor `status` HTML usage to shared template tag (Aman Pandey, LB (Ben) Johnston, Himanshu Garg)
* Maintenance: Add curlylint and update djhtml, semgrep versions in pre-commit config (Himanshu Garg)
* Maintenance: Use shared header template for `ModelAdmin` and Snippets type index header (Aman Pandey)
* Maintenance: Move models and forms for `wagtailsearch.Query` to `wagtail.contrib.search_promotions` (Karl Hobley)
* Maintenance: Migrate `initErrorDetection` (tabs error counts) to a Stimulus Controller `w-count` (Aman Pandey)
* Maintenance: Migrate `window.addMessage` behavior to a global event listener & Stimulus Controller approach with `w-messages` (Aman Pandey)
* Maintenance: Update Algolia DocSearch to use new application and correct versioning setup (Thibaud Colas)
* Maintenance: Move snippet choosers and model check registration to `SnippetViewSet.on_register()` (Sage Abdullah)
* Maintenance: Remove unused snippets delete-multiple view (Sage Abdullah)
* Maintenance: Improve performance of determining live page URLs across the admin interface using `pageurl` template tag (Satvik Vashisht)
* Maintenance: Migrate `window.initSlugAutoPopulate` behavior to a Stimulus Controller `w-sync` (Loveth Omokaro)
* Maintenance: Rename `status` classes to `w-status` to align with preferred CSS class naming conventions (Mansi Gundre)
* Maintenance: Include wagtail-factories in `wagtail.test.utils` to avoid cross-dependency issues (Matt Westcott)
* Maintenance: Fix search tests to correctly reflect the behavior of search backends other than the fallback backend (Matt Westcott)
* Maintenance: Migrate select all checkbox in simple translation's submit translation page to Stimulus controller `w-bulk`, remove inline script usage (Hanoon)
* Maintenance: Refactor `SnippetViewSet` to extend `ModelViewSet` (Sage Abdullah)
* Maintenance: Migrate initDismissibles behavior to a Stimulus controller `w-dismissible` (Loveth Omokaro)
* Maintenance: Replace jQuery autosize v3 with Stimulus `w-autosize` controller using autosize npm package v6 (Suyash Srivastava)
* Maintenance: Update `w-action` controller to support a click method (Suyash Srivastava)
* Maintenance: Migrate the site settings switcher select from jQuery to a refined version of the `w-action` controller usage (Aadi jindal, LB (Ben) Johnston)
* Maintenance: Always use expanded Sass output so CSS processing is identical in development and production builds (Thibaud Colas)
* Maintenance: Refactor admin color palette to semantic, theme-agnostic design tokens (Thibaud Colas)
4.2.4 (25.05.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Rectify previous fix for TableBlock becoming uneditable after save (Sage Abdullah)
* Fix: Ensure that copying page correctly picks up the latest revision (Matt Westcott)
* Fix: Adjust collection field alignment in multi-upload forms (LB (Ben) Johnston)
* Fix: Prevent lowercase conversions of IndexView column headers (Virag Jain)
* Docs: Update documentation for `log_action` parameter on `RevisionMixin.save_revision` (Christer Jensen)
4.2.3 (02.05.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent TableBlock from becoming uneditable after save (Sage Abdullah)
4.2.2 (03.04.2023)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2023-28836 - Stored XSS attack via ModelAdmin views (Thibaud Colas)
* Fix: CVE-2023-28837 - Denial-of-service via memory exhaustion when uploading large files (Jake Howard)
* Fix: Fix radio and checkbox elements shrinking when using a long label (Sage Abdullah)
* Fix: Fix select elements expanding beyond their container when using a long option label (Sage Abdullah)
* Fix: Fix timezone handling of `TemplateResponse`s for users with a custom timezone (Stefan Hammer, Sage Abdullah)
* Fix: Ensure TableBlock initialization correctly runs after load and its width is aligned with the parent panel (Dan Braghis)
* Fix: Ensure that the JavaScript media files are loaded by default in Snippet index listings for date fields (Sage Abdullah)
* Fix: Fix server-side caching of the icons sprite (Thibaud Colas)
* Fix: Avoid showing scrollbars in the block picker unless necessary (Babitha Kumari)
* Fix: Always show Add buttons, guide lines, Move up/down, Duplicate, Delete; in StreamField and Inline Panel (Thibaud Colas)
* Fix: Ensure datetimepicker widget overlay shows over modals & drop-downs (LB (Ben) Johnston)
* Docs: Fix module path for `MultipleChooserPanel` in panel reference docs
* Maintenance: Render large image renditions to disk (Jake Howard)
4.2.1 (13.03.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Support creating `StructValue` copies (Tidiane Dia)
* Fix: Fix image uploads on storage backends that require file pointer to be at the start of the file (Matt Westcott)
* Fix: Fix "Edit this page" missing from userbar (Satvik Vashisht)
* Fix: Prevent audit log report from failing on missing models (Andy Chosak)
* Fix: Fix page/snippet cannot proceed a `GroupApprovalTask` if it's locked by someone outside of the group (Sage Abdullah)
* Fix: Add missing log information for `wagtail.schedule.cancel` (Stefan Hammer)
* Fix: Fix timezone activation leaking into subsequent requests in `require_admin_access()` (Stefan Hammer)
* Fix: Fix dialog component's message to have rounded corners at the top side (Sam)
* Fix: Prevent matches from unrelated models from leaking into SQLite FTS searches (Matt Westcott)
* Fix: Prevent duplicate addition of StreamField blocks with the new block picker (Deepam Priyadarshi)
* Docs: Clarify `ClusterableModel` requirements for using relations with `RevisionMixin`-enabled models (Sage Abdullah)
* Maintenance: Update Algolia DocSearch to use new application and correct versioning setup (Thibaud Colas)
4.2 (06.02.2023)
~~~~~~~~~~~~~~~~
* Added StreamField data migration helpers (Sandil Ranasinghe, Jacob Topp-Mugglestone, Joshua Munn, Karl Hobley)
* Added ability to lock snippet models with `LockableMixin` (Sage Abdullah)
* Added ability to submit snippets for moderation with `WorkflowMixin` (Sage Abdullah)
* Create `{% fullpageurl %}` tag for getting the absolute URL of a page (Jake Howard)
* Added `MultipleChooserPanel`, a variant of `InlinePanel` with improved editor experience when inserting multiple linked objects (Matt Westcott)
* Test assertion util `WagtailPageTestCase.assertCanCreate` now supports the kwarg `publish=True` to determine whether to publish the page (Harry Percival, Akua Dokua Asiedu, Matt Westcott)
* Ensure that the `rebuild_references_index` command can run without console output if called with `--verbosity 0` (Omerzahid Ali, Aman Pandey)
* Add full support for secondary buttons with icons in the Wagtail design system - `button bicolor button--icon button-secondary` including the `button-small` variant (Seremba Patrick)
* Add `purge_embeds` management command to delete all the cached embed objects in the database (Aman Pandey)
* Make it possible to resize the page editor’s side panels (Sage Abdullah)
* Add ability to include `form_fields` as an APIField on `FormPage` (Sævar Öfjörð Magnússon, Suyash Singh, LB (Ben) Johnston)
* Ensure that images listings are more consistently aligned when there are fewer images uploaded (Theresa Okoro)
* Add more informative validation error messages for non-unique slugs within the admin interface and for programmatic page creation (Benjamin Bach)
* Always show the page editor title field’s border when the field is empty (Thibaud Colas)
* Snippet models extending `DraftStateMixin` now automatically define a "Publish" permission type (Sage Abdullah)
* Users now remain on the edit page after saving a snippet as draft (Sage Abdullah)
* Base project template now populates the meta description tag from the search description field (Aman Pandey)
* Added support for `azure-mgmt-cdn` version >= 10 and `azure-mgmt-frontdoor` version >= 1 in the frontend cache invalidator (Sylvain Fankhauser)
* Add a system check to warn when a `django-storages` backend is configured to allow overwriting (Rishabh jain)
* Update admin focus outline color to have higher contrast against white backgrounds (Thibaud Colas)
* Implement latest design for the admin dashboard header (Thibaud Colas, Steven Steinwand)
* Add Axe accessibility checker integration within userbar, with count and list of errors (Albina Starykova)
* Restyle the userbar to follow the visual design of the Wagtail admin (Albina Starykova)
* Allow configuring Axe accessibility checker integration via `construct_wagtail_userbar` hook (Sage Abdullah)
* Support pinning and un-pinning the rich text editor toolbar depending on user preference (Thibaud Colas)
* Make the rich text block trigger and slash-commands always available regardless of where the cursor is (Thibaud Colas)
* Adjust the size of panel labels on the "Account" form (Thibaud Colas)
* Delay hiding the contents of the side panels when closing, so the animation is smoother (Thibaud Colas)
* ListBlock now shows item-by-item differences when comparing versions (Tidiane Dia)
* Implement a new design for chooser buttons with better accessibility (Thibaud Colas)
* Fix: Make sure workflow timeline icons are visible in high-contrast mode (Loveth Omokaro)
* Fix: Ensure authentication forms (login, password reset) have a visible border in Windows high-contrast mode (Loveth Omokaro)
* Fix: Ensure visual consistency between buttons and links as buttons in Windows high-contrast mode (Albina Starykova)
* Fix: references extraction for ChooserBlock (Alex Tomkins)
* Fix: Incorrectly formatted link in the documentation for Wagtail community support (Bolarinwa Comfort Ajayi)
* Fix: Text within status tags text will now resize correctly when customizing browser font size (Mary Ojo)
* Fix: Ensure logo shows correctly on log in page in Windows high-contrast mode (Loveth Omokaro)
* Fix: Comments notice background overflows its container (Yekasumah)
* Fix: Ensure links within help blocks meet color contrast guidelines for accessibility (Theresa Okoro)
* Fix: Ensure the skip link (used for keyboard control) meets color contrast guidelines for accessibility (Dauda Yusuf)
* Fix: Ensure tag fields correctly show in both dark and light Windows high-contrast modes (Albina Starykova)
* Fix: Ensure new tooltips & tooltip menus have visible borders and tip triangle in Windows high-contrast mode (Juliet Adeboye)
* Fix: Ensure there is a visual difference of 'active/current link' vs normal links in Windows high-contrast mode (Mohammad Areeb)
* Fix: Avoid issues where trailing whitespace could be accidentally removed in translations for new page & snippet headers (Florian Vogt)
* Fix: Make sure minimap error indicators follow the minimap scrolling (Thibaud Colas)
* Fix: Remove the ability to view or add comments to `InlinePanel` inner fields to avoid lost or incorrectly linked comments (Jacob Topp-Mugglestone)
* Fix: Use consistent heading styles on top-level fields in the page editor (Sage Abdullah)
* Fix: Allow button labels to wrap onto two lines in dropdown buttons (Coen van der Kamp)
* Fix: Remove spurious horizontal resize handle from text areas (Matt Westcott)
* Fix: Move DateField, DateTimeField, TimeField comment buttons to be right next to the fields (Theresa Okoro)
* Fix: Support text resizing in workflow steps cards (Ivy Jeptoo)
* Fix: Ignore images added via fixtures when using `WAGTAILIMAGES_FEATURE_DETECTION_ENABLED` to avoid errors for images that do not exist (Aman Pandey)
* Fix: Restore ability to perform JSONField query operations against StreamField when running against the Django 4.2 development branch (Sage Abdullah)
* Fix: Ensure there is correct grammar and pluralization for Tab error counts shown to screen readers (Aman Pandey)
* Fix: Pass through expected expected `cc`, `bcc` and `reply_to` to the Django mail helper from `wagtail.admin.mail.send_mail` (Ben Gosney)
* Fix: Allow reviewing or reverting to a Page's initial revision (Andy Chosak)
* Fix: Use the correct padding for autocomplete block picker (Umar Farouk Yunusa)
* Fix: Ensure that short content pages (such as editing snippets) do not show an inconsistent background (Sage Abdullah)
* Fix: Fix horizontal positioning of rich text inline toolbar (Thibaud Colas)
* Fix: Ensure that `DecimalBlock` correctly handles `None`, when `required=False`, values (Natarajan Balaji)
* Fix: Close the userbar when clicking its toggle (Albina Starykova)
* Fix: Add a border around the userbar menu in Windows high-contrast mode so it can be identified (Albina Starykova)
* Fix: Make sure browser font resizing applies to the userbar (Albina Starykova)
* Fix: Fix check for `delete_url_name` attribute in generic `DeleteView` (Alex Simpson)
* Fix: Re-implement design system colors so HSL values exactly match the desired RGB (Albina Starykova)
* Fix: Resolve issue where workflow and other notification emails would not include the correct tab URL for account notification management (LB (Ben) Johnston)
* Fix: Use consistent spacing above and below page headers (Thibaud Colas)
* Fix: Use the correct icon sizes and spacing in slim header (Thibaud Colas)
* Fix: Use the correct color for placeholders in rich text fields (Thibaud Colas)
* Fix: Prevent obstructing the outline around rich text fields (Thibaud Colas)
* Fix: Page editor dropdowns now use indigo backgrounds like elsewhere in the admin interface (Thibaud Colas)
* Fix: Allow parsing of multiple key/value pairs from string in `wagtail.search.utils.parse_query_string` (Beniamin Bucur)
* Fix: Prevent memory exhaustion when purging a large number of revisions (Jake Howard)
* Fix: Add right-to-left (RTL) support for the following form components: Switch, Minimap, live preview (Thibaud Colas)
* Fix: Improve right-to-left (RTL) positioning for the following components: Page explorer, Sidebar sub-menu, rich text tooltips, rich text toolbar trigger, editor section headers (Thibaud Colas)
* Fix: Add right-to-left (RTL) support for the caret of select inputs (Badr Fourane)
* Fix: Use the workflow name as the workflow information dialog title (Sage Abdullah)
* Fix: Link to workflow history view instead of page history view in the workflow information dialog (Sage Abdullah)
* Fix: Fix in-progress count in warning message when disabling workflows (Sage Abdullah)
* Fix: Show workflow name on workflow history index page (Sage Abdullah)
* Fix: Fix workflow history detail timeline content from showing on initial load (Sage Abdullah)
* Fix: Center-align StreamField and rich text block picker buttons with the dotted guide line (Thibaud Colas)
* Fix: Search bar in chooser modals now performs autocomplete searches under PostgreSQL (Matt Westcott)
* Fix: Server-side document filenames are preserved when replacing a document file (Suyash Singh, Matt Westcott)
* Fix: Add missing wagtailadmin_tags in `workflow_state_approved.html` template (Alex Tomkins)
* Fix: Do not show bulk actions checkbox in page type usage view (Sage Abdullah)
* Fix: Prevent account name from overflowing the sidebar (Aman Pandey)
* Fix: Ensure edit form is displayed as unlocked immediately after canceling a workflow (Sage Abdullah)
* Fix: Prevent `latest_revision` pointer from being copied over when copying translatable snippets for translation (Sage Abdullah)
* Fix: Page listings actions under the "More" dropdown are now accessible for screen reader and keyboard users (Thibaud Colas)
* Fix: Bulk actions under the "More" dropdown are now accessible for screen reader and keyboard users (Thibaud Colas)
* Fix: Navigation to translations via the locale dropdown is now accessible for screen reader and keyboard users (Thibaud Colas)
* Fix: Make it possible for speech recognition users to reveal chooser buttons (Thibaud Colas)
* Docs: Add custom permissions section to permissions documentation page (Dan Hayden)
* Docs: Add documentation for how to get started with contributing translations for the Wagtail admin (Ogunbanjo Oluwadamilare)
* Docs: Officially recommend `fnm` over `nvm` in development documentation (LB (Ben) Johnston)
* Docs: Mention the importance of passing `request` and `current_site` to `get_url` on the performance documentation page (Jake Howard)
* Docs: Add documentation for `register_user_listing_buttons` hook (LB (Ben Johnston))
* Docs: Add development (contributing to Wagtail) documentation notes for development on Windows (Akua Dokua Asiedu)
* Docs: Mention Wagtail’s usage of Django’s default user model by default (Temidayo Azeez)
* Docs: Add links to treebeard documentation for relevant methods (Temidayo Azeez)
* Docs: Add clarification on where to register entity plugins (Mark McOsker)
* Docs: Fix logo in README not being visible in high-contrast mode (Benita Anawonah)
* Docs: Improve 'first wagtail site' tutorial (Akua Dokua Asiedu)
* Docs: Grammatical adjustments of `page models` usage guide (Damilola Oladele)
* Docs: Add class inheritance information to StreamField block sreference (Temidayo Azeez)
* Docs: Document the hook `register_image_operations` and add an example of a custom Image filter (Coen van der Kamp)
* Docs: Fix incorrect example code for StreamField migration of `RichTextField` (Matt Westcott)
* Docs: Document the policy needed to create invalidations in CloudFront (Jake Howard)
* Docs: Document how to add permission restriction to a report view (Rishabh jain)
* Docs: Add example for how to configure API `renderer_classes` (Aman Pandey)
* Docs: Document potential data loss for BaseLogEntry migration in 3.0 (Sage Abdullah)
* Docs: Add documentation for the reference index mechanism (Daniel Kirkham)
* Docs: Remove confusing `SettingsPanel` reference in the page editing `TabbedInterface` example as `SettingsPanel` no longer shows anything as of 4.1 (Kenny Wolf, Julian Bigler)
* Docs: Add more extensive documentation for the `permission` kwarg support in Panels (LB (Ben) Johnston)
* Maintenance: Switch to using Willow instead of Pillow for images (Darrel O'Pry)
* Maintenance: Remove unsquashed `testapp` migrations (Matt Westcott)
* Maintenance: Upgrade to Node 18 for frontend build tooling (LB (Ben) Johnston)
* Maintenance: Run Python tests with coverage and upload coverage data to codecov (Sage Abdullah)
* Maintenance: Clean up duplicate JavaScript for the `escapeHtml` function (Jordan Rob)
* Maintenance: Clean up Prettier & Eslint usage for search promotions formset JS file (LB (Ben Johnston))
* Maintenance: Ensure that translation file generation ignores JavaScript unit tests and clean up unit tests for Django gettext utils (LB (Ben Johnston))
* Maintenance: Migrated `initButtonSelects` from core.js to own TypesScript file and add unit tests (Loveth Omokaro)
* Maintenance: Migrated `initSkipLink` util to TypeScript and add JSDoc & unit tests (Juliet Adeboye)
* Maintenance: Clean up some unused utility classes and migrate `unlist` to Tailwind utility class `w-list-none` (Loveth Omokaro)
* Maintenance: Clean up linting on legacy code and add shared util `hasOwn` in TypeScript (Loveth Omokaro)
* Maintenance: Remove unnecessary box-sizing: border-box declarations in SCSS (Albina Starykova)
* Maintenance: Migrated `initTooltips` to TypeScript add JSDoc and unit tests (Fatuma Abdullahi)
* Maintenance: Migrated `initTagField` from core.js to own TypeScript file and add unit tests (Chisom Okeoma)
* Maintenance: Added unit tests & JSDoc to `initDissmisibles` (Yekasumah)
* Maintenance: Standardise on `classname` for passing HTML class attributes (LB (Ben Johnston))
* Maintenance: Clean up expanding formset and `InlinePanel` JavaScript initialization code and adopt a class approach (Matt Westcott)
* Maintenance: Extracted revision and draft state logic from generic views into mixins (Sage Abdullah)
* Maintenance: Extracted generic lock / unlock views from page lock / unlock views (Sage Abdullah)