forked from mixxxdj/mixxx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.md.backup
2069 lines (1894 loc) · 160 KB
/
CHANGELOG.md.backup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Changelog
## [2.5.0](https://github.com/mixxxdj/mixxx/issues?q=milestone%3A2.5.0) (Unreleased)
### Features
* Logging: Include timestamps in messages by default [#11861](https://github.com/mixxxdj/mixxx/pull/11861)
* PreviewDeckN,LoadSelectedTrackAndPlay toggles play/pause if the track is already loaded
[#12920](https://github.com/mixxxdj/mixxx/pull/12920)
[#9819](https://github.com/mixxxdj/mixxx/issues/9819)
* Add command line option `--start-autodj` to start Auto DJ immediately after Mixxx start.
[#13017](https://github.com/mixxxdj/mixxx/pull/13017)
[#10189](https://github.com/mixxxdj/mixxx/issues/10189)
### Waveforms
* SlipMode waveform visual for RGB GLSL
[#13002](https://github.com/mixxxdj/mixxx/pull/13002)
[#13256](https://github.com/mixxxdj/mixxx/pull/13256)
* Show beats and time until next marker in the waveform [#12994](https://github.com/mixxxdj/mixxx/pull/12994)
* Waveforms: don't elide hotcue labels
[#13219](https://github.com/mixxxdj/mixxx/pull/13219)
[#10722](https://github.com/mixxxdj/mixxx/issues/10722)
* Waveforms: Allshader RGB, Filtered and Stacked Waveforms using textures for waveform data
[#13151](https://github.com/mixxxdj/mixxx/pull/13151)
[#12641](https://github.com/mixxxdj/mixxx/issues/12641)
### Skins / Interface
* Toggle the menubar with single Alt key press (auto hide)
[#11526](https://github.com/mixxxdj/mixxx/pull/11526)
[#13301](https://github.com/mixxxdj/mixxx/pull/13301)
* Fullscreen toggle rework [#11566](https://github.com/mixxxdj/mixxx/pull/11566)
* Allow to edit track title and artist directly within the decks via a delayed double-click
[#11755](https://github.com/mixxxdj/mixxx/pull/11755)
* Require a minimum movement before initiating the drag&drop of tracks [#12903](https://github.com/mixxxdj/mixxx/pull/12903)
* Add type toggle to cue popup [#13215](https://github.com/mixxxdj/mixxx/pull/13215)
* add WEffectMetaKnob, draws arc from default meta position
[#12638](https://github.com/mixxxdj/mixxx/pull/12638)
[#12634](https://github.com/mixxxdj/mixxx/issues/12634)
* Handle not supported files when dragging to waveforms and spinnies
[#13206](https://github.com/mixxxdj/mixxx/issues/13206)
* Improve `rate_up/down` tooltips, pitch vs. speed [#12590](https://github.com/mixxxdj/mixxx/pull/12590)
* Add tooltip for expand/collapse samplers button
[#13005](https://github.com/mixxxdj/mixxx/pull/13005)
[#12998](https://github.com/mixxxdj/mixxx/issues/12998)
* LateNight: Merge vinyl control toggle and status light
[#12947](https://github.com/mixxxdj/mixxx/pull/12947)
[#10192](https://github.com/mixxxdj/mixxx/issues/10192)
* Track label widgets: set `show_track_menu` only for main decks [#12978](https://github.com/mixxxdj/mixxx/pull/12978)
* MacOS: App proxy icon of the playing track to the window title [#12116](https://github.com/mixxxdj/mixxx/pull/12116)
### Engine
* Beats: allow undoing the last BPM/beats change [#12954](https://github.com/mixxxdj/mixxx/pull/12954)
[#12774](https://github.com/mixxxdj/mixxx/issues/12774)
[#10138](https://github.com/mixxxdj/mixxx/issues/10138)
* Add beatloop anchor to set and adjust loop from either start or end
[#12745](https://github.com/mixxxdj/mixxx/pull/12745)
[#13241](https://github.com/mixxxdj/mixxx/pull/13241)
* Add Rate Tap button [#12104](https://github.com/mixxxdj/mixxx/pull/12104)
* Store/restore regular loop when toggling rolling loops
[#12475](https://github.com/mixxxdj/mixxx/pull/12475)
[#8947](https://github.com/mixxxdj/mixxx/issues/8947)
* Add `beats_translate_move` ControlEncoder [#12376](https://github.com/mixxxdj/mixxx/pull/12376)
* Looping/Beatjump: use seconds if track has no beats
[#12961](https://github.com/mixxxdj/mixxx/pull/12961)
[#11124](https://github.com/mixxxdj/mixxx/issues/11124)
* Add Track colour palette cycling controls `track_color_next` and `track_color_prev` to library, decks and samplers
[#13066](https://github.com/mixxxdj/mixxx/pull/13066)
[#12905](https://github.com/mixxxdj/mixxx/issues/12905)
* Add Tempo locking controls
[#13041](https://github.com/mixxxdj/mixxx/pull/13041)
[#13041](https://github.com/mixxxdj/mixxx/pull/13041)
[#13038](https://github.com/mixxxdj/mixxx/issues/13038)
[#13199](https://github.com/mixxxdj/mixxx/pull/13199)
### Effects
* Add Compressor effect [#12523](https://github.com/mixxxdj/mixxx/pull/12523)
* add Glitch effect [#11329](https://github.com/mixxxdj/mixxx/pull/11329)
* Add backend for Audio Unit (AU) plugins on macOS [#12112](https://github.com/mixxxdj/mixxx/pull/12112)
### Library
* Shortkeys Cut, Copy, Paste for track list management [#12020](https://github.com/mixxxdj/mixxx/pull/12020)
* Track menu: Rephrase "Reset" to "Clear" [#12955](https://github.com/mixxxdj/mixxx/pull/12955)
* Playlists: move tracks with Alt + Up/Down/PageUp/PageDown/Home/End
[#13092](https://github.com/mixxxdj/mixxx/pull/13092)
[#10826](https://github.com/mixxxdj/mixxx/issues/10826)
* Search: Add special BPM filters
[#12072](https://github.com/mixxxdj/mixxx/pull/12072)
[#8191](https://github.com/mixxxdj/mixxx/issues/8191)
* Search: Add "OR" search operator
[#12061](https://github.com/mixxxdj/mixxx/pull/12061)
[#8881](https://github.com/mixxxdj/mixxx/issues/8881)
* Search related Tracks menu: Allow to use multiple filters at once
[#12213](https://github.com/mixxxdj/mixxx/pull/12213)
[#12211](https://github.com/mixxxdj/mixxx/issues/12211)
* Add multi-track property editor / batch tag editor
[#12548](https://github.com/mixxxdj/mixxx/pull/12548)
[#9023](https://github.com/mixxxdj/mixxx/issues/9023)
[#13299](https://github.com/mixxxdj/mixxx/pull/13299)
* Computer feature: add sidebar action "Refresh directory tree" [#12908](https://github.com/mixxxdj/mixxx/pull/12908)
* Library: Custom color for missing tracks [#12895](https://github.com/mixxxdj/mixxx/pull/12895)
* Library: Add feedback to directory operations (add, remove, relink)
[#12436](https://github.com/mixxxdj/mixxx/pull/12436)
[#10481](https://github.com/mixxxdj/mixxx/issues/10481)
* Library: Add support for scaling BPM by different ratios
[#12934](https://github.com/mixxxdj/mixxx/pull/12934)
[#9133](https://github.com/mixxxdj/mixxx/issues/9133)
* Library: Add ability to import external playlists as crates [#11852](https://github.com/mixxxdj/mixxx/pull/11852)
* Library: Add 'Shuffle playlist' sidebar action
[#12498](https://github.com/mixxxdj/mixxx/pull/12498)
[#6988](https://github.com/mixxxdj/mixxx/issues/6988)
* Playlists: Update of playlist labels after adding tracks [#12866](https://github.com/mixxxdj/mixxx/pull/12866) [#12761](https://github.com/mixxxdj/mixxx/issues/12761)
* Tracks: Custom text color for played tracks (qss)
[#12744](https://github.com/mixxxdj/mixxx/pull/12744)
[#5911](https://github.com/mixxxdj/mixxx/issues/5911)
[#12912](https://github.com/mixxxdj/mixxx/pull/12912)
* History: Show track count and duration in sidebar [#12811](https://github.com/mixxxdj/mixxx/pull/12811) [#12788](https://github.com/mixxxdj/mixxx/issues/12788)
* Fixes around cratetablemodel, remove tracks + don't allow pasting tracks into locked playlists/crates or History [#12926](https://github.com/mixxxdj/mixxx/pull/12926)
* Track menu, Remove from disk: stop and eject all affected decks [#13214](https://github.com/mixxxdj/mixxx/pull/13214)
* Track menu: add star rating
[#12700](https://github.com/mixxxdj/mixxx/pull/12700)
[#10652](https://github.com/mixxxdj/mixxx/issues/10652)
* Playlists: move tracks with Alt + Up/Down/PageUp/PageDown/Home/End
[#13092](https://github.com/mixxxdj/mixxx/pull/13092)
[#10826](https://github.com/mixxxdj/mixxx/issues/10826)
### Preferences
* Add missing spacer in Interface preferences [#13094](https://github.com/mixxxdj/mixxx/pull/13094)
* Fix fetching of soundcard sample rate [#11951](https://github.com/mixxxdj/mixxx/pull/11951) [11949](https://github.com/mixxxdj/mixxx/issues/11949)
* Add load point option 'First hotcue'
[#12869](https://github.com/mixxxdj/mixxx/pull/12869)
[#12740](https://github.com/mixxxdj/mixxx/issues/12740)
* MIDI Input editor: allow selecting multiple Options [#12348](https://github.com/mixxxdj/mixxx/pull/12348)
* Fix incorrect reboot required notification on preference updates [#13058](https://github.com/mixxxdj/mixxx/pull/13058)
### Controller Mappings
* Pioneer DDJ-FLX4: Mapping improvements [#12842](https://github.com/mixxxdj/mixxx/pull/12842)
* Traktor S4 MK3: Add setting definition for [#12995](https://github.com/mixxxdj/mixxx/pull/12995)
* Traktor S4 MK3: Software mixer support and default pad layout customisation [#13059](https://github.com/mixxxdj/mixxx/pull/13059)
### Controller Backend
* Send sysex to all handlers [#12827](https://github.com/mixxxdj/mixxx/pull/12827)
* Add control for showing a deck's track menu [#10825](https://github.com/mixxxdj/mixxx/pull/10825)
* Removed old examples HID keyboard and HID trackpad [#12977](https://github.com/mixxxdj/mixxx/pull/12977)
* Reduce log noise with HID device
[#13010](https://github.com/mixxxdj/mixxx/pull/13010)
[#13125](https://github.com/mixxxdj/mixxx/pull/13125)
* Allow controller mapping to discard polling [#12558](https://github.com/mixxxdj/mixxx/pull/12558)
* Add support for mapping user settings
[#11300](https://github.com/mixxxdj/mixxx/pull/11300)
[#13046](https://github.com/mixxxdj/mixxx/pull/13046)
[#13057](https://github.com/mixxxdj/mixxx/pull/13057)
[#13045](https://github.com/mixxxdj/mixxx/pull/13045)
* Registering MIDI Input Handlers From Javascript
[#12781](https://github.com/mixxxdj/mixxx/pull/12781)
[#13089](https://github.com/mixxxdj/mixxx/pull/13089)
* Controller IO table: Fix display text for Action/control delegate [#13188](https://github.com/mixxxdj/mixxx/pull/13188)
* Drop lodash dependency in ComponentJS [#12779](https://github.com/mixxxdj/mixxx/pull/12779)
* Support for bulk devices on Windows and Mac [#13008](https://github.com/mixxxdj/mixxx/pull/13008)
* Registering MIDI Input Handlers From Javascript
[#12781](https://github.com/mixxxdj/mixxx/pull/12781)
[#13089](https://github.com/mixxxdj/mixxx/pull/13089)
### Experimental QML Skin
* Add Experimental QML Skin that can be tested via the --qml command line option
[#13152](https://github.com/mixxxdj/mixxx/pull/13152)
* Fix type error in `Slider.qml` [#11423](https://github.com/mixxxdj/mixxx/pull/11423)
* Allow switching between legacy and new QML UI with command arg [#12139](https://github.com/mixxxdj/mixxx/pull/12139)
* Add PlayerProxy missing current track when created after loading [#12559](https://github.com/mixxxdj/mixxx/pull/12559)
* Fix: Add `qt6-qpa-plugins` to dependencies [#12549](https://github.com/mixxxdj/mixxx/pull/12549)
* Fix: Improve knobs by applying selective 4xMSAA on the Arc shape [#12541](https://github.com/mixxxdj/mixxx/pull/12541)
* Add QML interceptor to auto reload on file change
[#12795](https://github.com/mixxxdj/mixxx/pull/12795)
[#12844](https://github.com/mixxxdj/mixxx/pull/12844)
* Add multi-sampling settings for QML [#12546](https://github.com/mixxxdj/mixxx/pull/12546)
[#12794](https://github.com/mixxxdj/mixxx/pull/12794)
[#12536](https://github.com/mixxxdj/mixxx/issues/12536)
[#13058](https://github.com/mixxxdj/mixxx/pull/13058)
* Install qml module on Windows [#12604](https://github.com/mixxxdj/mixxx/pull/12604)
* Add scrolling waveforms
[#3967](https://github.com/mixxxdj/mixxx/pull/3967)
[#13009](https://github.com/mixxxdj/mixxx/pull/13009)
* Fix: handle case where Waveform data is missing [#13009](https://github.com/mixxxdj/mixxx/pull/13009)
* Fix: allow missing COs on QML component [#13011](https://github.com/mixxxdj/mixxx/pull/13011)
* Initialize CmdlineArgs::m_qml [#13152](https://github.com/mixxxdj/mixxx/pull/13152)
### Update to Qt6
* Qt6 prepare [#11863](https://github.com/mixxxdj/mixxx/pull/11863)
* Qt6 switch [#11892](https://github.com/mixxxdj/mixxx/pull/11892)
* CMakeLists: Default `QT6` to `ON` [#11934](https://github.com/mixxxdj/mixxx/pull/11934)
* Build with Qt6 and optionally with QML [#11608](https://github.com/mixxxdj/mixxx/pull/11608)
* Use constInsert() template [#11847](https://github.com/mixxxdj/mixxx/pull/11847)
* DlgAbout: Add Qt version to the dialog [#11862](https://github.com/mixxxdj/mixxx/pull/11862)
* CMakeLists: Fix `QT_TRANSLATION_FILE` path for Qt6 [#11880](https://github.com/mixxxdj/mixxx/pull/11880)
* LibraryControl: Enable control inputs for Qt6 [#11877](https://github.com/mixxxdj/mixxx/pull/11877)
* Fix wrong Windows buildenv name and missing Qt6 switch for non CI builds [#11895](https://github.com/mixxxdj/mixxx/pull/11895)
* WWidget: Disable touch events on macOS (fixing trackpad issues on Qt 6) [#11870](https://github.com/mixxxdj/mixxx/pull/11870)
* Install libjpeg-turbo::jpeg to fix cover display with Qt6 [#11922](https://github.com/mixxxdj/mixxx/pull/11922)
* Skins: Remove `border: 0px` from sidebar item styling
[#11970](https://github.com/mixxxdj/mixxx/pull/11970)
[#11957](https://github.com/mixxxdj/mixxx/issues/11957)
* Skins: Fix checkbox styling on Qt 6 [#12050](https://github.com/mixxxdj/mixxx/pull/12050)
* Skins: Fix Tango waveform splitter [#12939](https://github.com/mixxxdj/mixxx/pull/12939)
* Skin: Fix Tango rate range label position [#13242](https://github.com/mixxxdj/mixxx/pull/13242)
* Introduce wrapper for non const iterators for erase and insert [#12201](https://github.com/mixxxdj/mixxx/pull/12201)
* Fix Qt6/QML build [#12255](https://github.com/mixxxdj/mixxx/pull/12255)
* Fix track color background with Qt6 [#12380](https://github.com/mixxxdj/mixxx/pull/12380)
* multi-line delegate: fix bg color, Qt6 on Linux [#12478](https://github.com/mixxxdj/mixxx/pull/12478)
* Revert "BaseTrackPlayer: Remove references to WaveformWidgetRenderer when using Qt6" [#12342](https://github.com/mixxxdj/mixxx/pull/12342)
* Fix: Replace deprecated `qAsConst` with `std::as_const` [#13028](https://github.com/mixxxdj/mixxx/pull/13028)
* Fix Drag'n'drop: avoid unintended drag on hover (WTrackProperty, WCoverArt etc.)
[#13035](https://github.com/mixxxdj/mixxx/pull/13035)
[#13033](https://github.com/mixxxdj/mixxx/issues/13033)
* Fix ambiguous overload error due to native qDebug impl for std::optional
[#12981](https://github.com/mixxxdj/mixxx/issues/12981)
* Fix 'selected click' bug [#12488](https://github.com/mixxxdj/mixxx/pull/12488)
### Experimental iOs support
* CMakeLists: Support building for iOS [#12672](https://github.com/mixxxdj/mixxx/pull/12672)
* DlgPrefInterface: Disable tooltips on iOS by default [#12689](https://github.com/mixxxdj/mixxx/pull/12689)
* SoundManager: Set up `AVAudioSession` on iOS [#12714](https://github.com/mixxxdj/mixxx/pull/12714)
* SoundManager: Use correct PortAudio backend on iOS [#12716](https://github.com/mixxxdj/mixxx/pull/12716)
* DesktopHelper: Add openUrl abstraction to support iOS [#12698](https://github.com/mixxxdj/mixxx/pull/12698)
* iOS packaging: Add Info.plist, launch screen and app icon [#12676](https://github.com/mixxxdj/mixxx/pull/12676)
* CmdlineArgs: Move config directory to a user-accessible location on iOS [#12688](https://github.com/mixxxdj/mixxx/pull/12688)
### Experimental WebAssembly support
* CMakeLists: Add support for targeting Emscripten/WebAssembly [#12918](https://github.com/mixxxdj/mixxx/pull/12918)
* CMakeLists: Emit better errors for exotic target platforms [#12910](https://github.com/mixxxdj/mixxx/pull/12910)
* Build: Add `PORTMIDI` flag for compiling with(out) PortMidi [#12913](https://github.com/mixxxdj/mixxx/pull/12913)
* DesktopHelper: Compile out process-spawning on WASM too [#12916](https://github.com/mixxxdj/mixxx/pull/12916)
* MixxxApplication: Use `QWasmIntegrationPlugin` when targeting WebAssembly [#12915](https://github.com/mixxxdj/mixxx/pull/12915)
* CMakeLists: Enable asyncify when targeting WASM [#12921](https://github.com/mixxxdj/mixxx/pull/12921)
* Resources: Bundle resources for preloading when targeting Emscripten/WASM [#12922](https://github.com/mixxxdj/mixxx/pull/12922)
* CMakeLists: Add `WASM_ASSERTIONS` option [#12931](https://github.com/mixxxdj/mixxx/pull/12931)
* VersionStore: Recognize Emscripten/WebAssembly [#12940](https://github.com/mixxxdj/mixxx/pull/12940)
* OpenGLWindow: Fix sizing on Wasm by setting `Qt::FramelessWindowHint` [#12945](https://github.com/mixxxdj/mixxx/pull/12945)
* CMakeLists: Require WebGL 2.0 when building for Wasm [#12952](https://github.com/mixxxdj/mixxx/pull/12952)
* ScreenSaverHelper: Add no-op implementation for WASM [#12930](https://github.com/mixxxdj/mixxx/pull/12930)
* SSE: Check `!defined(__EMSCRIPTEN__)` where intrinsics are unavailable on WASM [#12917](https://github.com/mixxxdj/mixxx/pull/12917)
### Target support
* Lenient taglib 2.0 guard [#12793](https://github.com/mixxxdj/mixxx/pull/12793)
* Tools: Add `rpm_buildenv.sh` for building on Fedora [#13069](https://github.com/mixxxdj/mixxx/pull/13069)
* README: Recommend running buildenvs over sourcing them on Linux [#13071](https://github.com/mixxxdj/mixxx/pull/13071)
* FindSndFile: Link mpg123 in static builds [#13087](https://github.com/mixxxdj/mixxx/pull/13087)
* macOS packaging: Enable app sandbox in ad-hoc-packaged (i.e. non-notarized) bundles too [#12101](https://github.com/mixxxdj/mixxx/pull/12101)
### Misc Refactorings
* Add missing `<Qt>` include in `defs.h` [#11348](https://github.com/mixxxdj/mixxx/pull/11348)
* Engine: Minor refactor to prefer simplified ranged-for-loop [#11234](https://github.com/mixxxdj/mixxx/pull/11234)
* Delete unused EngineFilter [#11559](https://github.com/mixxxdj/mixxx/pull/11559)
* AnalyzerWaveform: Fix commented out code [#11561](https://github.com/mixxxdj/mixxx/pull/11561)
* Remove usage of ControlObject::getControl [#11643](https://github.com/mixxxdj/mixxx/pull/11643)
* Fix unnecessary transfer of the ownership before release which returns the pointer itself [#11726](https://github.com/mixxxdj/mixxx/pull/11726)
* Add `ConfigObject::get-/setValue<EnumType>` [#11883](https://github.com/mixxxdj/mixxx/pull/11883)
* CI: Enable `WARNINGS_FATAL` on macOS, too [#11905](https://github.com/mixxxdj/mixxx/pull/11905)
* Refactor timers [#11807](https://github.com/mixxxdj/mixxx/pull/11807) [#11850](https://github.com/mixxxdj/mixxx/pull/11850)
* Use `mixxx::audio::ChannelCount` type instead of `int`/`unsigned char`/etc. [#11941](https://github.com/mixxxdj/mixxx/pull/11941)
* Refactor util/timer: cleanup includes [#11937](https://github.com/mixxxdj/mixxx/pull/11937)
* Use `SampleRate` type consistently [#11904](https://github.com/mixxxdj/mixxx/pull/11904)
* CMakeLists: Match arbitrary `arm64-osx` triplets [#11933](https://github.com/mixxxdj/mixxx/pull/11933)
* Reduce sample buffer memory usage [#11988](https://github.com/mixxxdj/mixxx/pull/11988)
* Fix clazy issues on `main` [#12028](https://github.com/mixxxdj/mixxx/pull/12028)
* Tidy and modernize SampleBuffer [#11987](https://github.com/mixxxdj/mixxx/pull/11987)
* Refactor parented_ptr: make trivially destructible in release mode, delete move operations [#11981](https://github.com/mixxxdj/mixxx/pull/11981)
* Labeler: Add more labels to the auto-labeler [#12106](https://github.com/mixxxdj/mixxx/pull/12106)
* FindPortMidi: Link ALSA in static builds on Linux [#12292](https://github.com/mixxxdj/mixxx/pull/12292) [#12291](https://github.com/mixxxdj/mixxx/pull/12291)
* privat generated ui headers [#12060](https://github.com/mixxxdj/mixxx/pull/12060) [#11407](https://github.com/mixxxdj/mixxx/pull/11407)
* CI: workaround runner-image issue [#12233](https://github.com/mixxxdj/mixxx/pull/12233)
* FindLibudev: Link hidapi and libusb with libudev in static builds on Linux [#12294](https://github.com/mixxxdj/mixxx/pull/12294)
* FindVorbis: Link ogg in static builds [#12297](https://github.com/mixxxdj/mixxx/pull/12297)
* MixxxApplication: Support linking Qt statically on Linux [#12284](https://github.com/mixxxdj/mixxx/pull/12284)
* FindSleef: Use OpenMP in static builds [#12295](https://github.com/mixxxdj/mixxx/pull/12295)
* Happy New Year 2024! [#12486](https://github.com/mixxxdj/mixxx/pull/12486)
* fix/History: remove obsolete placeholder playlists [#12494](https://github.com/mixxxdj/mixxx/pull/12494)
* Add missing Taglib dependency [#12830](https://github.com/mixxxdj/mixxx/pull/12830)
* fix: typo ;) [#12726](https://github.com/mixxxdj/mixxx/pull/12726)
* refactor: Avoid temporary qlist allocation on midi sysex receive [#12843](https://github.com/mixxxdj/mixxx/pull/12843)
* Labeler: Add `qml` to labeler config [#12911](https://github.com/mixxxdj/mixxx/pull/12911)
* WTrackMenu: Add missing wcoverartlabel.h include [#12924](https://github.com/mixxxdj/mixxx/pull/12924)
* Fix clazy complaints and naming [#12935](https://github.com/mixxxdj/mixxx/pull/12935)
* src/library: Sort files into sub-directories [#12956](https://github.com/mixxxdj/mixxx/pull/12956)
* CMakeLists: Fix deduplication trap with `--preload-file` [#12944](https://github.com/mixxxdj/mixxx/pull/12944)
* GitHub CI: Add runner that allows cleaning up the download server [#12957](https://github.com/mixxxdj/mixxx/pull/12957)
* * GitHub CI: Skip the manifest update job on forks [#13278](https://github.com/mixxxdj/mixxx/pull/13278)
* Refactor FFmpeg soundsource to allow other soundsource to inherit it [#13042](https://github.com/mixxxdj/mixxx/pull/13042)
* Code Style: Add branches around single line blocks. [#13097](https://github.com/mixxxdj/mixxx/pull/13097)
* Add missing member in copy ctor [#13229](https://github.com/mixxxdj/mixxx/pull/13229)
* Refactor/preferences enums [#12798](https://github.com/mixxxdj/mixxx/pull/12798)
* Update to latest vcpkg dependencies
[#11649](https://github.com/mixxxdj/mixxx/pull/11649)
[#12512](https://github.com/mixxxdj/mixxx/pull/12512)
[#12067](https://github.com/mixxxdj/mixxx/pull/12067)
[#12898](https://github.com/mixxxdj/mixxx/pull/12898)
[#13155](https://github.com/mixxxdj/mixxx/pull/13155)
* GitHub actions updates
[#11544](https://github.com/mixxxdj/mixxx/pull/11544)
[#11508](https://github.com/mixxxdj/mixxx/pull/11508)
[#11487](https://github.com/mixxxdj/mixxx/pull/11487)
[#11438](https://github.com/mixxxdj/mixxx/pull/11438)
[#11410](https://github.com/mixxxdj/mixxx/pull/11410)
[#11560](https://github.com/mixxxdj/mixxx/pull/11560)
[#11578](https://github.com/mixxxdj/mixxx/pull/11578)
[#11610](https://github.com/mixxxdj/mixxx/pull/11610)
[#11631](https://github.com/mixxxdj/mixxx/pull/11631)
[#11710](https://github.com/mixxxdj/mixxx/pull/11710)
[#11736](https://github.com/mixxxdj/mixxx/pull/11736)
[#11920](https://github.com/mixxxdj/mixxx/pull/11920)
[#11961](https://github.com/mixxxdj/mixxx/pull/11961)
[#12241](https://github.com/mixxxdj/mixxx/pull/12241)
[#12394](https://github.com/mixxxdj/mixxx/pull/12394)
[#12447](https://github.com/mixxxdj/mixxx/pull/12447)
[#12425](https://github.com/mixxxdj/mixxx/pull/12425)
[#12421](https://github.com/mixxxdj/mixxx/pull/12421)
[#12799](https://github.com/mixxxdj/mixxx/pull/12799)
[#12801](https://github.com/mixxxdj/mixxx/pull/12801)
[#12800](https://github.com/mixxxdj/mixxx/pull/12800)
[#12736](https://github.com/mixxxdj/mixxx/pull/12736)
[#12692](https://github.com/mixxxdj/mixxx/pull/12692)
[#12694](https://github.com/mixxxdj/mixxx/pull/12694)
[#12695](https://github.com/mixxxdj/mixxx/pull/12695)
[#12691](https://github.com/mixxxdj/mixxx/pull/12691)
[#12693](https://github.com/mixxxdj/mixxx/pull/12693)
[#12625](https://github.com/mixxxdj/mixxx/pull/12625)
[#12627](https://github.com/mixxxdj/mixxx/pull/12627)
[#12626](https://github.com/mixxxdj/mixxx/pull/12626)
[#12577](https://github.com/mixxxdj/mixxx/pull/12577)
[#13162](https://github.com/mixxxdj/mixxx/pull/13162)
[#13163](https://github.com/mixxxdj/mixxx/pull/13163)
[#13187](https://github.com/mixxxdj/mixxx/pull/13187)
[#13217](https://github.com/mixxxdj/mixxx/pull/13217)
[#13246](https://github.com/mixxxdj/mixxx/pull/13246)
[#13232](https://github.com/mixxxdj/mixxx/pull/13232)
## [2.4.1](https://github.com/mixxxdj/mixxx/milestone/41?closed=1) (2024-05-08)
### Controller Mappings
* Behringer DDM4000 & BCR2000: Fix exception in JS code [#12969](https://github.com/mixxxdj/mixxx/pull/12969)
* Denon DJ MC6000MK2: Fix mapping of filter knob/button [#13166](https://github.com/mixxxdj/mixxx/pull/13166)
* Denon DJ MC7000: Fix redundant argument and migrate to `hotcue_x_status`
[#13113](https://github.com/mixxxdj/mixxx/pull/13113)
[#13121](https://github.com/mixxxdj/mixxx/pull/13121)
* Hercules Inpulse 200: Configure shift-browser knob to scroll the library (quick) [#12932](https://github.com/mixxxdj/mixxx/pull/12932)
* Nintendo Wii Remote: Fix hid script regarding addOutput [#12973](https://github.com/mixxxdj/mixxx/pull/12973)
* Pioneer CDJ: Fix hid script regarding addOutput [#12973](https://github.com/mixxxdj/mixxx/pull/12973)
* Pioneer DDJ-FLX4: Add waveform zoom and other mapping improvements
[#12896](https://github.com/mixxxdj/mixxx/pull/12896)
[#12842](https://github.com/mixxxdj/mixxx/pull/12842)
* Traktor Kontrol F1: Fixes for hid-parser and related script [#12876](https://github.com/mixxxdj/mixxx/pull/12876)
* Traktor S2 Mk1: fix warnings [#13145](https://github.com/mixxxdj/mixxx/pull/13145)
* Traktor S3: Fix mapping crash on macOS [#12840](https://github.com/mixxxdj/mixxx/pull/12840)
* Controller I/O table: sort action column by display string [#13039](https://github.com/mixxxdj/mixxx/pull/13039)
### Target Support
* Fix various minor build issues
[#12853](https://github.com/mixxxdj/mixxx/pull/12853)
[#12847](https://github.com/mixxxdj/mixxx/pull/12847)
[#12822](https://github.com/mixxxdj/mixxx/pull/12822)
[#12892](https://github.com/mixxxdj/mixxx/pull/12892)
[#13079](https://github.com/mixxxdj/mixxx/pull/13079)
[#12989](https://github.com/mixxxdj/mixxx/pull/12989)
* CMakeLists: Always prefer OpenGL framework on macOS
[#13080](https://github.com/mixxxdj/mixxx/pull/13080)
* Use capitalized Mixxx in Windows installer and start menu
[#13178](https://github.com/mixxxdj/mixxx/pull/13178)
### Skins
* Deere: make sampler rows persist [#12928](https://github.com/mixxxdj/mixxx/pull/12928)
* Tango: Remove unneeded waveform Singleton [#12938](https://github.com/mixxxdj/mixxx/pull/12938)
* Tango 64: fix Main VU meter
* Prevent possible crash in customs skins using parallel waveforms
[#13043](https://github.com/mixxxdj/mixxx/pull/13043)
[#12580](https://github.com/mixxxdj/mixxx/issues/12580)
[#13136](https://github.com/mixxxdj/mixxx/pull/13136)
* Slider tooltip: consider orientation for up/down shortcut tooltips + add support for WKnobComposed [#13088](https://github.com/mixxxdj/mixxx/pull/13088)
* Tooltips: update 'hotcue' with saved loop features [#12875](https://github.com/mixxxdj/mixxx/pull/12875)
* Animate long press latching of sync button
[#12990](https://github.com/mixxxdj/mixxx/pull/12990)
[#13212](https://github.com/mixxxdj/mixxx/pull/13212)
* Polish fx chain controls [#12805](https://github.com/mixxxdj/mixxx/pull/12805)
* Waveforms: draw loop gradient at the correct position
[#13061](https://github.com/mixxxdj/mixxx/pull/13061)
[#13060](https://github.com/mixxxdj/mixxx/issues/13060)
* Waveform / spinnies: don't take keyboard focus on click
[#13174](https://github.com/mixxxdj/mixxx/pull/13174)
[#13211](https://github.com/mixxxdj/mixxx/pull/13211)
### Library
* Sidebar: show track count and duration of History playlists
[#13020](https://github.com/mixxxdj/mixxx/pull/13020)
[#13019](https://github.com/mixxxdj/mixxx/issues/13019)
[#12788](https://github.com/mixxxdj/mixxx/issues/12788)
[#12880](https://github.com/mixxxdj/mixxx/issues/12880)
[#12882](https://github.com/mixxxdj/mixxx/pull/12882)
* Computer feature: update removable devices on Linux [#12893](https://github.com/mixxxdj/mixxx/pull/12893) [#12891](https://github.com/mixxxdj/mixxx/issues/12891)
* Playlists: Prevent removing tracks from locked playlists [#12927](https://github.com/mixxxdj/mixxx/pull/12927)
* History feature: Fix removing deleted tracks after export
[#13016](https://github.com/mixxxdj/mixxx/pull/13016)
[#13000](https://github.com/mixxxdj/mixxx/issues/13000)
* BPM display uses decimal separator of selected locale [#13067](https://github.com/mixxxdj/mixxx/pull/13067) [#13051](https://github.com/mixxxdj/mixxx/issues/13051)
* Fix relink directory when migrate between Linux/macOS and Windows [#12878](https://github.com/mixxxdj/mixxx/pull/12878)
* Allow adding new directories while watched directories are missing
[#12937](https://github.com/mixxxdj/mixxx/pull/12937)
[#10481](https://github.com/mixxxdj/mixxx/issues/10481)
* Require a minimum movement before initiating the drag&drop of tracks
[#13135](https://github.com/mixxxdj/mixxx/pull/13135)
[#12902](https://github.com/mixxxdj/mixxx/issues/12902)
[#12979](https://github.com/mixxxdj/mixxx/pull/12979)
* iTunes/Serato/Traktor/Rhythmbox: Print error if library file could not be opened
[#13012](https://github.com/mixxxdj/mixxx/pull/13012)
* Playlists: improve table update after deleting (purging) track files
[#13127](https://github.com/mixxxdj/mixxx/pull/13127)
* Fix Color column width issue [#12852](https://github.com/mixxxdj/mixxx/pull/12852)
* Tracks: select track row when clicking the preview button (only when starting preview)
[#12791](https://github.com/mixxxdj/mixxx/pull/12791)
* Library track menu: show Hide action also in Playlist & Crates [#11901](https://github.com/mixxxdj/mixxx/pull/11901)
* iTunes: Obtain FileAccess before accessing iTunes XML [#13013](https://github.com/mixxxdj/mixxx/pull/13013)
### Miscellaneous
* Remove unnecessary unpolish operation of the style, before polish the new style [#12445](https://github.com/mixxxdj/mixxx/pull/12445)
* Developer Tools: Initially sort controls by group name, ascending [#12884](https://github.com/mixxxdj/mixxx/pull/12884)
* Waveforms: Fix scratching crossing loop boundaries [#13007](https://github.com/mixxxdj/mixxx/pull/13007)
* Prohibit un-replace when deck is playing [#13023](https://github.com/mixxxdj/mixxx/pull/13023) [#12906](https://github.com/mixxxdj/mixxx/issues/12906)
* Track Properties dialog: Prevent wiping metadata when applying twice quickly
[#12965](https://github.com/mixxxdj/mixxx/pull/12965)
[#12963](https://github.com/mixxxdj/mixxx/issues/12963)
* AutoDJ: Fix button state after error message about playing deck 3/4
[#12976](https://github.com/mixxxdj/mixxx/pull/12976)
[#12975](https://github.com/mixxxdj/mixxx/issues/12975)
* Tagfetcher: Cache fetched covers
[#12301](https://github.com/mixxxdj/mixxx/pull/12301)
[#11084](https://github.com/mixxxdj/mixxx/issues/11084)
* Avoid beats iterator being one off and DEBUG_ASSERT in Beats::iteratorFrom
[#13150](https://github.com/mixxxdj/mixxx/pull/13150)
[#13149](https://github.com/mixxxdj/mixxx/issues/13149)
* Show hint if resource path in CMakeCache.txt does not exist
[#12929](https://github.com/mixxxdj/mixxx/pull/12929)
* Always calculate the auto value for colorful console output [#13153](https://github.com/mixxxdj/mixxx/pull/13153)
* Fix FLAC recording on macOS and Windows
[#10880](https://github.com/mixxxdj/mixxx/issues/10880)
[#13154](https://github.com/mixxxdj/mixxx/pull/13154)
* LV Mix EQ: Fix pops when enabling in effect rack
[#13055](https://github.com/mixxxdj/mixxx/issues/13055)
[#13073](https://github.com/mixxxdj/mixxx/pull/13073)
* Fix hid addOutput
## [2.4.0](https://github.com/mixxxdj/mixxx/milestone/15?closed=1) (2024-02-16)
### Music Library: Tracks Table & Track Menu
* Remember track selection when switching library features, fix initial selection etc.
[#4177](https://github.com/mixxxdj/mixxx/pull/4177)
[#4536](https://github.com/mixxxdj/mixxx/pull/4536)
[#12321](https://github.com/mixxxdj/mixxx/pull/12321)
[#12064](https://github.com/mixxxdj/mixxx/issues/12064)
[#11196](https://github.com/mixxxdj/mixxx/pull/11196)
[#11130](https://github.com/mixxxdj/mixxx/pull/11130)
* Add new library column that shows the last time a track was played
[#3140](https://github.com/mixxxdj/mixxx/pull/3140)
[#3457](https://github.com/mixxxdj/mixxx/pull/3457)
[#3494](https://github.com/mixxxdj/mixxx/pull/3494)
[#3596](https://github.com/mixxxdj/mixxx/pull/3596)
[#3740](https://github.com/mixxxdj/mixxx/pull/3740)
* Add keyboard shortcut Ctrl+Enter to open track properties [#4347](https://github.com/mixxxdj/mixxx/pull/4347)
* Home/End keys jump to first/last row [#4850](https://github.com/mixxxdj/mixxx/pull/4850)
* Wrap selection around at the bottom/top, only if Shift is not pressed
[#11090](https://github.com/mixxxdj/mixxx/pull/11090)
[#11100](https://github.com/mixxxdj/mixxx/pull/11100)
[#12391](https://github.com/mixxxdj/mixxx/pull/12391)
* Allow to hide/remove tracks from the library by pressing the Delete key
[#4330](https://github.com/mixxxdj/mixxx/pull/4330)
[#7176](https://github.com/mixxxdj/mixxx/issues/7176)
[#9793](https://github.com/mixxxdj/mixxx/issues/9793)
[#9837](https://github.com/mixxxdj/mixxx/issues/9837)
[#10537](https://github.com/mixxxdj/mixxx/issues/10537)
[#11239](https://github.com/mixxxdj/mixxx/pull/11239)
[#4577](https://github.com/mixxxdj/mixxx/pull/4577)
[#10577](https://github.com/mixxxdj/mixxx/issues/10577)
[#11171](https://github.com/mixxxdj/mixxx/pull/11171)
[#10761](https://github.com/mixxxdj/mixxx/issues/10761)
* Fix Recording table refresh issues [#4648](https://github.com/mixxxdj/mixxx/pull/4648)
* Show time in addition to the date in the timestamp column
[#4900](https://github.com/mixxxdj/mixxx/pull/4900)
[#10726](https://github.com/mixxxdj/mixxx/issues/10726)
[#11020](https://github.com/mixxxdj/mixxx/pull/11020)
* Show only the date in Date Added / Last Played columns. Move the time of day to tooltips [#3945](https://github.com/mixxxdj/mixxx/pull/3945)
* Right-align BPM, duration & bitrate values [#11634](https://github.com/mixxxdj/mixxx/pull/11634) [#11668](https://github.com/mixxxdj/mixxx/pull/11668) [#11657](https://github.com/mixxxdj/mixxx/issues/11657)
* Remove parenthesis from play counter display [#11357](https://github.com/mixxxdj/mixxx/pull/11357)
* Refocus library, after editing skin controls [#11767](https://github.com/mixxxdj/mixxx/pull/11767)
* Fix performance with large playlists [#11851](https://github.com/mixxxdj/mixxx/pull/11851) [#11724](https://github.com/mixxxdj/mixxx/issues/11724)
* Add multi-line editor delegate for comment column [#11752](https://github.com/mixxxdj/mixxx/pull/11752)
* Keep current item visible when the view shrinks vertically [#11273](https://github.com/mixxxdj/mixxx/pull/11273)
* macOS scrollbar: Make sure last track is shown in library [#11669](https://github.com/mixxxdj/mixxx/pull/11669) [#9495](https://github.com/mixxxdj/mixxx/issues/9495)
* Add action to select loaded track in library [#4740](https://github.com/mixxxdj/mixxx/pull/4740)
* Add menu for Analyze and Reanalyze
[#4806](https://github.com/mixxxdj/mixxx/pull/4806)
[#11873](https://github.com/mixxxdj/mixxx/pull/11873)
[#11872](https://github.com/mixxxdj/mixxx/issues/11872)
* Add support for overriding analysis settings about variable/constant BPM on a per-track basis [#10931](https://github.com/mixxxdj/mixxx/pull/10931)
* Add menu for looking up track metadata at Discogs, SoundCloud and LastFM [#4772](https://github.com/mixxxdj/mixxx/pull/4772) [#4836](https://github.com/mixxxdj/mixxx/pull/4836)
* Add "Delete Track Files" action, does "Move to Trash" with Qt >= 5.15
[#4560](https://github.com/mixxxdj/mixxx/pull/4560)
[#4831](https://github.com/mixxxdj/mixxx/pull/4831)
[#10763](https://github.com/mixxxdj/mixxx/issues/10763)
[#11580](https://github.com/mixxxdj/mixxx/pull/11580)
[#11577](https://github.com/mixxxdj/mixxx/issues/11577)
[#11583](https://github.com/mixxxdj/mixxx/pull/11583)
[#3212](https://github.com/mixxxdj/mixxx/pull/3212)
[#11842](https://github.com/mixxxdj/mixxx/pull/11842)
* Allow to clear the comment field
[#4722](https://github.com/mixxxdj/mixxx/pull/4722)
[#10615](https://github.com/mixxxdj/mixxx/issues/10615)
* Allow to reset loops and also via "[ChannelN], loop_remove" control object
[#4802](https://github.com/mixxxdj/mixxx/pull/4802)
[#10748](https://github.com/mixxxdj/mixxx/issues/10748)
[#12392](https://github.com/mixxxdj/mixxx/pull/12392)
[#12521](https://github.com/mixxxdj/mixxx/pull/12521)
* Add 'Update ReplayGain' decks' to track menus [#4031](https://github.com/mixxxdj/mixxx/pull/4031) [#4719](https://github.com/mixxxdj/mixxx/pull/4719)
* Restore "Remove from playlist" in History [#11591](https://github.com/mixxxdj/mixxx/pull/11591) [#10974](https://github.com/mixxxdj/mixxx/issues/10974)
* Enable Lock BPM action if any selected track BPM is unlocked [#12385](https://github.com/mixxxdj/mixxx/pull/12385)
* Order BPM action by factor, show peview (for single track) [#12701](https://github.com/mixxxdj/mixxx/pull/12701) [#10128](https://github.com/mixxxdj/mixxx/issues/10128)
* Provide the same features in all deck track menus [#12214](https://github.com/mixxxdj/mixxx/pull/12214)
* Track table header: Keep menu open after toggling a checkbox [#12218](https://github.com/mixxxdj/mixxx/pull/12218)
### Music Library: Sidebar & Searchbar
* Add F2 and Del/Backspace shortcuts for renaming & deleting playlists and crates
[#11172](https://github.com/mixxxdj/mixxx/pull/11172)
[#11235](https://github.com/mixxxdj/mixxx/pull/11235)
[#4697](https://github.com/mixxxdj/mixxx/pull/4697)
[#4700](https://github.com/mixxxdj/mixxx/pull/4700)
[#10294](https://github.com/mixxxdj/mixxx/issues/10294)
* Improve presentation of the History library tree
[#2996](https://github.com/mixxxdj/mixxx/pull/2996)
[#4298](https://github.com/mixxxdj/mixxx/pull/4298)
[#10533](https://github.com/mixxxdj/mixxx/issues/10533)
* History: Fix sidebar context menu actions
[#4384](https://github.com/mixxxdj/mixxx/pull/4384)
[#4297](https://github.com/mixxxdj/mixxx/pull/4297)
[#10529](https://github.com/mixxxdj/mixxx/issues/10529)
* History: Add cleanup options
[#4726](https://github.com/mixxxdj/mixxx/pull/4726)
[#9259](https://github.com/mixxxdj/mixxx/issues/9259)
[#10714](https://github.com/mixxxdj/mixxx/issues/10714)
* History: Fix update of play count after removing tracks
[#12258](https://github.com/mixxxdj/mixxx/pull/12258)
[#12046](https://github.com/mixxxdj/mixxx/issues/12046)
[#12256](https://github.com/mixxxdj/mixxx/issues/12256)
* Improve UX with right-click and selection after add, rename, delete, duplicate etc.
[#11208](https://github.com/mixxxdj/mixxx/pull/11208)
[#4193](https://github.com/mixxxdj/mixxx/pull/4193)
[#10488](https://github.com/mixxxdj/mixxx/issues/10488)
[#11574](https://github.com/mixxxdj/mixxx/pull/11574)
[#11208](https://github.com/mixxxdj/mixxx/pull/11208)
[#11712](https://github.com/mixxxdj/mixxx/pull/11712)
* Map Left Arrow Key to jump to parent node and activates it
[#4253](https://github.com/mixxxdj/mixxx/pull/4253)
* Crates: only store or activate sibling crate if it's valid
[#11770](https://github.com/mixxxdj/mixxx/pull/11770)
[#11769](https://github.com/mixxxdj/mixxx/issues/11769)
* Add recent searches to a drop down menu of the search box
[#3171](https://github.com/mixxxdj/mixxx/pull/3171)
[#3262](https://github.com/mixxxdj/mixxx/pull/3262)
[#4505](https://github.com/mixxxdj/mixxx/pull/4505)
* Save search queries across restarts
[#4458](https://github.com/mixxxdj/mixxx/pull/4458)
[#10517](https://github.com/mixxxdj/mixxx/issues/10517)
[#10561](https://github.com/mixxxdj/mixxx/issues/10561)
[#4571](https://github.com/mixxxdj/mixxx/pull/4571)
* Enable search in Browse & Recording views [#11014](https://github.com/mixxxdj/mixxx/pull/11014) [#11012](https://github.com/mixxxdj/mixxx/issues/11012) [#4382](https://github.com/mixxxdj/mixxx/pull/4382)
* Update Clear button when search is disabled [#4447](https://github.com/mixxxdj/mixxx/pull/4447)
* Fix reset to default of search timeout in preferences [#4504](https://github.com/mixxxdj/mixxx/pull/4504) [#10589](https://github.com/mixxxdj/mixxx/issues/10589)
* Ctrl+F in focused search box selects the entire search string [#4515](https://github.com/mixxxdj/mixxx/pull/4515)
* Improve keypress handling, fix glitch in popup, strip whitespaces [#4658](https://github.com/mixxxdj/mixxx/pull/4658)
* Enter jumps to track table if search query was transmitted [#4844](https://github.com/mixxxdj/mixxx/pull/4844)
Push completion entry to top, to make up/down behave naturally
* Remove ESC shortcut in favour of new `[Library],focused_widget` [#4571](https://github.com/mixxxdj/mixxx/pull/4571)
[#11030](https://github.com/mixxxdj/mixxx/pull/11030)
[#10975](https://github.com/mixxxdj/mixxx/issues/10975)
* Restore previous search term when switching between playlists and crates
[#11129](https://github.com/mixxxdj/mixxx/pull/11129)
[#11015](https://github.com/mixxxdj/mixxx/issues/11015)
[#11477](https://github.com/mixxxdj/mixxx/pull/11477)
[#11476](https://github.com/mixxxdj/mixxx/issues/11476)
* Add options to disable auto-completion and history [#10942](https://github.com/mixxxdj/mixxx/pull/10942) [#10634](https://github.com/mixxxdj/mixxx/issues/10634)
* Require Enter or Right key to search for auto completed strings
[#11207](https://github.com/mixxxdj/mixxx/pull/11207)
[#11289](https://github.com/mixxxdj/mixxx/pull/11289)
[#11287](https://github.com/mixxxdj/mixxx/issues/11287)
* Allow to use := and quotes to find exact matches [#12063](https://github.com/mixxxdj/mixxx/pull/12063) [#10699](https://github.com/mixxxdj/mixxx/issues/10699)
### Music Library: Backend & Database
* Add new "[AutoDJ],add_random_track" to make this feature accessible from controllers [#3076](https://github.com/mixxxdj/mixxx/pull/3076)
* Don't store or update metadata of missing tracks in the Mixxx database to prevent inconsistencies with file tags [#3811](https://github.com/mixxxdj/mixxx/pull/3811)
* Update library schema to 37 for synchronizing file modified time with track source on metadata import/export
[#3978](https://github.com/mixxxdj/mixxx/pull/3978)
[#4012](https://github.com/mixxxdj/mixxx/pull/4012)
* Track Metadata: Fix synchronization (import/export) of file tags
[#4628](https://github.com/mixxxdj/mixxx/pull/4628)
[#4631](https://github.com/mixxxdj/mixxx/pull/4631)
[#4847](https://github.com/mixxxdj/mixxx/pull/4847) [#10782](https://bugs.launchpad.net/bugs/1981106)
* Track Metadata: Do not overwrite unchanged multi-valued fields [#12613](https://github.com/mixxxdj/mixxx/pull/12613) [#12587](https://github.com/mixxxdj/mixxx/issues/12587)
* Optionally reset metadata on reimport if file tags are missing, enabled by "[Library] ResetMissingTagMetadataOnImport 1"). [#4873](https://github.com/mixxxdj/mixxx/pull/4873)
* Logging: Suppress expected and harmless schema migration errors [#4248](https://github.com/mixxxdj/mixxx/pull/4248)
* Fix handling of undefined BPM values
[#4062](https://github.com/mixxxdj/mixxx/pull/4062)
[#4063](https://github.com/mixxxdj/mixxx/pull/4063)
[#4100](https://github.com/mixxxdj/mixxx/pull/4100)
[#4154](https://github.com/mixxxdj/mixxx/pull/4154)
[#4165](https://github.com/mixxxdj/mixxx/pull/4165)
[#4168](https://github.com/mixxxdj/mixxx/pull/4168)
* Automatic analyze and optimize database [#4199](https://github.com/mixxxdj/mixxx/pull/4199)
* Re-import and update metadata after files have been modified when loading tracks [#4218](https://github.com/mixxxdj/mixxx/pull/4218)
* Re-enable shortcuts after editing controls
[#4360](https://github.com/mixxxdj/mixxx/pull/4360)
[#10184](https://github.com/mixxxdj/mixxx/issues/10184)
[#10523](https://github.com/mixxxdj/mixxx/issues/10523)
* Allow to remove a track form the disk [#3212](https://github.com/mixxxdj/mixxx/pull/3212) [#4639](https://github.com/mixxxdj/mixxx/pull/4639)
* Fix accasional resetting of played counter in database [#4578](https://github.com/mixxxdj/mixxx/pull/4578) [#10617](https://github.com/mixxxdj/mixxx/issues/10617)
* Experimental: Fix writing of undefined MusicBrainz Recording ID [#4694](https://github.com/mixxxdj/mixxx/pull/4694)
* Traktor library: fix importing track key [#4701](https://github.com/mixxxdj/mixxx/pull/4701)
* Fix exporting m3u files with tracks and special characters by using the URL format [#4752](https://github.com/mixxxdj/mixxx/pull/4752)
* Library Scanner: Sort files before adding them [#10919](https://github.com/mixxxdj/mixxx/pull/10919)
* Library Scanner: Fix track relocation query [#12462](https://github.com/mixxxdj/mixxx/pull/12462)
* MenuBar: Add shortcut for rescanning library [#11136](https://github.com/mixxxdj/mixxx/pull/11136)
* Playlists: simplify import function, add whitespace before the # suffix [#12246](https://github.com/mixxxdj/mixxx/pull/12246)
* Destroy PlayerInfo after EngineRecord is stopped to fix a debug assertion [#12341](https://github.com/mixxxdj/mixxx/pull/12341) [#12242](https://github.com/mixxxdj/mixxx/issues/12242)
* iTunes: Modularize importer and use `iTunesLibrary` on macOS for compatibility with `Music.app`
[#11353](https://github.com/mixxxdj/mixxx/pull/11353)
[#11256](https://github.com/mixxxdj/mixxx/issues/11256)
[#11446](https://github.com/mixxxdj/mixxx/pull/11446)
[#11444](https://github.com/mixxxdj/mixxx/pull/11444)
[#11503](https://github.com/mixxxdj/mixxx/pull/11503)
[#11500](https://github.com/mixxxdj/mixxx/pull/11500)
[#11509](https://github.com/mixxxdj/mixxx/pull/11509)
* iTunes: Fix sporadic crash during unit tests due to a not initialized reference. [#11666](https://github.com/mixxxdj/mixxx/pull/11666)
* iTunes: Permit duplicate playlist names by identifying playlists by id (rather than name) [#11794](https://github.com/mixxxdj/mixxx/pull/11794)
* iTunes: Re-enable test and add `composer`, `playCount`, `lastPlayedAt` and `dateAdded` to model [#11948](https://github.com/mixxxdj/mixxx/pull/11948)
* Fix setting the wrong default cue color [#11554](https://github.com/mixxxdj/mixxx/pull/11554) [#11260](https://github.com/mixxxdj/mixxx/issues/11260)
* Ensure that tracks with an invalid BPM are re-analyzed [#2776](https://github.com/mixxxdj/mixxx/pull/2776)
* Add support for exporting crates, playlists and the library to Engine Prime and Denon standalone controllers
[#2753](https://github.com/mixxxdj/mixxx/pull/2753)
[#2932](https://github.com/mixxxdj/mixxx/pull/2932)
[#3102](https://github.com/mixxxdj/mixxx/pull/3102)
[#3155](https://github.com/mixxxdj/mixxx/pull/3155)
[#3621](https://github.com/mixxxdj/mixxx/pull/3621)
[#3776](https://github.com/mixxxdj/mixxx/pull/3776)
[#3787](https://github.com/mixxxdj/mixxx/pull/3787)
[#3797](https://github.com/mixxxdj/mixxx/pull/3797)
[#3798](https://github.com/mixxxdj/mixxx/pull/3798)
[#4025](https://github.com/mixxxdj/mixxx/pull/4025)
[#4087](https://github.com/mixxxdj/mixxx/pull/4087)
[#4102](https://github.com/mixxxdj/mixxx/pull/4102)
[#4143](https://github.com/mixxxdj/mixxx/pull/4143)
[#4463](https://github.com/mixxxdj/mixxx/pull/4463)
[#11815](https://github.com/mixxxdj/mixxx/pull/11815)
[#12309](https://github.com/mixxxdj/mixxx/pull/12309)
[#12005](https://github.com/mixxxdj/mixxx/pull/12005)
[#11816](https://github.com/mixxxdj/mixxx/pull/11816)
[#11720](https://github.com/mixxxdj/mixxx/pull/11720)
[#11834](https://github.com/mixxxdj/mixxx/pull/11834)
[#12452](https://github.com/mixxxdj/mixxx/pull/12452)
[#11979](https://github.com/mixxxdj/mixxx/pull/11979)
* Rekordbox: Save all loops and correct AAC timing offset for CoreAudio [#2779](https://github.com/mixxxdj/mixxx/pull/2779)
* Rekordbox: Fix missing playlists due to invalid child ID [#10955](https://github.com/mixxxdj/mixxx/pull/10955)
* Rekordbox: Fix unhandled exception when parsing corrupt PDB files
[#10452](https://github.com/mixxxdj/mixxx/issues/10452)
[#4040](https://github.com/mixxxdj/mixxx/pull/4040)
* Improve log messages during schema migration [#2979](https://github.com/mixxxdj/mixxx/pull/2979)
* Search related tracks in collection
[#3181](https://github.com/mixxxdj/mixxx/pull/3181)
[#3213](https://github.com/mixxxdj/mixxx/pull/3213)
[#2796](https://github.com/mixxxdj/mixxx/pull/2796)
[#4207](https://github.com/mixxxdj/mixxx/pull/4207)
### Sync
* Add support for setting an explicit leader for sync lock
[#2768](https://github.com/mixxxdj/mixxx/pull/2768)
[#3099](https://github.com/mixxxdj/mixxx/pull/3099)
[#3695](https://github.com/mixxxdj/mixxx/pull/3695)
[#3734](https://github.com/mixxxdj/mixxx/pull/3734)
[#3698](https://github.com/mixxxdj/mixxx/pull/3698)
[#3864](https://github.com/mixxxdj/mixxx/pull/3864)
[#3867](https://github.com/mixxxdj/mixxx/pull/3867)
[#3921](https://github.com/mixxxdj/mixxx/pull/3921)
[#4119](https://github.com/mixxxdj/mixxx/pull/4119)
[#4135](https://github.com/mixxxdj/mixxx/pull/4135)
[#4149](https://github.com/mixxxdj/mixxx/pull/4149)
[#4276](https://github.com/mixxxdj/mixxx/pull/4276)
[#3944](https://github.com/mixxxdj/mixxx/pull/3944)
[#11828](https://github.com/mixxxdj/mixxx/pull/11828)
[#11831](https://github.com/mixxxdj/mixxx/pull/11831)
[#11829](https://github.com/mixxxdj/mixxx/issues/11829)
[#12431](https://github.com/mixxxdj/mixxx/pull/12431)
[#11788](https://github.com/mixxxdj/mixxx/issues/11788)
[#12234](https://github.com/mixxxdj/mixxx/pull/12234)
[#12499](https://github.com/mixxxdj/mixxx/pull/12499)
* Fix pitch issue with dynamic tracks and sync while cloning tracks
[#12515](https://github.com/mixxxdj/mixxx/pull/12515)
* Fix issue with half/double BPM calculation when using sync
[#3899](https://github.com/mixxxdj/mixxx/pull/3899)
[#3706](https://github.com/mixxxdj/mixxx/pull/3706)
* Sync Lock: Don't seek phase when disabling sync [#4169](https://github.com/mixxxdj/mixxx/pull/4169)
* Sync Lock: Fix issues with single-playing syncables
[#4155](https://github.com/mixxxdj/mixxx/pull/4155)
[#4389](https://github.com/mixxxdj/mixxx/pull/4389)
* Re-sync to leader after scratching [#4005](https://github.com/mixxxdj/mixxx/pull/4005)
* Fix audio artifacts when fading from or to zero [#4363](https://github.com/mixxxdj/mixxx/pull/4363)
* EngineBuffer: Fix assert when new track is loaded during playback with sync [#4682](https://github.com/mixxxdj/mixxx/pull/4682)
### Audio Codecs
* Add support for m4v files [#4088](https://github.com/mixxxdj/mixxx/pull/4088)
* Fix recovering from FAAD2 decoding issues [#2850](https://github.com/mixxxdj/mixxx/pull/2850)
* MP3: Log recoverable errors as info instead of warning [#4365](https://github.com/mixxxdj/mixxx/pull/4365)
* MP3: Garbage detection fix [#12464](https://github.com/mixxxdj/mixxx/pull/12464)
* MP3: Improve decoding precision on Windows [#11911](https://github.com/mixxxdj/mixxx/pull/11911) [#11888](https://github.com/mixxxdj/mixxx/issues/11888)
* AAC encoder: Fix a memory leak [#4386](https://github.com/mixxxdj/mixxx/pull/4386) [#4408](https://github.com/mixxxdj/mixxx/pull/4408)
* Improve robustness of file type detection by considering the actual MIME type of the content. [#7970](https://github.com/mixxxdj/mixxx/issues/7970) [#4356](https://github.com/mixxxdj/mixxx/pull/4356) [#4357](https://github.com/mixxxdj/mixxx/pull/4357)
* Fix file type detection when file has wrong file extension by determining the MIME type from content
[#4602](https://github.com/mixxxdj/mixxx/pull/4602)
[#4600](https://github.com/mixxxdj/mixxx/pull/4600)
[#4615](https://github.com/mixxxdj/mixxx/pull/4615)
[#7970](https://github.com/mixxxdj/mixxx/issues/7970)
[#10624](https://github.com/mixxxdj/mixxx/issues/10624)
[#4683](https://github.com/mixxxdj/mixxx/pull/4683)
[#10669](https://github.com/mixxxdj/mixxx/issues/10669)
* Fix type detection of AIFF files [#4364](https://github.com/mixxxdj/mixxx/pull/4364)
* Fix synchronization time stamps of ModPlug files [#4826](https://github.com/mixxxdj/mixxx/pull/4826) [#10758](https://github.com/mixxxdj/mixxx/issues/10758)
* ID3v2 parsing: Improve log warnings [#4610](https://github.com/mixxxdj/mixxx/pull/4610)
* ID3v2 parsing: Fix inconsistent import of comment field [#11249](https://github.com/mixxxdj/mixxx/pull/11249)
* Enable Modpug and Wavpack Support on macOS [#11182](https://github.com/mixxxdj/mixxx/pull/11182) [#11119](https://github.com/mixxxdj/mixxx/issues/11119)
* Fix missing file name in file metadata error message [#11965](https://github.com/mixxxdj/mixxx/pull/11965) [#11964](https://github.com/mixxxdj/mixxx/issues/11964)
* Verify the "first sound" of as an analysis sanity check
[#4773](https://github.com/mixxxdj/mixxx/pull/4773)
[#11887](https://github.com/mixxxdj/mixxx/pull/11887)
[#11946](https://github.com/mixxxdj/mixxx/pull/11946)
[#11940](https://github.com/mixxxdj/mixxx/issues/11940)
* Fix zeros in the first m4a chunk on Linux [#11879](https://github.com/mixxxdj/mixxx/pull/11879)
* Fix overlapping buffers when decoding m4a files using ffmpeg [#11760](https://github.com/mixxxdj/mixxx/pull/11760) [#11545](https://github.com/mixxxdj/mixxx/issues/11545)
* Fix possible crash with opus files with embedded cover arts and require TagLib 1.11 or newer
[#4251](https://github.com/mixxxdj/mixxx/pull/4251)
[#4252](https://github.com/mixxxdj/mixxx/pull/4252) [#10500](https://github.com/mixxxdj/mixxx/issues/10500)
### Audio Engine
* Add support for Saved loops
[#2194](https://github.com/mixxxdj/mixxx/pull/2194)
[#3267](https://github.com/mixxxdj/mixxx/pull/3267)
[#3202](https://github.com/mixxxdj/mixxx/pull/3202)
[#4265](https://github.com/mixxxdj/mixxx/pull/4265)
[#7574](https://github.com/mixxxdj/mixxx/issues/7574)
[#11006](https://github.com/mixxxdj/mixxx/pull/11006)
[#11003](https://github.com/mixxxdj/mixxx/issues/11003)
[#12637](https://github.com/mixxxdj/mixxx/pull/12637)
[#12632](https://github.com/mixxxdj/mixxx/pull/12632)
[#12623](https://github.com/mixxxdj/mixxx/pull/12623)
[#12618](https://github.com/mixxxdj/mixxx/issues/12618)
* Fix an issue when pressing multiple cue buttons at the same time [#3382](https://github.com/mixxxdj/mixxx/pull/3382)
* Fix synchronization of main cue point/position
[#4137](https://github.com/mixxxdj/mixxx/pull/4137)
[#10478](https://github.com/mixxxdj/mixxx/issues/10478)
[#4153](https://github.com/mixxxdj/mixxx/pull/4153)
* Adjust ReplayGain: Allow user to update the replaygain value based on a deck pregain value [#4031](https://github.com/mixxxdj/mixxx/pull/4031)
* Add halve/double controls for beatjump size [#4269](https://github.com/mixxxdj/mixxx/pull/4269)
* Implement Un-eject by pressing eject again
[#4668](https://github.com/mixxxdj/mixxx/pull/4668)
[#11246](https://github.com/mixxxdj/mixxx/pull/11246)
* Implement Un-replace by double-clicking eject
[#11246](https://github.com/mixxxdj/mixxx/pull/11246)
* Allow to cancel active loops via beatloop_activate [#4328](https://github.com/mixxxdj/mixxx/pull/4328) [#9950](https://github.com/mixxxdj/mixxx/issues/9950)
* Slip Mode: Preserve active (regular) loop when leaving Slip Mode [#11435](https://github.com/mixxxdj/mixxx/pull/11435) [#6993](https://github.com/mixxxdj/mixxx/issues/6993)
* Fix possible segfault when ejecting track [#4362](https://github.com/mixxxdj/mixxx/pull/4362) [#10497](https://github.com/mixxxdj/mixxx/issues/10497)
* Fix possible crash when ejecting track from a controller [#11884](https://github.com/mixxxdj/mixxx/pull/11884) [#11819](https://github.com/mixxxdj/mixxx/issues/11819)
* Fix an assertion when loop is before track start [#4383](https://github.com/mixxxdj/mixxx/pull/4383) [#10556](https://github.com/mixxxdj/mixxx/issues/10556)
* Fix and improve snapping to beats in various situations [#4366](https://github.com/mixxxdj/mixxx/pull/4366) [#10541](https://github.com/mixxxdj/mixxx/issues/10541)
* Don't wipe inapplicable sound config immediately [#4544](https://github.com/mixxxdj/mixxx/pull/4544)
* Rubberband: Support Version 3 "finer" (near-hi-fi quality) setting, on Windows and MacOs and when available on Linux
[#4853](https://github.com/mixxxdj/mixxx/pull/4853)
[#4855](https://github.com/mixxxdj/mixxx/pull/4855)
[#11047](https://github.com/mixxxdj/mixxx/pull/11047)
* Rubberband: Add missing padding, preventing it from eating the initial transient [#11120](https://github.com/mixxxdj/mixxx/pull/11120)
* Rubberband: Improve mono-compatibility for R3 "finer" [#11418](https://github.com/mixxxdj/mixxx/pull/11418)
* Fix a possible crash when ejecting a track [#11334](https://github.com/mixxxdj/mixxx/pull/11334) [#11257](https://github.com/mixxxdj/mixxx/issues/11257)
* Add a range limits for beatjump_size of 512 [#11248](https://github.com/mixxxdj/mixxx/pull/11248) [#11203](https://github.com/mixxxdj/mixxx/issues/11203)
* Auto DJ: Fix sharp cut transition after cueing a track without a defined intro [#11629](https://github.com/mixxxdj/mixxx/pull/11629) [#11621](https://github.com/mixxxdj/mixxx/issues/11621)
* Auto DJ: Don't use removed Intro end and outro start makers, use transition time instead [#11830](https://github.com/mixxxdj/mixxx/pull/11830)
* Auto DJ: Fix GUI freeze when updating duration for many selected tracks
[#12530](https://github.com/mixxxdj/mixxx/pull/12530)
[#12520](https://github.com/mixxxdj/mixxx/issues/12520)
[#12537](https://github.com/mixxxdj/mixxx/pull/12537)
* KeyControl: fix keylock/unlock bugs, reset pitch_adjust [4710](https://github.com/mixxxdj/mixxx/pull/4710)
* Looping: fix asserts for loop move [#11735](https://github.com/mixxxdj/mixxx/pull/11735)
* Looping: reset loop_end_pos on eject [#12224](https://github.com/mixxxdj/mixxx/pull/12224) [#12223](https://github.com/mixxxdj/mixxx/issues/12223)
* Fix Loop_out not seeking back [#12739](https://github.com/mixxxdj/mixxx/pull/12739) [#12742](https://github.com/mixxxdj/mixxx/pull/12742)
* ReadAheadManager: fix loop wraparound reader condition [#11717](https://github.com/mixxxdj/mixxx/pull/11717)
* Slip mode: consider loop for background position only if it was enabled before slip [#11848](https://github.com/mixxxdj/mixxx/pull/11848) [#11844](https://github.com/mixxxdj/mixxx/issues/11844)
* Make decks' xfader assignment persistent [#12074](https://github.com/mixxxdj/mixxx/pull/12074) [#10122](https://github.com/mixxxdj/mixxx/issues/10122)
* Fix gain issue with cloned tracks [#12435](https://github.com/mixxxdj/mixxx/pull/12435) [#10550](https://github.com/mixxxdj/mixxx/issues/10550)
### Controller Mappings
* new: Hercules DJControl MIX controller mapping [#11279](https://github.com/mixxxdj/mixxx/pull/11279)
* new: Pioneer DDJ-FLX4 controller mapping based on DDJ-400 [#11245](https://github.com/mixxxdj/mixxx/pull/11245)
* new: Traktor Kontrol S4 Mk3 controller mapping [#11284](https://github.com/mixxxdj/mixxx/pull/11284)
* new: Traktor Kontrol Z1 HID controller mapping [#12366](https://github.com/mixxxdj/mixxx/pull/12366) [#12426](https://github.com/mixxxdj/mixxx/pull/12426)
* new: Yaeltex MiniMixxx controller mapping [#4350](https://github.com/mixxxdj/mixxx/pull/4350)
* Behringer DDM4000 mixer: Update controller mapping [#4262](https://github.com/mixxxdj/mixxx/pull/4262) [#4799](https://github.com/mixxxdj/mixxx/pull/4799)
* Hercules DJ Console RMX: Replace not defined CO name pitch_reset by pitch_set_default [#12441](https://github.com/mixxxdj/mixxx/pull/12441)
* Korg nanoKONTROL2: Don't try to configure more than 4 main decks [#12322](https://github.com/mixxxdj/mixxx/pull/12322) [#12317](https://github.com/mixxxdj/mixxx/issues/12317)
* Korg nanoKONTROL2: Removed along with Mixco scripts [#2682](https://github.com/mixxxdj/mixxx/pull/2682)
* MAudio Xponent: Removed along with Mixco scripts [#2682](https://github.com/mixxxdj/mixxx/pull/2682)
* MIDI4lights: Give beginTimer callbacks the anonymous function expression form [#12048](https://github.com/mixxxdj/mixxx/pull/12048)
* Novation Twitch: Removed along with Mixco scripts [#2682](https://github.com/mixxxdj/mixxx/pull/2682)
* Novation Launchpad: Update controller scripts [#2600](https://github.com/mixxxdj/mixxx/pull/2600) [#11914](https://github.com/mixxxdj/mixxx/pull/11914)
* Numark DJ2GO2 Touch: Fix sampler, hotcue, beatloop buttons [#4287](https://github.com/mixxxdj/mixxx/pull/4287) [#11595](https://github.com/mixxxdj/mixxx/pull/11595)
* Numark MixTrack Pro 3: Fix beginTimer callback syntax [#12401](https://github.com/mixxxdj/mixxx/pull/12401) [#12369](https://github.com/mixxxdj/mixxx/issues/12369)
* Roland DJ-505: Make blinking lights blink in sync and other improvements [#4159](https://github.com/mixxxdj/mixxx/pull/4159) [#4517](https://github.com/mixxxdj/mixxx/pull/4517)
* Traktor Kontrol S2 MK1: Add calibration and refactor [#11237](https://github.com/mixxxdj/mixxx/pull/11237)
* Traktor Kontrol S2 MK2 fix loaded chain preset CO [#11823](https://github.com/mixxxdj/mixxx/pull/11823) [#10667](https://github.com/mixxxdj/mixxx/issues/10667)
* Traktor Kontrol S2 MK3: Use FX select buttons to set quick effect presets
[#11702](https://github.com/mixxxdj/mixxx/pull/11702)
* Traktor Kontrol S3: script improvements, vanilla-like FX behavior, control initialization, better scratching, and more
[#11199](https://github.com/mixxxdj/mixxx/pull/11199)
[#10645](https://github.com/mixxxdj/mixxx/issues/10645)
[#12409](https://github.com/mixxxdj/mixxx/pull/12409)
[#12510](https://github.com/mixxxdj/mixxx/pull/12510)
* Various mappings: Fix `waveform_zoom` ranges [#12393](https://github.com/mixxxdj/mixxx/pull/12393)
* Various mappings: Ensure required samplers are created [#12769](https://github.com/mixxxdj/mixxx/pull/12769)
### Controller Backend
* Never raise a fatal error if a controller mapping tries access a non-existent control object [#2947](https://github.com/mixxxdj/mixxx/pull/2947)
* Add support to access HID FeatureReports
[#11326](https://github.com/mixxxdj/mixxx/pull/11326)
[#10828](https://github.com/mixxxdj/mixxx/issues/10828)
[#11664](https://github.com/mixxxdj/mixxx/pull/11664)
* Add function to request HID InputReports, to determine controller state at startup [#3317](https://github.com/mixxxdj/mixxx/pull/3317)
* Exclude HID device: ELAN touch screen [#11324](https://github.com/mixxxdj/mixxx/pull/11324) [#11323](https://github.com/mixxxdj/mixxx/issues/11323)
* Show otherwise hidden HID devices in developer mode [#11317](https://github.com/mixxxdj/mixxx/pull/11317)
* Use hidapi's hidraw backend instead of libusb on Linux [#4054](https://github.com/mixxxdj/mixxx/pull/4054)
* Fix broken HID controller mappings Traktor Kontrol S2 MK3 and others [#11470](https://github.com/mixxxdj/mixxx/pull/11470) [#11461](https://github.com/mixxxdj/mixxx/issues/11461)
* HID mappings: Modernize and document common-hid-packet-parser.js [#4718](https://github.com/mixxxdj/mixxx/pull/4718) [#4894](https://github.com/mixxxdj/mixxx/pull/4894)
* HID mappings: Small fixes for common-hid-packet-parser.js [#11925](https://github.com/mixxxdj/mixxx/pull/11925)
* HID mappings: Add [Main] to the list of valid groups [#12102](https://github.com/mixxxdj/mixxx/pull/12102) [#12406](https://github.com/mixxxdj/mixxx/pull/12406)
* Consistently use "mapping" instead of "preset" to refer to controller mappings [#3472](https://github.com/mixxxdj/mixxx/pull/3472)
* Introduce new control object `[Library],show_track_menu` to open/close the track menu [#4465](https://github.com/mixxxdj/mixxx/pull/4465)
* Introduce new control object `[Library],sort_focused_column` [#4749](https://github.com/mixxxdj/mixxx/pull/4749) [#4763](https://github.com/mixxxdj/mixxx/pull/4763) [#10719](https://github.com/mixxxdj/mixxx/issues/10719)
* Introduce new control objects `[Master],indicator_250millis` and `[Master],indicator_500millis` [#4157](https://github.com/mixxxdj/mixxx/pull/4157)
* Introduce new control object `[Library],clear_search` [#4331](https://github.com/mixxxdj/mixxx/pull/4331)
* Introduce new control object `[Library],focused_widget` to focus library directly [#4369](https://github.com/mixxxdj/mixxx/pull/4369) [#4490](https://github.com/mixxxdj/mixxx/pull/4490)
* Introduce new control object `LoadTrackFromDeck` and `LoadTrackFromSampler` [#11244](https://github.com/mixxxdj/mixxx/pull/11244)
* Don't automatically enable controller if it was disabled before [#4244](https://github.com/mixxxdj/mixxx/pull/4244) [#10503](https://github.com/mixxxdj/mixxx/issues/10503)
* Enable Qt logging categories for controller logging [#4523](https://github.com/mixxxdj/mixxx/pull/4523)
* Fix segfault during Mixxx shutdown due to a stale controller connection [#4476](https://github.com/mixxxdj/mixxx/pull/4476) [#10553](https://github.com/mixxxdj/mixxx/issues/10553)
* Components JS: Fix syncbutton [#4329](https://github.com/mixxxdj/mixxx/pull/4329)
* Components JS: Add script.posMod for euclidean modulo [#11415](https://github.com/mixxxdj/mixxx/pull/11415)
* Components JS: make JogWheelBasic correctly switch which deck it controls [#11913](https://github.com/mixxxdj/mixxx/pull/11913) [#11867](https://github.com/mixxxdj/mixxx/issues/11867)
* Add Trace for the mapping connections, to allow JS profiling [#4766](https://github.com/mixxxdj/mixxx/pull/4766)
* Controller preferences: Allow creating a new mapping with 'No Mapping' selected
[#4905](https://github.com/mixxxdj/mixxx/pull/4905)
[#10540](https://github.com/mixxxdj/mixxx/issues/10540)
[#10539](https://github.com/mixxxdj/mixxx/issues/10539)
* Add TypeScript declarations for engine and controller scripting API to improve IDE code completion during mapping developent [#4759](https://github.com/mixxxdj/mixxx/pull/4759)
* Retire Mixco Scripts [#2682](https://github.com/mixxxdj/mixxx/pull/2682)
* Relax strictness of `ControllerScriptInterfaceLegacy` methods. [#11474](https://github.com/mixxxdj/mixxx/pull/11474) [#11473](https://github.com/mixxxdj/mixxx/issues/11473)
* Do not show ControlObject aliases in developer tools window [#12265](https://github.com/mixxxdj/mixxx/pull/12265)
* Do not use deprecated COs in C++ code/Keyboard Mapping/Skins [#11990](https://github.com/mixxxdj/mixxx/pull/11990)
* Fix creation of Sampler `end_of_track` ControlObjects [#12305](https://github.com/mixxxdj/mixxx/pull/12305) [#12304](https://github.com/mixxxdj/mixxx/issues/12304)
* Add a test SoftTakeoverTest.CatchOutOfBounds [#12114](https://github.com/mixxxdj/mixxx/pull/12114) [#12011](https://github.com/mixxxdj/mixxx/issues/12011)
* Make WHotcueButton learnable with the MIDI Wizard [#12252](https://github.com/mixxxdj/mixxx/pull/12252)
* Control picker menu: add `waveform_zoom_set_default` [#12247](https://github.com/mixxxdj/mixxx/pull/12247)
* CO Renaming
[#12022](https://github.com/mixxxdj/mixxx/pull/12022)
[#12021](https://github.com/mixxxdj/mixxx/pull/12021)
[#11998](https://github.com/mixxxdj/mixxx/pull/11998)
[#11996](https://github.com/mixxxdj/mixxx/pull/11996)
[#11980](https://github.com/mixxxdj/mixxx/pull/11980)
[#12007](https://github.com/mixxxdj/mixxx/pull/12007)
* Remove deprecated ControlObjects from Skins [#12030](https://github.com/mixxxdj/mixxx/pull/12030)
* Log warning if deprecated control is used [#11972](https://github.com/mixxxdj/mixxx/pull/11972)
* ControlObject alias improvements [#11973](https://github.com/mixxxdj/mixxx/pull/11973)
* Keyboard mapping: Repeat certain control actions if key is held [#12474](https://github.com/mixxxdj/mixxx/pull/12474)
* Keyboard mapping: Return triggers double-click, move Preview functions to P / Shift+P [#12639](https://github.com/mixxxdj/mixxx/pull/12639)
* Keyboard mapping: Various fixes [#12730](https://github.com/mixxxdj/mixxx/pull/12730)
* Update keyboard sheet [#12578](https://github.com/mixxxdj/mixxx/pull/12578)
* Logging: Add support for `QT_MESSAGE_PATTERN` environment variable
[#3204](https://github.com/mixxxdj/mixxx/pull/3204)
[#3518](https://github.com/mixxxdj/mixxx/pull/3518)
* Avoid issue with `stars_up/_down` ControlObjects [#12591](https://github.com/mixxxdj/mixxx/pull/12591)
* hotcue_X_color control: Fix color not stored in cue [#12733](https://github.com/mixxxdj/mixxx/pull/12733)
### Skins
* Add harmonic keywheel window
[#1695](https://github.com/mixxxdj/mixxx/pull/1695)
[#3622](https://github.com/mixxxdj/mixxx/pull/3622)
[#3624](https://github.com/mixxxdj/mixxx/pull/3624)
* Allow skin scaling from preferences
[#3960](https://github.com/mixxxdj/mixxx/pull/3960)
[#11588](https://github.com/mixxxdj/mixxx/pull/11588)
[#11586](https://github.com/mixxxdj/mixxx/issues/11586)
* Fix icon rendering on HiDPI/Retina screens [#12407](https://github.com/mixxxdj/mixxx/pull/12407) [#12361](https://github.com/mixxxdj/mixxx/issues/12361)
* Increase pixmapCache size limit and made it dependent on devicePixelRatio (for HiDPI/Retina displays) [#12416](https://github.com/mixxxdj/mixxx/pull/12416)
* Make beat indicator control behaviour more natural [#3608](https://github.com/mixxxdj/mixxx/pull/3608)
* Fix crash if no skin is available
[#3918](https://github.com/mixxxdj/mixxx/pull/3918)
[#3939](https://github.com/mixxxdj/mixxx/pull/3939)
* Fix crash when starting without a valid skin directory [#4575](https://github.com/mixxxdj/mixxx/pull/4575) [#10461](https://github.com/mixxxdj/mixxx/issues/10461)
* Fix leaked controls [#4213](https://github.com/mixxxdj/mixxx/pull/4213) [#10293](https://github.com/mixxxdj/mixxx/issues/10293)
* Fix switching from Shade to other skins [#4421](https://github.com/mixxxdj/mixxx/pull/4421) [#10558](https://github.com/mixxxdj/mixxx/issues/10558)
* Use double click to reset knobs and sliders [#4509](https://github.com/mixxxdj/mixxx/pull/4509) [#9947](https://github.com/mixxxdj/mixxx/issues/9947)
* Use info not warning for skin COs [#4525](https://github.com/mixxxdj/mixxx/pull/4525)
* Spinny: Allow to toggle cover art at runtime [#4565](https://github.com/mixxxdj/mixxx/pull/4565) [#10015](https://github.com/mixxxdj/mixxx/issues/10015)
* Passthrough: improve UI / UX [#4794](https://github.com/mixxxdj/mixxx/pull/4794)
* Knob: Hide cursor on wheel event for .8s [#11077](https://github.com/mixxxdj/mixxx/pull/11077)
* Move skin control hack to c++ (spinny/cover controls, mic/ducking controls) [#11183](https://github.com/mixxxdj/mixxx/pull/11183)
* LateNight: Move logo to the right [#4677](https://github.com/mixxxdj/mixxx/pull/4677)
* LateNight: Use correct tooltip for key control toggle [#4696](https://github.com/mixxxdj/mixxx/pull/4696)
* LateNight: Add toggles to show loop and beatjump controls [#4713](https://github.com/mixxxdj/mixxx/pull/4713)
* LateNight: Remove blinking play indicator from mini samplers [#4807](https://github.com/mixxxdj/mixxx/pull/4807)
* LateNight: Add buffer underflow indicator [#4906](https://github.com/mixxxdj/mixxx/pull/4906) [#10978](https://github.com/mixxxdj/mixxx/pull/10978)
* LateNight: Fix xfader icons in samplers and aux units [#12477](https://github.com/mixxxdj/mixxx/pull/12477)
* LateNight: use default RGB waveform colors [#12712](https://github.com/mixxxdj/mixxx/pull/12712)
* Add LateNight (64 Samplers) [#11715](https://github.com/mixxxdj/mixxx/pull/11715)
* Deere: fix skin/library layout (library missing in default view with Qt6) [#11912](https://github.com/mixxxdj/mixxx/pull/11912)
* Deere: use decks' waveform colors for sliders (Vol + pitch) [#12129](https://github.com/mixxxdj/mixxx/pull/12129) [#10240](https://github.com/mixxxdj/mixxx/issues/10240)
* Shade: Remove initial setting of now accessible effect controls [#4398](https://github.com/mixxxdj/mixxx/pull/4398) [#10557](https://github.com/mixxxdj/mixxx/issues/10557)
* Shade: Audio Latency meter fix [#11601](https://github.com/mixxxdj/mixxx/pull/11601)
* Tango: allow to toggle crossfader independently from mixer [#12703](https://github.com/mixxxdj/mixxx/pull/12703) [#12654](https://github.com/mixxxdj/mixxx/issues/12654)
* Fix outdated tooltips
[#11387](https://github.com/mixxxdj/mixxx/pull/11387)
[#11384](https://github.com/mixxxdj/mixxx/issues/11384)
[#11860](https://github.com/mixxxdj/mixxx/pull/11860)
* Add settings directory link to Help menu [#11670](https://github.com/mixxxdj/mixxx/pull/11670) [#11667](https://github.com/mixxxdj/mixxx/issues/11667)
* Fix sidebar item styling
[#11975](https://github.com/mixxxdj/mixxx/pull/11975)
[#11957](https://github.com/mixxxdj/mixxx/issues/11957)
* Fix 500ms blocking of the whole event loop, when holding mouse down on title bar on Windows [#12359](https://github.com/mixxxdj/mixxx/pull/12359) [#12358](https://github.com/mixxxdj/mixxx/issues/12358) [#12433](https://github.com/mixxxdj/mixxx/pull/12433) [#12458](https://github.com/mixxxdj/mixxx/pull/12458)
* Change SKIN_WARNING to show the skin file and line first, then c++ context [#12253](https://github.com/mixxxdj/mixxx/pull/12253)
* Fix style of selected QComboBox items on Windows [#12339](https://github.com/mixxxdj/mixxx/pull/12339) [#12323](https://github.com/mixxxdj/mixxx/issues/12323)
* Fix reading the Spinny cover on Windows [#12103](https://github.com/mixxxdj/mixxx/pull/12103) [#11131](https://github.com/mixxxdj/mixxx/issues/11131)
* Fix inconsistent/wrong musical keys in the UI [#12051](https://github.com/mixxxdj/mixxx/pull/12051) [#12044](https://github.com/mixxxdj/mixxx/issues/12044)
* Add `skins:` path alias [#12463](https://github.com/mixxxdj/mixxx/pull/12463)
* Remove `Text`, use `TrackProperty` or `Label` [#12004](https://github.com/mixxxdj/mixxx/pull/12004)
* Beat spinBox/AutoDJ spinbox: Enter & Esc also move focus to library [#4617](https://github.com/mixxxdj/mixxx/pull/4617) [#4845](https://github.com/mixxxdj/mixxx/pull/4845)
* Add effect chain menu button to Deere, polish in Tango [#12735](https://github.com/mixxxdj/mixxx/pull/12735)
* Skins: reload default.qss when (re)loading a skin [#12219](https://github.com/mixxxdj/mixxx/pull/12219)
### Waveforms and GL Widgets
* Waveform overhaul based on QOpenGlWindow and introduce full GLSL shader based waveforms, vumeters and spinnies. This fixes a couple of performance issues mainly on macOS.
[#10989](https://github.com/mixxxdj/mixxx/pull/10989)
[#10416](https://github.com/mixxxdj/mixxx/issues/10416)
[#11460](https://github.com/mixxxdj/mixxx/issues/11460)
[#11556](https://github.com/mixxxdj/mixxx/issues/11556)
[#11450](https://github.com/mixxxdj/mixxx/issues/11450)
[#10416](https://github.com/mixxxdj/mixxx/issues/10416)
[#11734](https://github.com/mixxxdj/mixxx/issues/11734)
[#12466](https://github.com/mixxxdj/mixxx/pull/12466)
[#12678](https://github.com/mixxxdj/mixxx/pull/12678)
[#12731](https://github.com/mixxxdj/mixxx/pull/12731)
* Default to 60 Hz waveform refresh rate [#11918](https://github.com/mixxxdj/mixxx/pull/11918)
* Introduce a VSsync mode driven by a phase locked loop [#12469](https://github.com/mixxxdj/mixxx/pull/12469)
* Make VSync mode 0 refer to the default mode and make ST_PLL the default on macOS, ST_TIMER otherwise [#12489](https://github.com/mixxxdj/mixxx/pull/12489)
* Use WaveformWidgetType::AllShaderRGBWaveform as autoChooseWidgetType [#11822](https://github.com/mixxxdj/mixxx/pull/11822)
* Add new "RGB Stacked" waveform [#3153](https://github.com/mixxxdj/mixxx/pull/3153)
* Fix micro jitter from clamping position offset to vsync interval [#12470](https://github.com/mixxxdj/mixxx/pull/12470)
* Avoid flickering when resizing [#12487](https://github.com/mixxxdj/mixxx/pull/12487)
* Invert scroll wheel waveform zoom direction to mach other applications [#4195](https://github.com/mixxxdj/mixxx/pull/4195)
* Waveform scrolling: Use set interval setting to fix performance degradation for AMD graphics adapters [#11681](https://github.com/mixxxdj/mixxx/pull/11681) [#11617](https://github.com/mixxxdj/mixxx/issues/11617)
* Fix waveform zooming [#11650](https://github.com/mixxxdj/mixxx/pull/11650) [#11626](https://github.com/mixxxdj/mixxx/issues/11626)
* Fix OpenGL version detection [#11673](https://github.com/mixxxdj/mixxx/pull/11673)
* Fix crash when no GL context is available [#11963](https://github.com/mixxxdj/mixxx/pull/11963) [#11929](https://github.com/mixxxdj/mixxx/issues/11929)
* Fix stopped waveform rendering in case of vinyl control [#11977](https://github.com/mixxxdj/mixxx/pull/11977) [#10764](https://github.com/mixxxdj/mixxx/issues/10764)
* Fix visual play position related to looping
[#11840](https://github.com/mixxxdj/mixxx/pull/11840)
[#11836](https://github.com/mixxxdj/mixxx/issues/11836)
[#12538](https://github.com/mixxxdj/mixxx/pull/12538)