diff --git a/.github/workflows/build-checks.yml b/.github/workflows/build-checks.yml index 96b6c07ba22..b5507df8a4b 100644 --- a/.github/workflows/build-checks.yml +++ b/.github/workflows/build-checks.yml @@ -121,7 +121,7 @@ jobs: run: | sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list sudo apt-get update - sudo apt-get install -y --allow-downgrades libc6=2.35-0ubuntu3.5 libc6-dev=2.35-0ubuntu3.5 libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04 + sudo apt-get install -y --allow-downgrades libc6=2.35* libc6-dev=2.35* libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04 - name: Build # Do not abort on errors and build/check the whole project run: cmake --build . -j $(nproc) -- --keep-going diff --git a/CHANGELOG.md b/CHANGELOG.md index 876d499f846..db509c00b3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,12 @@ [#10796](https://github.com/mixxxdj/mixxx/issues/10796) [#10902](https://github.com/mixxxdj/mixxx/pull/10902) [#4851](https://github.com/mixxxdj/mixxx/pull/4851) - [#11938](https://github.com/mixxxdj/mixxx/pull/11938) [#11086](https://github.com/mixxxdj/mixxx/issues/11086) [#12041](https://github.com/mixxxdj/mixxx/pull/12041) [#12300](https://github.com/mixxxdj/mixxx/pull/12300) + [#11938](https://github.com/mixxxdj/mixxx/pull/11938) + [#11086](https://github.com/mixxxdj/mixxx/issues/11086) + [#12041](https://github.com/mixxxdj/mixxx/pull/12041) + [#12300](https://github.com/mixxxdj/mixxx/pull/12300) + [#12543](https://github.com/mixxxdj/mixxx/pull/12543) + [#12532](https://github.com/mixxxdj/mixxx/issues/12532) * CoverArtCache refactoring + Fix scrolling lag after updating Mixxx [#12009](https://github.com/mixxxdj/mixxx/pull/12009) ### Music Library @@ -99,18 +104,6 @@ * Add History 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) * Fix update of play count after removing tracks from history playlist [#12258](https://github.com/mixxxdj/mixxx/pull/12258) [#12046](https://github.com/mixxxdj/mixxx/issues/12046) [#12256](https://github.com/mixxxdj/mixxx/issues/12256) * 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) -* Code improvements and minor bug fixes when importing track metadata - [#3851](https://github.com/mixxxdj/mixxx/pull/3851) - [#3858](https://github.com/mixxxdj/mixxx/pull/3858) - [#3860](https://github.com/mixxxdj/mixxx/pull/3860) - [#3866](https://github.com/mixxxdj/mixxx/pull/3866) - [#3871](https://github.com/mixxxdj/mixxx/pull/3871) - [#3870](https://github.com/mixxxdj/mixxx/pull/3870) - [#3924](https://github.com/mixxxdj/mixxx/pull/3924) - [#4368](https://github.com/mixxxdj/mixxx/pull/4368) - [#3906](https://github.com/mixxxdj/mixxx/pull/3906) - [#3998](https://github.com/mixxxdj/mixxx/pull/3998) - [#11031](https://github.com/mixxxdj/mixxx/pull/11031) * 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) @@ -141,6 +134,9 @@ * Tracks table: Home/End keys jump to first/last row [#4850](https://github.com/mixxxdj/mixxx/pull/4850) * Tracks table: dont wrap around if Shift is pressed [#12391](https://github.com/mixxxdj/mixxx/pull/12391) * Tracks table: avoid wrong pre-selection with no tracks selected previously [#12321](https://github.com/mixxxdj/mixxx/pull/12321) [#12064](https://github.com/mixxxdj/mixxx/issues/12064) +* Tracks table: Fix initial track selection with BackTab [#11130](https://github.com/mixxxdj/mixxx/pull/11130) +* Tracks table: Try to restore selection position after track removal [#11196](https://github.com/mixxxdj/mixxx/pull/11196) +* Tracks table: Remove parenthesis from play counter display [#11357](https://github.com/mixxxdj/mixxx/pull/11357) * Re-enable shortcuts after editing controls [#4360](https://github.com/mixxxdj/mixxx/pull/4360) [#10184](https://github.com/mixxxdj/mixxx/issues/10184) @@ -183,9 +179,6 @@ * Track Menu: Restore "Remove from playlist" in History [#11591](https://github.com/mixxxdj/mixxx/pull/11591) [#10974](https://github.com/mixxxdj/mixxx/issues/10974) * Track menu: Enable Lock BPM action if any selected track BPM is unlocked [#12385](https://github.com/mixxxdj/mixxx/pull/12385) * Track menu: Add "Delete Track Files" entry as move to trash with Qt >= 5.15 [#3212](https://github.com/mixxxdj/mixxx/pull/3212) [#11842](https://github.com/mixxxdj/mixxx/pull/11842) -* Tracks table: Fix initial track selection with BackTab [#11130](https://github.com/mixxxdj/mixxx/pull/11130) -* Tracks table: Try to restore selection position after track removal [#11196](https://github.com/mixxxdj/mixxx/pull/11196) -* Tracks table: Remove parenthesis from play counter display [#11357](https://github.com/mixxxdj/mixxx/pull/11357) * Remove/hide tracks dialog: Add 'Don't ask again' checkbox [#11239](https://github.com/mixxxdj/mixxx/pull/11239) * 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) @@ -216,39 +209,8 @@ * 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) -* Track Properties: Don't clear unsaved properties when updating star rating [#11565](https://github.com/mixxxdj/mixxx/pull/11565) [#11540](https://github.com/mixxxdj/mixxx/issues/11540) -* Track Properties: Focus Double-clicked property field for edit - [#11764](https://github.com/mixxxdj/mixxx/pull/11764) - [#11804](https://github.com/mixxxdj/mixxx/pull/11804) - [#11802](https://github.com/mixxxdj/mixxx/issues/11802) -* Track Properties: Display the samplerate [#12418](https://github.com/mixxxdj/mixxx/pull/12418) -* Refactoring of library code - [#2756](https://github.com/mixxxdj/mixxx/pull/2756) - [#2717](https://github.com/mixxxdj/mixxx/pull/2717) - [#2715](https://github.com/mixxxdj/mixxx/pull/2715) - [#2810](https://github.com/mixxxdj/mixxx/pull/2756) - [#2900](https://github.com/mixxxdj/mixxx/pull/2900) - [#2906](https://github.com/mixxxdj/mixxx/pull/2906) - [#2925](https://github.com/mixxxdj/mixxx/pull/2925) - [#3017](https://github.com/mixxxdj/mixxx/pull/3017) - [#3475](https://github.com/mixxxdj/mixxx/pull/3475) - [#4164](https://github.com/mixxxdj/mixxx/pull/4164) - [#4152](https://github.com/mixxxdj/mixxx/pull/4152) - [#4162](https://github.com/mixxxdj/mixxx/pull/4162) - [#4101](https://github.com/mixxxdj/mixxx/pull/4101) - [#4214](https://github.com/mixxxdj/mixxx/pull/4214) - [#4280](https://github.com/mixxxdj/mixxx/pull/4280) - [#4429](https://github.com/mixxxdj/mixxx/pull/4429) - [#4477](https://github.com/mixxxdj/mixxx/pull/4477) - [#4475](https://github.com/mixxxdj/mixxx/pull/4475) - [#4480](https://github.com/mixxxdj/mixxx/pull/4480) - [#4633](https://github.com/mixxxdj/mixxx/pull/4633) - [#4837](https://github.com/mixxxdj/mixxx/pull/4837) - [#4864](https://github.com/mixxxdj/mixxx/pull/4864) - [#4893](https://github.com/mixxxdj/mixxx/pull/4893) - [#10861](https://github.com/mixxxdj/mixxx/pull/10861) - [#10871](https://github.com/mixxxdj/mixxx/pull/10871) - [#12082](https://github.com/mixxxdj/mixxx/pull/12082) +* Fix setting the wrong default cue color [#11554](https://github.com/mixxxdj/mixxx/pull/11554) [#11260](https://github.com/mixxxdj/mixxx/issues/11260) +* Tweak remove/hide track confirm message to match confirm exit message [#4577](https://github.com/mixxxdj/mixxx/pull/4577) [#1947992](https://github.com/mixxxdj/mixxx/issues/10577) ### Sync @@ -291,7 +253,7 @@ * 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: Fixed a memory leak [#4386](https://github.com/mixxxdj/mixxx/pull/4386) [#4408](https://github.com/mixxxdj/mixxx/pull/4408) +* 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) @@ -314,6 +276,9 @@ [#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 @@ -332,7 +297,7 @@ [#4153](https://github.com/mixxxdj/mixxx/pull/4153) * Add halve/double controls for beatjump size [#4269](https://github.com/mixxxdj/mixxx/pull/4269) * Fix possible segfault when ejecting track [#4362](https://github.com/mixxxdj/mixxx/pull/4362) [#10497](https://github.com/mixxxdj/mixxx/issues/10497) -* Fixed 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 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) * Allow to cancel active loops via beatloop_activate [#4328](https://github.com/mixxxdj/mixxx/pull/4328) [#9950](https://github.com/mixxxdj/mixxx/issues/9950) * Don't wipe inapplicable sound config immediately [#4544](https://github.com/mixxxdj/mixxx/pull/4544) @@ -358,92 +323,7 @@ * Fix wrong visual play position when inside loop [#11840](https://github.com/mixxxdj/mixxx/pull/11840) [#11836](https://github.com/mixxxdj/mixxx/issues/11836) * 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) * Looping: reset loop_end_pos on eject [#12224](https://github.com/mixxxdj/mixxx/pull/12224) [#12223](https://github.com/mixxxdj/mixxx/issues/12223) -* Refactoring of beatgrid/beatmap code - [#4044](https://github.com/mixxxdj/mixxx/pull/4044) - [#4048](https://github.com/mixxxdj/mixxx/pull/4048) - [#4045](https://github.com/mixxxdj/mixxx/pull/4045) - [#4049](https://github.com/mixxxdj/mixxx/pull/4049) - [#4092](https://github.com/mixxxdj/mixxx/pull/4092) - [#4094](https://github.com/mixxxdj/mixxx/pull/4094) - [#4104](https://github.com/mixxxdj/mixxx/pull/4104) - [#4103](https://github.com/mixxxdj/mixxx/pull/4103) - [#4127](https://github.com/mixxxdj/mixxx/pull/4127) - [#4099](https://github.com/mixxxdj/mixxx/pull/4099) - [#4071](https://github.com/mixxxdj/mixxx/pull/4071) - [#4184](https://github.com/mixxxdj/mixxx/pull/4184) - [#4234](https://github.com/mixxxdj/mixxx/pull/4234) - [#4233](https://github.com/mixxxdj/mixxx/pull/4233) - [#4258](https://github.com/mixxxdj/mixxx/pull/4258) - [#4259](https://github.com/mixxxdj/mixxx/pull/4259) - [#4263](https://github.com/mixxxdj/mixxx/pull/4263) - [#4272](https://github.com/mixxxdj/mixxx/pull/4272) - [#4268](https://github.com/mixxxdj/mixxx/pull/4268) - [#4270](https://github.com/mixxxdj/mixxx/pull/4270) - [#4342](https://github.com/mixxxdj/mixxx/pull/4342) - [#4336](https://github.com/mixxxdj/mixxx/pull/4336) - [#4409](https://github.com/mixxxdj/mixxx/pull/4409) - [#4361](https://github.com/mixxxdj/mixxx/pull/4361) - [#4488](https://github.com/mixxxdj/mixxx/pull/4488) - [#4411](https://github.com/mixxxdj/mixxx/pull/4411) - [#4498](https://github.com/mixxxdj/mixxx/pull/4498) - [#4500](https://github.com/mixxxdj/mixxx/pull/4500) - [#4499](https://github.com/mixxxdj/mixxx/pull/4499) - [#4510](https://github.com/mixxxdj/mixxx/pull/4510) - [#4607](https://github.com/mixxxdj/mixxx/pull/4607) - [#11263](https://github.com/mixxxdj/mixxx/pull/11263) - [#12368](https://github.com/mixxxdj/mixxx/pull/12368) - [#12349](https://github.com/mixxxdj/mixxx/pull/12349) - [#12071](https://github.com/mixxxdj/mixxx/issues/12071) - [#12016](https://github.com/mixxxdj/mixxx/pull/12016) -* Refactoring of audio engine code - [#2762](https://github.com/mixxxdj/mixxx/pull/2762) - [#2801](https://github.com/mixxxdj/mixxx/pull/2801) - [#2885](https://github.com/mixxxdj/mixxx/pull/2885) - [#2997](https://github.com/mixxxdj/mixxx/pull/2997) - [#3266](https://github.com/mixxxdj/mixxx/pull/3266) - [#4064](https://github.com/mixxxdj/mixxx/pull/4064) - [#4065](https://github.com/mixxxdj/mixxx/pull/4065) - [#4066](https://github.com/mixxxdj/mixxx/pull/4066) - [#4069](https://github.com/mixxxdj/mixxx/pull/4069) - [#4074](https://github.com/mixxxdj/mixxx/pull/4074) - [#4075](https://github.com/mixxxdj/mixxx/pull/4075) - [#4076](https://github.com/mixxxdj/mixxx/pull/4076) - [#4078](https://github.com/mixxxdj/mixxx/pull/4078) - [#4082](https://github.com/mixxxdj/mixxx/pull/4082) - [#4077](https://github.com/mixxxdj/mixxx/pull/4077) - [#4080](https://github.com/mixxxdj/mixxx/pull/4080) - [#4086](https://github.com/mixxxdj/mixxx/pull/4086) - [#4089](https://github.com/mixxxdj/mixxx/pull/4089) - [#4090](https://github.com/mixxxdj/mixxx/pull/4090) - [#4079](https://github.com/mixxxdj/mixxx/pull/4079) - [#4091](https://github.com/mixxxdj/mixxx/pull/4091) - [#4083](https://github.com/mixxxdj/mixxx/pull/4083) - [#4095](https://github.com/mixxxdj/mixxx/pull/4095) - [#4081](https://github.com/mixxxdj/mixxx/pull/4081) - [#4061](https://github.com/mixxxdj/mixxx/pull/4061) - [#4105](https://github.com/mixxxdj/mixxx/pull/4105) - [#4183](https://github.com/mixxxdj/mixxx/pull/4183) - [#4186](https://github.com/mixxxdj/mixxx/pull/4186) - [#4189](https://github.com/mixxxdj/mixxx/pull/4189) - [#4216](https://github.com/mixxxdj/mixxx/pull/4216) - [#4221](https://github.com/mixxxdj/mixxx/pull/4221) - [#4219](https://github.com/mixxxdj/mixxx/pull/4219) - [#4191](https://github.com/mixxxdj/mixxx/pull/4191) - [#4232](https://github.com/mixxxdj/mixxx/pull/4232) - [#4231](https://github.com/mixxxdj/mixxx/pull/4231) - [#4229](https://github.com/mixxxdj/mixxx/pull/4229) - [#4257](https://github.com/mixxxdj/mixxx/pull/4257) - [#4266](https://github.com/mixxxdj/mixxx/pull/4266) - [#4217](https://github.com/mixxxdj/mixxx/pull/4217) - [#1966](https://github.com/mixxxdj/mixxx/pull/1966) - [#4535](https://github.com/mixxxdj/mixxx/pull/4535) - [#4770](https://github.com/mixxxdj/mixxx/pull/4770) - [#4771](https://github.com/mixxxdj/mixxx/pull/4771) - [#4589](https://github.com/mixxxdj/mixxx/pull/4589) - [#1717](https://github.com/mixxxdj/mixxx/pull/1717) - [#4852](https://github.com/mixxxdj/mixxx/pull/4852) - [#10835](https://github.com/mixxxdj/mixxx/pull/10835) - [#10843](https://github.com/mixxxdj/mixxx/pull/10843) +* make decks' xfader assignment persistent [#12074](https://github.com/mixxxdj/mixxx/pull/12074) [#10122](https://github.com/mixxxdj/mixxx/issues/10122) ### Controller Mappings @@ -509,42 +389,9 @@ [#4905](https://github.com/mixxxdj/mixxx/pull/4905) [#10540](https://github.com/mixxxdj/mixxx/issues/10540) [#10539](https://github.com/mixxxdj/mixxx/issues/10539) -* Controller preferences: add search bars to mapping tables [#11165](https://github.com/mixxxdj/mixxx/pull/11165) * Added 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) -* Prepare code for upcoming ES6 based controller mapping system with module support - [#2682](https://github.com/mixxxdj/mixxx/pull/2682) - [#2868](https://github.com/mixxxdj/mixxx/pull/2868) - [#2875](https://github.com/mixxxdj/mixxx/pull/2875) - [#2936](https://github.com/mixxxdj/mixxx/pull/2936) - [#2946](https://github.com/mixxxdj/mixxx/pull/2946) - [#11953](https://github.com/mixxxdj/mixxx/pull/11953) -* Other refactorings of controller code - [#2904](https://github.com/mixxxdj/mixxx/pull/2904) - [#3308](https://github.com/mixxxdj/mixxx/pull/3308) - [#3463](https://github.com/mixxxdj/mixxx/pull/3463) - [#3634](https://github.com/mixxxdj/mixxx/pull/3634) - [#3635](https://github.com/mixxxdj/mixxx/pull/3635) - [#3636](https://github.com/mixxxdj/mixxx/pull/3636) - [#3676](https://github.com/mixxxdj/mixxx/pull/3676) - [#3880](https://github.com/mixxxdj/mixxx/pull/3880) - [#4085](https://github.com/mixxxdj/mixxx/pull/4085) - [#4524](https://github.com/mixxxdj/mixxx/pull/4524) - [#4533](https://github.com/mixxxdj/mixxx/pull/4533) - [#4521](https://github.com/mixxxdj/mixxx/pull/4521) - [#4585](https://github.com/mixxxdj/mixxx/pull/4585) - [#4692](https://github.com/mixxxdj/mixxx/pull/4692) - [#4566](https://github.com/mixxxdj/mixxx/pull/4566) - [#4599](https://github.com/mixxxdj/mixxx/pull/4599) - [#4624](https://github.com/mixxxdj/mixxx/pull/4624) - [#4627](https://github.com/mixxxdj/mixxx/pull/4627) - [#4738](https://github.com/mixxxdj/mixxx/pull/4738) - [#11160](https://github.com/mixxxdj/mixxx/pull/11160) - [#11662](https://github.com/mixxxdj/mixxx/pull/11662) - [#11622](https://github.com/mixxxdj/mixxx/pull/11622) - [#12400](https://github.com/mixxxdj/mixxx/pull/12400) - [#12468](https://github.com/mixxxdj/mixxx/pull/12468) * feat(control): Do not show CO 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" CO [#12305](https://github.com/mixxxdj/mixxx/pull/12305) [#12304](https://github.com/mixxxdj/mixxx/issues/12304) @@ -562,63 +409,12 @@ * 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) * Repeat certain control actions if keyboard key is held [#12474](https://github.com/mixxxdj/mixxx/pull/12474) +* 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) ### Skins -* Add experimental QML user interface - [#3345](https://github.com/mixxxdj/mixxx/pull/3345) - [#3446](https://github.com/mixxxdj/mixxx/pull/3446) - [#3854](https://github.com/mixxxdj/mixxx/pull/3854) - [#3891](https://github.com/mixxxdj/mixxx/pull/3891) - [#2874](https://github.com/mixxxdj/mixxx/pull/2874) - [#3915](https://github.com/mixxxdj/mixxx/pull/3915) - [#3894](https://github.com/mixxxdj/mixxx/pull/3894) - [#3920](https://github.com/mixxxdj/mixxx/pull/3920) - [#3907](https://github.com/mixxxdj/mixxx/pull/3907) - [#3925](https://github.com/mixxxdj/mixxx/pull/3925) - [#3928](https://github.com/mixxxdj/mixxx/pull/3928) - [#3932](https://github.com/mixxxdj/mixxx/pull/3932) - [#3911](https://github.com/mixxxdj/mixxx/pull/3911) - [#3937](https://github.com/mixxxdj/mixxx/pull/3937) - [#3940](https://github.com/mixxxdj/mixxx/pull/3940) - [#3913](https://github.com/mixxxdj/mixxx/pull/3913) - [#3950](https://github.com/mixxxdj/mixxx/pull/3950) - [#3919](https://github.com/mixxxdj/mixxx/pull/3919) - [#3955](https://github.com/mixxxdj/mixxx/pull/3955) - [#3957](https://github.com/mixxxdj/mixxx/pull/3957) - [#3961](https://github.com/mixxxdj/mixxx/pull/3961) - [#3952](https://github.com/mixxxdj/mixxx/pull/3952) - [#3963](https://github.com/mixxxdj/mixxx/pull/3963) - [#3971](https://github.com/mixxxdj/mixxx/pull/3971) - [#3959](https://github.com/mixxxdj/mixxx/pull/3959) - [#3972](https://github.com/mixxxdj/mixxx/pull/3972) - [#3992](https://github.com/mixxxdj/mixxx/pull/3992) - [#4003](https://github.com/mixxxdj/mixxx/pull/4003) - [#4004](https://github.com/mixxxdj/mixxx/pull/4004) - [#3999](https://github.com/mixxxdj/mixxx/pull/3999) - [#4000](https://github.com/mixxxdj/mixxx/pull/4000) - [#4067](https://github.com/mixxxdj/mixxx/pull/4067) - [#4068](https://github.com/mixxxdj/mixxx/pull/4068) - [#4060](https://github.com/mixxxdj/mixxx/pull/4060) - [#4037](https://github.com/mixxxdj/mixxx/pull/4037) - [#4414](https://github.com/mixxxdj/mixxx/pull/4414) - [#3934](https://github.com/mixxxdj/mixxx/pull/3934) - [#4117](https://github.com/mixxxdj/mixxx/pull/4117) - [#4327](https://github.com/mixxxdj/mixxx/pull/4327) - [#4339](https://github.com/mixxxdj/mixxx/pull/4339) - [#4568](https://github.com/mixxxdj/mixxx/pull/4568) - [#4576](https://github.com/mixxxdj/mixxx/pull/4576) - [#4591](https://github.com/mixxxdj/mixxx/pull/4591) - [#4616](https://github.com/mixxxdj/mixxx/pull/4616) - [#4567](https://github.com/mixxxdj/mixxx/pull/4567) - [#4629](https://github.com/mixxxdj/mixxx/pull/4629) - [#4643](https://github.com/mixxxdj/mixxx/pull/4643) - [#4650](https://github.com/mixxxdj/mixxx/pull/4650) - [#4654](https://github.com/mixxxdj/mixxx/pull/4654) - [#4673](https://github.com/mixxxdj/mixxx/pull/4673) - [#4680](https://github.com/mixxxdj/mixxx/pull/4680) - [#4681](https://github.com/mixxxdj/mixxx/pull/4681) - [#4736](https://github.com/mixxxdj/mixxx/pull/4736) * Add harmonic keywheel window [#1695](https://github.com/mixxxdj/mixxx/pull/1695) [#3622](https://github.com/mixxxdj/mixxx/pull/3622) @@ -635,6 +431,7 @@ [#3939](https://github.com/mixxxdj/mixxx/pull/3939) * Fix leaked controls [#4213](https://github.com/mixxxdj/mixxx/pull/4213) [#10293](https://github.com/mixxxdj/mixxx/issues/10293) * 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) * 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) @@ -664,7 +461,6 @@ * Fix sidebar item styling [#11975](https://github.com/mixxxdj/mixxx/pull/11975) [#11957](https://github.com/mixxxdj/mixxx/issues/11957) -* Shade: Audio Latency meter fix [#11601](https://github.com/mixxxdj/mixxx/pull/11601) * 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: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) @@ -672,6 +468,11 @@ * 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) +* 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) ### Waveforms and GL Widgets @@ -835,326 +636,39 @@ [#12123](https://github.com/mixxxdj/mixxx/pull/12123) [#12089](https://github.com/mixxxdj/mixxx/issues/12089) [#12095](https://github.com/mixxxdj/mixxx/pull/12095) -* macOS packaging: Enable app sandbox in unsigned 2.4 builds too +* macOS packaging: Enable app sandbox and fix related issues [#12138](https://github.com/mixxxdj/mixxx/pull/12138) -* macOS packaging: Fix regression that caused `Sandbox::canAccess` to fail [#12457](https://github.com/mixxxdj/mixxx/pull/12457) [#12137](https://github.com/mixxxdj/mixxx/issues/12137) [#11552](https://github.com/mixxxdj/mixxx/issues/11552) -* macOS packaging: Fix running macOS bundle from development build directory [#12099](https://github.com/mixxxdj/mixxx/pull/12099) -* Hide applocal group from Windows installer [#12118](https://github.com/mixxxdj/mixxx/pull/12118) [#11992](https://github.com/mixxxdj/mixxx/issues/11992) + [#4018](https://github.com/mixxxdj/mixxx/pull/4018) + [#10373](https://github.com/mixxxdj/mixxx/issues/10373) +* macOS: Use rounded Mixxx Icon to follow Apples style guide + [#4545](https://github.com/mixxxdj/mixxx/pull/4545) + [#10958](https://github.com/mixxxdj/mixxx/pull/10958) +* OpenBSD: Allow building Mixxx [#11083](https://github.com/mixxxdj/mixxx/pull/11083) +* Improve Linux launcher + [#11826](https://github.com/mixxxdj/mixxx/pull/11826) + [#11820](https://github.com/mixxxdj/mixxx/issues/11820) + [#11805](https://github.com/mixxxdj/mixxx/pull/11805) + [#12424](https://github.com/mixxxdj/mixxx/pull/12424) + +### Track properties + +* Fix a SIGSEGV after a debug assertion [#4316](https://github.com/mixxxdj/mixxx/pull/4316) +* Apply pending changes also when saving via hotkey [#4562](https://github.com/mixxxdj/mixxx/pull/4562) [#10612](https://github.com/mixxxdj/mixxx/issues/10612) +* Fix crash when trying to scale 0.0 BPM [#4587](https://github.com/mixxxdj/mixxx/pull/4587) [#1955853](https://github.com/mixxxdj/mixxx/issues/10625) +* Add track color selector [#11436](https://github.com/mixxxdj/mixxx/pull/11436) [#10324](https://github.com/mixxxdj/mixxx/issues/10324) +* Don't clear unsaved properties when updating star rating [#11565](https://github.com/mixxxdj/mixxx/pull/11565) [#11540](https://github.com/mixxxdj/mixxx/issues/11540) +* Focus Double-clicked property field for edit + [#11764](https://github.com/mixxxdj/mixxx/pull/11764) + [#11804](https://github.com/mixxxdj/mixxx/pull/11804) + [#11802](https://github.com/mixxxdj/mixxx/issues/11802) +* Display the samplerate [#12418](https://github.com/mixxxdj/mixxx/pull/12418) -### Other +### Preferences -* Improve and fix the CMake build system - [#2943](https://github.com/mixxxdj/mixxx/pull/2943) - [#3046](https://github.com/mixxxdj/mixxx/pull/3046) - [#3114](https://github.com/mixxxdj/mixxx/pull/3114) - [#3471](https://github.com/mixxxdj/mixxx/pull/3471) - [#3765](https://github.com/mixxxdj/mixxx/pull/3765) - [#3849](https://github.com/mixxxdj/mixxx/pull/3849) - [#3876](https://github.com/mixxxdj/mixxx/pull/3876) - [#4098](https://github.com/mixxxdj/mixxx/pull/4098) - [#4113](https://github.com/mixxxdj/mixxx/pull/4113) - [#4166](https://github.com/mixxxdj/mixxx/pull/4166) - [#4185](https://github.com/mixxxdj/mixxx/pull/4185) - [#4187](https://github.com/mixxxdj/mixxx/pull/4187) - [#4351](https://github.com/mixxxdj/mixxx/pull/4351) - [#4423](https://github.com/mixxxdj/mixxx/pull/4423) - [#4422](https://github.com/mixxxdj/mixxx/pull/4422) - [#4497](https://github.com/mixxxdj/mixxx/pull/4497) - [#4514](https://github.com/mixxxdj/mixxx/pull/4514) - [#3550](https://github.com/mixxxdj/mixxx/pull/3550) - [#4861](https://github.com/mixxxdj/mixxx/pull/4861) - [#10855](https://github.com/mixxxdj/mixxx/pull/10855) - [#10896](https://github.com/mixxxdj/mixxx/pull/10896) - [#10926](https://github.com/mixxxdj/mixxx/pull/10926) - [#11368](https://github.com/mixxxdj/mixxx/pull/11368) - [#11144](https://github.com/mixxxdj/mixxx/pull/11144) - [#4866](https://github.com/mixxxdj/mixxx/pull/4866) - [#12442](https://github.com/mixxxdj/mixxx/pull/12442) - [#12351](https://github.com/mixxxdj/mixxx/pull/12351) - [#12288](https://github.com/mixxxdj/mixxx/pull/12288) - [#12197](https://github.com/mixxxdj/mixxx/pull/12197) - [#11754](https://github.com/mixxxdj/mixxx/pull/11754) - [#11741](https://github.com/mixxxdj/mixxx/issues/11741) - [#12518](https://github.com/mixxxdj/mixxx/pull/12518) -* Improve GitHub workflow continuous integration - [#2937](https://github.com/mixxxdj/mixxx/pull/2937) - [#3041](https://github.com/mixxxdj/mixxx/pull/3041) - [#3300](https://github.com/mixxxdj/mixxx/pull/3300) - [#4007](https://github.com/mixxxdj/mixxx/pull/4007) - [#4084](https://github.com/mixxxdj/mixxx/pull/4084) - [#4250](https://github.com/mixxxdj/mixxx/pull/4250) - [#4274](https://github.com/mixxxdj/mixxx/pull/4274) - [#4313](https://github.com/mixxxdj/mixxx/pull/4313) - [#4226](https://github.com/mixxxdj/mixxx/pull/4226) - [#4452](https://github.com/mixxxdj/mixxx/pull/4452) - [#4742](https://github.com/mixxxdj/mixxx/pull/4742) - [#4741](https://github.com/mixxxdj/mixxx/pull/4741) - [#4795](https://github.com/mixxxdj/mixxx/pull/4795) - [#4798](https://github.com/mixxxdj/mixxx/pull/4798) - [#4792](https://github.com/mixxxdj/mixxx/pull/4792) - [#4829](https://github.com/mixxxdj/mixxx/pull/4829) - [#4822](https://github.com/mixxxdj/mixxx/pull/4822) - [#4820](https://github.com/mixxxdj/mixxx/pull/4820) - [#4821](https://github.com/mixxxdj/mixxx/pull/4821) - [#4818](https://github.com/mixxxdj/mixxx/pull/4818) - [#4819](https://github.com/mixxxdj/mixxx/pull/4819) - [#4817](https://github.com/mixxxdj/mixxx/pull/4817) - [#4815](https://github.com/mixxxdj/mixxx/pull/4815) - [#10938](https://github.com/mixxxdj/mixxx/pull/10938) - [#11038](https://github.com/mixxxdj/mixxx/pull/11038) - [#11066](https://github.com/mixxxdj/mixxx/pull/11066) - [#11089](https://github.com/mixxxdj/mixxx/pull/11089) - [#11156](https://github.com/mixxxdj/mixxx/pull/11156) - [#11193](https://github.com/mixxxdj/mixxx/pull/11193) - [#11396](https://github.com/mixxxdj/mixxx/pull/11396) - [#11386](https://github.com/mixxxdj/mixxx/issues/11386) - [#11414](https://github.com/mixxxdj/mixxx/pull/11414) - [#12502](https://github.com/mixxxdj/mixxx/pull/12502) - [#12434](https://github.com/mixxxdj/mixxx/pull/12434) - [#11962](https://github.com/mixxxdj/mixxx/pull/11962) - [#11945](https://github.com/mixxxdj/mixxx/pull/11945) -* Improve pre-commit hook - [#2796](https://github.com/mixxxdj/mixxx/pull/2796) - [#3923](https://github.com/mixxxdj/mixxx/pull/3923) - [#3948](https://github.com/mixxxdj/mixxx/pull/3948) - [#3929](https://github.com/mixxxdj/mixxx/pull/3929) - [#4192](https://github.com/mixxxdj/mixxx/pull/4192) - [#4282](https://github.com/mixxxdj/mixxx/pull/4282) - [#4278](https://github.com/mixxxdj/mixxx/pull/4278) - [#4314](https://github.com/mixxxdj/mixxx/pull/4314) - [#4321](https://github.com/mixxxdj/mixxx/pull/4321) - [#4374](https://github.com/mixxxdj/mixxx/pull/4374) - [#4494](https://github.com/mixxxdj/mixxx/pull/4494) - [#4512](https://github.com/mixxxdj/mixxx/pull/4512) - [#4558](https://github.com/mixxxdj/mixxx/pull/4558) - [#4580](https://github.com/mixxxdj/mixxx/pull/4580) - [#4743](https://github.com/mixxxdj/mixxx/pull/4743) - [#10950](https://github.com/mixxxdj/mixxx/pull/10950) - [#10980](https://github.com/mixxxdj/mixxx/pull/10980) - [#11078](https://github.com/mixxxdj/mixxx/pull/11078) - [#10929](https://github.com/mixxxdj/mixxx/pull/10929) - [#11369](https://github.com/mixxxdj/mixxx/pull/11369) - [#11388](https://github.com/mixxxdj/mixxx/pull/11388) - [#11889](https://github.com/mixxxdj/mixxx/pull/11889) -* Improve Lauchpad PPA builds - [#4277](https://github.com/mixxxdj/mixxx/pull/4277) - [#4285](https://github.com/mixxxdj/mixxx/pull/4285) - [#4425](https://github.com/mixxxdj/mixxx/pull/4425) - [#12347](https://github.com/mixxxdj/mixxx/pull/12347) - [#11729](https://github.com/mixxxdj/mixxx/pull/11729) -* Update vcpkg build environment for Windows and macOS - [#4163](https://github.com/mixxxdj/mixxx/pull/4163) - [#4225](https://github.com/mixxxdj/mixxx/pull/4225) - [#4338](https://github.com/mixxxdj/mixxx/pull/4338) - [#4709](https://github.com/mixxxdj/mixxx/pull/4709) - [#4717](https://github.com/mixxxdj/mixxx/pull/4717) - [#10872](https://github.com/mixxxdj/mixxx/pull/10872) - [#10966](https://github.com/mixxxdj/mixxx/pull/10966) - [#11050](https://github.com/mixxxdj/mixxx/pull/11050) - [#11074](https://github.com/mixxxdj/mixxx/pull/11074) - [#11238](https://github.com/mixxxdj/mixxx/pull/11238) - [#11457](https://github.com/mixxxdj/mixxx/pull/11457) - [#11562](https://github.com/mixxxdj/mixxx/pull/11562) - [#12370](https://github.com/mixxxdj/mixxx/pull/12370) - [#11733](https://github.com/mixxxdj/mixxx/pull/11733) -* Windows: Fix extraction of build environment archive when using 7-Zip [#11510](https://github.com/mixxxdj/mixxx/pull/11510) -* Fix Windows warnings and enable "Treat all compiler warnings as errors" [#11607](https://github.com/mixxxdj/mixxx/pull/11607) [#12417](https://github.com/mixxxdj/mixxx/pull/12417) -* Devendor libraries from the mixxx lib directory - [#4201](https://github.com/mixxxdj/mixxx/pull/4201) - [#4202](https://github.com/mixxxdj/mixxx/pull/4202) - [#11839](https://github.com/mixxxdj/mixxx/pull/11839) - [#11742](https://github.com/mixxxdj/mixxx/issues/11742) - [#11841](https://github.com/mixxxdj/mixxx/pull/11841) -* [#4540](https://github.com/mixxxdj/mixxx/pull/4540) -* Update hidapi to 0.11.2 [#4783](https://github.com/mixxxdj/mixxx/pull/4783) -* Update xwax to Version 1.8 [#4597](https://github.com/mixxxdj/mixxx/pull/4597) [#10627](https://github.com/mixxxdj/mixxx/issues/10627) -* Update rigtorp/SPSCQueue [#4678](https://github.com/mixxxdj/mixxx/pull/4678) -* macOS: Fail early if the Xcode command line tools are not installed. [#11699](https://github.com/mixxxdj/mixxx/pull/11699) -* macOS buildenv: Improve error messages for CI-only wrappers [#12382](https://github.com/mixxxdj/mixxx/pull/12382) -* Improve cmake first time error reporting [#11635](https://github.com/mixxxdj/mixxx/pull/11635) [#11596](https://github.com/mixxxdj/mixxx/issues/11596) [#11597](https://github.com/mixxxdj/mixxx/issues/11597) -* Manual include #include "moc_*.cpp" to speed up build [#11567](https://github.com/mixxxdj/mixxx/pull/11567) -* Fix building Mixxx with SDK 11 [#11766](https://github.com/mixxxdj/mixxx/pull/11766) -* chore: Fix spelling and formatting issues [#11890](https://github.com/mixxxdj/mixxx/pull/11890) -* Prefer mold or lld as linker to speed up linking [#11790](https://github.com/mixxxdj/mixxx/pull/11790) [#11796](https://github.com/mixxxdj/mixxx/pull/11796) -* feat: allow sanitizers on GCC as well [#12002](https://github.com/mixxxdj/mixxx/pull/12002) -* Update manifest even if one job fails [#12091](https://github.com/mixxxdj/mixxx/pull/12091) -* Mixxx 2.4: Fail Qt6 build not on GitHub Actions [#12293](https://github.com/mixxxdj/mixxx/pull/12293) -* CMakeLists: Relativize `__FILE__` paths by default [#12350](https://github.com/mixxxdj/mixxx/pull/12350) -* Debug: Add Rust-inspired `DBG` macro for quick print-debugging [#12344](https://github.com/mixxxdj/mixxx/pull/12344) [#12383](https://github.com/mixxxdj/mixxx/pull/12383) -* Migration to Qt6 (work in progress) - [#4052](https://github.com/mixxxdj/mixxx/pull/4052) - [#4295](https://github.com/mixxxdj/mixxx/pull/4295) - [#4293](https://github.com/mixxxdj/mixxx/pull/4293) - [#4294](https://github.com/mixxxdj/mixxx/pull/4294) - [#4291](https://github.com/mixxxdj/mixxx/pull/4291) - [#4290](https://github.com/mixxxdj/mixxx/pull/4290) - [#4300](https://github.com/mixxxdj/mixxx/pull/4300) - [#4302](https://github.com/mixxxdj/mixxx/pull/4302) - [#4289](https://github.com/mixxxdj/mixxx/pull/4289) - [#4292](https://github.com/mixxxdj/mixxx/pull/4292) - [#4299](https://github.com/mixxxdj/mixxx/pull/4299) - [#4051](https://github.com/mixxxdj/mixxx/pull/4051) - [#4303](https://github.com/mixxxdj/mixxx/pull/4303) - [#4305](https://github.com/mixxxdj/mixxx/pull/4305) - [#4304](https://github.com/mixxxdj/mixxx/pull/4304) - [#4306](https://github.com/mixxxdj/mixxx/pull/4306) - [#4308](https://github.com/mixxxdj/mixxx/pull/4308) - [#4309](https://github.com/mixxxdj/mixxx/pull/4309) - [#4322](https://github.com/mixxxdj/mixxx/pull/4322) - [#4373](https://github.com/mixxxdj/mixxx/pull/4373) - [#4371](https://github.com/mixxxdj/mixxx/pull/4371) - [#4375](https://github.com/mixxxdj/mixxx/pull/4375) - [#4378](https://github.com/mixxxdj/mixxx/pull/4378) - [#4381](https://github.com/mixxxdj/mixxx/pull/4381) - [#4380](https://github.com/mixxxdj/mixxx/pull/4380) - [#4376](https://github.com/mixxxdj/mixxx/pull/4376) - [#4379](https://github.com/mixxxdj/mixxx/pull/4379) - [#4372](https://github.com/mixxxdj/mixxx/pull/4372) - [#4377](https://github.com/mixxxdj/mixxx/pull/4377) - [#4387](https://github.com/mixxxdj/mixxx/pull/4387) - [#4391](https://github.com/mixxxdj/mixxx/pull/4391) - [#4392](https://github.com/mixxxdj/mixxx/pull/4392) - [#4395](https://github.com/mixxxdj/mixxx/pull/4395) - [#4397](https://github.com/mixxxdj/mixxx/pull/4397) - [#4396](https://github.com/mixxxdj/mixxx/pull/4396) - [#4402](https://github.com/mixxxdj/mixxx/pull/4402) - [#4405](https://github.com/mixxxdj/mixxx/pull/4405) - [#4394](https://github.com/mixxxdj/mixxx/pull/4394) - [#4404](https://github.com/mixxxdj/mixxx/pull/4404) - [#4401](https://github.com/mixxxdj/mixxx/pull/4401) - [#4400](https://github.com/mixxxdj/mixxx/pull/4400) - [#4403](https://github.com/mixxxdj/mixxx/pull/4403) - [#4407](https://github.com/mixxxdj/mixxx/pull/4407) - [#4399](https://github.com/mixxxdj/mixxx/pull/4399) - [#4406](https://github.com/mixxxdj/mixxx/pull/4406) - [#4420](https://github.com/mixxxdj/mixxx/pull/4420) - [#4415](https://github.com/mixxxdj/mixxx/pull/4415) - [#4417](https://github.com/mixxxdj/mixxx/pull/4417) - [#4419](https://github.com/mixxxdj/mixxx/pull/4419) - [#4416](https://github.com/mixxxdj/mixxx/pull/4416) - [#4418](https://github.com/mixxxdj/mixxx/pull/4418) - [#4547](https://github.com/mixxxdj/mixxx/pull/4547) - [#4433](https://github.com/mixxxdj/mixxx/pull/4433) - [#4434](https://github.com/mixxxdj/mixxx/pull/4434) - [#4441](https://github.com/mixxxdj/mixxx/pull/4441) - [#4445](https://github.com/mixxxdj/mixxx/pull/4445) - [#4446](https://github.com/mixxxdj/mixxx/pull/4446) - [#4444](https://github.com/mixxxdj/mixxx/pull/4444) - [#4436](https://github.com/mixxxdj/mixxx/pull/4436) - [#4437](https://github.com/mixxxdj/mixxx/pull/4437) - [#4440](https://github.com/mixxxdj/mixxx/pull/4440) - [#4430](https://github.com/mixxxdj/mixxx/pull/4430) - [#4435](https://github.com/mixxxdj/mixxx/pull/4435) - [#4443](https://github.com/mixxxdj/mixxx/pull/4443) - [#4439](https://github.com/mixxxdj/mixxx/pull/4439) - [#4442](https://github.com/mixxxdj/mixxx/pull/4442) - [#4438](https://github.com/mixxxdj/mixxx/pull/4438) - [#4449](https://github.com/mixxxdj/mixxx/pull/4449) - [#4451](https://github.com/mixxxdj/mixxx/pull/4451) - [#4453](https://github.com/mixxxdj/mixxx/pull/4453) - [#4478](https://github.com/mixxxdj/mixxx/pull/4478) - [#4479](https://github.com/mixxxdj/mixxx/pull/4479) - [#4506](https://github.com/mixxxdj/mixxx/pull/4506) - [#4556](https://github.com/mixxxdj/mixxx/pull/4556) - [#4554](https://github.com/mixxxdj/mixxx/pull/4554) - [#4555](https://github.com/mixxxdj/mixxx/pull/4555) - [#4552](https://github.com/mixxxdj/mixxx/pull/4552) - [#4549](https://github.com/mixxxdj/mixxx/pull/4549) - [#4788](https://github.com/mixxxdj/mixxx/pull/4788) - [#4620](https://github.com/mixxxdj/mixxx/pull/4620) - [#4641](https://github.com/mixxxdj/mixxx/pull/4641) - [#4649](https://github.com/mixxxdj/mixxx/pull/4649) - [#4679](https://github.com/mixxxdj/mixxx/pull/4679) - [#10928](https://github.com/mixxxdj/mixxx/pull/10928) - [#10927](https://github.com/mixxxdj/mixxx/pull/10927) - [#11063](https://github.com/mixxxdj/mixxx/pull/11063) - [#11153](https://github.com/mixxxdj/mixxx/pull/11153) - [#11180](https://github.com/mixxxdj/mixxx/pull/11180) [#11167](https://github.com/mixxxdj/mixxx/issues/11167) - [#11181](https://github.com/mixxxdj/mixxx/pull/11181) - [#11266](https://github.com/mixxxdj/mixxx/pull/11266) - [#11312](https://github.com/mixxxdj/mixxx/pull/11312) - [#11389](https://github.com/mixxxdj/mixxx/pull/11389) - [#4393](https://github.com/mixxxdj/mixxx/pull/4393) - [#12268](https://github.com/mixxxdj/mixxx/pull/12268) - [#12240](https://github.com/mixxxdj/mixxx/pull/12240) - [#12056](https://github.com/mixxxdj/mixxx/pull/12056) - [#12430](https://github.com/mixxxdj/mixxx/pull/12430) - [#12029](https://github.com/mixxxdj/mixxx/pull/12029) -* Allow to compile with precompiled headers, enabled on Windows by default - [#12381](https://github.com/mixxxdj/mixxx/pull/12381) - [#12080](https://github.com/mixxxdj/mixxx/pull/12080) - [#12410](https://github.com/mixxxdj/mixxx/pull/12410) - [#12360](https://github.com/mixxxdj/mixxx/pull/12360) - [#12352](https://github.com/mixxxdj/mixxx/pull/12352) - [#12346](https://github.com/mixxxdj/mixxx/pull/12346) - [#12338](https://github.com/mixxxdj/mixxx/pull/12338) - [#12327](https://github.com/mixxxdj/mixxx/pull/12327) - [#12308](https://github.com/mixxxdj/mixxx/pull/12308) - [#12303](https://github.com/mixxxdj/mixxx/pull/12303) - [#12302](https://github.com/mixxxdj/mixxx/pull/12302) - [#12298](https://github.com/mixxxdj/mixxx/pull/12298) - [#12229](https://github.com/mixxxdj/mixxx/pull/12229) - [#12079](https://github.com/mixxxdj/mixxx/pull/12079) - [#12058](https://github.com/mixxxdj/mixxx/pull/12058) - [#12037](https://github.com/mixxxdj/mixxx/pull/12037) - [#12024](https://github.com/mixxxdj/mixxx/pull/12024) - [#12025](https://github.com/mixxxdj/mixxx/pull/12025) -* Made use of inclusive language - [#2894](https://github.com/mixxxdj/mixxx/pull/2894) - [#3868](https://github.com/mixxxdj/mixxx/pull/3868) - [#11017](https://github.com/mixxxdj/mixxx/pull/11017) - [#11968](https://github.com/mixxxdj/mixxx/pull/11968) - [#11959](https://github.com/mixxxdj/mixxx/pull/11959) - [#11942](https://github.com/mixxxdj/mixxx/pull/11942) -* Improve the unit tests - [#2938](https://github.com/mixxxdj/mixxx/pull/2938) - [#2980](https://github.com/mixxxdj/mixxx/pull/2980) - [#3006](https://github.com/mixxxdj/mixxx/pull/3006) - [#4345](https://github.com/mixxxdj/mixxx/pull/4345) -* 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) -* Colored logging console output - [#3197](https://github.com/mixxxdj/mixxx/pull/3197) -* Improve command line argument parser - [#3640](https://github.com/mixxxdj/mixxx/pull/3640) - [#3962](https://github.com/mixxxdj/mixxx/pull/3962) - [#4022](https://github.com/mixxxdj/mixxx/pull/4022) - [#4036](https://github.com/mixxxdj/mixxx/pull/4036) - [#4170](https://github.com/mixxxdj/mixxx/pull/4170) - [#4057](https://github.com/mixxxdj/mixxx/pull/4057) -* Improve message when dealing with macOS sandbox [#4018](https://github.com/mixxxdj/mixxx/pull/4018) [#10373](https://github.com/mixxxdj/mixxx/issues/10373) -* Moved contribution guidelines into our git repository [#2699](https://github.com/mixxxdj/mixxx/pull/2699) -* Make windows_buildenv.bat work with spaces in path [#4896](https://github.com/mixxxdj/mixxx/pull/4896) -* Automate deployment of CHANGELOG to the manual - [#4180](https://github.com/mixxxdj/mixxx/pull/4180) - [#4256](https://github.com/mixxxdj/mixxx/pull/4256) - [#4208](https://github.com/mixxxdj/mixxx/pull/4208) - [#4228](https://github.com/mixxxdj/mixxx/pull/4228) - [#4222](https://github.com/mixxxdj/mixxx/pull/4222) * Always show tooltips in preferences [#4198](https://github.com/mixxxdj/mixxx/pull/4198) [#9716](https://github.com/mixxxdj/mixxx/issues/9716) -* Allow to build Mixxx on Linux without ALSA, working around a Pipewire bug [#4242](https://github.com/mixxxdj/mixxx/pull/4242) -* 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) -* DlgTrackInfo: Fixed a SIGSEGV after a debug assertion [#4316](https://github.com/mixxxdj/mixxx/pull/4316) -* Library Preferences: Added link to settings files info in the manual [#4367](https://github.com/mixxxdj/mixxx/pull/4367) -* Use rounded Mixxx Icon for MacOS to follow Apples style guide [#4545](https://github.com/mixxxdj/mixxx/pull/4545) -* Show native path separators in command line argument --help [#4657](https://github.com/mixxxdj/mixxx/pull/4657) -* Add 13 new translation languages [#4785](https://github.com/mixxxdj/mixxx/pull/4785) [#9702](https://github.com/mixxxdj/mixxx/issues/9702) -* Fix translation related warnings [#11539](https://github.com/mixxxdj/mixxx/pull/11539) -* Remove redundant `cmn` translation in favor of `zh` [#11793](https://github.com/mixxxdj/mixxx/pull/11793) [#11791](https://github.com/mixxxdj/mixxx/issues/11791) -* Improve Vinyl control quality indicator [#3279](https://github.com/mixxxdj/mixxx/pull/3279) -* Track info dialog: Apply pending changes also when saving via hotkey [#4562](https://github.com/mixxxdj/mixxx/pull/4562) [#10612](https://github.com/mixxxdj/mixxx/issues/10612) -* Track info dialog: Fix crash when trying to scale 0.0 BPM [#4587](https://github.com/mixxxdj/mixxx/pull/4587) [#1955853](https://github.com/mixxxdj/mixxx/issues/10625) -* Track info dialog: Add track color selector [#11436](https://github.com/mixxxdj/mixxx/pull/11436) [#10324](https://github.com/mixxxdj/mixxx/issues/10324) -* Tweak remove/hide track confirm message to match confirm exit message [#4577](https://github.com/mixxxdj/mixxx/pull/4577) [#1947992](https://github.com/mixxxdj/mixxx/issues/10577) -* Implement Un-eject by pressing eject again - [#4668](https://github.com/mixxxdj/mixxx/pull/4668) - [#11246](https://github.com/mixxxdj/mixxx/pull/11246) * Preferences > Effects: Fix Tab key navigation / UX [#4702](https://github.com/mixxxdj/mixxx/pull/4702) [#10579](https://github.com/mixxxdj/mixxx/issues/10579) * Preferences: Added option to keep deck playing on track load [#10944](https://github.com/mixxxdj/mixxx/pull/10944) [#10548](https://github.com/mixxxdj/mixxx/issues/10548) * Preferences: always enable Alt shortcut keys [#11145](https://github.com/mixxxdj/mixxx/pull/11145) [#10413](https://github.com/mixxxdj/mixxx/issues/10413) @@ -1165,187 +679,14 @@ * macOS: set preferences dialog title to the selected page title [#11696](https://github.com/mixxxdj/mixxx/pull/11696) * macOS: fix the preferences menu and opening the settings directory [#11679](https://github.com/mixxxdj/mixxx/pull/11679) * macOS: fix slider styling in preferences dialog [#11647](https://github.com/mixxxdj/mixxx/pull/11647) +* Preferences Vinyl control Improve quality indicator [#3279](https://github.com/mixxxdj/mixxx/pull/3279) * Preferences > Mixer: apply & save settings only in slotApply(), fix bugs, improve UX [#11527](https://github.com/mixxxdj/mixxx/pull/11527) * Preferences > Mixer: fix reset of EQ auto-reset checkbox [#11818](https://github.com/mixxxdj/mixxx/pull/11818) [#11817](https://github.com/mixxxdj/mixxx/issues/11817) * Preferences > Interface: avoid unneeded skin reload, clean up [#11853](https://github.com/mixxxdj/mixxx/pull/11853) * Preferences > Hardware: sound tab order [#11926](https://github.com/mixxxdj/mixxx/pull/11926) -* macOS: Add better rasterization of program icon [#10958](https://github.com/mixxxdj/mixxx/pull/10958) -* make decks' xfader assignment persistent [#12074](https://github.com/mixxxdj/mixxx/pull/12074) [#10122](https://github.com/mixxxdj/mixxx/issues/10122) -* Allow building Mixxx on OpenBSD [#11083](https://github.com/mixxxdj/mixxx/pull/11083) -* Fix autogenerated metainfo [#11383](https://github.com/mixxxdj/mixxx/pull/11383) -* Fix setting the wrong default cue color [#11554](https://github.com/mixxxdj/mixxx/pull/11554) [#11260](https://github.com/mixxxdj/mixxx/issues/11260) -* (fix) linux launcher: add missing quote to command line [#11826](https://github.com/mixxxdj/mixxx/pull/11826) [#11820](https://github.com/mixxxdj/mixxx/issues/11820) -* Delete obsolete -platform xcb args [#11805](https://github.com/mixxxdj/mixxx/pull/11805) -* A small fix to .desktop file that improves Gnome dock integration on [#12424](https://github.com/mixxxdj/mixxx/pull/12424) -* Replace Launchpad bugs by GitHub issues - [#10850](https://github.com/mixxxdj/mixxx/pull/10850) - [#10865](https://github.com/mixxxdj/mixxx/pull/10865) - [#4877](https://github.com/mixxxdj/mixxx/pull/4877) - [#11270](https://github.com/mixxxdj/mixxx/pull/11270) - [#11377](https://github.com/mixxxdj/mixxx/pull/11377) - [#11379](https://github.com/mixxxdj/mixxx/pull/11379) -* Misc. refactorings - [#3154](https://github.com/mixxxdj/mixxx/pull/3154) - [#2870](https://github.com/mixxxdj/mixxx/pull/2870) - [#2872](https://github.com/mixxxdj/mixxx/pull/2872) - [#2978](https://github.com/mixxxdj/mixxx/pull/2978) - [#2969](https://github.com/mixxxdj/mixxx/pull/2969) - [#3016](https://github.com/mixxxdj/mixxx/pull/3016) - [#3320](https://github.com/mixxxdj/mixxx/pull/3320) - [#3356](https://github.com/mixxxdj/mixxx/pull/3356) - [#3453](https://github.com/mixxxdj/mixxx/pull/3453) - [#3487](https://github.com/mixxxdj/mixxx/pull/3487) - [#3558](https://github.com/mixxxdj/mixxx/pull/3558) - [#3685](https://github.com/mixxxdj/mixxx/pull/3685) - [#3741](https://github.com/mixxxdj/mixxx/pull/3741) - [#3744](https://github.com/mixxxdj/mixxx/pull/3744) - [#3753](https://github.com/mixxxdj/mixxx/pull/3753) - [#3761](https://github.com/mixxxdj/mixxx/pull/3761) - [#3834](https://github.com/mixxxdj/mixxx/pull/3834) - [#3842](https://github.com/mixxxdj/mixxx/pull/3842) - [#3853](https://github.com/mixxxdj/mixxx/pull/3853) - [#3874](https://github.com/mixxxdj/mixxx/pull/3874) - [#3883](https://github.com/mixxxdj/mixxx/pull/3883) - [#3922](https://github.com/mixxxdj/mixxx/pull/3922) - [#3947](https://github.com/mixxxdj/mixxx/pull/3947) - [#3974](https://github.com/mixxxdj/mixxx/pull/3974) - [#4024](https://github.com/mixxxdj/mixxx/pull/4024) - [#4026](https://github.com/mixxxdj/mixxx/pull/4026) - [#4034](https://github.com/mixxxdj/mixxx/pull/4034) - [#4038](https://github.com/mixxxdj/mixxx/pull/4038) - [#4039](https://github.com/mixxxdj/mixxx/pull/4039) - [#4043](https://github.com/mixxxdj/mixxx/pull/4043) - [#4053](https://github.com/mixxxdj/mixxx/pull/4053) - [#4072](https://github.com/mixxxdj/mixxx/pull/4072) - [#4097](https://github.com/mixxxdj/mixxx/pull/4097) - [#4096](https://github.com/mixxxdj/mixxx/pull/4096) - [#4118](https://github.com/mixxxdj/mixxx/pull/4118) - [#4130](https://github.com/mixxxdj/mixxx/pull/4130) - [#4129](https://github.com/mixxxdj/mixxx/pull/4129) - [#4109](https://github.com/mixxxdj/mixxx/pull/4109) - [#4106](https://github.com/mixxxdj/mixxx/pull/4106) - [#4131](https://github.com/mixxxdj/mixxx/pull/4131) - [#4140](https://github.com/mixxxdj/mixxx/pull/4140) - [#3032](https://github.com/mixxxdj/mixxx/pull/3032) - [#4110](https://github.com/mixxxdj/mixxx/pull/4110) - [#4173](https://github.com/mixxxdj/mixxx/pull/4173) - [#4178](https://github.com/mixxxdj/mixxx/pull/4178) - [#4194](https://github.com/mixxxdj/mixxx/pull/4194) - [#4197](https://github.com/mixxxdj/mixxx/pull/4197) - [#4190](https://github.com/mixxxdj/mixxx/pull/4190) - [#4212](https://github.com/mixxxdj/mixxx/pull/4212) - [#4223](https://github.com/mixxxdj/mixxx/pull/4223) - [#4238](https://github.com/mixxxdj/mixxx/pull/4238) - [#4236](https://github.com/mixxxdj/mixxx/pull/4236) - [#4320](https://github.com/mixxxdj/mixxx/pull/4320) - [#4325](https://github.com/mixxxdj/mixxx/pull/4325) - [#4203](https://github.com/mixxxdj/mixxx/pull/4203) - [#3861](https://github.com/mixxxdj/mixxx/pull/3861) - [#3514](https://github.com/mixxxdj/mixxx/pull/3514) - [#3274](https://github.com/mixxxdj/mixxx/pull/3274) - [#3182](https://github.com/mixxxdj/mixxx/pull/3182) - [#4343](https://github.com/mixxxdj/mixxx/pull/4343) - [#4358](https://github.com/mixxxdj/mixxx/pull/4358) - [#4388](https://github.com/mixxxdj/mixxx/pull/4388) - [#4427](https://github.com/mixxxdj/mixxx/pull/4427) - [#4341](https://github.com/mixxxdj/mixxx/pull/4341) - [#4473](https://github.com/mixxxdj/mixxx/pull/4473) - [#4464](https://github.com/mixxxdj/mixxx/pull/4464) - [#4481](https://github.com/mixxxdj/mixxx/pull/4481) - [#4527](https://github.com/mixxxdj/mixxx/pull/4527) - [#4534](https://github.com/mixxxdj/mixxx/pull/4534) - [#4537](https://github.com/mixxxdj/mixxx/pull/4537) - [#4539](https://github.com/mixxxdj/mixxx/pull/4539) - [#4541](https://github.com/mixxxdj/mixxx/pull/4541) - [#4543](https://github.com/mixxxdj/mixxx/pull/4543) - [#4546](https://github.com/mixxxdj/mixxx/pull/4546) - [#4542](https://github.com/mixxxdj/mixxx/pull/4542) - [#4559](https://github.com/mixxxdj/mixxx/pull/4559) - [#4574](https://github.com/mixxxdj/mixxx/pull/4574) - [#4581](https://github.com/mixxxdj/mixxx/pull/4581) - [#4582](https://github.com/mixxxdj/mixxx/pull/4582) - [#4598](https://github.com/mixxxdj/mixxx/pull/4598) - [#4596](https://github.com/mixxxdj/mixxx/pull/4596) - [#4592](https://github.com/mixxxdj/mixxx/pull/4592) - [#4784](https://github.com/mixxxdj/mixxx/pull/4784) - [#4604](https://github.com/mixxxdj/mixxx/pull/4604) - [#4603](https://github.com/mixxxdj/mixxx/pull/4603) - [#4611](https://github.com/mixxxdj/mixxx/pull/4611) - [#4605](https://github.com/mixxxdj/mixxx/pull/4605) - [#4583](https://github.com/mixxxdj/mixxx/pull/4583) - [#4636](https://github.com/mixxxdj/mixxx/pull/4636) - [#4644](https://github.com/mixxxdj/mixxx/pull/4644) - [#4653](https://github.com/mixxxdj/mixxx/pull/4653) - [#4655](https://github.com/mixxxdj/mixxx/pull/4655) - [#4609](https://github.com/mixxxdj/mixxx/pull/4609) - [#4647](https://github.com/mixxxdj/mixxx/pull/4647) - [#4660](https://github.com/mixxxdj/mixxx/pull/4660) - [#4663](https://github.com/mixxxdj/mixxx/pull/4663) - [#4661](https://github.com/mixxxdj/mixxx/pull/4661) - [#4670](https://github.com/mixxxdj/mixxx/pull/4670) - [#4672](https://github.com/mixxxdj/mixxx/pull/4672) - [#4674](https://github.com/mixxxdj/mixxx/pull/4674) - [#4618](https://github.com/mixxxdj/mixxx/pull/4618) - [#4690](https://github.com/mixxxdj/mixxx/pull/4690) - [#4724](https://github.com/mixxxdj/mixxx/pull/4724) - [#4730](https://github.com/mixxxdj/mixxx/pull/4730) - [#4731](https://github.com/mixxxdj/mixxx/pull/4731) - [#4732](https://github.com/mixxxdj/mixxx/pull/4732) - [#4728](https://github.com/mixxxdj/mixxx/pull/4728) - [#4737](https://github.com/mixxxdj/mixxx/pull/4737) - [#4739](https://github.com/mixxxdj/mixxx/pull/4739) - [#4745](https://github.com/mixxxdj/mixxx/pull/4745) - [#4765](https://github.com/mixxxdj/mixxx/pull/4765) - [#4767](https://github.com/mixxxdj/mixxx/pull/4767) - [#4797](https://github.com/mixxxdj/mixxx/pull/4797) - [#4782](https://github.com/mixxxdj/mixxx/pull/4782) - [#4800](https://github.com/mixxxdj/mixxx/pull/4800) - [#4791](https://github.com/mixxxdj/mixxx/pull/4791) - [#4848](https://github.com/mixxxdj/mixxx/pull/4848) - [#4856](https://github.com/mixxxdj/mixxx/pull/4856) - [#4860](https://github.com/mixxxdj/mixxx/pull/4860) - [#4867](https://github.com/mixxxdj/mixxx/pull/4867) - [#4888](https://github.com/mixxxdj/mixxx/pull/4888) - [#4908](https://github.com/mixxxdj/mixxx/pull/4908) - [#4903](https://github.com/mixxxdj/mixxx/pull/4903) - [#8818](https://github.com/mixxxdj/mixxx/pull/8818) - [#4907](https://github.com/mixxxdj/mixxx/pull/4907) - [#10897](https://github.com/mixxxdj/mixxx/pull/10897) - [#10964](https://github.com/mixxxdj/mixxx/pull/10964) - [#10963](https://github.com/mixxxdj/mixxx/pull/10963) - [#11048](https://github.com/mixxxdj/mixxx/pull/11048) - [#11149](https://github.com/mixxxdj/mixxx/pull/11149) - [#11169](https://github.com/mixxxdj/mixxx/pull/11169) - [#11318](https://github.com/mixxxdj/mixxx/pull/11318) - [#11331](https://github.com/mixxxdj/mixxx/pull/11331) - [#11338](https://github.com/mixxxdj/mixxx/pull/11338) - [#4651](https://github.com/mixxxdj/mixxx/pull/4651) - [#11336](https://github.com/mixxxdj/mixxx/pull/11336) [#11282](https://github.com/mixxxdj/mixxx/issues/11282) - [#11421](https://github.com/mixxxdj/mixxx/pull/11421) - [#11431](https://github.com/mixxxdj/mixxx/pull/11431) - [#11434](https://github.com/mixxxdj/mixxx/pull/11434) - [#11301](https://github.com/mixxxdj/mixxx/pull/11301) - [#11688](https://github.com/mixxxdj/mixxx/pull/11688) - [#11685](https://github.com/mixxxdj/mixxx/pull/11685) - [#12000](https://github.com/mixxxdj/mixxx/pull/12000) - [#12003](https://github.com/mixxxdj/mixxx/pull/12003) - [#11684](https://github.com/mixxxdj/mixxx/pull/11684) - [#12031](https://github.com/mixxxdj/mixxx/pull/12031) - [#12008](https://github.com/mixxxdj/mixxx/pull/12008) - [#12054](https://github.com/mixxxdj/mixxx/pull/12054) - [#11768](https://github.com/mixxxdj/mixxx/pull/11768) - [#11893](https://github.com/mixxxdj/mixxx/pull/11893) - [#11636](https://github.com/mixxxdj/mixxx/pull/11636) - [#12026](https://github.com/mixxxdj/mixxx/pull/12026) - [#12230](https://github.com/mixxxdj/mixxx/pull/12230) - [#12375](https://github.com/mixxxdj/mixxx/pull/12375) - [#11619](https://github.com/mixxxdj/mixxx/pull/11619) - [#11917](https://github.com/mixxxdj/mixxx/pull/11917) - [#11936](https://github.com/mixxxdj/mixxx/pull/11936) - [#12033](https://github.com/mixxxdj/mixxx/pull/12033) - [#12263](https://github.com/mixxxdj/mixxx/pull/12263) - [#12212](https://github.com/mixxxdj/mixxx/pull/12212) - [#12066](https://github.com/mixxxdj/mixxx/pull/12066) [#12065](https://github.com/mixxxdj/mixxx/issues/12065) +* Library Preferences: Added link to settings files info in the manual [#4367](https://github.com/mixxxdj/mixxx/pull/4367) +* Controller preferences: add search bars to mapping tables [#11165](https://github.com/mixxxdj/mixxx/pull/11165) +* Add 13 new translation languages [#4785](https://github.com/mixxxdj/mixxx/pull/4785) [#9702](https://github.com/mixxxdj/mixxx/issues/9702) ### Known issues @@ -1355,7 +696,7 @@ A fix is promised in 2024-02 with Windows 11 build 26016. [#12289](https://github.com/mixxxdj/mixxx/issues/12289) [#11094](https://github.com/mixxxdj/mixxx/issues/11094) -* Different, language depending library sorting on macOS +* macOS: Library entries are now sorted using the language depending Unicode Collation Algorithm (UCA). [#12517](https://github.com/mixxxdj/mixxx/issues/12517) ## [2.3.6](https://github.com/mixxxdj/mixxx/milestone/40) (2023-08-15) diff --git a/res/Mixxx-Keyboard-Shortcuts.pdf b/res/Mixxx-Keyboard-Shortcuts.pdf index 5c5ed480cb2..89b417c3853 100644 Binary files a/res/Mixxx-Keyboard-Shortcuts.pdf and b/res/Mixxx-Keyboard-Shortcuts.pdf differ diff --git a/res/images/templates/ic_template_keyboard_mapping_sheet.svg b/res/images/templates/ic_template_keyboard_mapping_sheet.svg index 896367b0eaf..90bfcec2290 100644 --- a/res/images/templates/ic_template_keyboard_mapping_sheet.svg +++ b/res/images/templates/ic_template_keyboard_mapping_sheet.svg @@ -1,1563 +1,8684 @@ - - Mixxx Keyboard mapping sheet template - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ±§ - - - - - - - Mixxx default keyboard mapping sheet *www.mixxx.org - -   - Mixxx default keyboard mapping - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rate - small - rate + small - - - - - - - - - - - - - - - - - - - - - - - - - - - - temp - small - temp + small - loopin    - loopout    - reloop/ exit    - QuickEffect - sync tap   - loopin    - loopout    - reloop/ exit    - QuickEffect     - 4-barloop   - loop÷ 2    - loopx 2    - headphone    - headphone    - 4-barloop   - loop÷ 2    - loopx 2    - back rev   - play cue set   - cue cue go   - xFader small   - xFader small   - fwd   - back rev   - play cue set   - fwd   - cue cue go   - talkover   - hot 1 clear   - hot 2 clear   - hot 3 clear   - hot 4 clear   - lowkill   - lowkill   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - toggle - shuffle - skip - fade  - - Deck 1 - Deck 2 - - hot 1 clear   - hot 2 clear   - hot 3 clear   - hot 4 clear   - rate - small - rate + small - temp - small - temp + small - sync tap   - load 1eject 1   - load 2 eject 2   - - - - - - - - AutoDJ - Library - - - - - - maximize library - - * for en-us keyboard layout - - Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts. - - You can make your own custom keyboard mapping: - - Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.3/chapters/advanced_topics.html#making-a-custom-keyboard-mapping - - - - Complete hotkey list: - - Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.3/chapters/appendix/keyboard_mapping_table.html#appendix-keyboard - - - - - - - Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.3/chapters/appendix/mixxx_controls.html#appendix-mixxxcontrols - - - - List of controls that can be used in the keyboard mapping: - - - Custom keyboard mappings can be shared with others in the Mixxx user customizations forum: - - Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://mixxx.discourse.group/c/keyboard-mappings/12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clone Originals Changes to this Originals will affect the clones.If a clone is selected (see statusbar on the bottom)In Inkscape use SHIFT+D to find the Original. If you need more clones, duplicate from the clones -   - - - - - - - - - - - mixxxdj/mixxxFor the packaged doc file, export the entire pageas Mixxx-Keyboard-Shortcuts.pdf (embed fonts).mixxxdj/manual (instructions for Inkscape)For the embedded SVG:- open a copy of this file- select the rectangle in layer 'res' > 'doc_file_boundary'- open Document Properties > Page tab- Custom size > Resize page to content...- delete layers 'res', 'links' 'setup_export' (everything outside the page)- save as Optimized SVGFor the downloadable PNG:Either open the cropped SVG copy and export thepage, or use this document and export the custom rangedefined by the rectangle in layer 'res' > 'doc_file_boundary',or set that range manually: x0: 0 px y0: 23 px width: 782 px height: 241 pxas PNG width: 1280 px s(height: 394 px)default encoding settings should suffice but cancertainly be tweaked. - Setup - Export - - - - - - * for de-de keyboard layout - für Deutsche Tastatur - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ±§ - - * for en-us keyboard layout - - - - - - + +Mixxx Keyboard mapping sheet templateEach control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts. * for de-de keyboard layout - für Deutsche Tastatur ±§ * for en-us keyboard layoutMixxx Keyboard mapping sheet templateMixxx default keyboard mapping * for en-us keyboard layoutrate - smallrate + smalltemp - smalltemp + smallloopin   loopout   reloop/ exit   QuickEffectsync tap  loopin   loopout   reloop/ exit   QuickEffect    4-barloop  loop÷ 2   loopx 2   headphone   headphone   4-barloop  loop÷ 2   loopx 2   play cue set  fwdfwd 1backback 1cue cue go  xFader small  xFader small  play cue set  cue cue go  talkover  hot 1 clear  hot 2 clear  hot 3 clear  hot 4 clear  lowkill  lowkill  toggleshuffleskipfade hot 1 clear  hot 2 clear  hot 3 clear  hot 4 clear  rate - smallrate + smalltemp - smalltemp + smallsync tap  load 1eject 1  load 2 eject 2  maximize libraryDeck 1Deck 2AutoDJLibraryfwdfwd 1backback 1load + playstoppreviewtrack infoClone Originals Changes to this Originals will affect the clones.If a clone is selected (see statusbar on the bottom)in Inkscape use SHIFT+D to find the Original. If you need more clones, duplicate from the clones. mixxxdj/mixxxKey SetupExportFor the packaged doc file, export the entire page asMixxx-Keyboard-Shortcuts.pdf (embed fonts).For the embedded SVG:- open a copy of this file- select the rectangle in layer 'img_boundary'- open Document Properties > Page tab- Custom size > Resize page to content...- delete layers 'img_boundary', 'links+header' 'setup_export' (everything outside the page)- save as Optimized SVGFor the downloadable PNG:a) open the cropped SVG copy and export the page, orb) or use this document and export the custom rangedefined by the rectangle in layer 'img_boundary', orc) set that range manually: x0: 0 px y0: 23 px width: 782 px height: 241 pxExport as - PNG - width: 1280 px - height: 394 pxThe default encoding settings should suffice but cancertainly be tweaked.mixxxdj/manual (instructions for Inkscape)±§You can make your own custom keyboard mapping:Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.4/chapters/advanced_topics.html#making-a-custom-keyboard-mappingComplete hotkey list:Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.4/chapters/appendix/keyboard_mapping_table.html#appendix-keyboardEach control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://manual.mixxx.org/2.4/chapters/appendix/mixxx_controls.html#appendix-mixxxcontrolsList of controls that can be used in the keyboard mapping:Custom keyboard mappings can be shared with others in the Mixxx user customizations forum:Each control inside Mixxx is identified by a unique string. These strings are used in the keyboard mappings, the MIDI mappings, and inside Mixxx to gain access to the controls. The following is a list of controls that can be used in any of the above contexts.https://mixxx.discourse.group/c/keyboard-mappings/12Mixxx default keyboard mapping sheet *www.mixxx.org diff --git a/res/linux/org.mixxx.Mixxx.metainfo.xml b/res/linux/org.mixxx.Mixxx.metainfo.xml index 8696f0e5297..d025734f6c7 100644 --- a/res/linux/org.mixxx.Mixxx.metainfo.xml +++ b/res/linux/org.mixxx.Mixxx.metainfo.xml @@ -96,11 +96,11 @@ Do not edit it manually. --> - + - +

