-
Notifications
You must be signed in to change notification settings - Fork 388
Expand file tree
/
Copy pathReleaseNotes.html
More file actions
8609 lines (7779 loc) · 405 KB
/
ReleaseNotes.html
File metadata and controls
8609 lines (7779 loc) · 405 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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
dt { font-weight: bold; }
h3 { text-decoration: underline; }
dd { margin-top: 10px; margin-bottom: 10px; }
dd p { margin-top: 0; }
dd div { margin: 10px 0; }
</style>
<title>Wt Release notes</title>
</head>
<body>
<h1>Wt Release notes</h1>
This file lists important notes on migrating existing applications to
newer version of Wt. It lists changes in the library that may break
the way you build Wt, the way you configure Wt or the Wt API and
behaviour.
<h2>Release 4.12.5 (March 3, 2026)</h2>
<p>Wt 4.12.5 is a patch release that addresses the following issues:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/14371" target="_blank">Issue #14371</a>:
fixed
<a href="classWt_1_1Auth_1_1AuthWidget.html" target="_blank">Auth::AuthWidget</a> sometimes reloading the page
just after being created.
</li>
</ul>
<h2>Release 4.12.4 (March 2, 2026)</h2>
<p>Wt 4.12.4 is a patch release that addresses the following issues:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/14355" target="_blank">Issue #14355</a>:
fixed
<a href="classWt_1_1WRadioButton.html" target="_blank">WRadioButton</a> inside a
<a href="classWt_1_1WButtonGroup.html" target="_blank">WButtonGroup</a> not being
updated on the server side when changed on the client side.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11505" target="_blank">Issue #11505</a>:
<a href="classWt_1_1WAbstractItemModel.html#a3c4a0ffe050bc0d11feeac4749dde784" target="_blank">WStandardItemModel::setHeaderData()</a> will now
correctly return false instead of making Wt crash when given a wrong section. An error will be logged to let
the developer know a wrong section was given.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13417" target="_blank">Issue #13417</a>:
fixed a heap buffer overflow when using <code>Auth::AuthUtils::createSalt()</code> with a size that is
not a multiple of 3.
</li>
</ul>
<p>Wt 4.12.4 also comes with the following improvements:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13498" target="_blank">Issue #13498</a>:
<a href="classWt_1_1Auth_1_1AuthModel.html" target="_blank">Auth::AuthModel</a> will now change session id on logout as recommended by
<a href="https://owasp.org/" target="_blank">OWASP</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13537" target="_blank">Issue #13537</a>:
<a href="classWt_1_1Dbo_1_1Query.html" target="_blank">Dbo::Query</a> with
<a href="structWt_1_1Dbo_1_1DirectBinding.html" target="_blank">DirectBinding</a> as <code>BindStrategy</code> are now deprecated and
will be completely removed later. <a href="structWt_1_1Dbo_1_1DynamicBinding.html" target="_blank">DynamicBinding</a> <code>BindStrategy</code>
should be used instead.
</li>
</ul>
<h2>Release 4.12.3 (February 20, 2026)</h2>
<p> Wt 4.12.3 is a patch release that addresses the following issues: </p>
<dl class="section note">
<dt>CVE (ID pending)</dt>
<dd>
Addressed a Use-After-Free vulnerability in the <code>wthttp connector</code>. See
<a href="https://redmine.emweb.be/issues/14136" target="_blank">Issue #14136</a> for more details.
<br/>
We recommend anyone to upgrade live deployments of his application to the latest version.
</dd>
</dl>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/14311" target="_blank">Issue #14311</a>:
fixed missing boost dependency when building Wt with the flag <code>-DWT_CPP17_FILESYSTEM_IMPLEMENTATION="std"</code>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14065" target="_blank">Issue #14065</a>:
fixed segfault happening when calling
<a href="classWt_1_1WTableView.html#a4e5900e1c92219763c7b5d4a9e1ac2c5" target="_blank">WTableView::itemWidget()</a>
in a session without ajax support.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14311" target="_blank">Issue #14311</a>:
fixed
<a href="classWt_1_1WDialog.html" target="_blank">WDialog</a> not taking the removal of the widgets in
its title bar into account, leading to segfaults when trying to access those widgets after they were removed.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14302" target="_blank">Issue #14302</a>:
fixed fatal error happening when changing the
<a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">LayoutImplementation</a> of a sublayout in a flex layout.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12393" target="_blank">Issue #12393</a>:
<a href="classWt_1_1WLeafletMap.html" target="_blank">WLeafletMap</a>
no longer causes a JavaScript error when reloading the session after panning.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14300" target="_blank">Issue #14300</a>:
reverted empty columns in
<a href="classWt_1_1WStandardItemModel.html" target="_blank">WStandardItemModel</a> being automatically removed.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14285" target="_blank">Issue #14285</a>:
fixed
<a href="classWt_1_1WStandardItem.html#a080134e93f657537f4911c49b0523332" target="_blank">WStandardItem::row()</a> and
<a href="classWt_1_1WStandardItem.html#ae8b4f98da65e93e8e94a1586e1124e55" target="_blank">WStandardItem::column()</a> being incorrect
for most of the newly added items when adding multiple rows or columns at once to a
<a href="classWt_1_1WStandardItemModel.html" target="_blank">WStandardItemModel</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11875" target="_blank">Issue #11875</a>:
fixed <a href="classWt_1_1WTreeView.html" target="_blank">WTreeView</a>
taking all the available width when inside of a layout with
<a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">Wt::LayoutImplementation::Flex</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14094" target="_blank">Issue #14094</a>:
fixed vertical scrollbar being missplaced in
<a href="classWt_1_1WTableView.html" target="_blank">WTableView</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14346" target="_blank">Issue #14346</a>:
ensured a <a href="classWt_1_1WSuggestionPopup.html" target="_blank">WSuggestionPopup</a>
no longer scrolls the page on selection.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14291" target="_blank">Issue #14291</a>:
fixed
<a href="classWt_1_1WCheckBox.html" target="_blank">WCheckBox</a> and
<a href="classWt_1_1WRadioButton.html" target="_blank">WRadioButton</a> state sometimes being
momentarily considered set to <code>Unchecked</code> on the server side when added to the page.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13855" target="_blank">Issue #13855</a>:
avoided a useless HTTP request being sent when the
<a href="classWt_1_1WTextEdit.html#a5952f46d2f8d21e2fd45135e29d5061d" target="_blank">WTextEdit</a>
is rendered, if the signal is not connected. The resulting error log, coming from the
<a href="classWt_1_1WApplication.html" target="_blank">WApplication</a>
trying to interpret the signal, is now avoided.
</li>
</ul>
<p> Wt 4.12.3 also comes with the following improvements: </p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/14226" target="_blank">Issue #14226</a>:
clicking a collapse/expand button inside a
<a href="classWt_1_1WTreeView.html" target="_blank">WTreeView</a> will not select the row anymore.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14347" target="_blank">Issue #14347</a>:
increased the clickable area of the dropdown button in <a href="classWt_1_1WSuggestionPopup.html" target="_blank">WSuggestionPopup</a>
for Bootstrap 2 and 3 themes, to better match the actual size of the button.
</li>
</ul>
<h2>Release 4.12.2 (January 28, 2026)</h2>
<p>
Wt 4.12.2 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13880" target="_blank">Issue #13880</a>:
fixed bot potentially being redirected to another page when trying to load a private
resource.
Additionally, it is now possible to configure whether private resources are served
to bots by setting the <code>serve-private-resources-to-bots</code> option to true.
In that case, the private resources that have overridden the
<a href="classWt_1_1WResource.html#ae2d1f6fe25f575297ed3bd315f72a667" target="_blank">WResource::botResource()</a>
method will be added as public resources so that it can be served to bots. That
function is already overridden by
<a href="classWt_1_1WRasterImage.html" target="_blank">WRasterImage</a> and
<a href="classWt_1_1WSvgImage.html" target="_blank">WSvgImage</a>.
The path under which these bot resources are exposed can be configured using the
<code>bot-resources-path</code> option in the <code>wt_config.xml</code> file and the
<a href="classWt_1_1WResource.html#af7b9c1cec14007140a55bfc6fbb69cea" target="_blank">WResource::setBotResourceId()</a>
method.
Finally, in order to help managing those bot resources, it is now possible to remove
entrypoints while the server is running, and the new
<a href="classWt_1_1WSelfDeletingResource.html" target="_blank">WSelfDeletingResource</a>
class was added, which is a WResource that will automatically unexposed itself after
being served once.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13798" target="_blank">Issue #13798</a>:
fixed
<a href="classWt_1_1WPopupMenu.html" target="_blank">WPopupMenu</a> submenus not taking
<a href="classWt_1_1WPopupMenu.html#a47a35b9b9ff72ea1c9daf86897730bd3" target="_blank">WPopupMenu::setAdjust()</a>
flags into account when opening. Since
<a href="classWt_1_1WPopupMenu.html" target="_blank">WPopupMenu</a> submenus can now
hide its parent menu, more control over
<a href="classWt_1_1WPopupMenu.html#a5f65e7578883ecad37e9b1aae6a6cfe5" target="_blank">WPopupMenu::setAutoHide()</a>
was added, by allowing to change it for submenus as well, and by adding different
<a href="classWt_1_1WPopupMenu.html#ae7784177e77b54a16ccdb5dc720659fe" target="_blank">WPopupMenu::AutoHideBehaviour</a>
options that can be set using
<a href="classWt_1_1WPopupMenu.html#a5d52d004e6012067c722ccb9d29c129b" target="_blank">WPopupMenu::setAutoHideBehaviour()</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14058" target="_blank">Issue #14058</a>:
ensured the initial <a href="classWt_1_1WMenu.html" target="_blank">WMenu</a> or
<a href="classWt_1_1WTabWidget.html" target="_blank">WTabWidget</a> selection is visually rendered.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13861" target="_blank">Issue #13861</a>:
corrected the layout rendering for <a href="classWt_1_1WMenuItem.html" target="_blank">WMenuItem</a>,
that are loaded <a href="namespaceWt.html#af25a7f0bb1d50c5b8bc98c4db9080313" target="_blank">Lazy</a>
through a <a href="classWt_1_1WStackedWidget.html" target="_blank">WStackedWidget</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13961" target="_blank">Issue #13961</a>:
corrected a check in the JavaScript code that was creating an error when pasting content to a
<a href="classWt_1_1WTextEdit.html" target="_blank">WTextEdit</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13786" target="_blank">Issue #13786</a>:
fixed <a href="classWt_1_1WTableView.html#a093b661f93551c1d6f73c423ae8ef459" target="_blank">WTableView::scrollTo()</a>
only checking if the top of the row was in the viewport in order to decide whether to scroll or not. It will now scroll if
either the top or the bottom of the row are not in the viewport.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13775" target="_blank">Issue #13775</a>:
fixed <a href="classWt_1_1WTreeView.html" target="_blank">WTreeView</a> cells
clearing their style classes if the size of their HTML <code>class</code>
exceeded 1024 characters.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13818" target="_blank">Issue #13818</a>:
fixed <a href="classWt_1_1WGroupBox.html" target="_blank">WGroupBox</a> switching from horizontal to vertical layouting inside a
<a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">LayoutImplementation::Flex</a> when using
<a href="classWt_1_1WGroupBox.html#a369081aa62b840875cac9ee5d24bd64e" target="_blank">WGroupBox::setTitle()</a>.
Additionally, fixed
<a href="classWt_1_1WGroupBox.html" target="_blank">WGroupBox</a> not always respecting the minimum
size of its content when having a
<a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">LayoutImplementation::JavaScript</a>.
This could lead to other widget overlapping the content of the
<a href="classWt_1_1WGroupBox.html" target="_blank">WGroupBox</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13670" target="_blank">Issue #13670</a>:
fixed the following issues with layouts:
<ul>
<li>
a bug where JavaScript layouts would sometimes not allow its
<a href="classWt_1_1WContainerWidget.html" target="_blank">WContainerWidget</a> to be resized.
</li>
<li>
a bug leading to items in flex layouts to have negative margins.
</li>
<li>
JavaScript layouts not taking margins into account if those margins width were set using
"thin", "medium" or "thick".
</li>
<li>
JavaScript layouts sometimes leaving a pixel between its content and the border of its
<a href="classWt_1_1WContainerWidget.html" target="_blank">WContainerWidget</a>. This was
especially visible when zooming in or out on the page.
</li>
<li>
elements inside of
<a href="classWt_1_1WHBoxLayout.html" target="_blank">WHBoxLayout</a> or
<a href="classWt_1_1WVBoxLayout.html" target="_blank">WVBoxLayout</a> respectively not filling
the entire column/row, if its height/width was not set to "auto".
</li>
<li>
flex layouts not making their
<a href="classWt_1_1WContainerWidget.html" target="_blank">WContainerWidget</a> fit its content
when the <code>WContainerWidget</code> had a <code>max-width</code> or a <code>max-height</code>
set, without having a <code>width</code> or a <code>height</code> set.
</li>
<li>
flex layouts not allowing their content aligned in the same direction as itself to be shrunk.
This could lead to several elements overlapping each other.
</li>
</ul>
</li>
<li>
<a href="https://redmine.emweb.be/issues/13674" target="_blank">Issue #13674</a>:
fixed URL fragments sometimes being considered part of the internal path.
</li>
<li>
<a href="https://redmine.emweb.be/issues/9864" target="_blank">Issue #9864</a>:
fixed a bug that would prevent functions with more than 3 arguments to be connected to a
<a href="classWt_1_1Signal.html" target="_blank">WSignal</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13733" target="_blank">Issue #13733</a>:
ensured that when using any chart with an underlying <a href="classWt_1_1Dbo_1_1QueryModel.html" target="_blank">QueryModel</a>,
an out-of-bounds index will no longer be checked by default. This will no longer cause a crash.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13777" target="_blank">Issue #13777</a>:
It's now made sure that a change on <a href="classWt_1_1WStandardItemModel.html" target="_blank">WStandardItemModel</a>
cannot be performed on invalid indices, with a crash as a result.
Nor can this change be (incorrectly) propagated to a <a href="classWt_1_1WTreeView.html" target="_blank">WTreeView</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14079" target="_blank">Issue #14079</a>:
corrected various functions of both <a href="classWt_1_1WAbstractItemModel.html" target="_blank">WAbstractItemModel</a> and
<a href="classWt_1_1WAbstractListModel.html" target="_blank">WAbstractListModel</a>.
Many of its implementations also received fixes.
</li>
<li>
<a href="https://redmine.emweb.be/issues/10954" target="_blank">Issue #10954</a>:
fixed
<a href="classWt_1_1WTime.html#" target="_blank">WTime</a> and
<a href="classWt_1_1WDateTime.html#" target="_blank">WDateTime</a> ignoring every 'h' and 'H' character
preceded by a single quote inside of the format.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13388" target="_blank">Issue #13388</a>:
prevented a segmentation fault from happening when authenticating a user with
<a href="classWt_1_1Auth_1_1Mfa_1_1TotpProcess.html" target="_blank">Auth::Mfa::TotpProcess</a>
while using a database not supporting transactions.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13740" target="_blank">Issue #13740</a>:
fixed a race condition in
<a href="classWt_1_1Auth_1_1OAuthProcess.html" target="_blank">Auth::OAuthProcess</a> that could in some
rare cases lead to a crash.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13714" target="_blank">Issue #13714</a>:
fixed a race condition in
<a href="classWt_1_1Http_1_1Client.html" target="_blank">Http::Client</a> that could lead to a crash if the
<a href="classWt_1_1Http_1_1Client.html#aad874b0869cb2202f6cd2b79e3956773" target="_blank">Http::Client::headersReceived()</a> signal was emitted while
the <code>Http::Client</code> was updating the body of the
<a href="classWt_1_1Http_1_1Message.html" target="_blank">Http::Message</a>.
</li>
</ul>
<p>
Wt 4.12.2 also comes with the following improvements:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13770" target="_blank">Issue #13770</a>:
separated the default strings and templates in two different <code>xml</code> files. This should make it easier to localize the default strings.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13791" target="_blank">Issue #13791</a>:
made the focus go back to the last focused widget when a popup gets hidden.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13776" target="_blank">Issue #13776</a>:
the validity time of the link sent to:
<ul>
<li>validate a user's email address</li>
<li>reset a user's password</li>
</ul>
is now mentioned in both the email itself and the confirmation popup shown to the user.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14267" target="_blank">Issue #14267</a>:
added client URL in JavaScript error reports.
</li>
<li>
<a href="https://redmine.emweb.be/issues/14192" target="_blank">Issue #14192</a>:
made <a href="namespaceWt_1_1Auth_1_1Mfa.html#abe89fce88c4deaabe28085fd1c57742f" target="_blank">Auth::Mfa::validateCode()</a>
accept the next code as well as the current and previous codes.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13052" target="_blank">Issue #13052</a>:
delayed the generation of the internal path from text in
<a href="classWt_1_1WMenuItem.html" target="_blank">WMenuItem</a> until
<a href="classWt_1_1WMenuItem.html#a7ed10e994274a4033e546bb346a13488" target="_blank">WMenuItem::pathComponent()</a> is called.
This will stop potential warnings about loss of detail when setting the text of a WMenuItem if the internal path is not used.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13676" target="_blank">Issue #13676</a>:
resolved some Clang and GCC compiler warnings.
Additionally, fixed
<a href="classWt_1_1WFileDropWidget.html" target="_blank">WFileDropWidget</a> making the client update
whether it can accept files or not every time it was updated.
</li>
</ul>
<h2>Release 4.12.1 (October 16, 2025)</h2>
<p>Wt 4.12.1 is a patch release that addresses the following issues:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13867" target="_blank">Issue #13867</a>:
corrected a breaking default <code>script</code> value of the <code><debug-level></code> configuration. This has been corrected to <code>framework</code>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13878" target="_blank">Issue #13878</a>:
made the access of bot user-agents more restricted. In case the incoming requests carry session-related information, the request is not processed, and a preemptive <code>403</code> status is returned.
Bot agents have their <a href="classWt_1_1WApplication.html" target="_blank">WApplication</a>
killed immediately after the response is served. Therefore a session does not carry meaning over multiple requests.
This resulted in bots being served the page on the path they requested, as a whole again.
While it was previously fixed that bots did not receive session-related parameters, older indexes may still contain them, which should be discouraged.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13768" target="_blank">Issue #13768</a>:
<a href="classWt_1_1Auth_1_1UpdatePasswordWidget.html">UpdatePasswordWidget</a>
no longer automatically logs a user in after a successful password reset.
This would otherwise allow logging in using only a single factor (email),
even when MFA is enabled.
This follows the
<a href="https://cheatsheetseries.owasp.org/cheatsheets/Forgot_Password_Cheat_Sheet.html#user-resets-password" target="_blank">OWASP guidelines</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13669" target="_blank">Issue #13669</a>:
<a href="classWt_1_1WObject.html#a64ce31cadb378c4eba81224f43bf493d" target="_blank">setObjectName()</a> should now correctly set the
<code>data-object-name</code> attribute of the DOM element representing
<a href="classWt_1_1WLayout.html" target="_blank">WLayout</a>,
<a href="classWt_1_1WAbstractArea.html" target="_blank">WAbstractArea</a>,
<a href="classWt_1_1WTableRow.html" target="_blank">WTableRow</a>, and
<a href="classWt_1_1WTableColumn.html" target="_blank">WTableColumn</a>.
Additionally, flexbox-based sub-layouts should now correctly be updated when removing or adding a widget to it, or when update is called.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13720" target="_blank">Issue #13720</a>:
fixed
<a href="classWt_1_1WAnchor.html" target="_blank">WAnchor</a> and
<a href="classWt_1_1WAbstractArea.html" target="_blank">WAbstractArea</a> with no link losing their style classes.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13676" target="_blank">Issue #13676</a>:
fixed a potential race condition at the destruction of an
<a href="classWt_1_1Http_1_1Client.html">Http::Client</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13508" target="_blank">Issue #13508</a>:
fixed validation style being applied to a
<a href="classWt_1_1WFormWidget.html" target="_blank">WFormWidget</a> on its first
rendering. Now, the validation is only applied once the user selects the widget, or when validation is called, using
<a href="classWt_1_1WFormWidget.html#a1bf85706ce6af9324706457bf2f9ca83" target="_blank">WFormWidget::validate()</a>.
Additionally, this introduces <a href="classWt_1_1WTheme.html#a93fb4b6d3e0e31498eded37fe4d77f8f" target="_blank">WTheme::loadValidationStyling()</a>.
This needs to be called for client-side validation to be available if extra JavaScript is necessary for it.
It is an optimization, that ensures not all JavaScript is immediately loaded for the theme.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13536" target="_blank">Issue #13536</a>:
fixed
<a href="classWt_1_1Dbo_1_1QueryModel.html" target="_blank">QueryModel</a> sometimes not completely filling it's row cache when loading rows at the end
of the table.
Additionally, fixed <a href="classWt_1_1WTableView.html" target="_blank">WTableView</a> scrolling sometimes not being synchronised with the server, leading to the wrong data being sent to the
client. This was more likely to occur when the connection with the server was slow.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13996" target="_blank">Issue #13996</a>:
added some tests for the encoding of HTML text, and made it more explicit that <a href="classWt_1_1WTemplate.html#a2d72efa9d932d6703e3ec012c960c259" target="_blank">WTemplate::bindString()</a> can lead to errors with it.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13464" target="_blank">Issue #13464</a>:
fixed an error happening when re-adding a
<a href="classWt_1_1WMenuItem.html" target="_blank">WMenuItem</a> to a
<a href="classWt_1_1WMenu.html" target="_blank">WMenu</a> if the load policy of the
<a href="classWt_1_1WMenuItem.html" target="_blank">WMenuItem</a> was set to
<a href="namespaceWt.html#af25a7f0bb1d50c5b8bc98c4db9080313" target="_blank">LoadPolicy::Lazy</a>.
Additionally,
<a href="classWt_1_1WMenu.html#afad580a15fd6ed88630c03068cce696b" target="_blank">WMenu::moveItem(int fromIndex, int toIndex)</a>
and
<a href="classWt_1_1WMenu.html#ad376486fb13bfe50629b389b1614bb4d" target="_blank">WMenu::moveItem(WMenuItem* item, int toIndex)</a>
were added to make it easier to move items in
<a href="classWt_1_1WMenu.html" target="_blank">WMenu</a>s.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12424" target="_blank">Issue #12424</a>:
fixed a crash that could happen when a
<a href="classWt_1_1WAbstractMedia.html" target="_blank">WAbstractMedia</a> widget was
added on the same page as a large
<a href="classWt_1_1WTableView.html" target="_blank">WTableView</a>.
Additionally, the rendering of the event handlers is now the same regardless
of whether or not nonces (see <a href="https://redmine.emweb.be/issues/13600" target="_blank">Issue #13600</a>) are enabled.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13530" target="_blank">Issue #13530</a>:
fixed <a href="classWt_1_1WDialog.html" target="_blank">WDialog</a> being always too small by <code>2px</code> when using both
<a href="classWt_1_1WBootstrap5Theme.html" target="_blank">WBootstrap5Theme</a> and
<a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">Wt::LayoutImplementation::JavaScript</a>. This lead to scrollbars
being unnecessarily present.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13623" target="_blank">Issue #13623</a>:
fixed JavaScript executed via
<a href="classWt_1_1WApplication.html#a2a92457b9212cef4057cb54e56183967" target="_blank">WApplication::doJavaScript()</a>
with <code>afterLoaded = false</code> being sometimes executed twice on application startup if the call happened before a call to
<a href="classWt_1_1WApplication.html#ae88546224ed32cade783da188b145138" target="_blank">WApplication::require()</a>.
Additionally, fixed libraries being loaded before the JavaScript executed via
<a href="classWt_1_1WApplication.html#a2a92457b9212cef4057cb54e56183967" target="_blank">WApplication::doJavaScript()</a>
with <code>afterLoaded = false</code> when using progressive bootstrap.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13361" target="_blank">Issue #13361</a>:
correct standalone Asio versioning checks, and Boost included Asio versioning checks.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13569" target="_blank">Issue #13569</a>:
most of the automatic application of the theme style are now delayed until the rendering of the widget.
This allows
<a href="classWt_1_1WWidget.html#ae1e28bff803905ca8625c1fb722f3d21" target="_blank">WWidget::setThemeStyleEnabled(false)</a>
to correctly disable the theme style for the widgets. Furthermore, if the theme changes
the DOM structure of the widget,
<a href="classWt_1_1WWidget.html#ae1e28bff803905ca8625c1fb722f3d21" target="_blank">WWidget::setThemeStyleEnabled(false)</a>
will now also stop that change from happening. The description of the function has
also been updated to describe more precisely what it does and what it does not do.
Additionally some cases of style classes being present several times in the same
widget are now fixed.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13683" target="_blank">Issue #13683</a>:
<a href="classWt_1_1WSlider.html" target="_blank">WSlider</a> now also
displays a color from the edge of the widget to the current slider handle position
in Bootstrap 5 theme, as it does in Bootstrap 3 and 2 themes.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13067" target="_blank">Issue #13067</a>:
fixed <a href="classWt_1_1WWebSocketRessource.html" target="_blank">WWebSocketRessource</a> never removing the closed
<a href="classWt_1_1WWebSocketConnection.html" target="_blank">WWebSocketConnection</a> from its memory.
Additionally, the <a href="classWt_1_1WWebSocketConnection.html" target="_blank">WWebSocketConnection</a> will now correctly
close when the request to close the connection is made by the client.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11129" target="_blank">Issue #11129</a>:
fixed the <code>lang</code> HTML tag always being set to <code>en</code> for plain HTML sessions.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13602" target="_blank">Issue #13602</a>:
ensured that the items inside a
<a href="classWt_1_1WSuggestionPopup.html" target="_blank">WSuggestionPopup</a>
receive the correct styling when using
<a href="classWt_1_1WBootstrap5Theme.html" target="_blank">WBootstrap5Theme</a>.
</li>
</ul>
<p>Wt 4.12.1 also comes with the following improvements:</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13509" target="_blank">Issue #13509</a>:
added the possibility to change the validator of a field in a
<a href="classWt_1_1Form_1_1Dbo_1_1FormView.html" target="_blank">Form::Dbo::FormView</a>
using <a href="classWt_1_1Form_1_1Dbo_1_1FormView.html#a7e21aa07469c8b8d02c3b6d824819979" target="_blank">Form::Dbo::FormView::setValidator()</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13970" target="_blank">Issue #13970</a>:
killed sessions started from suspicious GET requests quicker. The GET request is considered suspect if they contain a <code>wtd</code> (session ID) in the URL for a new session.
This should prevent application from keeping a session that will not identify a regular client (but likely comes from a bot) alive for too long.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13391" target="_blank">Issue #13391</a>:
added the possibility to specify the square size and the error correction level of the
<a href="classWt_1_1Auth_1_1Mfa_1_1TotpQrCode.html" target="_blank">TotpQrCode</a> in the
<a href="classWt_1_1Auth_1_1AuthService.html" target="_blank">AuthService</a> using
<a href="classWt_1_1Auth_1_1AuthService.html#ab283a8ffd6373f79d01d379c3801d1f7" target="_blank">AuthService::setMfaQrCodeSquareSize()</a> and
<a href="classWt_1_1Auth_1_1AuthService.html#ac5d552f65f0bc9398bbc852821e7ee92" target="_blank">AuthService::setMfaQrCodeErrCorrLvl()</a> respectively.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13788" target="_blank">Issue #13788</a>:
the version of Bootstrap 5 bundled with Wt was updated to 5.3.8.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13601" target="_blank">Issue #13601</a>:
updated the <a href="https://fontawesome.com/" target="_blank">Font Awsome library</a>
bundled with Wt to version 4.7.0.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13367" target="_blank">Issue #13367</a>:
<p>
when <a href="classWt_1_1WPainter.html#ae36e5ce0c6a324ec83ebbc397a513202" target="_blank">WPainter::drawImage()</a> was called, the information needed to identify
the image was given via a string. Depending on what <a href="classWt_1_1WPaintDevice.html" target="_blank">WPaintDevice</a> is used to draw the image, the content of this string could differ.
Some devices expected a URI, others a file path to the image or a data URI. This is problematic when using a <a href="classWt_1_1WPaintedWidget.html" target="_blank">WPaintedWidget</a>
since you do not know in advance what <code>WPaintDevice</code> will be used. While this was kind of handled by assuming the file was in the docroot, this did not
give much control to the developer on how it should be handled, and could result in errors due to bad assumptions.
</p>
<p>
To solve this issue we introduce the <a href="classWt_1_1WAbstractDataInfo.html" target="_blank">WAbstractDataInfo</a> class. This class is used by painters
and paint devices to get the location information of the image required to draw it. While <code>WAbstractDataInfo</code> is an abstract class, two subclasses are available
in Wt:
<ul>
<li>
<a href="classWt_1_1WDataInfo.html" target="_blank">WDataInfo</a>, which is constructed by taking both the uri and the path to the file.
</li>
<li>
<a href="classWt_1_1WDocRootDataInfo.html" target="_blank">WDocRootDataInfo</a>, which stores the information about a file in the document root, and is
constructed using the file path relative to the docroot.
</li>
</ul>
</p>
<p>
The methods:
<ul>
<li><a href="classWt_1_1WPainter_1_1Image.html#a54578ddf7c3c625ce0e32173a9f0e781" target="_blank">WPainter::Image::Image(string, int, int)</a></li>
<li><a href="classWt_1_1WPainter_1_1Image.html#a7a82ffdf4f9222bf44175ee0e7f62582" target="_blank">WPainter::Image::Image(string, string)</a></li>
<li><a href="classWt_1_1WPaintDevice.html#a4746873743ea66e4e5bd9adb51782095" target="_blank">WPaintDevice::drawImage(WRectF, string, int, int, WRectF)</a></li>
</ul>
are now deprecated in favor of versions that use <code>WAbstractDataInfo</code> in place of <code>std::string</code>.
</p>
</li>
<li>
<a href="https://redmine.emweb.be/issues/13435" target="_blank">Issue #13435</a>:
allows to configure the minimum number of sessions required to enforce the ratio of plain HTML session
versus Ajax sessions, that is used to prevent DoS. This can be configure via the
<code>min-session-for-dos</code> tag in the <code>wt_config.xml</code> file. The default minimum was
also raised from 20 to 100.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13478" target="_blank">Issue #13478</a>:
the login views in
<a href="namespaceWt_1_1Auth.html" target="_blank">Wt::Auth</a> are now more consistent.
Additionally, the <code>resend-email-verification</code> view is not missing anymore for default, or polished CSS themes.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13881" target="_blank">Issue #13881</a>:
added
<a href="classWt_1_1WResource.html#ae88f496ddf481a6a68301ca6059bdc15" target="_blank">WResource::setAlternativeBotUrl()</a> and
<a href="classWt_1_1WImage.html#ae774907487e84463f48acbbafb4235f8" target="_blank">WImage::setAlternativeBotUrl()</a> that allow
to set an alternative URL that will be served to clients that are detected as bot agents (see <a href="classWt_1_1WEnvironment.html#ad7dd42fefc4e318b6724c71b3a79b487" target="_blank">WEnvironment::agentIsSpiderBot()</a>).
</li>
</ul>
<h2>Release 4.12.0 (July 23, 2025)</h2>
<p>Wt 4.12.0 is a major release that introduces the following new features:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/7450" target="_blank">Issue #7450</a>:
added the option to use <code>std::filesystem</code> instead of <code>boost::filesystem</code> by setting the cache variable <code>WT_CPP17_FILESYSTEM_IMPLEMENTATION</code> to <code>std</code> instead of <code>boost</code>.
<br><strong>IMPORTANT:</strong> Accessing the last time a file was updated with <code>std::filesystem</code> before <code>C++20</code> may result in an imprecise time point. This can affect the <code>wthttp</code>'s <code>last-modified</code> timestamp.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12881" target="_blank">Issue #12881</a>:
added
<a href="classWt_1_1WPasswordEdit.html" target="_blank">WPasswordEdit</a> which ought to replace
<a href="classWt_1_1WLineEdit.html#a27c9bc232bea0ab76ee266be3325a10e" target="_blank">WLineEdit::setEchoMode(EchoMode::Password)</a>
that is now deprecated. You can find examples on how to use this new class in the
<a href="https://www.webtoolkit.eu/widgets/forms/password" target="_blank">Widget Gallery</a>.
It is also now possible to set the input mode of any
<a href="classWt_1_1WLineEdit.html" target="_blank">WLineEdit</a> using
<a href="classWt_1_1WLineEdit.html#a5d772a843fb12447da0e295e6fae805b" target="_blank">WLineEdit::setInputMode()</a>.
This is especially important for mobile devices, where the input mode impacts the
keyboard that is shown to the user when the input field is focused.
<br><strong>IMPORTANT:</strong> it is now possible to combine multiple
<a href="classWt_1_1WValidator.html" target="_blank">WValidator</a>s into a single one,
using the new
<a href="classWt_1_1WStackedValidator.html" target="_blank">WStackedValidator</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/7228" target="_blank">Issue #7228</a>:
Wt now supports native HTML5 input types for <a href="classWt_1_1WDateEdit.html" target="_blank">WDateEdit</a> and <a href="classWt_1_1WTimeEdit.html" target="_blank">WTimeEdit</a>.
You can enable it by using <a href="classWt_1_1WDateEdit.html#a388105e077d60a7225564572cae51a93" target="_blank">WDateEdit::setNativeControl(true)</a> or
<a href="classWt_1_1WTimeEdit.html#a747741116664abc07f820122d05a535f" target="_blank">WTimeEdit::setNativeControl(true)</a>
for <code>WDateEdit</code> and <code>WTimeEdit</code> respectively. Both are set to false by default.
Native controls will use the locale of the browser to determine the format displayed to the client.
They have a better responsive design than Wt's widgets, often deferring to a pop-up on small screens for example.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12789" target="_blank">Issue #12789</a>:
this feature allows you to force the tooltip from a
<a href="classWt_1_1WWebWidget.html">WWebWidget</a> to be shown by calling
<a href="classWt_1_1WWebWidget.html#a85571804f5b1c3b15e1ecafc4259bfcd" target="_blank">WWebWidget::showToolTip()</a>. Tooltips can still be shown when a
<a href="classWt_1_1WWebWidget.html">WWebWidget</a> is hovered over by the mouse with
<a href="classWt_1_1WWebWidget.html#a7f1b8701997fcc45dcf55bc3566c1380" target="_blank">WWebWidget::showToolTipOnHover()</a>. The latter is default behavior.
If both options are enabled, the tooltip on hover will not be shown. Rather the forcibly shown tooltip will remain visible throughout.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12993" target="_blank">Parent Issue #12993</a>:
<ul>
<li>
<a href="https://redmine.emweb.be/issues/12995" target="_blank">Issue #12995</a>:
added the ability to add
<a href="classWt_1_1WLeafletMap_1_1Popup.html" target="_blank">WLeafletMap::Popup</a>s to the
<a href="classWt_1_1WLeafletMap.html" target="_blank">WLeafletMap</a>.
These popups can be added to any coordinate on the map, or to specific
<a href="classWt_1_1WLeafletMap_1_1Marker.html" target="_blank">WLeafletMap::Marker</a>s.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12996" target="_blank">Issue #12996</a>:
added the ability to add
<a href="classWt_1_1WLeafletMap_1_1Tooltip.html" target="_blank">WLeafletMap::Tooltip</a>s to the
<a href="classWt_1_1WLeafletMap.html" target="_blank">WLeafletMap</a>.
These tooltips can be added to any coordinate on the map, or to specific
<a href="classWt_1_1WLeafletMap_1_1Marker.html" target="_blank">WLeafletMap::Marker</a>s.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12994" target="_blank">Issue #12994</a>:
add the possibility to specify configuration for
<a href="classWt_1_1WLeafletMap_1_1LeafletMarker.html" target="_blank">WLeafletMap::LeafletMarker</a> by using
<a href="classWt_1_1WLeafletMap_1_1LeafletMarker.html#a94c811873bc9b067b75c4002b70fa0f3" target="_blank">WLeafletMap::LeafletMarker::setOptions()</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12997" target="_blank">Issue #12997</a>:
added signals to
<a href="classWt_1_1WLeafletMap_1_1AbstractMapItem.html" target="_blank">WLeafletMap::AbstractMapItem</a>
(this includes
<a href="classWt_1_1WLeafletMap_1_1Marker.html" target="_blank">WLeafletMap::Marker</a>s,
<a href="classWt_1_1WLeafletMap_1_1Popup.html" target="_blank">WLeafletMap::Popup</a>s,
and <a href="classWt_1_1WLeafletMap_1_1Tooltip.html" target="_blank">WLeafletMap::Tooltip</a>s)
that are emitted when a mouse event triggers on the map item.
</li>
</ul>
<li>
<a href="https://redmine.emweb.be/issues/4948" target="_blank">Issue #4948</a>:
the style of the collapse icon of collapsible <a href="classWt_1_1WPanel.html" target="_blank">WPanel</a>s
is now defined in CSS by styling the <code>Wt-collapse-button</code> style class.
<br><strong>IMPORTANT:</strong> the collapse icon will not be visible when using a custom theme that does not
define a styling for the <code>Wt-collapse-button</code> style class.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12817" target="_blank">Issue #12817</a>:
allows custom implementation of the scope and the authorization endpoint of the
<a href="classWt_1_1Auth_1_1OAuthProcess.html" target="_blank">Auth::OAuthProcess</a> by overriding
<a href="classWt_1_1Auth_1_1OAuthProcess.html#a750aa9eaf024b9b50e6a6aeeecb65e68" target="_blank">Auth::OAuthProcess::scope()</a> and
<a href="classWt_1_1Auth_1_1OAuthProcess.html#a8dc8be6709ce345220a05714a9665dae" target="_blank">Auth::OAuthProcess::authorizationEndpoint()</a>.
This will allow developers to reuse the <a href="classWt_1_1Auth_1_1OAuthService.html" target="_blank">OAuthService</a> for near-identical authentication calls.
</li>
</ul>
<p>Wt 4.12.0 also fixes the following bugs:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13701" target="_blank">Issue #13701</a>:
checked the index's validity on changing the <a href="classWt_1_1WMenu.html" target="_blank">WMenu</a>, when using a
<a href="classWt_1_1WStackedWidget.html" target="_blank">WStackedWidget</a> to display content.
Unselecting the previous item uses a set <code>-1</code> index, which the <code>WStackedWidget</code> omitted to validate.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13699" target="_blank">Issue #13699</a>:
added the <a href="namespaceWt.html#a1709f88923d174d4a9d27271d3e30f28" target="_blank">Wt::TextFormat::None</a> option.
This allows for widgets to specify the <code>none</code> value in the <code>text-decoration</code> attribute.
This used to be unavailable, in lieu of <a href="classWt_1_1WFlags.html#a866ce1716c87b4c1f47b3021b0805ace" target="_blank">Wt::None</a>,
which rendered the "default" <code>text-decoration</code>, not allowing widget-specific control in case of CSS rules applying to the widget.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13553" target="_blank">Issue #13553</a>:
fixed an incorrect fallback in OpenID Connect claim parsing. A "true/false" string was not correctly converted to a boolean.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13712" target="_blank">Issue #13712</a>:
corrected the styling of <a href="classWt_1_1ItemDataRole.html#a4f39ded746ca62ea63ed222f2b852cf6" target="_blank">ItemDataRole::Link</a>
items in a <a href="classWt_1_1WTableView.html" target="_blank">WTableView</a>, in case
<a href="classWt_1_1WTableView.html#aef48a94558cded7916e33e8bbc69a89d" target="_blank">alternating row colors are enabled</a>.
</li>
</ul>
<p>Wt 4.12.0 also comes with the following improvements:</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13703" target="_blank">Issue #13703</a>:
corrected a closing bracket, so that alignment is properly passed to <a href="classWt_1_1WToolBar.html#ac570073c5f31772125b3329465508318" target="_blank">WToolBar::addWidget()</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13301" target="_blank">Issue #13301</a>:
added the possibility to handle all JavaScript errors inside Wt, also of scripts not directly related to Wt.
This can be done by setting the new <code>debug-level</code> option in the <code>wt_config.xml</code> file to <code>all</code>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11272" target="_blank">Parent Issue #11272</a>:
<ul>
<li>
<a href="https://redmine.emweb.be/issues/11272" target="_blank">Issue #11272</a>:
add support for TinyMCE 5, 6 and 7. Wt now assumes TinyMCE 6 is used by default instead of TinyMCE 3,
and the TinyMCE version bundled in Wt's Windows binaries has been updated to TinyMCE 6.
<br><strong>IMORTANT:</strong> TinyMCE 8 should work as well, but may require a license key.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11249" target="_blank">Issue #11249</a>:
it is now possible to set placeholder text in
<a href="classWt_1_1WTextEdit.html" target="_blank">WTextEdit</a> when using TinyMCE 5 or higher.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11267" target="_blank">Issue #11267</a>:
it is now possible to change the readonly state of a
<a href="classWt_1_1WTextEdit.html" target="_blank">WTextEdit</a> when using TinyMCE 5 or higher.
</li>
</ul>
<li>
<a href="https://redmine.emweb.be/issues/12801" target="_blank">Issue #12801</a>:
ensured that calling <a href="classWt_1_1WLeafletMap.html#a9263f7ce85484a91034c39484c68fda5" target="_blank">WLeafletMap::removeMarker()</a>
and <a href="classWt_1_1WLeafletMap.html#a1d75431893349d8b9d707a0cdb1d41ec" target="_blank">WLeafletMap::addMarker()</a> using the same
<code>unique_ptr<Marker></code>, and performing changes to it will result in the update taking place.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13163" target="_blank">Issue #13163</a>:
improve the way touch selection works for
<a href="classWt_1_1WTableView.html" target="_blank">WTableView</a>. The selection of a single element will now
happen only after the user stopped touching the screen, to avoid selection happening while scrolling slowly.
Also, selection of multiple elements will now be cancel when moving the finger. This will avoid selection of
multiple elements happening while zooming.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13711" target="_blank">Issue #13711</a>:
removed the usage of URLs ending with '.'. These were sometimes (not for all requests) found in case no path
information was present, indicating the root.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13700" target="_blank">Issue #13700</a>:
installed the generated PDB files next to the DLLs on Windows (shared) builds.
</li>
</ul>
<h2>Release 4.11.4 (April 3, 2025)</h2>
<p>
Wt 4.11.4 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13600" target="_blank">Issue #13600</a>:
fixed CSP (Content Security Policy) violations in case of <code>use-script-nonce</code> being enabled, for
<a href="classWt_1_1WAnchor.html" target="_blank">WAnchor</a> and
<a href="classWt_1_1WAbstractArea.html" target="_blank">WAbstractArea</a> without a link. The default browser behavior is now disabled on all events
coming from those widgets as long as they have no link, and their href attribute is set to <code>#</code>.
Additionally, fixed
<a href="classWt_1_1WAbstractArea.html" target="_blank">WAbstractArea</a> sometimes trying to use it's href to send click event when ajax
was available.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13542" target="_blank">Issue #13542</a>:
fixed the <code>--accesslog</code> option having no effect. The description of this option
was also updated to reflect its actual behavior. Additionally, access logs now have
their own type ("access") instead of the generic "info" type. These logs now also have a format more consistent with other logs.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13376" target="_blank">Issue #13376</a>:
fixed an issue where attempting to hide a
<a href="classWt_1_1WPopupMenu.html" target="_blank">WPopupMenu</a>
would sometimes be display the popup at the bottom of the page instead of actually hiding the popup.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13567" target="_blank">Issue #13567</a>:
fixed the handling of <code>SessionProcess::read()</code>, such that it is always called on existing asio context.
This was an edge-case when using <code>dedicated-process</code> mode.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13585" target="_blank">Issue #13585</a>:
resolved a segfault when a <a href="classWt_1_1WMenu.html" target="_blank">WMenu</a>
would be selected. The selection would happen based on the internal path, with the item having no content, but having a submenu (using
<a href="classWt_1_1WMenu.html#a792efe0a20114142b568a3e0f25dbcb2" target="_blank">WMenu::addMenu()</a>).
Additionally, the <a href="classWt_1_1WStackedWidget.html#a8342aac06b58cdedb7b1f43132673cb8" target="_blank">currentWidgetChanged()</a>
signal now only emits once if the <a href="classWt_1_1WStackedWidget.html" target="_blank">WStackedWidget</a>'s
content has changed.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13621" target="_blank">Issue #13621</a>:
ensured that <code>thirdparty/qrcodegen/QrCode.hpp</code> is installed in the include directory, and that the <code>TotpQrCode</code> symbol is exported.
This allows developers to use the <a href="classWt_1_1Auth_1_1Mfa_1_1TotpQrCode.html" target="_blank">Auth::Mfa::TotpQrCode</a> class in their own code.
Additionally, <a href="classWt_1_1Auth_1_1Mfa_1_1TotpQrCode.html#a59c9cdfce092a5385daf010fceb3361e" target="_blank">Auth::Mfa::TotpQrCode::formatKey()</a> is now public.
This allows developers to retrieve correct URI, which could be shown to end users, and allow them to copy it to a password manager.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13631" target="_blank">Issue #13631</a>:
added the "Logout"/"Back" button from <a href="https://redmine.emweb.be/issues/13392" target="_blank">Issue #13392</a>
to the <a href="classWt_1_1WBootstrap3Theme.html" target="_blank">WBootstrap3Theme</a> as well.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13626" target="_blank">Issue #13626</a>:
ensured that <a href="classWt_1_1Auth_1_1AuthWidget.html#a7e64d84a1717f437fa9a32d5901ca411" target="_blank">Auth::AuthWidget::processEnvironment()</a> will also process the MFA environment.
This results in MFA tokens being processed before the authentication widget is rendered.
</a>
</li>
<li>
<a href="https://redmine.emweb.be/issues/13550" target="_blank">Issue #13550</a>:
resolved an issue that would change the href of internal path links in
<a href="classWt_1_1WTemplate.html" target="_blank">WTemplate</a> or
<a href="classWt_1_1WText.html" target="_blank">WText</a> to the current
internal path if internal path encoding was enabled.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13511" target="_blank">Issue #13511</a>:
fixed a bug where a
<a href="classWt_1_1WPushButton.html" target="_blank">WPushButton</a> rendered as an anchor
with the <a href="classWt_1_1WBootstrap5Theme" target="_blank">WBootstrap5Theme</a>,
would sometimes change its class property to a <code>dropdown-item</code> on update.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13373" target="_blank">Issue #13373</a>:
resolved an issue where
<a href="classWt_1_1WPaintedWidget.html" target="_blank">WPaintedWidget</a> would not be updated when
<a href="classWt_1_1WApplication.html#a02b9d8aa1b6c2d0dc9edc1b9c63f86dc">WApplication::refresh()</a> was called.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12288" target="_blank">Issue #12288</a>:
corrected a JavaScript error when using <a href="namespaceWt.html#aeb0e4f49ce4a28d8ce9b0c6005027876" target="_blank">Wt::LayoutImplementation::Flex</a>
with a disabled ancestor widget.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13685" target="_blank">Issue #13685</a>:
limited the possible size calculations in stretchable layouts that could loop infinitely.
</a>
</li>
<li>
<a href="https://redmine.emweb.be/issues/13510" target="_blank">Issue #13510</a>:
fixed the crosshair coordinates in
<a href="classWt_1_1Chart_1_1WCartesianChart.html" target="_blank">Chart::WCartesianGraph</a>
showing dates as double.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13067" target="_blank">Issue #13067</a>:
corrected the internal path being sent in the request URL after changing the session ID for applications deployed at a non-empty path.
</li>
</ul>
<p>
Wt 4.11.4 also comes with the following improvements:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13630" target="_blank">Issue #13630</a>:
allow more control over and customization for <a href="classWt_1_1Auth_1_1Mfa_1_1TotpProcess.html" target="_blank">TotpProcess</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13125" target="_blank">Issue #13125</a>:
added
<a href="classWt_1_1StdLayoutImpl.html" target="_blank">StdLayoutImpl</a> and
<a href="classWt_1_1StdLayoutItemImpl.html" target="_blank">StdLayoutItemImpl</a> to the public API.
These classes were already used by Wt to create layout but were not public. Since those classes are necessary to create a custom layout for a
<a href="classWt_1_1WContainerWidget.html" target="_blank">WContainerWidget</a>
it has now be made public to allow developers to create their own layouts. An example of a simple layout was also added in <code>examples/feature/custom_layout</code>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13075" target="_blank">Issue #13075</a>:
<a href="classWt_1_1WWidget.html#a2d627cbf964560995ac51c25d69d8b54" target="_blank">WWidget::positionAt()</a>
now correctly positions the widget over the given widget when there is not enough place on either
side to place the widget. This same issue affecting popups was resolved as well.
Since this potentially puts content over other widgets (e.g. when entering information into a
<a href="classWt_1_1WSuggestionPopup.html" target="_blank">WSuggestionPopup</a>), the options
<a href="classWt_1_1WPopupMenu.html#a47a35b9b9ff72ea1c9daf86897730bd3">WPopupMenu::setAdjust()</a> and
<a href="classWt_1_1WPopupWidget.html#a0c14602b64c0d1f5aea2429a5ec1b415">WPopupWidget::setAdjust()</a>
were added. This allows the default adjustment behaviour to be overridden, so that content is never
placed over the widget it popped up from.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12870" target="_blank">Issue #12870</a>:
added the
<a href="classWt_1_1WQrCode.html" target="_blank">WQrCode</a> widget, a widget that can be used to generate QR codes.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12944" target="_blank">Issue #12944</a>:
added documentation for the
<a href="classWt_1_1WIcon.html" target="_blank">WIcon</a> class.
</li>
</ul>
<h2>Release 4.11.3 (February 19, 2025)</h2>
<p>
Wt 4.11.3 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13387" target="_blank">Issue #13387</a>:
fixed incorrect expiration date for an MFA authentication token being stored in the database.
Additionally, the possibility to give a custom expiration time for authentication tokens was added, for
<a href="classWt_1_1Auth_1_1AuthService.html#aa0c7e178c21d6fac659e4664b4cd865c" target="_blank">Auth::AuthService::createAuthToken()</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13481" target="_blank">Issue #13481</a>:
fixed a lingering cookie that <a href="classWt_1_1Auth_1_1AuthModel.html#a9186da13a4a2d9f2842db8e3d64bcce4" target="_blank">remembers the login</a>
(using "Remember me") was not correctly removed when the user logged out. It was correctly removed from the browser, but server-side a reference to it remained.
</li>