forked from wagtail/wagtail
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG.txt
More file actions
5000 lines (4358 loc) · 398 KB
/
CHANGELOG.txt
File metadata and controls
5000 lines (4358 loc) · 398 KB
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
=========
7.4 LTS (xx.xx.xxxx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~~~~~
* Add `is_deferred_validation` flag to support skipping custom validation when saving drafts (Daniel Kirkham)
* Update project template Dockerfile to build dependencies in a separate stage (Brylie Oxley, Akshat Gupta)
* Add `include_root` parameter to admin pages API endpoint (Divyansh Mishra)
* Fix: Handle nested inline models when displaying object usage information (Sage Abdullah, Kacper Walęga, Tian Jie Wong)
* Fix: Avoid duplicate `get_object()` DB query in API detail view (Siddheshwar Kadam)
* Fix: Ensure `ImageBlock` alt text populates on choosing a new image after unchecking decorative state (Pratham Jaiswal)
* Fix: Set `verbose_name_plural` for Query model in search promotions app (Saptami)
* Fix: Truncate overly long task names in workflow admin view (Gaurav Takhi)
* Docs: Add documentation for the `filter_spec` parameter of `ImageRenditionField` (Soumya-codr)
* Docs: Add guide for testing document upload forms (Wenli Tsai, Bhavesh Sharma)
* Docs: Document the `nested_default_fields` attribute on API viewsets (Deepanshu Tevathiya)
* Docs: Replace `http` with `https` in example URLs (Kunal Gupta)
* Docs: Use `pathlib.Path` for settings in "Integrating into Django" documentation (Kunal Gupta)
* Docs: Clarify example of how to implement custom embed finders (Naman Sharma S)
* Docs: Add documentation for using the `ReferenceIndex` API (Saptami)
* Docs: Retitle documentation page for settings contrib module to "Settings models" (Karl Hobley)
* Docs: Fix typos and minor grammar issues (Kunal Gupta)
* Maintenance: Removed support for Django 4.2
* Maintenance: Fix LocaleController test failures caused by differing timezone representations between Node versions (Saptami, Matt Westcott)
* Maintenance: Fix frontend coverage upload to Codecov (Sage Abdullah)
* Maintenance: Update semgrep to 1.150.0 (Pravin Kamble)
* Maintenance: Fix `hash_filelike` test case to account for line break differences on Windows (Mustansir Dabhiya)
* Maintenance: Fix temporary file handling in redirect import tests on Windows (Mustansir Dabhiya)
* Maintenance: Fix use of platform-specific date formatting in edit handler tests (Mustansir Dabhiya)
* Maintenance: Bump Node.js to 24 (active LTS), upgrade Jest and Storybook (Sage Abdullah)
* Maintenance: Use Docker Elasticsearch images for GitHub CI instead of unofficial actions (Matt Westcott)
* Maintenance: Make LocaleController tests robust against changes to timezone data in Node (Sage Abdullah)
* Maintenance: Fix `PermissionError` on document serve tests under Windows (Matt Westcott)
7.3 (03.02.2026)
~~~~~~~~~~~~~~~~
* Add support for Django 6.0
* Resize overly large avatar images on upload (Harshit Ranjan)
* Add natural keys for `Page` and `Collection` models (Samya Aggarwal)
* Add Loom oEmbed provider (Nick Ivons)
* Add `ModelViewSet.pk_path_converter` with defaults for `IntegerField` and `UUIDField` primary keys (Seb Corbin)
* Improve accessibility for sidebar menu with visual active (expanded) menu item indicators (Vignesh Shivhare)
* Add `before_edit_setting` / `after_edit_setting` hooks (Baptiste Mispelon)
* Lower default AVIF encoding quality from 80 to 73 (Thibaud Colas)
* Provide a structured rendering of `StreamBlock` in comparison view (Taras Panasiuk)
* Add support for settings and custom block layouts for StructBlock (Sage Abdullah)
* Add llms.txt versions of the developer documentation and Wagtail user guide (Thibaud Colas)
* Lower default JPEG and AVIF image quality settings to provide consistent perceptual quality between formats (Thibaud Colas)
* Add support for custom content checks with client-side registration (Thibaud Colas)
* Initial support for autosave (Matt Westcott, Sage Abdullah)
* Fix: Do not try to resolve locale during fixture load (Jake Howard, Seb Corbin)
* Fix: Gracefully handle oEmbed responses with a non-200 status or missing type (Shivam Kumar, Bhavesh Sharma)
* Fix: Keep action button labelled as "Publish" rather than "Schedule to publish" if go-live date has passed (Vishrut Ramraj)
* Fix: Pass accumulated icons to each `register_icons` hook (Joey Jurjens, Sage Abdullah)
* Fix: Skip revisions that are missing the specified field in StreamField migrations (Joshua Munn)
* Fix: Preserve listing search and filter parameters when redirecting from bulk actions (Sage Abdullah)
* Fix: Ensure that object references within `TypedTableBlock` are counted in the reference index (Aman Bora)
* Fix: Fix slug auto-generation when slug field is omitted from page edit form (Pravin Kamble)
* Fix: Ensure `request.is_preview` and `request.preview_mode` are set for password-required responses (Ishtpreet Singh)
* Fix: Optimise storage of redirect paths containing Unicode characters and ensure percent-encoded characters are matched case-insensitively (Andy Babic, Florin Barnea, Aman Bora, Matt Westcott)
* Fix: Ensure that reference index records are deleted when the target object is deleted (bettercallok)
* Fix: Ensure filters are applied to export button URLs in custom page listings (Ritik Arya, Sage Abdullah)
* Fix: Prevent conflicting IDs in nested `StructBlock`s with blocks named `content` (Sage Abdullah, Serkan Korkusuz)
* Fix: CVE-2026-25517: Improper permission handling on admin preview endpoints (thxtech, Matt Westcott, Jake Howard)
* Docs: Recommend running `purge_embeds` after an embed provider changes policies (Paul Souders)
* Docs: Document `WAGTAILIMAGES_FORMAT_CONVERSIONS` in the settings docs (David Buxton)
* Docs: Wording changes to Draftail extension docs to improve searchability (Lasse Schmieding)
* Docs: Fix StreamField param name (Baptiste Mispelon)
* Docs: Clarify that `before_delete_page` and similar hooks only trigger on the individual page view, not bulk actions (Shivam Kumar)
* Docs: Clarify template location in custom user model documentation (Akhil Muraleedharan)
* Docs: Improve signposting for contributor docs (Matt Westcott)
* Docs: Add mention of novalidate attribute in form builder docs (Thibaud Colas)
* Docs: Fix formatting for `PageQuerySet.prefetch_related` performance note (Lasse Schmieding)
* Docs: Fix path to `search.html` in tutorial (Lee Hart)
* Docs: Grammar fixes to contributor guidelines (Biswajeet Yadav)
* Docs: Mention punctuation is unsupported in paths for `RoutablePageMixin` (Tibor Leupold)
* Docs: Various typo and grammar fixes (Mustansir Dabhiya)
* Docs: Improve instructions for building documentation on Windows (Mustansir Dabhiya)
* Docs: Provide recommended image quality settings for common use cases (Thibaud Colas)
* Docs: Add detailed documentation on reordering within generic listing view (Ankit Chaudhary)
* Docs: Document early notification process for security releases (Jake Howard)
* Docs: Remove mention of Wagtailtrans from internationalization docs (Andreas Nüßlein)
* Maintenance: Dropped support for Django 5.1
* Maintenance: Updated NPM packages (LB (Ben) Johnston)
* Maintenance: Rationalize front-end linting tasks and run concurrently (LB (Ben) Johnston)
* Maintenance: Add a basic set of Storybook stories for the Stimulus Autosize controller (LB (Ben) Johnston)
* Maintenance: Remove use of `_WAGTAILSEARCH_FORCE_AUTO_UPDATE` in search tests (Matt Westcott)
* Maintenance: Add unit test for `SubmitController` error handling (LB (Ben) Johnston)
* Maintenance: Improve nightly release upload scripts (Jake Howard)
* Maintenance: Upload redundant `latest.whl` nightly build for ease of use with package managers (Sage Abdullah)
* Maintenance: Move MANIFEST.in settings into pyproject.toml (Pravin Kamble)
* Maintenance: Fix linting rules B006 and B904 (Vivek Subramani, Matt Westcott)
* Maintenance: Remove jQuery dependency for image URL generator (LB (Ben) Johnston)
* Maintenance: Upgrade to django-modelcluster 6.4.1 for Django 6.0 compatibility (Matt Westcott)
* Maintenance: Refactor CreateView/EditView validation logic to support non-form validation (Matt Westcott)
* Maintenance: Formalized support for Django 6.0 (Pravin Kamble)
* Maintenance: Add `no-jquery` ESLint plugin to start final deprecation of jQuery (LB (Ben) Johnston)
* Maintenance: Add `mode` value to `w-teleport` to allow different DOM update strategies (Sage Abdullah)
* Maintenance: Ignore 'build' dir when running ESLint (Matt Westcott)
* Maintenance: Upgrade to django-tasks 0.11.0 for Django 6.0 and Python 3.11 compatibility (Guilhem Saurel)
* Maintenance: Switch userbar items to the template components API (Thibaud Colas)
7.2.2 (03.02.2026)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent conflicting IDs in nested `StructBlock`s with blocks named `content` (Sage Abdullah, Serkan Korkusuz)
* Fix: CVE-2026-25517: Improper permission handling on admin preview endpoints (thxtech, Matt Westcott, Jake Howard)
7.2.1 (26.11.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Allow userbar in page previews to render without needing to configure site record (Sage Abdullah)
* Fix: Disable usage count ordering when searching on documents and images listing views, to prevent unsupported search query (Sage Abdullah)
* Fix: Do not replace existing document or image title when uploading a new file (Sage Abdullah)
* Fix: Use a more efficient query for fetching usage counts on image and document listings when not ordering by usage count (Sage Abdullah)
* Fix: Add composite indexes to improve reference index performance (Sage Abdullah)
* Maintenance: Remove use of `_WAGTAILSEARCH_FORCE_AUTO_UPDATE` in search tests (Matt Westcott)
7.2 (05.11.2025)
~~~~~~~~~~~~~~~~
* Added support for Python 3.14 (Sage Abdullah)
* Add usage count filter to the admin image and document listings (Joel William)
* Add keyboard shortcut (`?`) to activate the keyboard shortcuts dialog (Dhruvi Patel)
* Add keyboard shortcut (`/`) to activate and focus on the search input in the sidebar (Dhruvi Patel)
* Allow deep contentpath for comments on fields other than StreamField (Lasse Schmieding, Sébastien Corbin, Joel William, Sage Abdullah)
* Reorganize keyboard shortcuts into better categories with an ordering from most common to most specific (Dhruvi Patel)
* Add `max_value` of 100 (%) for the `closeness` field in Image URL Generator form (LB (Ben) Johnston)
* Add reordering support to generic model and snippet listing views (Joey Jurjens, Sage Abdullah)
* Add messaging within the keyboard shortcuts dialog to indicate when keyboard shortcuts are disabled or how to disable them via user preferences (Pravin Kamble)
* Allow defining a custom `WorkflowLock` subclass via `Task.lock_class` in a custom task (Dan Braghis)
* Add new toggle from grid to list layout for image choosers (Joel William)
* Update grid-list layout toggle to new design (Joel William)
* Add readability score metric to content checks (Thibaud Colas)
* Add explainer panel for content metrics (Thibaud Colas)
* Add a button to jump to the first validation error in header messages (Srishti Jaiswal, Sage Abdullah, LB (Ben) Johnston)
* Support calculating content metrics without opening the preview panel (Sage Abdullah)
* Update project template settings to use pathlib Path object (Eric Matthes)
* Migrate to django-modelsearch library, providing Elasticsearch 9 and OpenSearch backends (Karl Hobley, Matt Westcott)
* Fix: Use the correct method of resolving the file storage dynamically for FileField usage in images & documents (Amir Mahmoodi)
* Fix: Ensure the add comment keyboard shortcut is disabled when keyboard shortcuts are disabled in user preferences (Dhruvi Patel)
* Fix: Use model name when ordering by page type in page listings (Sage Abdullah)
* Fix: Prevent error from default `update_fields` parameter on `Page.asave()` (Tosinibikunle)
* Fix: Ignore hidden error messages in minimap & `CountController` default `findValue` (Sage Abdullah)
* Fix: Change default ordering for `UserViewSet` to `User.USERNAME_FIELD` to support default ordering with custom User models that may not have a `name` field (Lynwee)
* Fix: Ensure starter tests in the project template pass (Lasse Schmieding)
* Fix: Ensure fixed RichText toolbar shows under footer actions (Maciek Baron)
* Fix: Prevent error when iterating over specific tasks with missing models (Lasse Schmieding)
* Fix: Ensure `TableBlock` header dropdown default option can be translated (arpitmak)
* Fix: Fix missing cache key prefix when removing cached redirect files (Heric Libong)
* Docs: Fix cross-reference links to the TypeDoc-generated docs (Sage Abdullah)
* Docs: Refine readthedocs' search indexing for releases and client-side code (Sage Abdullah)
* Docs: Fix incorrect link to third party site in advanced topics (Yousef Al-Hadhrami (Yemeni))
* Docs: Fix incorrect import references and update steps for clarity in getting started tutorial (Hunzlah Malik, Pravin Kamble)
* Docs: Fix code example for `construct_wagtail_userbar` (Baptiste Mispelon)
* Docs: Add a note about CSP for background image position and responsive embed styles (Thibaud Colas, Chiemezuo Akujobi, Sage Abdullah)
* Docs: Add guidance for AI-led contributions to contributor docs (Andrew Selzer)
* Docs: Add guidance for AI agents via `AGENTS.md` (Andrew Selzer)
* Docs: Add Windows command examples for contributing setup (Shivam Kumar)
* Docs: Add recent third party tutorials from 2025 (LB (Ben) Johnston)
* Maintenance: Removed support for Python 3.9 (Matt Westcott)
* Maintenance: Updated NPM packages and linting configuration (LB (Ben) Johnston)
* Maintenance: Added linting script to keep package.json and pre-commit package versions in sync (LB (Ben) Johnston)
* Maintenance: Migrate privacy switch modal field hiding to the Stimulus `RulesController` (LB (Ben) Johnston)
* Maintenance: Add semgrep rules for inline styles and scripts (Chiemezuo Akujobi, Sage Abdullah)
* Maintenance: Fix intermittent test failures caused by nondeterministic order in TestFilteredModelChoiceField (Sage Abdullah)
* Maintenance: Add support for `attrs` in `formattedfield` tag & clean up other usages of the `attrs` template include (LB (Ben) Johnston)
* Maintenance: Allow exempting external templates from number formatting checks (Sage Abdullah)
* Maintenance: Migrate file title generation to SyncController for CSP compliance (Aayushman Singh, Chiemezuo Akujobi, LB (Ben) Johnston, Sage Abdullah)
* Maintenance: Remove outdated pytest configuration (Shivam Kumar)
* Maintenance: Avoid mutable default argument in `ImageNode` within image template tags (minusf)
* Maintenance: Use consistent sentence format for user-facing errors (LB (Ben) Johnson)
* Maintenance: Update django-tasks dependency to allow 0.9, for preliminary Django 6.0 support (Sage Abdullah)
* Maintenance: Fix linting issues B009, B010, B033 (minusf)
7.1.3 (03.02.2026)
~~~~~~~~~~~~~~~~~~
* Fix: Allow userbar in page previews to render without needing to configure site record (Sage Abdullah)
* Fix: Disable usage count ordering when searching on documents and images listing views, to prevent unsupported search query (Sage Abdullah)
* Fix: Prevent conflicting IDs in nested `StructBlock`s with blocks named `content` (Sage Abdullah, Serkan Korkusuz)
* Fix: CVE-2026-25517: Improper permission handling on admin preview endpoints (thxtech, Matt Westcott, Jake Howard)
7.1.2 (23.10.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Allow `label_format` to be set to an empty string to hide the block summary label (Sage Abdullah)
* Fix: Better support userbar loading on multi-site through site hosts (Sage Abdullah)
* Fix: Prevent error on custom generic create and edit views without a header icon (Sage Abdullah)
* Fix: Use the correct origin when computing content metrics via cross-origin communications (Sage Abdullah)
* Docs: Link to django-treebeard's `Node.move()` in `Page.move()` documentation (Baptiste Mispelon)
7.1.1 (28.08.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure the add comment keyboard shortcut is disabled when keyboard shortcuts are disabled in user preferences (Dhruvi Patel)
* Fix: Fix crash when the Wagtail API is accessed without `rest_framework` installed (Vijay Raj)
* Fix: Fix failure of `FieldPanel` and `TitleFieldPanel` with `read_only=True` (Sage Abdullah)
* Fix: Fix broken Javascript interactions on nested inline panels (Matt Westcott, Sage Abdullah)
* Fix: Fix rendering of StructBlock with custom form templates (Sage Abdullah)
* Fix: Prevent crash when previewing a form page with an empty field type (Sage Abdullah)
* Docs: Fix cross-reference links to the TypeDoc-generated docs (Sage Abdullah)
* Docs: Refine readthedocs' search indexing for releases and client-side code (Sage Abdullah)
* Docs: Add section about closing stale pull requests to the issue tracking documentation (Thibaud Colas, Sage Abdullah, LB (Ben) Johnston)
* Docs: Add backporting policy for UI and accessibility fixes with updated "active support" and "security support" definitions (Thibaud Colas, Sage Abdullah, Scott Cranfill)
7.1 (04.08.2025)
~~~~~~~~~~~~~~~~
* Allow configuring permissions for site settings on a per-site basis (Matt Westcott)
* Add iHeart oEmbed provider (Storm Heg)
* Add locale-aware `NumberColumn` to display numbers in universal listings (Baptiste Mispelon)
* Add ability for the header breadcrumbs to save their open/closed state across navigation & refresh (Srishti Jaiswal)
* Update Twitter oEmbed provider to recognize x.com links (manu)
* Render listing buttons as template components (Sage Abdullah)
* Define default `GenericRelations` for `RevisionMixin` and `WorkflowMixin`, to avoid issues with deletion cascades (Sage Abdullah)
* Document and relocate the `init_new_page` signal (Maciek Baron)
* Use `requests` to access oEmbed endpoints, for more robust SSL certificate handling (Matt Westcott)
* Ensure that bulk deletion views respect protected foreign keys (Sage Abdullah)
* Add minimum length validation for `RichTextBlock` and `RichTextField` (Alec Baron)
* Allow `SnippetChooserBlock`'s `icon` to take precedence over `SnippetViewSet.icon` (Matt Westcott)
* Allow searching the users index on custom fields (Paul Craciunoiu, Sage Abdullah)
* Support `preserve-svg` in Jinja2 image tags (Vishesh Garg)
* Recognize `preserve-svg` as a filter when calling `Image.get_rendition` directly (Richard Allen)
* Add support for `preserve-svg` for `Image.get_renditions`, picture, and srcset_image tags (Matt Westcott)
* Include `TypedTableBlock` content when indexing for search (Charan T M)
* Preserve query parameters when redirecting from the API `find` view to the `detail` view (Andrew Hosgood)
* Add 'Edit' button to success message after copying page (Dhruvi Patel)
* Restrict file dialog in multiple image uploader to the allowed image file types (Mustopha Mubarak O)
* Raise clear error when non-StreamBlock is used as top-level block in StreamField (Clifford Gama)
* Refactor user bar rendering to better support headless websites (Sage Abdullah)
* Add type-to-confirm step when deleting large numbers of pages through bulk actions (Rachel Smith)
* Add `NoFutureDateValidator` to validate against dates in the future (Talha Rizwan)
* Extract separate `background_position_x` and `background_position_y` properties from `AbstractRendition.background_position_style` (Chiemezuo Akujobi)
* Add support for translated string concatenation in the locale selector when switching between a model's language in the admin (Matt Westcott, Ellie Walsh-O'Neill)
* Switch to check / cross icons for users’ active state in users listing (Sage Abdullah)
* Add a keyboard shortcut to easily toggle the visibility of the minimap side panel (Dhruvi Patel)
* Add a new user profile setting to disable Wagtail’s custom keyboard shortcuts (Dhruvi Patel)
* Add API for extracting preview page content (Sage Abdullah)
* Add toggle from grid to list layout for image listings (Joel William)
* Add `UsageCountColumn` to document and image listings (Joel William, Sage Abdullah)
* Make `StructBlock`s collapsible when nested to support block settings (Sage Abdullah)
* Improve `label_format` support for more widget types in StreamField (Sage Abdullah)
* Add `form_attrs` support to all StreamField blocks (Sage Abdullah)
* Update project template documentation to include testing instructions and include starting test file in template (Aditya (megatrron))
* Add support for `preview_value` and `default` in `Block` meta options as callables for dynamic previews within StreamField (Ziyao Yan, Sage Abdullah)
* Add previews support for generic and site settings (Sébastien Corbin, Sage Abdullah)
* Provide client-side access to the editing form panel structure (Matt Westcott)
* Make transliteration of titles to slugs locale-aware, and provide further customisation options (LB (Ben) Johnston)
* Add a keyboard shortcut to easily toggle the visibility of the main menu (Dhruvi Patel)
* Fix: Handle lazy translation strings as `preview_value` for `RichTextBlock` (Seb Corbin)
* Fix: Fix handling of newline-separated choices in form builder when using non-windows newline characters (Baptiste Mispelon)
* Fix: Ensure `WAGTAILADMIN_LOGIN_URL` is respected when logging out of the admin (Antoine Rodriguez, Ramon de Jezus)
* Fix: Fix behavior of `ViewSet.inject_view_methods` with multiple methods (Gorlik)
* Fix: Preserve query strings in URLs submitted to CloudFront for invalidation (Jigyasu Rajput)
* Fix: Handle non-JSON-safe fields in `exclude_fields_in_copy` (Matt Westcott)
* Fix: Allow upload of AVIF images through image chooser on Firefox (Matt Westcott)
* Fix: Accept any string beginning with 'y' as confirmation for `import_redirects` command (Matt Westcott)
* Fix: Fix error when accessing the submissions listing view with a non-form page (Sage Abdullah)
* Fix: Replace inline styles with CSS classes in HTML files (Srishti Jaiswal)
* Fix: Refactor remaining inline styles to avoid unsafe-inline style-src CSP (Chiemezuo Akujobi)
* Fix: Avoid breaking words in listing table cells unless specifically enabled (Ziyao Yan)
* Fix: Ensure that "all items in listing" option on image / document bulk actions respects user permissions (Alex Morega)
* Fix: Adjust accessibility dialog position based on user bar position (Anees Asghar, Sage Abdullah)
* Fix: Correctly handle ordering API results by mixed ascending and descending order (Rohit Sharma, Mahmoud Nasser)
* Fix: Ensure that draft changes to an editable `first_published_at` field are preserved on reloading (Talha Rizwan)
* Fix: Remove ngram parser on MySQL that prevented autocomplete search from returning results (Vince Salvino)
* Fix: Only enable ManifestStaticFilesStorage in production settings, to aid test running (M. Sumair Khokhar)
* Fix: Update `BooleanColumn` icons so they can be distinguished without relying on color (Sage Abdullah)
* Fix: Do not delete default homepage by ID in home app migration (Matt Westcott)
* Fix: Update the start project template to align with Django's recommendation to have the `django.middleware.security.SecurityMiddleware` first (Brylie Christopher Oxley)
* Fix: Ensure keyboard usage will correctly focus on new comments, including replies, when the side panel is open or closed (Dhruvi Patel)
* Fix: Handle `help_text` kwarg in `FloatBlock` (Nick Smith)
* Fix: Set `aria-invalid` on StreamField widgets input when there is an error (Sage Abdullah)
* Fix: Make sure the label of panel collapse buttons is translatable (Thibaud Colas)
* Fix: Ensure there is suitable padding for large numbers on pagination within universal listings (M. Sumair Khokhar)
* Fix: Use the correct localized format utils in the `human_readable_date` template tag (Seb Corbin)
* Fix: Ensure the editing of translation alias pages correctly shows links to the source page if the alias was created from a draft (Dan Braghis)
* Fix: Support complex `order_by` expressions in database search backends (Seb Corbin)
* Fix: Improve handling of capitalization of InlinePanel labels and headings (Stefan Hammer)
* Docs: Add missing tag library imports to footer template code in tutorial (Dimaco)
* Docs: Improve documentation around securing user-uploaded files (Jake Howard)
* Docs: Introduce search_fields in a dedicated tutorial section instead of the introduction (Matt Westcott)
* Docs: Add note about PDF XSS to security page (Matt Westcott)
* Docs: Add documentation for how to group blocks within the StreamField picker (Gaurav Verma)
* Docs: Clarify the user bar does not have moderation features (Sage Abdullah)
* Docs: Add experimental documentation for admin UI components and client-side code (Sage Abdullah)
* Docs: Clean up JSDoc documentation comments, syntax, and update spelling where suitable (LB (Ben) Johnston)
* Docs: Add more examples of all images settings and include `avif` in `WAGTAILIMAGES_EXTENSIONS` example (Thibaud Colas)
* Docs: Add an example of using `data-edit-form` and interacting with the editor form and preview panel (Sage Abdullah)
* Maintenance: Refactor `get_embed` to remove `finder` argument which was only used for mocking in unit tests (Jigyasu Rajput)
* Maintenance: Simplify handling of `None` values in `TypedTableBlock` (Jigyasu Rajput)
* Maintenance: Remove squash.io configuration (Sage Abdullah)
* Maintenance: Use `utf8mb4` charset and collation for MySQL test database (Sage Abdullah)
* Maintenance: Add `django.contrib.postgres` to test settings `INSTALLED_APPS` (Sage Abdullah)
* Maintenance: Add integrity & resolved checksums to package-lock.json (Sylvain Fankhauser)
* Maintenance: Replace `SlugController` with more generic and reusable `CleanController` (LB (Ben) Johnston)
* Maintenance: Remove outdated nginx / uWSGI example config files from `/etc` (LB (Ben) Johnston)
* Maintenance: Use browser built-in `EventTarget` instead of `events.EventEmitter` from Webpack (Sage Abdullah)
* Maintenance: Split code from `telepath/widgets.js` into separate files (Matt Westcott)
* Maintenance: Update development UI guidelines to adopt best practices for image handling within the admin interface (Thibaud Colas)
* Maintenance: Bump minimum Willow version to v1.11.0 to use Pillow's built-in AVIF support (Sage Abdullah)
* Maintenance: Add overridable blocks in comments and checks side panel templates (Sage Abdullah)
* Maintenance: Rewrite Tabs component frontend to use Stimulus and TypeScript (Sai Srikar Dumpeti, LB (Ben) Johnston, Sage Abdullah)
* Maintenance: Upgrade django-tasks to 0.8.x (Jake Howard)
* Maintenance: Refresh accessibility targets in contributing docs (Thibaud Colas)
7.0.5 (12.02.2026)
~~~~~~~~~~~~~~~~~~
* Remove upper bound on Pillow dependency (Kunal Hemnani)
7.0.4 (03.02.2026)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent error on custom generic create and edit views without a header icon (Sage Abdullah)
* Fix: CVE-2026-25517: Improper permission handling on admin preview endpoints (thxtech, Matt Westcott, Jake Howard)
7.0.3 (28.08.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent crash when previewing a form page with an empty field type (Sage Abdullah)
7.0.2 (24.07.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent error when restoring scroll position for cross-domain preview iframe (Sage Abdullah)
* Fix: Remove ngram parser on MySQL that prevented autocomplete search from returning results (Vince Salvino)
* Fix: Ensure the editing of translation alias pages correctly shows links to the source page if the alias was created from a draft (Dan Braghis)
7.0.1 (12.06.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Fix type hints for `register_filter_adapter_class` parameters (Sébastien Corbin)
* Fix: Use correct URL when redirecting back to the listing after filtering and deleting form submissions (Sage Abdullah)
* Fix: Fix broken migration when ListBlock is defined with a `child_block` kwarg (Matt Westcott)
* Fix: Fix saving of empty values in EmbedBlock (Matt Westcott)
* Fix: Sanitize request data when logging method not allowed (Jake Howard)
* Docs: Use tuple instead of set in `UniqueConstraint` examples for a custom rendition model to avoid spurious migrations (Alec Baron)
* Docs: Document how to turn off StreamField block previews (Shlomo Markowitz)
* Maintenance: Use `utf8mb4` charset and collation for MySQL test database (Sage Abdullah)
7.0 LTS (06.05.2025)
~~~~~~~~~~~~~~~~~~~~
* Add formal support for Django 5.2 (Matt Westcott)
* Allow validation of required fields to be deferred on saving drafts (Matt Westcott, Sage Abdullah)
* Add `WAGTAIL_` prefix to Wagtail-specific tag settings (Aayushman Singh)
* Implement `normalize` on `TypedTableBlock` to assist with setting `default` and `preview_value` (Sage Abdullah)
* Apply normalization when modifying a `StreamBlock`'s value to assist with programmatic changes to `StreamField` (Matt Westcott)
* Allow a custom image rendition model to define its unique constraint with `models.UniqueConstraint` instead of `unique_together` (Oliver Parker, Cynthia Kiser, Sage Abdullah)
* Default to the `standard` tokenizer on Elasticsearch, to correctly handle numbers as tokens (Matt Westcott)
* Add color-scheme meta tag to Wagtail admin (Ashish Nagmoti)
* Add the ability to set the default privacy restriction for new pages using `get_default_privacy_setting` (Shlomo Markowitz)
* Improve performance of batch purging page urls in the frontend cache, avoiding n+1 query issues (Andy Babic)
* Add better support and documentation for overriding or extending icons used in the in the userbar (Sébastien Corbin)
* List the comments action, if comments are enabled, within the admin keyboard shortcuts dialog (Dhruvi Patel)
* Add better support and documentation for overriding the default field widgets used within form pages (Baptiste Mispelon)
* Allow workflow tasks to specify a template for the action modal via `get_template_for_action` (Sage Abdullah)
* Change 'Publish' button label to 'Schedule to publish' if go-live schedule is set (Sage Abdullah)
* Exclude snippets that have their own menu items from the "Snippets" menu (Andy Chosak, Matt Westcott)
* Introduce new designs for listings and chooser pagination (except page chooser) (Jordan Teichmann, Sage Abdullah)
* Add default "Locale" column to listings and choosers of translatable models (Dan Braghis, Sage Abdullah)
* Apply current content's locale in choosers by default and add the ability to clear the locale filter (Dan Braghis)
* Hide add locale button when no more languages are available (Dan Braghis)
* Allow customizing `InspectView` field display value via methods on the view (Dan Braghis)
* Make rendering of active listing filters extensible, to support additional filter types (Sage Abdullah)
* Fix: Take preferred language into account for translatable strings in client-side code (Bernhard Bliem, Sage Abdullah)
* Fix: Do not show the content type column as sortable when searching pages (Srishti Jaiswal, Sage Abdullah)
* Fix: Support simple subqueries for `in` and `exact` lookup on Elasticsearch (Sage Abdullah)
* Fix: Force preview panel scroll behavior to instant to avoid flickering (Sage Abdullah)
* Fix: Support translating with the preferred language for rich text formatting labels (Bernhard Bliem, Sage Abdullah)
* Fix: Make "Actions" label translatable within the rich text toolbar (Bernhard Bliem, Sage Abdullah)
* Fix: Fix incorrect "Views (past week)" heading on promoted search results listing (Baptiste Mispelon)
* Fix: Ensure `InlinePanel` will be correctly ordered after the first save when `min_num` is used (Elhussein Almasri, Joel William)
* Fix: Avoid deprecation warnings about URLField `assume_scheme` on Django 5.x (Sage Abdullah)
* Fix: Fix setup.cfg syntax for setuptools v78 (Sage Abdullah)
* Fix: Ensure `ImproperlyConfigured` is thrown from `db_field` on unbound `FieldPanel`s as intended (Matt Westcott)
* Fix: Refine the positioning of the add comment button next to select, radio, checkbox fields and between field row columns (Srishti Jaiswal)
* Fix: Show the correct privacy status for child collections of private collections (Shlomo Markowitz)
* Fix: Ensure reference index correctly handles models with primary keys not named `id` (Sage Abdullah)
* Fix: On "move page" bulk action, do not prefill the destination with the root page (Stefan Hammer)
* Fix: Ensure the default preferred language respects the `WAGTAILADMIN_PERMITTED_LANGUAGES` setting (Sébastien Corbin)
* Fix: Ensure there is consistent padding in homepage panels table headers (Aditya (megatrron))
* Fix: Prevent redundant calls to context processors when rendering userbar (Ihor Marhitych)
* Fix: Fix validation of duplicate field names in form builder when fields have been deleted (Ian Meigh)
* Fix: Fix font size of footer action buttons when there is only one item (Sage Abdullah)
* Docs: Add missing `django.contrib.admin` to list of apps in "add to Django project" guide (Mohamed Rabiaa)
* Docs: Add tutorial on deploying on Ubuntu to third-party tutorials (Mohammad Fathi Rahman)
* Docs: Document that request_or_site is optional on BaseGenericSetting.load (Matt Westcott)
* Docs: Mention third-party StreamField based form builder packages in the form builder documentation (Matt Westcott)
* Docs: Clarify that `insert_editor_js` hook applies to all core editing/creation views (LB (Ben) Johnston)
* Docs: Clarify requirement for non-page models using model mixins to be registered as snippets (Sage Abdullah)
* Docs: Clarify that `Page.get_url_parts` will return a tuple, not `None` for `NoReverseMatch` errors (Arthur Tripp)
* Docs: Add how-to Django Ninja to API documentation (Thibaud Colas)
* Docs: Document the `expand_db_html` utility function to create HTML ready for display (Thibaud Colas)
* Docs: Mention `expand_db_html` usage for rich text in REST framework API (Thibaud Colas)
* Docs: Further document usage of API `?limit` with `WAGTAILAPI_LIMIT_MAX` (Thibaud Colas)
* Maintenance: Migrate away from deprecated Sass import rules to module system (Srishti Jaiswal)
* Maintenance: Apply Sass mixed declarations migration in preparation for CSS nesting (Prabhpreet Kaur)
* Maintenance: Refactor styles for Draftail, minimap, and comments to fix remaining Sass migration warnings (Thibaud Colas)
* Maintenance: npm package updates; `downshift`, `focus-trap-react`, `immer`, `redux`, `uuid` (LB (Ben) Johnston)
* Maintenance: Validate against invalid characters in Lexeme values (Matt Westcott)
* Maintenance: Split up `wagtail.models` module into submodules (Matt Westcott)
* Maintenance: Update `ruff` to 0.9.6 (Sage Abdullah)
* Maintenance: Fix up `stubs` & `adapter` contents to better support Jest testing (LB (Ben) Johnston)
* Maintenance: Cleanup Stimulus controller imports, JSDoc & linting (LB (Ben) Johnston)
* Maintenance: Rename `SkipLinkController` to `FocusController` with improved reusability, updated unit tests, and added story (LB (Ben) Johnston)
* Maintenance: Fix CI testing issues with the Stimulus `LocaleController` time zones & non-deterministic page ordering tests (Sage Abdullah)
* Maintenance: Make GitHub highlight `.html` files as Django templates (Jake Howard)
* Maintenance: Remove admin JavaScript imports from shared template includes, moving the imports to the appropriate core admin inclusion locations (Sai Srikar Dumpeti)
* Maintenance: Remove non-editing view inclusions of the `insert_editor_js` hook output, deprecate the wrapper template tag `_editor_js.html` (Sai Srikar Dumpeti, LB (Ben) Johnston)
* Maintenance: Remove upper bound on Django dependency (Matt Westcott)
* Maintenance: Add `default_auto_field` setting to home app in project template (Sylvain Boissel)
* Maintenance: Migrate setuptools configuration from `setup.py` and `setup.cfg` to `pyproject.toml` (Sage Abdullah)
* Maintenance: Refactor `move_choose_destination` to a class-based view (Chiemezuo Akujobi)
* Maintenance: Remove deprecated `wagtailadmin/shared/ajax_pagination_nav.html` template (Sage Abdullah)
* Maintenance: Formally deprecate support for listing views with no breadcrumbs (Sage Abdullah)
* Maintenance: Update `django-tasks` to 0.7.x (Jake Howard)
6.4.2 (12.06.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Do not show upgrade notification if the installed version is the latest (Sage Abdullah)
* Fix: Use correct URL when redirecting back to the listing after filtering and deleting form submissions (Sage Abdullah)
* Fix: Fix broken migration when ListBlock is defined with a `child_block` kwarg (Matt Westcott)
* Fix: Sanitize request data when logging method not allowed (Jake Howard)
* Maintenance: Use `utf8mb4` charset and collation for MySQL test database (Sage Abdullah)
6.4.1 (21.02.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent error when filtering by locale and searching with Elasticsearch (Sage Abdullah)
* Fix: Support searching `none()` querysets (Matt Westcott)
* Fix: Correctly handle UUID primary keys when invoking background tasks (Matt Westcott)
* Fix: Fix regression where nested sub-menu items would not be visible (Sage Abdullah)
* Fix: Ensure the top of the minimap correctly adjusts when resizing the browser viewport (Thibaud Colas)
* Fix: Remove obsolete SubqueryConstraint check in search backends, for provisional Django 5.2 compatibility (Sage Abdullah)
* Fix: Add missing “Close” label to the upgrade notification dismiss button (Sage Abdullah)
* Fix: Fix white text on white background in previews for sites that use color-scheme without a background-color (Sage Abdullah)
* Docs: Fix typo in the headless documentation page (Mahmoud Nasser)
* Docs: Fix typo in `Page.get_route_paths` docstring (Baptiste Mispelon)
* Docs: Upgrade sphinx-wagtail-theme to v6.5.0 (Sage Abdullah)
* Maintenance: Remove upper version boundary for django-filter (Dan Braghis)
* Maintenance: Relax upper version boundaries for django-taggit and beautifulsoup4 (Matt Westcott)
6.4 (03.02.2025)
~~~~~~~~~~~~~~~~
* Support for background tasks using `django-tasks` (Jake Howard)
* Add search terms report (Noah van der Meer, Sage Abdullah)
* Add the ability to apply basic Page QuerySet optimizations to `specific()` sub-queries using `select_related` & `prefetch_related` (Andy Babic)
* Increase `DATA_UPLOAD_MAX_NUMBER_FIELDS` in project template (Matt Westcott)
* Stop invalid Site hostname records from breaking preview (Matt Westcott)
* Set sensible defaults for InlinePanel heading and label (Matt Westcott)
* Limit tags autocompletion to 10 items and add delay to avoid performance issues with large number of matching tags (Aayushman Singh)
* Add the ability to restrict what types of requests a Pages supports via `allowed_http_methods` (Andy Babic)
* Allow plain strings in panel definitions as shorthand for `FieldPanel` / `InlinePanel` (Matt Westcott)
* Only allow selection of valid new parents within the copy Page view (Mauro Soche)
* Add `on_serve_page` hook to modify the serving chain of pages (Krystian Magdziarz, Dawid Bugajewski)
* Add support for `WAGTAIL_GRAVATAR_PROVIDER_URL` URLs with query string parameters (Ayaan Qadri, Guilhem Saurel)
* Add `get_avatar_url` hook to customise user avatars (James Harrington)
* Set content security policy (CSP) headers to block embedded content when serving images and documents (Jake Howard, with thanks to Ali İltizar for the initial report)
* Add `page` as a third parameter to the `construct_wagtail_userbar` hook (claudobahn)
* Enable breadcrumbs in revisions compare view (Sage Abdullah)
* Skip loading of unused JavaScript to speed up 404 page rendering (Sage Abdullah)
* Replace l18n library with JavaScript Intl API for time zone options in Account view (Sage Abdullah)
* Use explicit label for defaulting to server language in account settings (Sage Abdullah)
* Add support for specifying an operator on `Fuzzy` queries (Tom Usher)
* Remove support for Safari 15 (Thibaud Colas)
* Populate the ImageBlock alt text from the image’s default alt text when selecting a new image (Matt Westcott)
* Prevent main menu from re-rendering when clicking outside while the menu is closed (Sage Abdullah)
* Fill in the ImageBlock alt text from the image’s default alt text when converting from ImageChooserBlock (Cynthia Kiser)
* Make sure typing text at the bottom of the page editor always scrolls enough to keep the text into view (Jatin Bhardwaj)
* Add StreamField and InlinePanel interfaces support for drag-and-drop reordering of items (Thibaud Colas, Sage Abdullah)
* Add previews support for StreamField blocks inside the block picker (Sage Abdullah, Thibaud Colas)
* Fix: Improve handling of translations for bulk page action confirmation messages (Matt Westcott)
* Fix: Ensure custom rich text feature icons are correctly handled when provided as a list of SVG paths (Temidayo Azeez, Joel William, LB (Ben) Johnston)
* Fix: Prevent error on lazily loading StreamField blocks after the stream has been modified (Stefan Hammer)
* Fix: Fix sub-menus within the main menu cannot be closed on mobile (Bojan Mihelac)
* Fix: Fix animation overflow transition when navigating through subpages in the sidebar page explorer (manu)
* Fix: Ensure form builder supports custom admin form validation (John-Scott Atlakson, LB (Ben) Johnston)
* Fix: Ensure form builder correctly checks for duplicate field names when using a custom related name (John-Scott Atlakson, LB (Ben) Johnston)
* Fix: Normalize `StreamField.get_default()` to prevent creation forms from breaking (Matt Westcott)
* Fix: Prevent out-of-order migrations from skipping creation of image/document choose permissions (Matt Westcott)
* Fix: Use correct connections on multi-database setups in database search backends (Jake Howard)
* Fix: Ensure CloudFront cache invalidation is called with a list, for compatibility with current botocore versions (Jake Howard)
* Fix: Show the correct privacy status in the sidebar when creating a new page (Joel William)
* Fix: Prevent generic model edit view from unquoting non-integer primary keys multiple times (Matt Westcott)
* Fix: Ensure comments are functional when editing Page models with `read_only` `Fieldpanel`s in use (Strapchay)
* Fix: Ensure the accessible labels and tooltips reflect the correct private/public status on the live link button within pages after changing the privacy (Ayaan Qadri)
* Fix: Fix empty `th` (table heading) elements that are not compliant with accessibility standards (Jai Vignesh J)
* Fix: Ensure `MultipleChooserPanel` using images or documents work when nested within an `InlinePanel` when no other choosers are in use within the model (Elhussein Almasri)
* Fix: Ensure `MultipleChooserPanel` works after doing a search in the page chooser modal (Matt Westcott)
* Fix: Ensure new `ListBlock` instances get created with unique IDs in the admin client for accessibility and mini-map element references (Srishti Jaiswal)
* Fix: Return never-cache HTTP headers when serving pages and documents with view restrictions (Krystian Magdziarz, Dawid Bugajewski)
* Fix: Implement `get_block_by_content_path` on `ImageBlock` to prevent errors on commenting (Matt Westcott)
* Fix: Add `aria-expanded` attribute to new column button on `TypedTableBlock` to reflect menu state (Ayaan Qadri, Scott Cranfill)
* Fix: Allow page models to extend base `Page` panel definitions without importing `wagtail.admin` (Matt Westcott)
* Fix: Fix crash when loading the dashboard with only the "unlock" or "bulk delete" page permissions (Unyime Emmanuel Udoh, Sage Abdullah)
* Fix: Improve deprecation warning for `WidgetWithScript` by raising it with `stacklevel=3` (Joren Hammudoglu)
* Fix: Correctly place comment buttons next to date / datetime / time fields. (Srishti Jaiswal)
* Fix: Add missing heading and breadcrumbs in Account view (Sage Abdullah)
* Fix: Reduce confusing spacing below StreamField blocks help text (Rishabh Sharma)
* Fix: Prevent redundant calls to `Site.find_for_request()` from `Page.get_url_parts()` (Andy Babic)
* Fix: Prevent error on listings when searching and filtering by locale (Matt Westcott, Sage Abdullah)
* Fix: Add missing space in panels check warning message (Stéphane Blondon)
* Fix: Make sure alt text quality check is on by default as documented (Thibaud Colas)
* Fix: Prevent `StreamChildrenToListBlockOperation` from duplicating data across multiple StreamField instances (Joshua Munn)
* Fix: Prevent database error when calling permission_order.register on app ready (Daniel Kirkham, Matt Westcott)
* Fix: Prevent syntax error on MySQL search when query includes symbols (Matt Westcott)
* Docs: Move the model reference page from reference/pages to the references section as it covers all Wagtail core models (Srishti Jaiswal)
* Docs: Move the panels reference page from references/pages to the references section as panels are available for any model editing, merge panels API into this page (Srishti Jaiswal)
* Docs: Move the tags documentation to standalone advanced topic, instead of being inside the reference/pages section (Srishti Jaiswal)
* Docs: Refine the adding reports page so that common (page/non-page) class references are at the top and the full page only example has correct heading nesting (Alessandro Chitarrini)
* Docs: Add the `wagtail start` command to the management commands reference page (Damilola Oladele)
* Docs: Refine the project template page sections and document common issues encountered when creating custom templates (Damilola Oladele)
* Docs: Refine titles, references and URLs to better align with the documentation style guide, including US spelling (Srishti Jaiswal)
* Docs: Recommend a larger `DATA_UPLOAD_MAX_NUMBER_FIELDS` when integrating Wagtail into Django (Matt Westcott)
* Docs: Improve code highlighting and formatting for Python docstrings in core models (Srishti Jaiswal)
* Docs: Update all JavaScript inline scripts & some CSS inline style tags to a CSP compliant approach by using external scripts/styles (Aayushman Singh)
* Docs: Update usage of `mark_safe` to `format_html` for any script inclusions, to better avoid XSS issues from example code (Aayushman Singh)
* Docs: Update documentation writing guidelines to encourage better considerations of security, accessibility and good practice when writing code examples (Aayushman Singh, LB (Ben) Johnston)
* Docs: Update documentation guidelines on writing links and API reference (Sage Abdullah)
* Docs: Replace absolute URLs with intersphinx links where possible to avoid broken links (Sage Abdullah)
* Docs: Update upgrading guide and release process to better reflect the current practices (Sage Abdullah)
* Docs: Document usage of custom validation for admin form pages when using `AbstractEmailForm` or `AbstractForm` pages (John-Scott Atlakson, LB (Ben) Johnston)
* Docs: Reword `BlogTagIndexPage` example for clarity (Clifford Gama)
* Docs: Change title of blog index page in tutorial to avoid slug issues (Thibaud Colas)
* Docs: Fix `wagtailcache` and `wagtailpagecache` examples to not use quotes for the `fragment_name` (Shiv)
* Docs: Update tutorial to reflect the move of the "Add child page" action to a top-level button in the header as a '+' icon (Clifford Gama)
* Docs: Fix link to `HTTPMethod` in `Page.handle_options_request()` docs (Sage Abdullah)
* Docs: Improve the Pages Theory page with added & more consistent section headings and admonitions to aid in readability (Clifford Gama)
* Docs: Fix non-functional link to the community guidelines in the Your first contribution page (Ankit Kumar)
* Docs: Introduce tags and filters by name in "Writing templates" docs (Clifford Gama)
* Docs: Add a new headless section to the documentation, incorporating parts of the 'are we headless' website content (Sævar Öfjörð Magnússon, Alex Fulcher)
* Docs: Fix Django HTML syntax formatting issue on the documents overview page (LB (Ben) Johnston)
* Docs: Separate virtual environment creation and activation steps in tutorial (Ankit Kumar)
* Docs: Update tutorial to use plain strings in place of `FieldPanel` / `InlinePanel` where appropriate (Unyime Emmanuel Udoh)
* Docs: Update example for customizing "p-as-heading" accessibility check without overriding built-in checks (Cynthia Kiser)
* Docs: Document `get_template` method on StreamField blocks (Matt Westcott)
* Docs: Update accessibility considerations on alt text in light of contextual alt text improvements (Cynthia Kiser)
* Docs: Revert incorrect example of appending a `RichTextBlock` to a `StreamField` (Matt Westcott)
* Maintenance: Close open files when reading within utils/setup.py (Ataf Fazledin Ahamed)
* Maintenance: Avoid redundant `ALLOWED_HOSTS` check in `Site.find_for_request` (Jake Howard)
* Maintenance: Update `CloneController` to ensure that `added`/`cleared` events are not dispatched as cancelable (LB (Ben) Johnston)
* Maintenance: Remove unused `uuid` UMD module as all code is now using the NPM module (LB (Ben) Johnston)
* Maintenance: Clean up JS comments throughout codebase to be aligned to JSDoc where practical (LB (Ben) Johnston)
* Maintenance: Replace `eslint-disable no-undef` linter directives with `global` comments (LB (Ben) Johnston)
* Maintenance: Upgrade Node tooling to active LTS version 22 (LB (Ben) Johnston)
* Maintenance: Remove defunct oEmbed providers (Rahul Samant)
* Maintenance: Remove obsolete non-upsert-based code for Postgres search indexing (Jake Howard)
* Maintenance: Remove unused Rangy JS library (LB (Ben) Johnston)
* Maintenance: Update `PreviewController` usage to leverage Stimulus actions instead of calling `preventDefault` manually (Ayaan Qadri)
* Maintenance: Various performance optimizations to page publishing (Jake Howard)
* Maintenance: Remove unnecessary DOM canvas.toBlob polyfill (LB (Ben) Johnston)
* Maintenance: Ensure Storybook core files are correctly running through Eslint (LB (Ben) Johnston)
* Maintenance: Add a new Stimulus `ZoneController` (`w-zone`) to support dynamic class name changes & event handling on container elements (Ayaan Qadri)
* Maintenance: Migrate jQuery class toggling & drag/drop event handling within the multiple upload views to the Stimulus ZoneController usage (Ayaan Qadri)
* Maintenance: Test project template for warnings when run against Django pre-release versions (Sage Abdullah)
* Maintenance: Refactor redirects create/delete views to use generic views (Sage Abdullah)
* Maintenance: Add JSDoc description, adopt linting recommendations, and add more unit tests for `ModalWorkflow` (LB (Ben) Johnston)
* Maintenance: Add support for a `delay` value in `TagController` to debounce async autocomplete tag fetch requests (Aayushman Singh)
* Maintenance: Add unit tests, Storybook stories & JSDoc items for the Stimulus `DrilldownController` (Srishti Jaiswal)
* Maintenance: Enhance sidebar preview performance by eliminating duplicate asset loads on preview error (Sage Abdullah)
* Maintenance: Remove unused `LinkController` (`w-link`) (Sage Abdullah)
* Maintenance: Refactor settings `EditView` to make better use of generic `EditView` (Sage Abdullah)
* Maintenance: Add a new Stimulus `RulesController` (`w-rules`) to support declarative conditional field enabling from other field values in a form (LB (Ben) Johnston)
* Maintenance: Migrate the conditional enabling of fields in the image URL builder view away from ad-hoc jQuery to use the `RulesController` (`w-rules`) approach (LB (Ben) Johnston)
* Maintenance: Enhance the Stimulus `ZoneController` (`w-zone`) to support inactive class and a mechanism to switch the mode based on data within events (Ayaan Qadri)
* Maintenance: Use the Stimulus `ZoneController` (`w-zone`) to remove ad-hoc jQuery for the privacy switch when toggling visibility of private/public elements (Ayaan Qadri)
* Maintenance: Remove unused `is_active` & `active_menu_items` from `wagtail.admin.menu.MenuItem` (Srishti Jaiswal)
* Maintenance: Only call `openpyxl` at runtime to improve performance for projects that do not use `ReportView`, `SpreadsheetExportMixin` and `wagtail.contrib.redirects` (Sébastien Corbin)
* Maintenance: Adopt the update value `mp` instead of `mm` for 'mystery person' as the default Gravatar if no avatar found (Harsh Dange)
* Maintenance: Refactor search promotions views to use generic views and templates (Sage Abdullah, Rohit Sharma)
* Maintenance: Use built-in `venv` instead of `pipenv` in CircleCI (Sage Abdullah)
* Maintenance: Add a new Stimulus `FormsetController` (`w-formset`) to support dynamic formset insertion/deletion behavior (LB (Ben) Johnston)
* Maintenance: Enable breadcrumbs by default on admin views using generic templates (Sage Abdullah)
* Maintenance: Refactor pages `revisions_revert` view to be a subclass of `EditView` (Sage Abdullah)
* Maintenance: Move images and documents `get_usage().count()` call to view code (Sage Abdullah)
* Maintenance: Upgrade sass-loader to resolve Sass deprecation warnings (Ayaan Qadri)
6.3.7 (12.02.2026)
~~~~~~~~~~~~~~~~~~
* Remove upper bound on Pillow dependency
6.3.6 (03.02.2026)
~~~~~~~~~~~~~~~~~~
* Fix: Remove ngram parser on MySQL that prevented autocomplete search from returning results (Vince Salvino)
* Fix: CVE-2026-25517: Improper permission handling on admin preview endpoints (thxtech, Matt Westcott, Jake Howard)
6.3.5 (12.06.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Use correct URL when redirecting back to the listing after filtering and deleting form submissions (Sage Abdullah)
* Fix: Fix broken migration when ListBlock is defined with a `child_block` kwarg (Matt Westcott)
* Maintenance: Use `utf8mb4` charset and collation for MySQL test database (Sage Abdullah)
6.3.4 (24.04.2025)
~~~~~~~~~~~~~~~~~~
* Added support for Django 5.2
* Fix: Add missing “Close” label to the upgrade notification dismiss button (Sage Abdullah)
* Fix: Fix white text on white background in previews for sites that use color-scheme without a background-color (Sage Abdullah)
* Maintenance: Remove upper version boundary for django-filter (Dan Braghis)
6.3.3 (03.02.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Correctly place comment buttons next to date / datetime / time fields. (Srishti Jaiswal)
* Fix: Reduce confusing spacing below StreamField blocks help text (Rishabh Sharma)
* Fix: Make sure alt text quality check is on by default as documented (Thibaud Colas)
* Fix: Prevent `StreamChildrenToListBlockOperation` from duplicating data across multiple StreamField instances (Joshua Munn)
* Fix: Prevent database error when calling permission_order.register on app ready (Daniel Kirkham, Matt Westcott)
* Fix: Prevent error on lazily loading StreamField blocks after the stream has been modified (Stefan Hammer)
* Fix: Prevent syntax error on MySQL search when query includes symbols (Matt Westcott)
* Docs: Update example for customizing "p-as-heading" accessibility check without overriding built-in checks (Cynthia Kiser)
* Docs: Update accessibility considerations on alt text in light of contextual alt text improvements (Cynthia Kiser)
* Docs: Revert incorrect example of appending a `RichTextBlock` to a `StreamField` (Matt Westcott)
6.3.2 (02.01.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Ensure CloudFront cache invalidation is called with a list, for compatibility with current botocore versions (Jake Howard)
* Fix: Ensure Draftail features wrap when a large amount of features are added (Bart Cieliński)
* Fix: Implement `get_block_by_content_path` on `ImageBlock` to prevent errors on commenting (Matt Westcott)
* Docs: Update tutorial to reflect the move of the "Add child page" action to a top-level button in the header as a '+' icon (Clifford Gama)
6.3.1 (19.11.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Restore ability to upload profile picture through account settings (Sage Abdullah)
* Fix: Correctly handle `ImageChooserBlock` to `ImageBlock` data conversions where all inputs to `bulk_to_python` are null (Storm Heg, Matt Westcott)
* Fix: Improve spacing of page / collection permissions table in Group settings (Sage Abdullah)
* Fix: Remove forced capitalization of site name on admin dashboard (Thibaud Colas)
* Docs: Reword `BlogTagIndexPage` example for clarity (Clifford Gama)
* Docs: Change title of blog index page in tutorial to avoid slug issues (Thibaud Colas)
* Docs: Fix `wagtailcache` and `wagtailpagecache` examples to not use quotes for the `fragment_name` (Shiv)
* Docs: Lower search result ranking for release notes on readthedocs search (Sage Abdullah)
6.3 LTS (01.11.2024)
~~~~~~~~~~~~~~~~~~~~
* Add support for Python 3.13 (Matt Westcott)
* Add formal support for Django 5.1 (Matt Westcott)
* Add `ImageBlock` with alt text support (Chiemezuo Akujobi for Google Summer of Code, mentored by Storm Heg, Saptak Sengupta, Thibaud Colas and Matt Westcott)
* Implement incremental dashboard design enhancements (Albina Starykova, Ben Enright)
* Add a new enhanced contrast admin theming option for the admin interface (Albina Starykova, Victoria Ottah)
* Migrate workflow history views to universal listings (Sage Abdullah)
* Refactor documents views to use universal designs (Sage Abdullah)
* Refactor images views to use universal designs (Sage Abdullah)
* Implement universal listings for workflow usage and page type usage views (Sage Abdullah)
* Add search and filters to form pages listing (Sage Abdullah)
* Add support for uploading HEIC / HEIF images (Matt Westcott)
* Allow customization of preview device sizes in the live preview panel (Bart Cieliński, alexkiro, Sage Abdullah)
* Formalize support for MariaDB (Sage Abdullah, Daniel Black)
* Redirect to the last viewed listing page after deleting form submissions (Matthias Brück)
* Provide `getTextLabel` method on date / time StreamField blocks (Vaughn Dickson)
* Purge frontend cache when modifying redirects (Jake Howard)
* Deprecate the `WAGTAIL_AUTO_UPDATE_PREVIEW` setting, use `WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL = 0` instead (Sage Abdullah)
* Consistently use `capfirst` for title-casing model verbose names (Sébastien Corbin)
* Fire `copy_for_translation_done` signal when copying translatable models as well as pages (Coen van der Kamp)
* Add support for an image `description` field across all images, to better support accessible image descriptions (Chiemezuo Akujobi)
* Prompt the user about unsaved changes when editing snippets (Sage Abdullah)
* Make dashboard upgrade banners dismissible (Sage Abdullah)
* Add support for specifying different preview modes to the "View draft" URL for pages (Robin Varghese)
* Implement new designs for the footer actions dropdown with more contrast and larger text (Sage Abdullah)
* All create/edit admin forms now use a sticky submit button, for consistency and to speed up edits (Sage Abdullah)
* Secondary form actions such as "Delete" are now in the header actions menu (Sage Abdullah)
* Allow setting page privacy rules when a restriction already exists on an ancestor page (Bojan Mihelac)
* Automatically create links when pasting content that contains URLs into a rich text input (Thibaud Colas)
* Add Uyghur language support
* Fix: Prevent page type business rules from blocking reordering of pages (Andy Babic, Sage Abdullah)
* Fix: Improve layout of object permissions table (Sage Abdullah)
* Fix: Fix typo in aria-label attribute of page explorer navigation link (Sébastien Corbin)
* Fix: Reinstate transparency indicator on image chooser widgets (Sébastien Corbin)
* Fix: Remove table headers that have no text (Matt Westcott)
* Fix: Fix broken link to user search (Shlomo Markowitz)
* Fix: Ensure that JS slugify function strips Unicode characters disallowed by Django slug validation (Atif Khan)
* Fix: Do not show notices about root / unroutable pages when searching or filtering in the page explorer (Matt Westcott)
* Fix: Resolve contrast issue for page deletion warning (Sanjeev Holla S)
* Fix: Make sure content metrics falls back to body element only when intended (Sage Abdullah)
* Fix: Remove wrongly-added filters from redirects index (Matt Westcott)
* Fix: Prevent popular tags filter from generating overly complex queries when not filtering (Matt Westcott)
* Fix: Fix content path links in usage view to scroll to the correct element (Sage Abdullah)
* Fix: Always show the minimap toggle button (Albina Starykova)
* Fix: Ensure that dropdown button toggles show with a border in high contrast mode (Ishwari8104, LB (Ben) Johnston)
* Fix: Update email notification header to the new logo design (Rahul Samant)
* Fix: Change `file_size` field on document model to avoid artificial 2Gb limit (Gabriel Getzie)
* Fix: Ensure that `TypedTableBlock` uses the correct API representations of child blocks (Matt Westcott)
* Fix: Footer action buttons now include their `media` definitions (Sage Abdullah)
* Fix: Improve the text contrast of the bulk actions "Select all" button (Sage Abdullah)
* Fix: Fix error on workflow settings view with multiple snippet types assigned to the same workflow on Postgres (Sage Abdullah)
* Fix: Fix datetime fields overflowing its parent wrapper in listing filters (Rohit Singh)
* Fix: Prevent multiple URLs from being combined into one when pasting links into a rich text input (Thibaud Colas)
* Fix: Improve layout of report listing tables (Sage Abdullah)
* Fix: Fix regression from creation of `AbstractGroupApprovalTask` to ensure `can_handle` checks for the abstract class correctly (Sumana Sree Angajala)
* Docs: Upgrade Sphinx to 7.3 (Matt Westcott)
* Docs: Upgrade sphinx-wagtail-theme to v6.4.0, with a new search integration and Read the Docs Addons bug fixes (Thibaud Colas)
* Docs: Document how to customize date/time format settings (Vince Salvino)
* Docs: Create a new documentation section for deployment and move fly.io deployment from the tutorial to this section (Vince Salvino)
* Docs: Clarify process for UserViewSet customization (Sage Abdullah)
* Docs: Correct `WAGTAIL_WORKFLOW_REQUIRE_REAPPROVAL_ON_EDIT` documentation to state that it defaults to `False` (Matt Westcott)
* Docs: Add an example of customizing a default accessibility check (Cynthia Kiser)
* Docs: Demonstrate access protection with `TokenAuthentication` in the Wagtail API v2 Configuration Guide (Krzysztof Jeziorny)
* Docs: Replace X links with Mastodon in the README (Alex Morega)
* Docs: Re-enable building offline formats in online documentation (Read the docs) for EPUB/PDF/HTML downloads (Joel William, Sage Abdullah)
* Docs: Resolve multiple output errors in the documentation ePub format (Sage Abdullah)
* Docs: Update social media examples to use LinkedIn, Reddit, Facebook (Ayaan Qadri)
* Maintenance: Removed support for Python 3.8 (Matt Westcott)
* Maintenance: Drop pytz dependency in favour of `zoneinfo.available_timezones` (Sage Abdullah)
* Maintenance: Relax django-taggit dependency to allow 6.0 (Matt Westcott)
* Maintenance: Improve page listing performance (Sage Abdullah)
* Maintenance: Phase out usage of SECRET_KEY in version and icon hashes (Jake Howard)
* Maintenance: Audit all use of localized and non-localized numbers in templates (Matt Westcott)
* Maintenance: Refactor StreamField `get_prep_value` for closer alignment with JSONField (Sage Abdullah)
* Maintenance: Move search implementation logic from generic `IndexView` to `BaseListingView` (Sage Abdullah)
* Maintenance: Upgrade Puppeteer integration tests for reliability (Matt Westcott)
* Maintenance: Restore ability to use `.in_bulk()` on specific querysets under Django 5.2a0 (Sage Abdullah)
* Maintenance: Add generated `test-media` to .gitignore (Shlomo Markowitz)
* Maintenance: Improve `debounce` util's return type for better TypeScript usage (Sage Abdullah)
* Maintenance: Ensure the side panel's show event is dispatched after any hide events (Sage Abdullah)
* Maintenance: Migrate preview-panel JavaScript to Stimulus & TypeScript, add full unit testing (Sage Abdullah)
* Maintenance: Move `wagtailConfig` values from inline scripts to the `wagtail_config` template tag (LB (Ben) Johnston, Sage Abdullah)
* Maintenance: Deprecate the `{% locales %}` and `{% js_translation_strings %}` template tags (LB (Ben) Johnston, Sage Abdullah)
* Maintenance: Ensure multi-line comments are cleaned from custom icons in addition to just single line comments (Jake Howard)
* Maintenance: Deprecate `window.wagtailConfig.BULK_ACTION_ITEM_TYPE` usage in JavaScript to reduce reliance on inline scripts (LB (Ben) Johnston)
* Maintenance: Remove `window.fileupload_opts` usage in JavaScript, use data attributes on fields instead to reduce reliance on inline scripts (LB (Ben) Johnston)
* Maintenance: Remove `image_format_name_to_content_type` helper function that duplicates Willow functionality (Matt Westcott)
* Maintenance: Improve code reuse for footer actions markup across generic views (Sage Abdullah)
* Maintenance: Deprecate internal `DeleteMenuItem` API for footer actions (Sage Abdullah)
* Maintenance: Update Pillow dependency to allow 11.x (Storm Heg)
6.2.4 (12.06.2025)
~~~~~~~~~~~~~~~~~~
* Fix: Fix broken migration when ListBlock is defined with a `child_block` kwarg (Matt Westcott)
6.2.3 (01.11.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Prevent multiple URLs from being combined into one when pasting links into a rich text input (Thibaud Colas)
* Fix: Fix error on workflow settings view with multiple snippet types assigned to the same workflow on Postgres (Sage Abdullah)
* Fix: Prevent history view from breaking if a log entry's revision is missing (Matt Westcott)
* Docs: Upgrade sphinx-wagtail-theme to v6.4.0, with a new search integration and Read the Docs Addons bug fixes (Thibaud Colas)
6.2.2 (24.09.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Fix various instances of `USE_THOUSAND_SEPARATOR` formatting numbers where formatting is invalid (Sébastien Corbin, Matt Westcott)
* Fix: Fix broken link to user search (Shlomo Markowitz)
* Fix: Make sure content metrics falls back to body element only when intended (Sage Abdullah)
* Fix: Remove wrongly-added filters from redirects index (Matt Westcott)
* Fix: Prevent popular tags filter from generating overly complex queries when not filtering (Matt Westcott)
* Docs: Clarify process for UserViewSet customization (Sage Abdullah)
6.2.1 (20.08.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Handle `child_block` being passed as a kwarg in ListBlock migrations (Matt Westcott)
* Fix: Fix broken task type filter in workflow task chooser modal (Sage Abdullah)
* Fix: Prevent circular imports between `wagtail.admin.models` and custom user models (Matt Westcott)
* Fix: Ensure that concurrent editing check works for users who only have edit access via workflows (Matt Westcott)
6.2 (01.08.2024)
~~~~~~~~~~~~~~~~
* Optimize and consolidate redirects report view into the index view (Jake Howard, Dan Braghis)
* Support a `HOSTNAMES` parameter on `WAGTAILFRONTENDCACHE` to define which hostnames a backend should respond to (Jake Howard, sponsored by Oxfam America)
* Refactor redirects edit view to use the generic `EditView` and breadcrumbs (Rohit Sharma)
* Allow custom permission policies on snippets to prevent superusers from creating or editing them (Sage Abdullah)
* Do not link to edit view from listing views if user has no permission to edit (Sage Abdullah)
* Allow access to snippets and other model viewsets to users with "View" permission (Sage Abdullah)
* Skip `ChooseParentView` if only one possible valid parent page is available (Matthias Brück)
* Add `copy_for_translation_done` signal when a page is copied for translation (Arnar Tumi Þorsteinsson)
* Remove reduced opacity for draft page title in listings (Inju Michorius)
* Adopt more compact representation for StreamField definitions in migrations (Matt Westcott)
* Implement a new design for locale labels in listings (Albina Starykova)
* Add alt text validation rule in the accessibility checker (Albina Starykova)
* Add a `deactivate()` method to `ProgressController` (Alex Morega)
* Allow manually specifying credentials for CloudFront frontend cache backend (Jake Howard)
* Automatically register permissions for models registered with a `ModelViewSet` (Sage Abdullah)
* Implement universal listings UI for report views (Sage Abdullah)
* Make `routable_resolver_match` attribute available on RoutablePageMixin responses (Andy Chosak)
* Support customizations to `UserViewSet` via the app config (Sage Abdullah)
* Add word count and reading time metrics within the page editor (Albina Starykova. Sponsored by The Motley Fool)
* Implement a new design for accessibility checks (Albina Starykova)
* Allow changing available privacy options per page model (Shlomo Markowitz)
* Add concurrent editing notifications for pages and snippets (Matt Westcott, Sage Abdullah)
* Add "soft" client-side validation for `StreamBlock` / `ListBlock` `min_num` / `max_num` (Matt Westcott)
* Log accessibility checker results in the console to help developers with troubleshooting (Thibaud Colas)
* Disable pointer events on checker highlights to simplify DevTools inspections (Thibaud Colas)
* `StaticBlock` now renders nothing by default when no template is specified (Sævar Öfjörð Magnússon)
* Fix: Make `WAGTAILIMAGES_CHOOSER_PAGE_SIZE` setting functional again (Rohit Sharma)
* Fix: Enable `richtext` template tag to convert lazy translation values (Benjamin Bach)
* Fix: Ensure permission labels on group permissions page are translated where available (Matt Westcott)
* Fix: Preserve whitespace in comment replies (Elhussein Almasri)
* Fix: Address layout issues in the title cell of universal listings (Sage Abdullah)
* Fix: Support SVG icon id attributes with single quotes in the styleguide (Sage Abdullah)
* Fix: Do not show delete button on model edit views if per-instance permissions prevent deletion (Matt Westcott)
* Fix: Remove duplicate header in privacy dialog when a privacy setting is set on a parent page or collection (Matthias Brück)
* Fix: Allow renditions of `.ico` images (Julie Rymer)
* Fix: Handle choice groups as dictionaries in active filters (Sébastien Corbin)
* Fix: Add separators when displaying multiple error messages on a StructBlock (Kyle Bayliss)
* Fix: Specify `verbose_name` on `TranslatableMixin.locale` so that it is translated when used as a label (Romein van Buren)
* Fix: Disallow null characters in API filter values (Jochen Wersdörfer)
* Fix: Fix image preview when Willow optimizers are enabled (Alex Tomkins)
* Fix: Ensure external-to-internal link conversion works when the `wagtail_serve` view is on a non-root path (Sage Abdullah)
* Fix: Add missing `for_instance` method to `PageLogEntryManager` (Matt Westcott)
* Fix: Ensure that "User" column on history view is translatable (Romein van Buren)
* Fix: Handle StreamField migrations where the field value is null (Joshua Munn)
* Fix: Prevent incorrect menu ordering when order value is 0 (Ben Dickinson)
* Fix: Fix dynamic image serve view with certain backends (Sébastien Corbin)
* Fix: Show not allowed extension in error message (Sahil Jangra)
* Fix: Fix focal point chooser when localization enabled (Sébastien Corbin)
* Fix: Ensure that system checks for `WAGTAIL_DATE_FORMAT`, `WAGTAIL_DATETIME_FORMAT` and `WAGTAIL_TIME_FORMAT` take `FORMAT_MODULE_PATH` into account (Sébastien Corbin)
* Fix: Prevent rich text fields inside choosers from being duplicated when opened repeatedly (Sage Abdullah)
* Fix: Prevent history view from breaking if a log entry's revision is missing (Matt Westcott)
* Fix: Prevent long filenames from breaking layout on document chooser listings (Frank Yiu, Shaurya Panchal)
* Docs: Remove duplicate section on frontend caching proxies from performance page (Jake Howard)
* Docs: Document `restriction_type` field on PageViewRestriction (Shlomo Markowitz)
* Docs: Document Wagtail's bug bounty policy (Jake Howard)
* Docs: Fix incorrect Sphinx-style code references to use MyST style (Byron Peebles)
* Docs: Document the fact that `Orderable` is not required for inline panels (Bojan Mihelac)
* Docs: Add note about `prefers-reduced-motion` to the accessibility documentation (Roel Koper)
* Docs: Update deployment instructions for Fly.io (Jeroen de Vries)
* Docs: Add better docs for generating URLs on creating admin views (Shlomo Markowitz)
* Docs: Document the `vary_fields` property for custom image filters (Daniel Kirkham)
* Docs: Fix documentation build errors (Himanshu Garg, Chris Shenton)
* Docs: Fix PDF export (Nathanaël Jourdane)
* Maintenance: Use `DjangoJSONEncoder` instead of custom `LazyStringEncoder` to serialize Draftail config (Sage Abdullah)
* Maintenance: Refactor image chooser pagination to check `WAGTAILIMAGES_CHOOSER_PAGE_SIZE` at runtime (Matt Westcott)
* Maintenance: Exclude the `client/scss` directory in Tailwind content config to speed up CSS compilation (Sage Abdullah)
* Maintenance: Split `contrib.frontend_cache.backends` into dedicated sub-modules (Andy Babic)
* Maintenance: Remove unused `docs/autobuild.sh` script (Sævar Öfjörð Magnússon)
* Maintenance: Replace `urlparse` with `urlsplit` to improve performance (Jake Howard)
* Maintenance: Optimize embed finder lookups (Jake Howard)
* Maintenance: Improve performance of initial admin loading by moving sprite hashing out of module import time (Jake Howard)
* Maintenance: Remove workaround and inline scripts for activating workflow actions (Sage Abdullah)
* Maintenance: Prevent `'BlockWidget' object has no attribute '_block_json'` from masking errors during StreamField serialization (Matt Westcott)
6.1.3 (11.07.2024)
~~~~~~~~~~~~~~~~~~
* Fix: CVE-2024-39317: Regular expression denial-of-service via search query parsing (Jake Howard)
* Fix: Allow renditions of `.ico` images (Julie Rymer)
* Fix: Handle choice groups as dictionaries in active filters (Sébastien Corbin)
* Fix: Fix image preview when Willow optimizers are enabled (Alex Tomkins)
* Fix: Fix dynamic image serve view with certain backends (Sébastien Corbin)
6.1.2 (30.05.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Fix client-side handling of select inputs within `ChoiceBlock` (Matt Westcott)
* Fix: Support SVG icon id attributes with single quotes in the styleguide (Sage Abdullah)
* Fix: CVE-2024-35228: Improper handling of insufficient permissions in `wagtail.contrib.settings` (Victor Miti, Matt Westcott, Jake Howard)
6.1.1 (21.05.2024)
~~~~~~~~~~~~~~~~~~
* Fix: Fix form action URL in user edit and delete views for custom user models (Sage Abdullah)
* Fix: Fix snippet copy view not prefilling form data (Sage Abdullah)
* Fix: Address layout issues in the title cell of universal listings (Sage Abdullah)
* Fix: Fix incorrect rich text to HTML conversion when multiple link / embed types are present (Andy Chosak, Matt Westcott)
* Fix: Restore ability for custom widgets in StreamField blocks to have multiple top-level nodes (Sage Abdullah, Matt Westcott)
6.1 (01.05.2024)
~~~~~~~~~~~~~~~~
* Refine wording of page & collection privacy using password is a shared password and should not be used for secure content (Rohit Sharma, Jake Howard)
* Add RelatedObjectsColumn to the table UI framework (Matt Westcott)
* Reduce memory usage when rebuilding search indexes (Jake Howard)
* Support creating images in .ico format (Jake Howard)
* Add the ability to disable the usage of a shared password for enhanced security for the private pages and collections (documents) feature (Salvo Polizzi, Jake Howard)
* Add system checks to ensure that `WAGTAIL_DATE_FORMAT`, `WAGTAIL_DATETIME_FORMAT`, `WAGTAIL_TIME_FORMAT` are correctly configured (Rohit Sharma, Coen van der Kamp)
* Allow custom permissions with the same prefix as built-in permissions (Sage Abdullah)
* Allow displaying permissions linked to the Admin model's content type (Sage Abdullah)
* Add support for Draftail's JavaScript to use chooserUrls provided by entity options & for the Draftail widget to encode lazy URLs/ translations (Elhussein Almasri)
* Reimplement search promotions `IndexView` using the `generic.IndexView` (Rohit Sharma, Sage Abdullah, Storm Heg)
* Reimplement redirects `IndexView` using the `generic.IndexView` (Rohit Sharma, Sage Abdullah, Temidayo Azeez)
* Add `PageListingViewSet` for custom per-page-type page listings (Matt Westcott)
* Add `ChooseParentView` to `PageListingViewSet` to allow creating pages from custom page listings (Abdelrahman Hamada, Sage Abdullah)
* Implement new universal listings design for image listing view (Sage Abdullah)
* Implement new universal listings design for document listing view (Sage Abdullah)
* Implement new universal listings design for site and locale listing views (Sage Abdullah)
* Implement new universal listings design for page and snippet history view (Sage Abdullah)
* Implement new universal listings design for form builder submissions view (Sage Abdullah)
* Implement new universal listings design for collections listing view (Sage Abdullah)
* Implement new universal listings design for groups views (Sage Abdullah)
* Implement new universal listings design for users views (Sage Abdullah)
* Implement new universal listings design for workflow and task views (Sage Abdullah)
* Refine slim header button style to match designs (Sage Abdullah)
* Add simple admin keyboard shortcuts overview dialog, available in the help sub-menu (Karthik Ayangar, Rohit Sharma)
* Add ability to bulk toggle permissions in the user group editing view, including shift+click for multiple selections (LB (Ben) Johnston, Kalob Taulien)
* Update the minimum version of `djangorestframework` to 3.15.1 (Sage Abdullah)
* Add support for related fields in generic `IndexView.list_display` (Abdelrahman Hamada)
* Improve page fetching logic and cache route results per request (Gordon Pendleton)
* Optimize rewriting of links / embeds in rich text using bulk database lookups (Andy Chosak)
* Add normalization mechanism to StreamField so that assignments and defaults can be passed in a wider range of data types (Joshua Munn, Matt Westcott)
* Allow specifying a `STORAGES` alias name for `WAGTAILIMAGES_RENDITION_STORAGE` (Alec Baron)
* Update `PASSWORD_REQUIRED_TEMPLATE` setting to `WAGTAIL_PASSWORD_REQUIRED_TEMPLATE` with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston)
* Update `DOCUMENT_PASSWORD_REQUIRED_TEMPLATE` setting to `WAGTAILDOCS_PASSWORD_REQUIRED_TEMPLATE` with deprecation of previous naming (Saksham Misra, LB (Ben) Johnston)
* When editing settings (contrib) use the same icon in the editing view that was declared when registering the setting (Vince Salvino, Rohit Sharma)
* Populate django-treebeard cache during page routing to improve performance of `get_parent` (Nigel van Keulen)
* Add a new user profile preference to configure user interface information density (Thibaud Colas)
* Add additional field types to Elasticsearch mapping (scott-8)
* Fix: CVE-2024-32882: Permission check bypass when editing a model with per-field restrictions through `wagtail.contrib.settings` or `ModelViewSet` (Ben Morse, Joshua Munn, Jake Howard, Sage Abdullah)
* Fix: Fix typo in `__str__` for MySQL search index (Jake Howard)
* Fix: Ensure that unit tests correctly check for migrations in all core Wagtail apps (Matt Westcott)
* Fix: Correctly handle `date` objects on `human_readable_date` template tag (Jhonatan Lopes)
* Fix: Ensure re-ordering buttons work correctly when using a nested InlinePanel (Adrien Hamraoui)
* Fix: Consistently remove model's `verbose_name` in group edit view when listing custom permissions (Sage Abdullah, Neeraj Yetheendran, Omkar Jadhav)
* Fix: Resolve issue local development of docs when running `make livehtml` (Sage Abdullah)
* Fix: Resolve issue with unwanted padding in chooser modal listings (Sage Abdullah)
* Fix: Ensure form builder emails that have date or datetime fields correctly localize dates based on the configured `LANGUAGE_CODE` (Mark Niehues)
* Fix: Ensure the Stimulus `UnsavedController` checks for nested removal/additions of inputs so that the unsaved warning shows in more valid cases when editing a page (Karthik Ayangar)
* Fix: Ensure `get_add_url()` is always used to re-render the add button when the listing is refreshed in viewsets (Sage Abdullah)
* Fix: Ensure dropdown content cannot get higher than the viewport and add scrolling within content if needed (Chiemezuo Akujobi)
* Fix: Prevent snippets model index view from crashing when a model does not have an `objects` manager (Jhonatan Lopes)
* Fix: Fix `get_dummy_request`'s resulting host name when running tests with `ALLOWED_HOSTS = ["*"]` (David Buxton)
* Fix: Fix timezone handling in the `timesince_last_update` template tag (Matt Westcott)
* Fix: Fix Postgres phrase search to respect the language set in settings (Ihar Marhitych)
* Fix: Retain query parameters when switching between locales in the page chooser (Abdelrahman Hamada, Sage Abdullah)
* Fix: Add `w-kbd-scope-value` with support for `global` so that specific keyboard shortcuts (e.g. ctrl+s/cmd+s) trigger consistently even when focused on fields (Neeraj Yetheendran)
* Fix: Improve exception handling when generating image renditions concurrently (Andy Babic)
* Fix: Respect `WAGTAIL_ALLOW_UNICODE_SLUGS` setting when auto-generating slugs (LB (Ben) Johnston)
* Fix: Use correct URL when redirecting back to page search results after an AJAX search (Sage Abdullah)
* Fix: Reinstate missing static files in style guide (Sage Abdullah)
* Fix: Provide `convert_mariadb_uuids` management command to assist with upgrading to Django 5.0+ on MariaDB (Matt Westcott)
* Fix: Ensure invalid submissions are marked as dirty edits on load to trigger UI and browser warnings for unsaved changes, restoring previous behavior from Wagtail 5.2 (Sage Abdullah)
* Fix: Update polldaddy oEmbed provider to use the crowdsignal URL (Matthew Scouten)
* Fix: Remove polleverywhere oEmbed provider as it this application longer supports oEmbed (Matthew Scouten)
* Docs: Add contributing development documentation on how to work with a fork of Wagtail (Nix Asteri, Dan Braghis)
* Docs: Make sure the settings panel is listed in tabbed interface examples (Tibor Leupold)
* Docs: Update content and page names to their US spelling instead of UK spelling (Victoria Poromon)
* Docs: Update broken and incorrect links throughout the documentation (EK303)
* Docs: Fix formatting of `--purge-only` in `wagtail_update_image_renditions` management command section (Pranith Beeram)
* Docs: Update template components documentation to better explain the usage of the Laces library (Tibor Leupold)
* Docs: Update Sphinx theme to `6.3.0` with a fix for the missing favicon (Sage Abdullah)
* Docs: Document risk of XSS attacks on document upload (Matt Westcott, with thanks to Georgios Roumeliotis of TwelveSec for the original report)
* Docs: Add clarity to how custom StreamField validation works (Tibor Leupold)
* Docs: Add additional reference to the `wagtail_update_image_renditions` management command on the using images page (LB (Ben) Johnston)
* Docs: Correct information about line endings in Window development docs (Sage Abdullah)
* Docs: Improve code snippets for "Create a footer for all pages" tutorial section (Drikus Roor)
* Docs: Update list of third-party tutorials (LB (Ben) Johnston)
* Docs: Update "Integrating into Django" documentation to emphasise creating page models (Matt Westcott)
* Maintenance: Move RichText HTML whitelist parser to use the faster, built in `html.parser` (Jake Howard)
* Maintenance: Remove duplicate 'path' in default_exclude_fields_in_copy (Ramchandra Shahi Thakuri)
* Maintenance: Update unit tests to always use the faster, built in `html.parser` & remove `html5lib` dependency (Jake Howard)
* Maintenance: Adjust Eslint rules for TypeScript files (Karthik Ayangar)
* Maintenance: Rename the React `Button` that only renders links (a element) to `Link` and remove unused prop & behavior that was non-compliant for aria role usage (Advik Kabra)
* Maintenance: Set up an `wagtail.models.AbstractWorkflow` model to support future customizations around workflows (Hossein)
* Maintenance: Improve `classnames` template tag to handle nested lists of strings, use template tag for admin `body` element (LB (Ben) Johnston)
* Maintenance: Merge `UploadedDocument` and `UploadedImage` into new `UploadedFile` model for easier shared code usage (Advik Kabra, Karl Hobley)
* Maintenance: Optimize queries in dashboard panels (Sage Abdullah)
* Maintenance: Optimize queries in group create/edit view (Sage Abdullah)
* Maintenance: Move modal-workflow.js script usage to base admin template instead of ad-hoc imports (Elhussein Almasri)
* Maintenance: Update all Draftail chooserUrls to be passed in via the Entity options instead of using `window.chooserUrls` globals, removing the need for inline scripts (Elhussein Almasri)
* Maintenance: Enhance `w-init` (InitController) to support a `detail` value to be dispatched on events (Chiemezuo Akujobi)
* Maintenance: Remove usage of inline scripts and instead use event dispatching to instantiate standalone Draftail editor instances (Chiemezuo Akujobi)
* Maintenance: Refactor `page_breadcrumbs` tag to use shared `breadcrumbs.html` template (Sage Abdullah)
* Maintenance: Add `keyboard` icon to admin icon set (Rohit Sharma)
* Maintenance: Remove dead code in the minimap when elements are not found (LB (Ben) Johnston)
* Maintenance: Ensure untrusted data sources are logged correctly in the Stimulus `SwapController` (LB (Ben) Johnston)
* Maintenance: Update Wagtail logo in admin sidebar & favicon plus documentation to the latest version (Osaf AliSayed, Albina Starykova, LB (Ben) Johnston)
* Maintenance: Remove usage of inline scripts and instead use a new Stimulus controller (`w-block`/`BlockController`) to instantiate `StreamField` blocks (Karthik Ayangar)
* Maintenance: Update NPM Babel, TypeScript and Webpack packages (Neeraj Yetheendran)