Cover Art @@ -131,6 +131,8 @@ #11086 #12041 #12300 + #12543 + #12532

  • CoverArtCache refactoring + Fix scrolling lag after updating Mixxx @@ -302,20 +304,6 @@ Don't store or update metadata of missing tracks in the Mixxx database to prevent inconsistencies with file tags #3811
  • -
  • - Code improvements and minor bug fixes when importing track metadata - #3851 - #3858 - #3860 - #3866 - #3871 - #3870 - #3924 - #4368 - #3906 - #3998 - #11031 -
  • Update library schema to 37 for synchronizing file modified time with track source on metadata import/export #3978 @@ -396,6 +384,18 @@ #12321 #12064
  • +
  • + Tracks table: Fix initial track selection with BackTab + #11130 +
  • +
  • + Tracks table: Try to restore selection position after track removal + #11196 +
  • +
  • + Tracks table: Remove parenthesis from play counter display + #11357 +
  • Re-enable shortcuts after editing controls #4360 @@ -506,18 +506,6 @@ #3212 #11842
  • -
  • - Tracks table: Fix initial track selection with BackTab - #11130 -
  • -
  • - Tracks table: Try to restore selection position after track removal - #11196 -
  • -
  • - Tracks table: Remove parenthesis from play counter display - #11357 -
  • Remove/hide tracks dialog: Add 'Don't ask again' checkbox #11239 @@ -627,48 +615,14 @@ #11948
  • - Track Properties: Don't clear unsaved properties when updating star rating - #11565 - #11540 -
  • -
  • - Track Properties: Focus Double-clicked property field for edit - #11764 - #11804 - #11802 -
  • -
  • - Track Properties: Display the samplerate - #12418 + Fix setting the wrong default cue color + #11554 + #11260
  • - Refactoring of library code - #2756 - #2717 - #2715 - #2810 - #2900 - #2906 - #2925 - #3017 - #3475 - #4164 - #4152 - #4162 - #4101 - #4214 - #4280 - #4429 - #4477 - #4475 - #4480 - #4633 - #4837 - #4864 - #4893 - #10861 - #10871 - #12082 + Tweak remove/hide track confirm message to match confirm exit message + #4577 + #1947992
  • @@ -751,7 +705,7 @@ #11888

  • - AAC encoder: Fixed a memory leak + AAC encoder: Fix a memory leak #4386 #4408
  • @@ -814,6 +768,12 @@ #11760 #11545 +
  • + Fix possible crash with opus files with embedded cover arts and require TagLib 1.11 or newer + #4251 + #4252 + #10500 +
  • Audio Engine @@ -849,7 +809,7 @@ #10497

  • - Fixed an assertion when loop is before track start + Fix an assertion when loop is before track start #4383 #10556
  • @@ -944,94 +904,9 @@ #12223
  • - Refactoring of beatgrid/beatmap code - #4044 - #4048 - #4045 - #4049 - #4092 - #4094 - #4104 - #4103 - #4127 - #4099 - #4071 - #4184 - #4234 - #4233 - #4258 - #4259 - #4263 - #4272 - #4268 - #4270 - #4342 - #4336 - #4409 - #4361 - #4488 - #4411 - #4498 - #4500 - #4499 - #4510 - #4607 - #11263 - #12368 - #12349 - #12071 - #12016 -
  • -
  • - Refactoring of audio engine code - #2762 - #2801 - #2885 - #2997 - #3266 - #4064 - #4065 - #4066 - #4069 - #4074 - #4075 - #4076 - #4078 - #4082 - #4077 - #4080 - #4086 - #4089 - #4090 - #4079 - #4091 - #4083 - #4095 - #4081 - #4061 - #4105 - #4183 - #4186 - #4189 - #4216 - #4221 - #4219 - #4191 - #4232 - #4231 - #4229 - #4257 - #4266 - #4217 - #1966 - #4535 - #4770 - #4771 - #4589 - #1717 - #4852 - #10835 - #10843 + make decks' xfader assignment persistent + #12074 + #10122
  • @@ -1276,10 +1151,6 @@ #10540 #10539 -

  • - Controller preferences: add search bars to mapping tables - #11165 -
  • Added TypeScript declarations for engine and controller scripting API to improve IDE code completion during mapping developent #4759 @@ -1295,42 +1166,6 @@ #11474 #11473
  • -
  • - Prepare code for upcoming ES6 based controller mapping system with module support - #2682 - #2868 - #2875 - #2936 - #2946 - #11953 -
  • -
  • - Other refactorings of controller code - #2904 - #3308 - #3463 - #3634 - #3635 - #3636 - #3676 - #3880 - #4085 - #4524 - #4533 - #4521 - #4585 - #4692 - #4566 - #4599 - #4624 - #4627 - #4738 - #11160 - #11662 - #11622 - #12400 - #12468 -
  • feat(control): Do not show CO aliases in developer tools window #12265 @@ -1382,67 +1217,18 @@ Repeat certain control actions if keyboard key is held #12474
  • +
  • + Logging: Add support for + QT_MESSAGE_PATTERN + environment variable + #3204 + #3518 +
  • Skins

      -
    • - Add experimental QML user interface - #3345 - #3446 - #3854 - #3891 - #2874 - #3915 - #3894 - #3920 - #3907 - #3925 - #3928 - #3932 - #3911 - #3937 - #3940 - #3913 - #3950 - #3919 - #3955 - #3957 - #3961 - #3952 - #3963 - #3971 - #3959 - #3972 - #3992 - #4003 - #4004 - #3999 - #4000 - #4067 - #4068 - #4060 - #4037 - #4414 - #3934 - #4117 - #4327 - #4339 - #4568 - #4576 - #4591 - #4616 - #4567 - #4629 - #4643 - #4650 - #4654 - #4673 - #4680 - #4681 - #4736 -
    • Add harmonic keywheel window #1695 @@ -1483,6 +1269,10 @@ #4398 #10557
    • +
    • + Shade: Audio Latency meter fix + #11601 +
    • Fix switching from Shade to other skins #4421 @@ -1594,10 +1384,6 @@ #11975 #11957
    • -
    • - Shade: Audio Latency meter fix - #11601 -
    • Fix 500ms blocking of the whole event loop, when holding mouse down on title bar on Windows #12359 @@ -1639,6 +1425,15 @@ Label #12004
    • +
    • + Implement Un-eject by pressing eject again + #4668 + #11246 +
    • +
    • + Implement Un-replace by double-clicking eject + #11246 +

    Waveforms and GL Widgets @@ -1988,500 +1783,78 @@ #12095

  • - macOS packaging: Enable app sandbox in unsigned 2.4 builds too + macOS packaging: Enable app sandbox and fix related issues #12138 -
  • -
  • - macOS packaging: Fix regression that caused - Sandbox::canAccess - to fail #12457 #12137 #11552 -
  • -
  • - macOS packaging: Fix running macOS bundle from development build directory - #12099 -
  • -
  • - Hide applocal group from Windows installer - #12118 - #11992 -
  • - -

    - Other -

    -
      -
    • - Improve and fix the CMake build system - #2943 - #3046 - #3114 - #3471 - #3765 - #3849 - #3876 - #4098 - #4113 - #4166 - #4185 - #4187 - #4351 - #4423 - #4422 - #4497 - #4514 - #3550 - #4861 - #10855 - #10896 - #10926 - #11368 - #11144 - #4866 - #12442 - #12351 - #12288 - #12197 - #11754 - #11741 - #12518 -
    • -
    • - Improve GitHub workflow continuous integration - #2937 - #3041 - #3300 - #4007 - #4084 - #4250 - #4274 - #4313 - #4226 - #4452 - #4742 - #4741 - #4795 - #4798 - #4792 - #4829 - #4822 - #4820 - #4821 - #4818 - #4819 - #4817 - #4815 - #10938 - #11038 - #11066 - #11089 - #11156 - #11193 - #11396 - #11386 - #11414 - #12502 - #12434 - #11962 - #11945 -
    • -
    • - Improve pre-commit hook - #2796 - #3923 - #3948 - #3929 - #4192 - #4282 - #4278 - #4314 - #4321 - #4374 - #4494 - #4512 - #4558 - #4580 - #4743 - #10950 - #10980 - #11078 - #10929 - #11369 - #11388 - #11889 -
    • -
    • - Improve Lauchpad PPA builds - #4277 - #4285 - #4425 - #12347 - #11729 -
    • -
    • - Update vcpkg build environment for Windows and macOS - #4163 - #4225 - #4338 - #4709 - #4717 - #10872 - #10966 - #11050 - #11074 - #11238 - #11457 - #11562 - #12370 - #11733 -
    • -
    • - Windows: Fix extraction of build environment archive when using 7-Zip - #11510 -
    • -
    • - Fix Windows warnings and enable "Treat all compiler warnings as errors" - #11607 - #12417 -
    • -
    • - Devendor libraries from the mixxx lib directory - #4201 - #4202 - #11839 - #11742 - #11841 -
    • -
    • - #4540 -
    • -
    • - Update hidapi to 0.11.2 - #4783 -
    • -
    • - Update xwax to Version 1.8 - #4597 - #10627 -
    • -
    • - Update rigtorp/SPSCQueue - #4678 -
    • -
    • - macOS: Fail early if the Xcode command line tools are not installed. - #11699 -
    • -
    • - macOS buildenv: Improve error messages for CI-only wrappers - #12382 -
    • -
    • - Improve cmake first time error reporting - #11635 - #11596 - #11597 -
    • -
    • - Manual include #include "moc_*.cpp" to speed up build - #11567 -
    • -
    • - Fix building Mixxx with SDK 11 - #11766 -
    • -
    • - chore: Fix spelling and formatting issues - #11890 -
    • -
    • - Prefer mold or lld as linker to speed up linking - #11790 - #11796 -
    • -
    • - feat: allow sanitizers on GCC as well - #12002 -
    • -
    • - Update manifest even if one job fails - #12091 -
    • -
    • - Mixxx 2.4: Fail Qt6 build not on GitHub Actions - #12293 -
    • -
    • - CMakeLists: Relativize - __FILE__ - paths by default - #12350 -
    • -
    • - Debug: Add Rust-inspired - DBG - macro for quick print-debugging - #12344 - #12383 -
    • -
    • - Migration to Qt6 (work in progress) - #4052 - #4295 - #4293 - #4294 - #4291 - #4290 - #4300 - #4302 - #4289 - #4292 - #4299 - #4051 - #4303 - #4305 - #4304 - #4306 - #4308 - #4309 - #4322 - #4373 - #4371 - #4375 - #4378 - #4381 - #4380 - #4376 - #4379 - #4372 - #4377 - #4387 - #4391 - #4392 - #4395 - #4397 - #4396 - #4402 - #4405 - #4394 - #4404 - #4401 - #4400 - #4403 - #4407 - #4399 - #4406 - #4420 - #4415 - #4417 - #4419 - #4416 - #4418 - #4547 - #4433 - #4434 - #4441 - #4445 - #4446 - #4444 - #4436 - #4437 - #4440 - #4430 - #4435 - #4443 - #4439 - #4442 - #4438 - #4449 - #4451 - #4453 - #4478 - #4479 - #4506 - #4556 - #4554 - #4555 - #4552 - #4549 - #4788 - #4620 - #4641 - #4649 - #4679 - #10928 - #10927 - #11063 - #11153 - #11180 - #11167 - #11181 - #11266 - #11312 - #11389 - #4393 - #12268 - #12240 - #12056 - #12430 - #12029 -
    • -
    • - Allow to compile with precompiled headers, enabled on Windows by default - #12381 - #12080 - #12410 - #12360 - #12352 - #12346 - #12338 - #12327 - #12308 - #12303 - #12302 - #12298 - #12229 - #12079 - #12058 - #12037 - #12024 - #12025 -
    • -
    • - Made use of inclusive language - #2894 - #3868 - #11017 - #11968 - #11959 - #11942 -
    • -
    • - Improve the unit tests - #2938 - #2980 - #3006 - #4345 -
    • -
    • - Logging: Add support for - QT_MESSAGE_PATTERN - environment variable - #3204 - #3518 -
    • -
    • - Colored logging console output - #3197 -
    • -
    • - Improve command line argument parser - #3640 - #3962 - #4022 - #4036 - #4170 - #4057 -
    • -
    • - Improve message when dealing with macOS sandbox #4018 #10373
    • - Moved contribution guidelines into our git repository - #2699 -
    • -
    • - Make windows_buildenv.bat work with spaces in path - #4896 -
    • -
    • - Automate deployment of CHANGELOG to the manual - #4180 - #4256 - #4208 - #4228 - #4222 -
    • -
    • - Always show tooltips in preferences - #4198 - #9716 -
    • -
    • - Allow to build Mixxx on Linux without ALSA, working around a Pipewire bug - #4242 -
    • -
    • - Fix possible crash with opus files with embedded cover arts and require TagLib 1.11 or newer - #4251 - #4252 - #10500 -
    • -
    • - DlgTrackInfo: Fixed a SIGSEGV after a debug assertion - #4316 -
    • -
    • - Library Preferences: Added link to settings files info in the manual - #4367 -
    • -
    • - Use rounded Mixxx Icon for MacOS to follow Apples style guide + macOS: Use rounded Mixxx Icon to follow Apples style guide #4545 + #10958
    • - Show native path separators in command line argument --help - #4657 -
    • -
    • - Add 13 new translation languages - #4785 - #9702 -
    • -
    • - Fix translation related warnings - #11539 + OpenBSD: Allow building Mixxx + #11083
    • - Remove redundant - cmn - translation in favor of - zh - #11793 - #11791 + Improve Linux launcher + #11826 + #11820 + #11805 + #12424
    • +
    +

    + Track properties +

    +
    • - Improve Vinyl control quality indicator - #3279 + Fix a SIGSEGV after a debug assertion + #4316
    • - Track info dialog: Apply pending changes also when saving via hotkey + Apply pending changes also when saving via hotkey #4562 #10612
    • - Track info dialog: Fix crash when trying to scale 0.0 BPM + Fix crash when trying to scale 0.0 BPM #4587 #1955853
    • - Track info dialog: Add track color selector + Add track color selector #11436 #10324
    • - Tweak remove/hide track confirm message to match confirm exit message - #4577 - #1947992 + Don't clear unsaved properties when updating star rating + #11565 + #11540
    • - Implement Un-eject by pressing eject again - #4668 - #11246 + Focus Double-clicked property field for edit + #11764 + #11804 + #11802 +
    • +
    • + Display the samplerate + #12418 +
    • +
    +

    + Preferences +

    +
      +
    • + Always show tooltips in preferences + #4198 + #9716
    • Preferences > Effects: Fix Tab key navigation / UX @@ -2527,6 +1900,10 @@ macOS: fix slider styling in preferences dialog #11647
    • +
    • + Preferences Vinyl control Improve quality indicator + #3279 +
    • Preferences > Mixer: apply & save settings only in slotApply(), fix bugs, improve UX #11527 @@ -2545,214 +1922,17 @@ #11926
    • - macOS: Add better rasterization of program icon - #10958 -
    • -
    • - make decks' xfader assignment persistent - #12074 - #10122 -
    • -
    • - Allow building Mixxx on OpenBSD - #11083 -
    • -
    • - Fix autogenerated metainfo - #11383 -
    • -
    • - Fix setting the wrong default cue color - #11554 - #11260 -
    • -
    • - (fix) linux launcher: add missing quote to command line - #11826 - #11820 -
    • -
    • - Delete obsolete -platform xcb args - #11805 + Library Preferences: Added link to settings files info in the manual + #4367
    • - A small fix to .desktop file that improves Gnome dock integration on - #12424 + Controller preferences: add search bars to mapping tables + #11165
    • - Replace Launchpad bugs by GitHub issues - #10850 - #10865 - #4877 - #11270 - #11377 - #11379 -
    • -
    • - Misc. refactorings - #3154 - #2870 - #2872 - #2978 - #2969 - #3016 - #3320 - #3356 - #3453 - #3487 - #3558 - #3685 - #3741 - #3744 - #3753 - #3761 - #3834 - #3842 - #3853 - #3874 - #3883 - #3922 - #3947 - #3974 - #4024 - #4026 - #4034 - #4038 - #4039 - #4043 - #4053 - #4072 - #4097 - #4096 - #4118 - #4130 - #4129 - #4109 - #4106 - #4131 - #4140 - #3032 - #4110 - #4173 - #4178 - #4194 - #4197 - #4190 - #4212 - #4223 - #4238 - #4236 - #4320 - #4325 - #4203 - #3861 - #3514 - #3274 - #3182 - #4343 - #4358 - #4388 - #4427 - #4341 - #4473 - #4464 - #4481 - #4527 - #4534 - #4537 - #4539 - #4541 - #4543 - #4546 - #4542 - #4559 - #4574 - #4581 - #4582 - #4598 - #4596 - #4592 - #4784 - #4604 - #4603 - #4611 - #4605 - #4583 - #4636 - #4644 - #4653 - #4655 - #4609 - #4647 - #4660 - #4663 - #4661 - #4670 - #4672 - #4674 - #4618 - #4690 - #4724 - #4730 - #4731 - #4732 - #4728 - #4737 - #4739 - #4745 - #4765 - #4767 - #4797 - #4782 - #4800 - #4791 - #4848 - #4856 - #4860 - #4867 - #4888 - #4908 - #4903 - #8818 - #4907 - #10897 - #10964 - #10963 - #11048 - #11149 - #11169 - #11318 - #11331 - #11338 - #4651 - #11336 - #11282 - #11421 - #11431 - #11434 - #11301 - #11688 - #11685 - #12000 - #12003 - #11684 - #12031 - #12008 - #12054 - #11768 - #11893 - #11636 - #12026 - #12230 - #12375 - #11619 - #11917 - #11936 - #12033 - #12263 - #12212 - #12066 - #12065 + Add 13 new translation languages + #4785 + #9702

    @@ -2768,7 +1948,7 @@ #11094

  • - Different, language depending library sorting on macOS + macOS: Library entries are now sorted using the language depending Unicode Collation Algorithm (UCA). #12517
  • diff --git a/src/dialog/dlgabout.cpp b/src/dialog/dlgabout.cpp index 63cba7c7ac2..d88b661faab 100644 --- a/src/dialog/dlgabout.cpp +++ b/src/dialog/dlgabout.cpp @@ -49,100 +49,71 @@ DlgAbout::DlgAbout() thisReleaseDevelopers << "RJ Skerry-Ryan" << "Owen Williams" - << "Sean Pappalardo" << "Daniel Schürmann" - << "S. Brandt" - << "Uwe Klotz" << "Be" << "Sébastien Blaisot" << "ronso0" << "Jan Holthuis" - << "Nikolaus Einhauser"; + << "Nikolaus Einhauser" + << "Ferran Pujol Camins" + << "Jörg Wartenberg" + << "Fredrik Wieczerkowski" + << "Maarten de Boer"; // This list should contains all contributors committed // code to the Mixxx core within the past two years. // New Contributors are added at the end. QStringList recentContributors; recentContributors - << "Tuukka Pasanen" + << "Uwe Klotz" << "Nino MP" - << "Ferran Pujol Camins" - << "Josep Maria Antolín Segura" + << "Dávid Szakállas" << "Daniel Poelzleithner" - << "Stéphane Lepin" << "luzpaz" - << "Bernd Binder" - << "Pradyuman" - << "Nik Martin" - << "Kerrick Staley" - << "Raphael Graf" - << "Nik Martin" - << "YunQiang Su" + << "Kshitij Gupta" << "Sebastian Hasler" << "Philip Gottschling" - << "Melissa" - << "Ned Haughton" << "Adam Szmigin" - << "Cristiano Lacerda" - << "Sergey Ukolov" - << "Ketan Lambat" << "Evan Dekker" - << "Edward Kigwana" - << "Simon Harst" << "Harshit Maurya" << "Janek Fischer" - << "Stéphane Lepin" - << "Jérôme Blanchi" - << "Chris Hills" - << "David Lowenfels" - << "Matthieu Bouron" - << "Nathan Korth" + << "Matthias Beyer" << "Kristiyan Katsarov" - << "Jörg Wartenberg" << "Sanskar Bajpai" - << "Edward Millen" - << "Frank Breitling" << "Christian" << "Geraldo Nascimento" - << "Albert Aparicio" - << "Pierre Le Gall" - << "David Baker" - << "Justin Kourie" - << "Waylon Robertson" - << "Al Hadebe" << "Javier Vilarroig" - << "Balló György" - << "Pino Toscano" - << "Alexander Horner" - << "Michael Ehlen" - << "Alice Midori" - << "h67ma" + << "Allen Wittenauer" + << "Raphael Bigal" + << "Filok" << "tcoyvwac" + << "Gary Tunstall" << "Tobias Oszlanyi (OsZ)" - << "Fredrik Wieczerkowski" << "Viktor Gal" << "Matyáš Bobek" << "Mr. Rincewind" << "Stefan Nürnberger" << "motific" << "Fatih Emre YILDIZ" - << "Vincent Duez-Dellac" + << "Neil Naveen" << "Javier Vilalta" << "David Chocholatý" << "Fabian Wolter" << "Matteo Gheza" << "Michael Bacarella" - << "Somesh Metri" - << "Maarten de Boer" - << "Doteya" - << "olafklingt" << "Bilal Ahmed Karbelkar" << "Alice Psykose" << "Jakob Leifhelm" << "Florian Goth" << "Chase Durand" + << "Antoine Colombier" << "John Last" - << "Robbert van der Helm"; + << "Saksham Hans" + << "Robbert van der Helm" + << "Andrew Burns" + << "Michael Wigard" + << "djantti" + << "Eugene Erokhin"; QStringList specialThanks; specialThanks @@ -191,7 +162,10 @@ DlgAbout::DlgAbout() << "Ilkka Tuohela" << "Max Linke" << "Marcos Cardinot" - << "Nicu Badescu"; + << "Nicu Badescu" + << "Uwe Klotz" + << "Sean Pappalardo" + << "S. Brandt"; QStringList pastContributors; pastContributors @@ -356,12 +330,49 @@ DlgAbout::DlgAbout() << "Nico Schlömer" << "Joan Marcè i Igual" << "Stefan Weber" - << "Kshitij Gupta" << "Matthew Nicholson" << "Jamie Gifford" << "Sebastian Reuße" << "Paweł Goliński" - << "beenisss"; + << "beenisss" + << "Tuukka Pasanen" + << "Josep Maria Antolín Segura" + << "Stéphane Lepin" + << "Bernd Binder" + << "Pradyuman" + << "Nik Martin" + << "Kerrick Staley" + << "Raphael Graf" + << "YunQiang Su" + << "Melissa" + << "Ned Haughton" + << "Cristiano Lacerda" + << "Ketan Lambat" + << "Edward Kigwana" + << "Simon Harst" + << "Jérôme Blanchi" + << "Chris Hills" + << "David Lowenfels" + << "Matthieu Bouron" + << "Nathan Korth" + << "Edward Millen" + << "Frank Breitling" + << "Albert Aparicio" + << "Pierre Le Gall" + << "David Baker" + << "Justin Kourie" + << "Waylon Robertson" + << "Al Hadebe" + << "Balló György" + << "Pino Toscano" + << "Alexander Horner" + << "Michael Ehlen" + << "Alice Midori" + << "h67ma" + << "Vincent Duez-Dellac" + << "Somesh Metri" + << "Doteya" + << "olafklingt"; QString sectionTemplate = QString( "

    %1

    %2

    "); diff --git a/src/library/dlgtagfetcher.cpp b/src/library/dlgtagfetcher.cpp index 4243d6e1289..1b45b4f67c7 100644 --- a/src/library/dlgtagfetcher.cpp +++ b/src/library/dlgtagfetcher.cpp @@ -91,13 +91,37 @@ QStringList trackReleaseColumnValues( return columnValues; } -void addTrack( +void addTagRow( const QStringList& trackRow, int tagIndex, QTreeWidget* pParent) { QTreeWidgetItem* pItem = new QTreeWidgetItem(pParent, trackRow); pItem->setData(0, Qt::UserRole, tagIndex); pItem->setData(0, Qt::TextAlignmentRole, Qt::AlignLeft); + if (tagIndex == kOriginalTrackIndex) { + // Disable the original tag row so it can't be selected. + // Only setDisabled() prevents currentItemChanged() signal, removing the + // Qt::ItemIsSelectable is not sufficient. + // Store the normal text brush + const auto brush = pParent->palette().windowText(); + pItem->setDisabled(true); + // Restore the normal text color to ensure the tags are readable + for (int col = 0; col < pItem->columnCount(); col++) { + pItem->setForeground(col, brush); + } + } +} + +void addDivider(const QString& text, QTreeWidget* pParent) { + QTreeWidgetItem* pItem = new QTreeWidgetItem(pParent); + pItem->setFirstColumnSpanned(true); + pItem->setText(0, text); + pItem->setFlags(Qt::NoItemFlags); + pItem->setForeground(0, pParent->palette().color(QPalette::Disabled, QPalette::Text)); + + QFont bold_font(pParent->font()); + bold_font.setBold(true); + pItem->setFont(0, bold_font); } void updateOriginalTag(const Track& track, QTreeWidget* pParent) { @@ -144,8 +168,7 @@ void DlgTagFetcher::init() { btnPrev->hide(); } - connect(btnApply, &QPushButton::clicked, this, &DlgTagFetcher::applyTagsAndCover); - connect(btnApplyCover, &QPushButton::clicked, this, &DlgTagFetcher::applyCover); + connect(btnApply, &QPushButton::clicked, this, &DlgTagFetcher::apply); connect(btnQuit, &QPushButton::clicked, this, &DlgTagFetcher::quit); connect(btnRetry, &QPushButton::clicked, this, &DlgTagFetcher::retry); connect(tags, &QTreeWidget::currentItemChanged, this, &DlgTagFetcher::tagSelected); @@ -168,7 +191,11 @@ void DlgTagFetcher::init() { loadingProgressBar->setMaximum(kMaximumValueOfQProgressBar); btnRetry->setDisabled(true); - btnApplyCover->setDisabled(true); + + int iApplyTags = m_pConfig->getValue(mixxx::library::prefs::kTagFetcherApplyTagsConfigKey, 1); + int iApplyCover = m_pConfig->getValue(mixxx::library::prefs::kTagFetcherApplyCoverConfigKey, 1); + checkBoxTags->setChecked(iApplyTags == 1); + checkBoxCover->setChecked(iApplyCover == 1); CoverArtCache* pCache = CoverArtCache::instance(); if (pCache) { @@ -238,12 +265,13 @@ void DlgTagFetcher::loadTrack(const TrackPointer& pTrack) { btnRetry->setDisabled(true); btnApply->setDisabled(true); - btnApplyCover->setDisabled(true); + checkBoxTags->setDisabled(true); + checkBoxCover->setDisabled(true); statusMessage->setVisible(false); loadingProgressBar->setVisible(true); loadingProgressBar->setValue(kMinimumValueOfQProgressBar); addDivider(tr("Original tags"), tags); - addTrack(trackColumnValues(*m_pTrack), kOriginalTrackIndex, tags); + addTagRow(trackColumnValues(*m_pTrack), kOriginalTrackIndex, tags); connect(m_pTrack.get(), &Track::changed, @@ -266,7 +294,20 @@ void DlgTagFetcher::slotTrackChanged(TrackId trackId) { } } -void DlgTagFetcher::applyTagsAndCover() { +void DlgTagFetcher::apply() { + if (checkBoxTags->isChecked()) { + applyTags(); + statusMessage->setText(tr("Metadata applied")); + } + // If only/also the cover shall be updated (and the worker succeeds) the + // delayed slotWorkerCoverArtUpdated() will (over)write the status message, + // so let slot take care of updating the status message accordingly. + if (checkBoxCover->isChecked()) { + applyCover(); + } +} + +void DlgTagFetcher::applyTags() { int tagIndex = m_data.m_selectedTag; if (tagIndex < 0) { return; @@ -330,16 +371,12 @@ void DlgTagFetcher::applyTagsAndCover() { } #endif // __EXTRA_METADATA__ - applyCover(); - m_pTrack->replaceMetadataFromSource( std::move(trackMetadata), // Prevent re-import of outdated metadata from file tags // by explicitly setting the synchronization time stamp // to the current time. QDateTime::currentDateTimeUtc()); - - statusMessage->setText(tr("Metadata & Cover Art applied")); } void DlgTagFetcher::applyCover() { @@ -393,21 +430,31 @@ void DlgTagFetcher::applyCover() { void DlgTagFetcher::retry() { btnRetry->setDisabled(true); btnApply->setDisabled(true); - btnApplyCover->setDisabled(true); + checkBoxTags->setDisabled(true); + checkBoxCover->setDisabled(true); loadingProgressBar->setValue(kMinimumValueOfQProgressBar); m_tagFetcher.startFetch(m_pTrack); } void DlgTagFetcher::quit() { m_tagFetcher.cancel(); + saveCheckBoxState(); accept(); } void DlgTagFetcher::reject() { m_tagFetcher.cancel(); + saveCheckBoxState(); accept(); } +void DlgTagFetcher::saveCheckBoxState() { + m_pConfig->set(mixxx::library::prefs::kTagFetcherApplyTagsConfigKey, + ConfigValue(checkBoxTags->isChecked())); + m_pConfig->set(mixxx::library::prefs::kTagFetcherApplyCoverConfigKey, + ConfigValue(checkBoxCover->isChecked())); +} + void DlgTagFetcher::showProgressOfConstantTask(const QString& text) { QString status = tr("%1"); loadingProgressBar->setFormat(status.arg(text)); @@ -444,8 +491,9 @@ void DlgTagFetcher::fetchTagFinished( return; } else { btnApply->setDisabled(true); - btnApplyCover->setDisabled(true); btnRetry->setDisabled(true); + checkBoxTags->setDisabled(true); + checkBoxCover->setDisabled(true); loadingProgressBar->setVisible(false); statusMessage->setVisible(true); @@ -462,7 +510,7 @@ void DlgTagFetcher::fetchTagFinished( // Add fetched tag into TreeItemWidget, if it is not added before if (!allColumnValues.contains(columnValues)) { allColumnValues.insert(columnValues); - addTrack(columnValues, trackIndex, tags); + addTagRow(columnValues, trackIndex, tags); } ++trackIndex; } @@ -497,31 +545,23 @@ void DlgTagFetcher::slotNetworkResult( return; } -void DlgTagFetcher::addDivider(const QString& text, QTreeWidget* pParent) const { - QTreeWidgetItem* pItem = new QTreeWidgetItem(pParent); - pItem->setFirstColumnSpanned(true); - pItem->setText(0, text); - pItem->setFlags(Qt::NoItemFlags); - pItem->setForeground(0, palette().color(QPalette::Disabled, QPalette::Text)); - - QFont bold_font(font()); - bold_font.setBold(true); - pItem->setFont(0, bold_font); -} - void DlgTagFetcher::tagSelected() { if (!tags->currentItem()) { btnApply->setDisabled(true); + checkBoxTags->setDisabled(true); + checkBoxCover->setDisabled(true); return; } if (tags->currentItem()->data(0, Qt::UserRole).toInt() == kOriginalTrackIndex) { tags->currentItem()->setFlags(Qt::ItemIsEnabled); btnApply->setDisabled(true); + checkBoxTags->setDisabled(true); return; } // Allow applying the tags, regardless the cover art btnApply->setEnabled(true); + checkBoxTags->setEnabled(true); const int tagIndex = tags->currentItem()->data(0, Qt::UserRole).toInt(); m_data.m_selectedTag = tagIndex; @@ -530,7 +570,6 @@ void DlgTagFetcher::tagSelected() { m_pWFetchedCoverArtLabel->loadData(QByteArray()); m_pWFetchedCoverArtLabel->setCoverArt(CoverInfo{}, QPixmap(CoverArtUtils::defaultCoverLocation())); - btnApplyCover->setDisabled(true); const mixxx::musicbrainz::TrackRelease& trackRelease = m_data.m_tags[tagIndex]; QUuid selectedTagAlbumId = trackRelease.albumReleaseId; @@ -600,7 +639,7 @@ void DlgTagFetcher::slotLoadBytesToLabel(const QByteArray& data) { m_fetchedCoverArtByteArrays); // This data loaded because for full size. m_pWFetchedCoverArtLabel->setCoverArt(coverInfo, fetchedCoverArtPixmap); - btnApplyCover->setDisabled(data.isNull()); + checkBoxCover->setEnabled(!data.isNull()); } void DlgTagFetcher::getCoverArt(const QString& url) { @@ -613,6 +652,7 @@ void DlgTagFetcher::slotCoverArtLinkNotFound() { loadingProgressBar->setVisible(false); statusMessage->setText(tr("Cover Art is not available for selected metadata")); statusMessage->setVisible(true); + checkBoxCover->setDisabled(true); } void DlgTagFetcher::slotWorkerStarted() { @@ -623,7 +663,14 @@ void DlgTagFetcher::slotWorkerCoverArtUpdated(const CoverInfoRelative& coverInfo qDebug() << "DlgTagFetcher::slotWorkerCoverArtUpdated" << coverInfo; m_pTrack->setCoverInfo(coverInfo); loadCurrentTrackCover(); - statusMessage->setText(tr("Selected cover art applied")); + // If 'Tags' was checked those were already applied by now. + // Update the status message now accordingly. + // Assumes the checkbox wasn't toggled since hitting Apply + if (checkBoxTags->isChecked()) { + statusMessage->setText(tr("Metadata & Cover Art applied")); + } else { + statusMessage->setText(tr("Selected cover art applied")); + } } void DlgTagFetcher::slotWorkerAskOverwrite(const QString& coverArtAbsolutePath, diff --git a/src/library/dlgtagfetcher.h b/src/library/dlgtagfetcher.h index fe373a832b5..e247e40af90 100644 --- a/src/library/dlgtagfetcher.h +++ b/src/library/dlgtagfetcher.h @@ -49,7 +49,8 @@ class DlgTagFetcher : public QDialog, public Ui::DlgTagFetcher { void slotNetworkResult(int httpStatus, const QString& app, const QString& message, int code); // Called when apply is pressed. void slotTrackChanged(TrackId trackId); - void applyTagsAndCover(); + void apply(); + void applyTags(); void applyCover(); void retry(); void quit(); @@ -73,10 +74,11 @@ class DlgTagFetcher : public QDialog, public Ui::DlgTagFetcher { private: // Called on population or changed via buttons Next&Prev. void loadTrackInternal(const TrackPointer& pTrack); - void addDivider(const QString& text, QTreeWidget* pParent) const; void getCoverArt(const QString& url); void loadCurrentTrackCover(); + void saveCheckBoxState(); + UserSettingsPointer m_pConfig; const TrackModel* const m_pTrackModel; diff --git a/src/library/dlgtagfetcher.ui b/src/library/dlgtagfetcher.ui index acb163cc4d8..b97d05d1518 100644 --- a/src/library/dlgtagfetcher.ui +++ b/src/library/dlgtagfetcher.ui @@ -296,13 +296,6 @@ - - - - Apply Cover - - - @@ -409,6 +402,20 @@ + + + + Tags + + + + + + + Cover + + + @@ -435,7 +442,8 @@ submit_tree btnPrev btnNext - btnApplyCover + checkBoxTags + checkBoxCover btnApply btnQuit btnRetry diff --git a/src/library/library_prefs.cpp b/src/library/library_prefs.cpp index bf8265f7cb6..a10136763c8 100644 --- a/src/library/library_prefs.cpp +++ b/src/library/library_prefs.cpp @@ -89,3 +89,13 @@ const ConfigKey mixxx::library::prefs::kCoverArtFetcherQualityConfigKey = ConfigKey{ mixxx::library::prefs::kConfigGroup, QStringLiteral("CoverArtFetcherQuality")}; + +const ConfigKey mixxx::library::prefs::kTagFetcherApplyTagsConfigKey = + ConfigKey{ + mixxx::library::prefs::kConfigGroup, + QStringLiteral("TagFetcherApplyTags")}; + +const ConfigKey mixxx::library::prefs::kTagFetcherApplyCoverConfigKey = + ConfigKey{ + mixxx::library::prefs::kConfigGroup, + QStringLiteral("TagFetcherApplyCover")}; diff --git a/src/library/library_prefs.h b/src/library/library_prefs.h index b6f9f91f4f0..6750582b6d3 100644 --- a/src/library/library_prefs.h +++ b/src/library/library_prefs.h @@ -48,6 +48,10 @@ extern const ConfigKey kUseRelativePathOnExportConfigKey; extern const ConfigKey kCoverArtFetcherQualityConfigKey; +extern const ConfigKey kTagFetcherApplyTagsConfigKey; + +extern const ConfigKey kTagFetcherApplyCoverConfigKey; + } // namespace prefs } // namespace library