forked from wagtail/wagtail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
3430 lines (2962 loc) · 267 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
=========
5.1 (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~
* Add support for read-only FieldPanels (Andy Babic)
* 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 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 customised (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)
* Fix: Prevent choosers from failing when initial value is an unrecognised 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)
* 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 customisations and optional features (Sage Abdullah)
* Docs: Update color customisations 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 according to address identified friction points (Damilola Oladele)
* Docs: Update the deployment documentation page and remove outdated information (Jake Howard)
* 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 initialisation 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)
5.0.2 (21.06.2023)
~~~~~~~~~~~~~~~~~~
* Added `TitleFieldPanel` to support title / slug field synchronisation (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 colour 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` behaviour 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 customising icons for snippets via `SnippetViewSet.icon` (Daniel Kirkham, Sage Abdullah)
* Allow customising the base URL and URL namespace for snippet views (Sage Abdullah)
* Allow customising 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 customised 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 customising 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 customisation 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) behaviour 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 initialisation 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 serialisation 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 customisation 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 behaviour 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` behaviour 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` behaviour 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 behaviour 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 behaviour to a Stimulus controller `w-disimissible` (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 initialisation 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 colour contrast guidelines for accessibility (Theresa Okoro)
* Fix: Ensure the skip link (used for keyboard control) meets colour 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 pluralisation 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: 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 cancelling 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)
* 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 initialisation 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)
* Maintenance: Move `identity` JavaScript util into shared utils folder (LB (Ben Johnston))
* Maintenance: Remove unnecessary declaration of function to determine URL query params, instead use `URLSearchParams` (Loveth Omokaro)
* Maintenance: Update `tsconfig` to better support modern TypeScript development and clean up some code quality issues via Eslint (Loveth Omokaro)
* Maintenance: Set up Stimulus application initialisation according to RFC 78 (LB (Ben) Johnston)
* Maintenance: Refactor submit-on-change search filters for image and document listings to use Stimulus (LB (Ben) Johnston)
* Maintenance: Switch userbar to initialise a Web Component to avoid styling clashes (Albina Starykova)
* Maintenance: Refactor userbar stylesheets to use the same CSS loading as the rest of the admin (Albina Starykova)
* Maintenance: Remove unused search-bar and button-filter styles (Thibaud Colas)
* Maintenance: Use util method to construct dummy requests in tests (Jake Howard)
* Maintenance: Remove unused dev-only react-axe integration (Thibaud Colas)
* Maintenance: Migrate accessible Skip Link implementation to a Stimulus controller (Loveth Omokaro)
* Maintenance: Split up `wagtail.admin.panels` into submodules, existing exports have been preserved (Matt Westcott)
* Maintenance: Refactor userbar styles to use the same stylesheet as other components (Thibaud Colas)
* Maintenance: Add deprecation warnings for `wagtail.core` and other imports deprecated in Wagtail 3.0 (Matt Westcott)
* Maintenance: Migrate admin upgrade notification message implementation to a Stimulus controller (Loveth Omokaro)
* Maintenance: Migrate workflow and workflow tasks enable action and lock/unlock actions to a Stimulus controller (Loveth Omokaro)
* Maintenance: Pull out icon sprite setup function from inline script to its own TypeScript file & add unit tests (Loveth Omokaro)
* Maintenance: Upgraded Transifex configuration to v3 (Loic Teixeira)
* Maintenance: Replace repeated HTML `avatar` component with a template tag include `{% avatar ... %}` throughout the admin interface (Aman Pandey)
* Maintenance: Remove unused `icon-help` and `help-inverse` code (Thibaud Colas)
* Maintenance: Migrate privacy switch, FileFields, history buttons, error messages, Datetimepicker, ordering icons, thumbnails, ModelAdmin, page listings, workflows, and user creation form controls to SVG icons (Thibaud Colas)
* Maintenance: Switch form submission listings to use the same ordering icons as other listings (Thibaud Colas)
* Maintenance: Refactor "More" dropdowns, locale selector, "Switch locales", page actions, to use the same dropdown component (Thibaud Colas)
4.1.6 (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.1.5 (02.05.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent TableBlock from becoming uneditable after save (Sage Abdullah)
4.1.4 (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 initialisation 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: 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)
* Maintenance: Render large image renditions to disk (Jake Howard)
4.1.3 (13.03.2023)
~~~~~~~~~~~~~~~~~~
* 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: Ensure links within help blocks meet colour contrast guidelines for accessibility (Theresa Okoro)
* Fix: Support creating `StructValue` copies (Tidiane Dia)
* Fix: Fix "Edit this page" missing from userbar (Satvik Vashisht)
* Fix: Prevent audit log report from failing on missing models (Andy Chosak)
* 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: Prevent matches from unrelated models from leaking into SQLite FTS searches (Matt Westcott)
* 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.1.2 (06.02.2023)
~~~~~~~~~~~~~~~~~~
* Fix: Make "Cancel scheduled publish" button correctly redirect back to the edit view (Sage Abdullah)
* Fix: Prevent crash when reverting revisions on a snippet with `PreviewableMixin` applied (Sage Abdullah)
* 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: 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: Use the correct padding for autocomplete block picker (Umar Farouk Yunusa)
* Fix: Fix horizontal positioning of rich text inline toolbar (Thibaud Colas)
* Fix: Close the userbar when clicking its toggle (Albina Starykova)
* 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 cancelling a workflow (Sage Abdullah)
* Fix: Prevent `latest_revision` pointer from being copied over when copying translatable snippets for translation (Sage Abdullah)
* Docs: Document potential data loss for BaseLogEntry migration in 3.0 (Sage Abdullah)
* Docs: Add documentation for the reference index mechanism (Daniel Kirkham)
4.1.1 (11.11.2022)
~~~~~~~~~~~~~~~~~~
* Fix: Fix issue where lock/unlock buttons would not work on the Dashboard (home) page or the page index listing via the status sidebar (Stefan Hammer)
* Fix: Fix disabled style on StreamField add button (Matt Westcott)
* Fix: Ensure models are fully loaded before registering snippets, to avoid circular import issues (Matt Westcott)
* Fix: Prevent fields without a `verbose_name` property from breaking usage report views (Matt Westcott)
* Fix: Exclude tags from the reference index (Matt Westcott)
* Fix: Fix errors in handling generic foreign keys when populating the reference index (Matt Westcott)
* Fix: Prevent error in handling null ParentalKeys when populating the reference index (Matt Westcott)
* Fix: Make sure minimap error indicators follow the minimap scrolling (Thibaud Colas)
* Fix: Ensure background HTTP request to clear stale preview data correctly respects the `CSRF_HEADER_NAME` setting (Sage Abdullah)
* Fix: Prevent error on aging pages report when "Last published by" user has been deleted (Joshua Munn)
4.1 LTS (01.11.2022)
~~~~~~~~~~~~~~~~~~~~
* New scheduled publishing UI, available from the Status side panel (Sage Abdullah)
* Allow snippet admin views to be customised via `SnippetViewSet` (Sage Abdullah)
* Implement scheduled publishing for snippets inheriting from `DraftStateMixin` (Sage Abdullah)
* Add reference index and usage reports for images, documents and snippets (Karl Hobley, Matt Westcott)
* Formalised support for Python 3.11 (Matt Westcott)
* Add basic keyboard control and screen reader support for page listing re-ordering (Paarth Agarwal, Thomas van der Hoeven)
* Add `PageQuerySet.private` method as an alias of `not_public` (Mehrdad Moradizadeh)
* Most images in the admin will now only load once they are visible on screen (Jake Howard)
* Allow setting default attributes on image tags (Jake Howard)
* Optimise the performance of the Wagtail userbar to remove duplicated queries, improving page loads when viewing live pages while signed in (Jake Howard)
* Remove legacy styling classes for buttons (`unbutton`, `button-neutral`, `button-strokeonhover`, `hover-no`, `yes`) and refactor button styles to be more maintainable (Paarth Agarwal, LB (Ben Johnston))
* Add button variations to the pattern library (Paarth Agarwal)
* Provide a more accessible page title where the unique information is shown first and the CMS name is shown last (Mehrdad Moradizadeh)
* Pull out behaviour from `AbstractFormField` to `FormMixin` and `AbstractEmailForm` to `EmailFormMixin` to allow use with subclasses of `Page` (Mehrdad Moradizadeh, Kurt Wall)
* Add a `docs.wagtail.org/.well-known/security.txt` so that the security policy is available as per the specification on https://securitytxt.org/ (Jake Howard)
* Add unit tests for the `classnames` Wagtail admin template tag (Mehrdad Moradizadeh)
* Show an inverse locked indicator when the page has been locked by the current user in reports and dashboard listings (Vaibhav Shukla, LB (Ben Johnston))
* Add clarity to the development documentation that `admonition` should not be used and titles for `note` are not supported, including clean up of some existing incorrect usage (LB (Ben Johnston))
* Unify the styling of delete/destructive button styles across the admin interface (Paarth Agarwal)
* Adopt new designs and unify the styling styles for `.button-secondary` buttons across the admin interface (Paarth Agarwal)
* Refine designs for disabled buttons throughout the admin interface (Paarth Agarwal)
* Update expanding formset add buttons to use `button` not link for behaviour (LB (Ben) Johnston)
* Add robust unit testing for authentication scenarios across the user management admin pages (Mehrdad Moradizadeh)
* Avoid assuming an integer PK named 'id' on multiple upload views (Matt Westcott)
* Add a toggle to collapse/expand all page panels at once (Helen Chapman)
* Improve the GitHub Workflows (CI) security (Alex (sashashura))
* Use `search` type input in documentation search (LB (Ben) Johnston)
* Render `help_text` when set on `FieldPanel`, `MultiFieldPanel`, `FieldRowPanel`, and other panel APIs where it previously worked without official support (Matt Westcott)
* Consolidate usage of Excel libraries to a single library `openpyxl`, removing usage of `XlsxWriter`, `tablib`, `xlrd` and `xlwt` (Jaap Roes)
* Adopt `wagtail.admin.views.generic.IndexView` for the Users index listing and search results (Mehrdad Moradizadeh)
* Adopt `wagtail.admin.views.generic.CreateView` for the User creation view (Mehrdad Moradizadeh)
* Adopt `wagtail.admin.views.generic.DeleteView` for the User delete view (Mehrdad Moradizadeh)
* Adopt `wagtail.admin.views.generic.EditView` for the User edit view (Mehrdad Moradizadeh)
* Add `button-secondary bicolor` variants to the pattern library and styleguide (Adinapunyo Banerjee)
* Add better support for non-integer / non-`id` primary keys into Wagtail's generic views, including for Snippets and custom User models (Mehrdad Moradizadeh)
* Upgrade jQuery UI to version 1.13.2 (LB (Ben) Johnston)
* Update pattern library background & text examples (Albina Starykova)
* Switch StreamField blocks to use a `<section>` element so screen reader users can bypass them more easily (Thibaud Colas)
* Add anchor links to StreamField blocks so users can navigate straight to a given block (Thibaud Colas)
* Support "Ctrl + f" in-page search within collapsed StreamField blocks (Thibaud Colas)
* Remember the last opened side panel in the page editor, activating it on page load (Sage Abdullah)
* Ensure that the `update_index` command can run without console output if called with `--verbosity 0` (Ben Sturmfels, Oliver Parker)
* Improve side panels’ resizing in page editor and listings (Steven Steinwand)
* Adjust breadcrumb text alignment and size in page listings & page editor (Steven Steinwand)
* Improvements to getting started tutorial aimed at developers who are very new to Python and have no Django experience (Damilola Oladele)
* Update documentation dependencies; Sphinx Wagtail Theme to v5.3.2, MyST Parser to v0.18.1, add Sphinx Copy Button (LB (Ben) Johnston)
* Add "What's New" dashboard banner and "Help" menu in sidebar (Sage Abdullah)
* Implement new "minimap" component for the page editor (Thibaud Colas)
* The `image_url` template tag, when using the serve view to redirect rather than serve directly, will now use temporary redirects with a cache header instead of permanent redirects (Jake Howard)
* Add new test assertions to `WagtailPageTestCase` - `assertPageIsRoutable`, `assertPageIsRenderable`, `assertPageIsEditable`, `assertPageIsPreviewable` (Andy Babic)
* Add documentation to the performance section about how to better create image URLs when not used directly on the page (Jake Howard)
* Add ability to provide a required `permission` to `PanelGroup`, used by `TabbedInterface`, `ObjectList`, `FieldRowPanel` and `MultiFieldPanel` (Oliver Parker)
* Update documentation screenshots of the admin interface to align with changes in this release (Thibaud Colas)
* Fix: Prevent `PageQuerySet.not_public` from returning all pages when no page restrictions exist (Mehrdad Moradizadeh)
* Fix: Ensure that duplicate block ids are unique when duplicating stream blocks in the page editor (Joshua Munn)
* Fix: Revise colour usage so that privacy & locked indicators can be seen in Windows High Contrast mode (LB (Ben Johnston))
* Fix: Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
* Fix: Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
* Fix: Support `formfield_callback` handling on `ModelForm.Meta` for future Django 4.2 release (Matt Westcott)
* Fix: Ensure that `ModelAdmin` correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
* Fix: Add missing translated values to site settings' headers plus models presented in listings and audit report filtering labels (Stefan Hammer)
* Fix: Remove `capitalize()` calls to avoid issues with other languages or incorrectly presented model names for reporting and parts of site settings (Stefan Hammer)
* Fix: Add back rendering of `help_text` for InlinePanel (Matt Westcott)
* Fix: Ensure `for_user` argument is passed to the form class when previewing pages (Matt Westcott)
* Fix: Ensure the capitalisation of the `timesince_simple` tag is consistently added in the template based on usage in context (Stefan Hammer)
* Fix: Add missing translation usage for the `timesince_last_update` and ensure the translated labels can be easier to work with in Transifex (Stefan Hammer)
* Fix: Add additional checks for duplicate form field `clean_name` values in the Form Builder validation and increase performance of checks (Dan Bentley)
* Fix: Use correct color for labels of radio and checkbox fields (Steven Steinwand)
* Fix: Adjust spacing of fields’ error messages and position in tables (Steven Steinwand)
* Fix: Update dead or redirected links throughout the documentation (LB (Ben) Johnston)
* Fix: Use different icons for workflow timeline component, so the steps can be distinguished with other means than color (Sam Moran)
* Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
* Fix: StreamField blocks are now collapsible with the keyboard (Thibaud Colas)
* Fix: StreamField block headings now have a label for screen reader users (Thibaud Colas)
* Fix: Display the "*" required field indicator for StreamField blocks (Thibaud Colas)
* Fix: Resolve inconsistency in action button positions in InlinePanel (Thibaud Colas)
* Fix: Use h3 elements with a counter in InlinePanel so screen reader users can navigate by heading (Thibaud Colas)
* Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
* Fix: Add missing asterisk to title field placeholder (Seremba Patrick, Stefan Hammer)
* Fix: Avoid creating an extra rich text block when inserting a new block at the end of the content (Matt Westcott)
* Fix: Removed the extra dot in the Wagtail version shown within the admin settings menu item (Loveth Omokaro)
* Fix: Fully remove the obsolete `wagtailsearch_editorspick` table that prevents flushing the database (Matt Westcott)
* Fix: Update latest version message on Dashboard to accept dev build version format used on nlightly builds (Sam Moran)
* Fix: references extraction for ChooserBlock (Alex Tomkins)
* Fix: Regression in field width for authentication pages (log in / password reset) (Chisom Okeoma)
* Fix: Ensure the new minimap correctly pluralises error counts for `aria-label`s (Matt Westcott)
4.0.4 (18.10.2022)
~~~~~~~~~~~~~~~~~~
* Render `help_text` when set on `FieldPanel`, `MultiFieldPanel`, `FieldRowPanel`, and other panel APIs where it previously worked without official support (Matt Westcott)
* Update special-purpose `FieldPanel` deprecation message to add clarity for developers (Matt Westcott)
* Fix: Add back rendering of `help_text` for InlinePanel (Matt Westcott)
* Fix: Ensure that `AbstractForm` & `AbstractEmailForm` page models correctly pass the form to the preview context (Dan Bentley)
* Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
* Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
4.0.3 (18.10.2022)
~~~~~~~~~~~~~~~~~~
[release withdrawn due to packaging issues]
4.0.2 (23.09.2022)
~~~~~~~~~~~~~~~~~~
* Update all images and sections of the Wagtail Editor's guide to align with the new admin interface changes from Wagtail 3.0 and 4.0 (Thibaud Colas)
* Ensure all images in the documentation have a suitable alt text (Thibaud Colas)
* Fix: Ensure tag autocompletion dropdown has a solid background (LB (Ben) Johnston)
* Fix: Allow inline panels to be ordered (LB (Ben) Johnston)
* Fix: Only show draft / live status tags on snippets that have `DraftStateMixin` applied (Sage Abdullah)
* Fix: Prevent JS error when initialising chooser modals with no tabs (LB (Ben) Johnston)
* Fix: Add missing vertical spacing between chooser modal header and body when there are no tabs (LB (Ben) Johnston)
* Fix: Reinstate specific labels for chooser buttons (for example 'Choose another page', 'Edit this page' not 'Change', 'Edit') so that it is clearer for users and non-English translations (Matt Westcott)
* Fix: Resolve issue where searches with a tag and a query param in the image listing would result in an `FilterFieldError` (Stefan Hammer)
* Fix: Add missing vertical space between header and content in embed chooser modal (LB (Ben) Johnston)
* Fix: Use the correct type scale for heading levels in rich text (Steven Steinwand)
* Fix: Update alignment and reveal logic of fields’ comment buttons (Steven Steinwand)
* Fix: Regression from Markdown conversion in documentation for API configuration - update to correctly use PEP-8 for example code (Storm Heg)
* Fix: Prevent 'Delete' link on page edit view from redirecting back to the deleted page (LB (Ben) Johnston)
* Fix: Prevent JS error on images index view when collections dropdown is omitted (Tidiane Dia)
* Fix: Prevent "Entries per page" dropdown on images index view from reverting to 10 (Tidiane Dia)
* Fix: Set related_name on user revision relation to avoid conflict with django-reversion (Matt Westcott)
* Fix: Ensure the "recent edits" panel on the Dashboard (home) page works when page record is missing (Matt Westcott)
* Fix: Only add Translate buttons when the `simple_translation` app is installed (Dan Braghis)
* Fix: Ensure that `MultiFieldPanel` correctly outputs all child classnames in the template (Matt Westcott)
* Fix: Remove over-eager caching on ModelAdmin permission checks (Matt Westcott, Stefan Hammer)
4.0.1 (05.09.2022)
~~~~~~~~~~~~~~~~~~
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
* Fix: Modify base template for new projects so that links opened from the preview panel open in a new window (Sage Abdullah)
* Fix: Prevent circular import error between custom document models and document chooser blocks (Matt Westcott)
4.0 (31.08.2022)
~~~~~~~~~~~~~~~~
* Added support for Django 4.1
* Added a new `BaseGenericSetting` base model class that allows defining a settings model that applies to all sites rather than just a single site (Kyle Bayliss)
* Add clarity to confirmation when being asked to convert an external link to an internal one (Thijs Kramer)
* Convert the rest of the documentation to Markdown (Khanh Hoang, Vu Pham, Daniel Kirkham, LB (Ben) Johnston, Thiago Costa de Souza, Benedict Faw, Noble Mittal, Sævar Öfjörð Magnússon, Sandeep M A, Stefano Silvestri)
* Add `base_url_path` to `ModelAdmin` so that the default URL structure of app_label/model_name can be overridden (Vu Pham, Khanh Hoang)
* Add `full_url` to the API output of `ImageRenditionField` (Paarth Agarwal)
* Use `InlinePanel`'s label when available for field comparison label (Sandil Ranasinghe)
* Drop support for Safari 13 by removing left/right positioning in favour of CSS logical properties (Thibaud Colas)
* Use `FormData` instead of jQuery's `form.serialize` when editing documents or images just added so that additional fields can be better supported (Stefan Hammer)
* Add informational Codecov status checks for GitHub CI pipelines (Tom Hu)
* Replace `PageRevision` with generic `Revision` model (Sage Abdullah)
* Make it possible to reuse and customise Wagtail’s fonts with CSS variables (LB (Ben) Johnston)
* Add better handling and informative developer errors for cross linking URLS (e.g. success after add) in generic views `wagtail.admin.views.generic` (Matt Westcott)
* Introduce `wagtail.admin.widgets.chooser.BaseChooser` to make it easier to build custom chooser inputs (Matt Westcott)
* Introduce JavaScript chooser module, including a SearchController class which encapsulates the standard pattern of re-rendering the results panel in response to search queries and pagination (Matt Westcott)
* Migrate Image and Document choosers to new JavaScript chooser module (Matt Westcott)
* Add ability to select multiple items at once within bulk actions selections when holding shift on subsequent clicks (Hitansh Shah)
* Upgrade notification, shown to admins on the dashboard if Wagtail is out of date, will now link to the release notes for the closest minor branch instead of the latest patch (Tibor Leupold)
* Upgrade notification can now be configured to only show updates when there is a new LTS available via `WAGTAIL_ENABLE_UPDATE_CHECK = 'lts'` (Tibor Leupold)
* Implement redesign of the Workflow Status dialog, fixing accessibility issues (Steven Steinwand)
* Add the ability to change the number of images displayed per page in the image library (Tidiane Dia, with sponsorship from YouGov)
* Allow users to sort by different fields in the image library (Tidiane Dia, with sponsorship from YouGov)
* Add `prefetch_renditions` method to `ImageQueryset` for performance optimisation on image listings (Tidiane Dia, Karl Hobley)
* Add ability to define a custom `get_field_clean_name` method when defining `FormField` models that extend `AbstractFormField` (LB (Ben) Johnston)
* Migrate Home (Dashboard) view to use generic Wagtail class based view (LB (Ben) Johnston)
* Combine most of Wagtail’s stylesheets into the global `core.css` file (Thibaud Colas)
* Add new Breadcrumbs and Tabs to the Wagtail pattern library (Paarth Agarwal)
* Adopt new Page Editor UI tabs in the workflow history report page (Paarth Agarwal)
* Update `ReportView` to extend from generic `wagtail.admin.views.generic.models.IndexView` (Sage Abdullah)
* Introduce a `wagtail.admin.viewsets.chooser.ChooserViewSet` module to serve as a common base implementation for chooser modals (Matt Westcott)
* Add documentation for `wagtail.admin.viewsets.model.ModelViewSet` (Matt Westcott)
* Enhance new breadcrumbs so they can be added to any header or container element (Paarth Agarwal)
* Adopt new breadcrumbs on the page explorer (listing) view and the page chooser modal, remove legacy breadcrumbs code for move page as no longer used (Paarth Agarwal)
* Added multi-site support to the API (Sævar Öfjörð Magnússon)
* Add `add_to_admin_menu` option for `ModelAdmin` (Oliver Parker)
* Implement Fuzzy matching for Elasticsearch (Nick Smith)
* Rename `Page.get_latest_revision_as_page` to `Page.get_latest_revision_as_object` (Sage Abdullah)
* Cache model permission codenames in `PermissionHelper` (Tidiane Dia)
* Selecting a new parent page for moving a page now uses the chooser modal which allows searching (Viggo de Vries)
* Move `get_snippet_edit_handler` function to `wagtail.admin.panels.get_edit_handler` (Sage Abdullah)
* Add clarity to the search indexing documentation for how `boost` works when using Postgres with the database search backend (Tibor Leupold)
* Rename `explorer_breadcrumb` template tag to `breadcrumbs` as it is now used in multiple locations (Paarth Agarwal)
* Updated `django-filter` version to support 23 (Yuekui)
* Use `.iterator()` in a few more places in the admin, to make it more stable on sites with many pages (Andy Babic)
* Migrate some simple React component files to TypeScript (LB (Ben) Johnston)
* Deprecate the usage and documentation of the `wagtail.contrib.modeladmin.menus.SubMenu` class, provide a warning if used directing developers to use `wagtail.admin.menu.Menu` instead (Matt Westcott)
* Remove legacy (non-next) breadcrumbs no longer used, remove `ModelAdmin` usage of breadcrumbs completely (Paarth Agarwal)
* Replace human-readable-date hover pattern with accessible tooltip variant across all of admin (Bernd de Ridder)
* Added `WAGTAILADMIN_USER_PASSWORD_RESET_FORM` setting for overriding the admin password reset form (Michael Karamuth)
* Prefetch workflow states in edit page view to avoid queries in other parts of the view/templates that need it (Tidiane Dia)
* Remove the edit link from edit bird in previews to avoid confusion (Sævar Öfjörð Magnússon)
* Introduce new template fragment and block level enclosure tags for easier template composition (Thibaud Colas)
* Add a `classnames` template tag to easily build up classes from variables provided to a template (Paarth Agarwal)
* Migrate the dashboard (home) view header to the shared header template and update designs (Paarth Agarwal)
* Switch all report workflow, redirects, form submissions, site settings views to use Wagtail’s reusable header component (Paarth Agarwal)
* Update classes and styles for the shared header templates to align with UI guidelines (Paarth Agarwal)
* Clean up multiple eslint rules usage and configs to align better with the Wagtail coding guidelines (LB (Ben Johnston))
* Add inline toolbar for Draftail, to avoid clashing with the page’s header (Thibaud Colas)
* Add command palette in rich text editor to change text format with the keyboard only (Thibaud Colas)
* Add a live-updating character count to the Draftail rich text editor (Thibaud Colas)
* Add rich text editor paste to auto-create links (Thibaud Colas)
* Add rich text editor text shortcuts undo, to allow typing text normally detected as a shortcut (Thibaud Colas)
* Add support for right-to-left (RTL) languages to the rich text editor (Thibaud Colas)
* Change rich text editor placeholder to follow the user’s focus on empty blocks (Thibaud Colas)
* Add rich text editor empty block highlight by showing their block type (Thibaud Colas)
* Add ability to split a rich text field and insert a StreamField block at the same time (Jacob Topp-Mugglestone)
* Make `ModelAdmin` `InspectView` footer actions consistent with other parts of the UI (Thibaud Colas)
* Introduce a new auto-updating preview panel inside the page editor (Sage Abdullah)
* Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
* Use new modal dialog component for privacy settings modal (Sage Abdullah)
* Add `menu_item_name` to modify `MenuItem`'s name for `ModelAdmin` (Alexander Rogovskyy, Vu Pham)
* Add an extra confirmation prompt when deleting pages with a large number of child pages (Jaspreet Singh)
* Adopt the slim header in page listing views, with buttons moved under the "Actions" dropdown, including addition of translation page in the parent "more" button (Paarth Agarwal)
* Improve help block styles in Windows High Contrast Mode with less reliance on communication via colour alone (Anuja Verma)
* Add a bottom border to top messages so they stand out from the header (Anuja Verma)
* Replace latin abbreviations (i.e. / e.g.) with common English phrases so that documentation is easier to understand (Dominik Lech)
* Add shortcut for accessing StreamField blocks by block name with new `blocks_by_name` and `first_block_by_name` methods on `StreamValue` (Tidiane Dia, Matt Westcott)
* Extend support for custom user interface colours across almost all admin colours (Thibaud Colas)
* Add HTML-aware max_length validation and character count on RichTextField and RichTextBlock (Matt Westcott, Thibaud Colas)
* Remove undocumented `SearchableListMixin` (Sage Abdullah)
* Extract filtering code from ReportView to generic IndexView (Sage Abdullah)
* Extract unpublish code for pages to generic UnpublishView (Sage Abdullah)
* Retain other query params in header search behaviour (Sage Abdullah)
* Remove `is_parent` kwarg in various page button hooks as this approach is no longer required (Paarth Agarwal)
* Improve security of redirect imports by adding a file hash (signature) check for so that any tampering of file contents between requests will throw a `BadSignature` error (Jaap Roes)
* Refresh designs for Home (Dashboard) site summary panels, use theme spacing and colours, add support for RTL layouts and better support for small devices (Paarth Agarwal, LB (Ben) Johnston)
* Include all CSS system colours in allowed values in Stylelint's declaration-strict-value rule (Thibaud Colas)
* Add JavaScript `range` utility function (LB (Ben) Johnston)
* Allow generic chooser viewsets to support non-model data such as an API endpoint (Matt Westcott)
* Update all widget styles across the admin UI (Thibaud Colas)
* Update field styles across forms, with help text consistently under fields, error messages above, and comment buttons to the side (Thibaud Colas)
* Make all sections of the page editing UI collapsible by default (Thibaud Colas)
* Update the side panels to prevent overlap with form fields unless necessary (Thibaud Colas)
* Remove unused change password page, was not removed when account management view was converted to tabs (Paarth Agarwal)
* Rework layout of login and password reset pages to ensure `main` id on main element (for skip link) and consistent DOM layout for h1 header (Paarth Agarwal, LB (Ben) Johnston)
* Adopt new design, including logo, for login and password reset pages (Paarth Agarwal, LB (Ben) Johnston)
* Remove usage of inline script to focus on the username field, instead use `autofocus` (LB (Ben) Johnston)
* Improve organisation of the settings reference page in the documentation (Akash Kumar Sen)
* Added `path` and `re_path` decorators to the `RoutablePageMixin` module which emulate their Django URL utils equivalent, redirect `re_path` to the original `route` decorator (Tidiane Dia)
* `BaseChooser` widget now provides a Telepath adapter that's directly usable for any subclasses that use the chooser widget and modal JS as-is with no customisations (Matt Westcott)
* Implement the new chooser widget styles as part of the page editor redesign (Thibaud Colas)
* Update base Draftail/TextField form designs as part of the page editor redesign (Thibaud Colas)
* Move commenting trigger to inline toolbar and move block splitting to the block toolbar and command palette only in Draftail (Thibaud Colas)
* Pages are now locked when they are scheduled for publishing (Karl Hobley)
* Simplify page chooser views by converting to class-based views (Matt Westcott)
* Add support for previews, revisions and drafts on snippets (Sage Abdullah)
* Add "Translate" button within pages’ Actions dropdown when editing pages (Sage Abdullah)
* Add translated labels to the bulk actions tags and collections bulk update fields (Stefan Hammer)
* Add bulk actions support for snippet listings (Shohan Dutta Roy)
* Fix: Typo in `ResumeWorkflowActionFormatter` message (Stefan Hammer)
* Fix: Issue where `ModelAdmin` index listings with export list enabled would show buttons with an incorrect layout (Josh Woodcock)
* Fix: Throw a meaningful error when saving an image to an unrecognised image format (Christian Franke)
* Fix: Remove extra padding for headers with breadcrumbs on mobile viewport (Steven Steinwand)
* Fix: Ensure that custom document or image models support custom tag models (Matt Westcott)
* Fix: Ensure comments use translated values for their placeholder text (Stefan Hammer)
* Fix: Ensure the upgrade notification, shown to admins on the dashboard if Wagtail is out of date, content is translatable (LB (Ben) Johnston)
* Fix: Show the re-ordering option to users that have permission to publish pages within the page listing (Stefan Hammer)
* Fix: Ensure default sidebar branding (bird logo) is not cropped in RTL mode (Steven Steinwand)
* Fix: Add an accessible label to the image focal point input when editing images (Lucie Le Frapper)
* Fix: Remove unused header search JavaScript on the redirects import page (LB (Ben) Johnston)
* Fix: Ensure non-square avatar images will correctly show throughout the admin (LB (Ben) Johnston)
* Fix: Ignore translations in test files and re-include some translations that were accidentally ignored (Stefan Hammer)
* Fix: Show alternative message when no page types are available to be created (Jaspreet Singh)
* Fix: Prevent error on sending notifications for the legacy moderation process when no user was specified (Yves Serrano)
* Fix: Ensure `aria-label` is not set on locale selection dropdown within page chooser modal as it was a duplicate of the button contents (LB (Ben Johnston))
* Fix: Revise the `ModelAdmin` title column behaviour to only link to 'edit' if the user has the correct permissions, fallback to the 'inspect' view or a non-clickable title if needed (Stefan Hammer)
* Fix: Ensure that `DecimalBlock` preserves the `Decimal` type when retrieving from the database (Yves Serrano)
* Fix: When no snippets are added, ensure the snippet chooser modal would have the correct URL for creating a new snippet (Matt Westcott)
* Fix: `ngettext` in Wagtail's internal JavaScript internationalisation utilities now works (LB (Ben) Johnston)
* Fix: Ensure the linting/formatting npm scripts work on Windows (Anuja Verma)
* Fix: Fix display of dates in exported xlsx files on macOS Preview and Numbers (Jaap Roes)
* Fix: Make progress bars’ progress visible in forced colors mode (Anuja Verma)
* Fix: Make checkboxes visible in forced colors mode (Anuja Verma)
* Fix: Display the correct color for icons in forced colors mode (Anuja Verma)
* Fix: Add a border around modal dialogs so they can be identified in forced colors mode (Anuja Verma)
* Fix: Remove outdated reference to 30-character limit on usernames in help text (minusf)
* Fix: Resolve multiple form submissions index listing page layout issues including title not being visible on mobile and interaction with large tables (Paarth Agarwal)
* Fix: Ensure `ModelAdmin` single selection lists show correctly with Django 4.0 form template changes (Coen van der Kamp)
* Fix: Ensure icons within help blocks have accessible contrasting colours, and links have a darker colour plus underline to indicate they are links (Paarth Agarwal)
* Fix: Ensure consistent sidebar icon position whether expanded or collapsed (Scott Cranfill)
* Fix: Avoid redirects import error if the file had lots of columns (Jaap Roes)
* Fix: Resolve accessibility and styling issues with the expanding status panel (Sage Abdullah)
* Fix: Avoid 503 `AttributeError` when an empty search param `q=` is combined with other filters in the Images index view (Paritosh Kabra)
* Fix: Fix error with string representation of FormSubmission not returning a string (LB (Ben) Johnston)
* Fix: Ensure disabled buttons are distinguishable from active buttons in forced colors mode (Anuja Verma)
* Fix: Revise usage of `extra_actions` in new changes to shared header template to avoid invalid template variable usage (Paarth Agarwal)
* Fix: Ensure that bulk actions correctly support models with non-integer primary keys (id) (LB (Ben) Johnston)
* Fix: Make it possible to toggle collapsible panels in the edit UI with the keyboard (Thibaud Colas)
* Fix: Re-implement checkbox styles so the checked state is visible in forced colors mode (Thibaud Colas)
* Fix: Re-implement switch component styles so the checked state is visible in forced colors mode (Thibaud Colas)
* Fix: Always render select widgets consistently regardless of where they are in the admin (Thibaud Colas)
* Fix: Make sure input labels and always take up the available space (Thibaud Colas)
* Fix: Correctly style BooleanBlock within StructBlock (Thibaud Colas)
* Fix: Make sure comment icons can’t overlap with help text (Thibaud Colas)
* Fix: Make it possible to scroll input fields in admin on safari mobile (Thibaud Colas)
* Fix: Stop rich text fields from overlapping with sidebar (Thibaud Colas)
* Fix: Prevent comment buttons from overlapping with fields (Thibaud Colas)
* Fix: Resolve MySQL search compatibility issue with Django 4.1 (Andy Chosak)
* Fix: Ensure that the fields on login and password reset forms are visible in forced colors mode (Paarth Agarwal)
* Fix: Missing a outline on dropdown content and malformed tooltip arrow in forced colors mode (Anuja Verma, LB (Ben) Johnston)
* Fix: Layout issues with reports (including form submissions listings) on md device widths (Akash Kumar Sen, LB (Ben) Johnston)
* Fix: Layout issue with page explorer's inner header item on small device widths (Akash Kumar Sen)
* Fix: Ensure that `BaseSiteSetting` / `BaseGenericSetting` objects can be pickled (Andy Babic)
* Fix: Ensure `DocumentChooserBlock` can be deconstructed for migrations (Matt Westcott)
* Fix: Resolve frontend console error and unintented console logging issues (Matt Westcott, Paarth Agarwal)
* Fix: Resolve issue with sites that have not yet migrated away from `BaseSetting` when upgrading to Wagtail 4.0 (Stefan Hammer)
* Fix: Use correct classnames for showing/hiding edit button on chooser widget (Matt Westcott)
* Fix: Render MultiFieldPanel’s heading even when nested (Thibaud Colas)
* Fix: Make sure select widgets render correctly regardless of the Django field and widget type (Thibaud Colas)
* Fix: Consistently display boolean field labels above the widget so they render correctly (Thibaud Colas)
* Fix: Address form field label alignment issues by always displaying labels above the widget (Thibaud Colas)
* Fix: Make sure rich text URL editing tooltip is fully visible when displayed inside InlinePanel blocks (Thibaud Colas)
* Fix: Allow input fields to scroll horizontally in Safari iOS (Thibaud Colas)
* Fix: Ensure screen readers are made aware of page level messages added dynamically to the top of the page (Paarth Agarwal)
* Fix: Fix `updatemodulepaths` command for Python 3.7 (Matt Westcott)
* Fix: Only show locale filter in choosers when i18n is enabled in settings (Matt Westcott)
* Fix: Ensure that the live preview panel correctly clears the cache when a new page is created (Sage Abdullah)
* Fix: Ensure that there is a larger hoverable area for add block (+) within the Drafttail editor (Steven Steinwand)
* Fix: Resolve multiple header styling issues for modal, alignment on small devices, outside click handling target on medium devices, close button target size and hover styles (Paarth Agarwal)
* Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
* Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
3.0.3 (05.09.2022)
~~~~~~~~~~~~~~~~~~
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
3.0.2 (30.08.2022)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure string representation of `FormSubmission` returns a string (LB (Ben Johnston))
* Fix: Fix `updatemodulepaths` command for Python 3.7 (Matt Westcott)
* Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
* Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
3.0.1 (16.06.2022)
~~~~~~~~~~~~~~~~~~
* Add warning when `WAGTAILADMIN_BASE_URL` is not configured (Matt Westcott)
* Fix: Ensure `TabbedInterface` will not show a tab if no panels are visible due to permissions (Paarth Agarwal)
* Fix: Specific snippets list language picker was not properly styled (Sage Abdullah)
* Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the `WAGTAIL_ENABLE_UPDATE_CHECK` sends the referrer origin with `strict-origin-when-cross-origin` (Karl Hobley)
* Fix: Fix misaligned spinner icon on page action button (LB (Ben Johnston))
* Fix: Ensure radio buttons / checkboxes display vertically under Django 4.0 (Matt Westcott)
* Fix: Prevent failures when splitting blocks at the start or end of a block, or with highlighted text (Jacob Topp-Mugglestone)
* Fix: Allow scheduled publishing to complete when the initial editor did not have publish permission (Matt Westcott)
* Fix: Stop emails from breaking when `WAGTAILADMIN_BASE_URL` is absent due to the request object not being available (Matt Westcott)
* Fix: Make try/except on sending email less broad so that legitimate template rendering errors are exposed (Matt Westcott)
3.0 (16.05.2022)
~~~~~~~~~~~~~~~~
* Phase out special-purpose panel types (`StreamFieldPanel`, `RichTextFieldPanel`, `ImageChooserPanel`, `DocumentChooserPanel`, `PageChooserPanel`, `SnippetChooserPanel`) in favour of `FieldPanel` (Matt Westcott)
* Implement splitting of rich text blocks within StreamField (Jacob Topp-Mugglestone)
* Add support for image rendition prefetching (Andy Babic)
* Upgrade ESLint and Stylelint configurations to latest shared Wagtail configs (Thibaud Colas, Paarth Agarwal)
* Major updates to frontend tooling; move Node tooling from Gulp to Webpack, upgrade to Node v16 and npm v8, eslint v8, stylelint v14 and others (Thibaud Colas)
* Change comment headers’ date formatting to use browser APIs instead of requiring a library (LB (Ben Johnston))
* Lint with flake8-comprehensions and flake8-assertive, including adding a pre-commit hook for these (Mads Jensen, Dan Braghis)
* Switch the Wagtail branding font to a system font stack (Steven Steinwand, Paarth Agarwal)
* Add black configuration and reformat code using it (Dan Braghis)
* Remove UI code for legacy browser support: polyfills, IE11 workarounds, Modernizr (Thibaud Colas)
* Remove redirect auto-creation recipe from documentation as this feature is now supported in Wagtail core (Andy Babic)
* Remove IE11 warnings (Gianluca De Cola)
* Remove the legacy Hallo rich text editor as it has moved to an external package (LB (Ben Johnston))
* Increase the size of checkboxes throughout the UI, and simplify their alignment (Steven Steinwand)
* Adopt [MyST](https://myst-parser.readthedocs.io/en/latest/) for parsing documentation written in Markdown, replaces recommonmark (LB (Ben Johnston), Thibaud Colas)
* Installing docs extras requirements in CircleCI so issues with the docs requirements are picked up earlier (Thibaud Colas)
* Remove core usage of jinjalint and migrate to curlylint to resolve dependency incompatibility issues (Thibaud Colas)
* Switch focus outlines implementation to `:focus-visible` for cross-browser consistency (Paarth Agarwal)
* Remove most uppercased text styles from admin UI (Paarth Agarwal)
* Convert all UI code to CSS logical properties for Right-to-Left (RTL) language support (Thibaud Colas)
* Migrate multiple documentation pages from RST to MD - including the editor's guide (Vibhakar Solanki, LB (Ben Johnston), Shwet Khatri)
* Add documentation for defining custom form validation on models used in Wagtail's `modelAdmin` (Serafeim Papastefanos)
* Update `README.md` logo to work for GitHub dark mode (Paarth Agarwal)
* Avoid an unnecessary page reload when pressing enter within the header search bar (Images, Pages, Documents) (Riley de Mestre)
* Removed unofficial length parameter on `If-Modified-Since` header in `sendfile_streaming_backend` which was only used by IE (Mariusz Felisiak)
* Add Pinterest support to the list of default oEmbed providers (Dharmik Gangani)
* Update Jinja2 template support for Jinja2 3.x (Seb Brown)
* Add ability for `StreamField` to use `JSONField` to store data, rather than `TextField` (Sage Abdullah)
* Replace `content_json` `TextField` with `content` `JSONField` in `PageRevision` (Sage Abdullah)
* Remove `replace_text` management command (Sage Abdullah)
* Replace `data_json` `TextField` with `data` `JSONField` in `BaseLogEntry` (Sage Abdullah)
* Split up linting / formatting tasks in Makefile into client and server components (Hitansh Shah)
* Add support for embedding Instagram reels (Luis Nell)
* Use Django’s JavaScript catalog feature to manage translatable strings in JavaScript (Karl Hobley)
* Add a `page_description` to the Page model, to provide help text for a given page type (Kalob Taulien, Thibaud Colas, Matt Westcott, Stefan Hammer)
* Add `trimmed` attribute to all blocktrans tags, so spacing is more reliable in translated strings (Harris Lapiroff)
* Add documentation that describes how to use `ModelAdmin` to manage `Tag`s (Abdulmajeed Isa)
* Rename the setting `BASE_URL` (undocumented) to `WAGTAILADMIN_BASE_URL` and add to documentation, `BASE_URL` will be removed in a future release (Sandil Ranasinghe)
* Validate to and from email addresses within form builder pages when using `AbstractEmailForm` (Jake Howard)
* Add `WAGTAILIMAGES_RENDITION_STORAGE` setting to allow an alternative image rendition storage (Heather White)
* Add `wagtail_update_image_renditions` management command to regenerate image renditions or purge all existing renditions (Hitansh Shah, Onno Timmerman, Damian Moore)
* Fully remove the legacy sidebar, with slim sidebar replacing it for all users (Thibaud Colas)
* Add support for adding custom attributes for link menu items in the slim sidebar (Thibaud Colas)
* Implement new slim page editor header with breadcrumb (Steven Steinwand, Karl Hobley)
* Add the ability for choices to be separated by new lines instead of just commas within the form builder, commas will still be supported if used (Abdulmajeed Isa)
* Add internationalisation UI to modeladmin (Andrés Martano)
* Support chunking in `PageQuerySet.specific()` to reduce memory consumption (Andy Babic)
* Implement new tabs design across the admin interface (Steven Steinwand)
* Move page meta information from the header to a new status side panel component inside of the page editing UI (Steven Steinwand, Karl Hobley)
* Add useful help text to Tag fields to advise what content is allowed inside tags, including when `TAG_SPACES_ALLOWED` is `True` or `False` (Abdulmajeed Isa)
* Change `AbstractFormSubmission`'s `form_data` to use JSONField to store form submissions (Jake Howard)
* Add image duplicate detection on upload (Tidiane Dia, with sponsorship from The Motley Fool)
* Add a system font stack for monospace fonts (Rishank Kanaparti)
* Fix: When using `simple_translations` ensure that the user is redirected to the page edit view when submitting for a single locale (Mitchel Cabuloy)
* Fix: When previewing unsaved changes to `Form` pages, ensure that all added fields are correctly shown in the preview (Joshua Munn)
* Fix: When Documents (e.g. PDFs) have been configured to be served inline via `WAGTAILDOCS_CONTENT_TYPES` & `WAGTAILDOCS_INLINE_CONTENT_TYPES` ensure that the filename is correctly set in the `Content-Disposition` header so that saving the files will use the correct filename (John-Scott Atlakson)
* Fix: Improve the contrast of the “Remember me” checkbox against the login page’s background (Steven Steinwand)
* Fix: Group permission rows with custom permissions no longer have extra padding (Steven Steinwand)
* Fix: Make sure the focus outline of checkboxes is fully around the outer border (Steven Steinwand)
* Fix: Consistently set `aria-haspopup="menu"` for all sidebar menu items that have sub-menus (LB (Ben Johnston))
* Fix: Make sure `aria-expanded` is always explicitly set as a string in sidebar (LB (Ben Johnston))
* Fix: Use a button element instead of a link for page explorer menu item, for the correct semantics and behaviour (LB (Ben Johnston))
* Fix: Make sure the “Title” column label can be translated in the page chooser and page move UI (Stephanie Cheng Smith)
* Fix: Remove redundant `role="main"` attributes on `<main>` elements causing HTML validation issues (Luis Espinoza)
* Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
* Fix: Stop skipping heading levels in Wagtail welcome page (Jesse Menn)
* Fix: Add missing `lang` attributes to `<html>` elements (James Ray)
* Fix: Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang)
* Fix: Ensure `thumb_col_header_text` is correctly used by `ThumbnailMixin` within `ModelAdmin` as the column header label (Kyle J. Roux)
* Fix: Page copy in Wagtail admin ignores `exclude_fields_in_copy` (John-Scott Atlakson)
* Fix: Translation key `IntegrityError` when publishing pages with translatable `Orderable`s that were copied without being published (Kalob Taulien, Dan Braghis)
* Fix: Ignore `GenericRelation` when copying pages (John-Scott Atlakson)
* Fix: Implement ARIA tabs markup and keyboards interactions for admin tabs (Steven Steinwand)
* Fix: Ensure `wagtail updatemodulepaths` works when system locale is not UTF-8 (Matt Westcott)
* Fix: Re-establish focus trap for Pages explorer in slim sidebar (Thibaud Colas)
* Fix: Ensure the icon font loads correctly when `STATIC_URL` is not `"/static/"` (Jacob Topp-Mugglestone)
2.16.3 (05.09.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the `WAGTAIL_ENABLE_UPDATE_CHECK` sends the referrer origin with `strict-origin-when-cross-origin` (Karl Hobley)
* Fix: On the Locked pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
* Fix: Ensure Python 3.10 compatibility when using Elasticsearch backend (Przemysław Buczkowski, Matt Westcott)
2.16.2 (11.04.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Update django-treebeard dependency to 4.5.1 or above (Serafeim Papastefanos)
* Fix: Fix permission error when sorting pages having page type restrictions (Thijs Kramer)
* Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
* Fix: Ensure that all descendant pages are logged when deleting a page, not just immediate children (Jake Howard)
* Fix: Refactor `FormPagesListView` in wagtail.contrib.forms to avoid undefined `locale` variable when subclassing (Dan Braghis)
* Fix: Page copy in Wagtail admin ignores `exclude_fields_in_copy` (John-Scott Atlakson)
* Fix: Translation key `IntegrityError` when publishing pages with translatable `Orderable`s that were copied without being published (Kalob Taulien, Dan Braghis)
* Fix: Ignore `GenericRelation` when copying pages (John-Scott Atlakson)
* Fix: Ensure 'next' links from image / document listings do not redirect back to partial AJAX view (Matt Westcott)
* Fix: Skip creation of automatic redirects when page cannot be routed (Matt Westcott)
* Fix: Prevent JS errors on locale switcher in page chooser (Matt Westcott)
2.16.1 (11.02.2022)
~~~~~~~~~~~~~~~~~~~
* Fix: Ensure that correct sidebar submenus open when labels use non-Latin alphabets (Matt Westcott)
* Fix: Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych)
* Fix: Fix issue where bulk actions would not work for object IDs greater than 999 when `USE_THOUSAND_SEPARATOR` (Dennis McGregor)
* Fix: Set cookie for sidebar collapsed state to "SameSite: lax" (LB (Ben Johnston))
* Fix: Prevent error on creating automatic redirects for sites with non-standard ports (Matt Westcott)