qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

20210828.md (41771B)


      1 # QMK Breaking Changes - 2021 August 28 Changelog
      2 
      3 ## Notable Features {#notable-features}
      4 
      5 ### Combo processing improvements ([#8591](https://github.com/qmk/qmk_firmware/pull/8591)) {#combo-processing-improvements}
      6 
      7 Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps.
      8 
      9 It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of `A`, `B` can coexist with a longer combo of `A`, `B`, `C` -- previous functionality would trigger both combos if all three keys were pressed.
     10 
     11 ### Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422)) {#key-overrides}
     12 
     13 QMK now has a new feature: [key overrides](../features/key_overrides). This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing <kbd>Shift+2</kbd> normally results in an <kbd>@</kbd> on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any <kbd>modifier + key</kbd> press.
     14 
     15 To illustrate, it's now possible to use the key overrides feature to translate <kbd>Shift + Backspace</kbd> into <kbd>Delete</kbd> -- an often-requested example of where this functionality comes in handy.
     16 
     17 There's far more to describe that what lives in this changelog, so head over to the [key overrides documentation](../features/key_overrides) for more examples and info.
     18 
     19 ### Digitizer support ([#12851](https://github.com/qmk/qmk_firmware/pull/12851))
     20 
     21 QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right.
     22 
     23 ## Changes Requiring User Action {#changes-requiring-user-action}
     24 
     25 ### Updated Keyboard Codebases {#updated-keyboard-codebases}
     26 
     27 The following keyboards have had their source moved within QMK:
     28 
     29 Old Keyboard Name             | New Keyboard Name
     30 ------------------------------|---------------------------------------------------------
     31 aeboards/constellation        | aeboards/constellation/rev1, aeboards/constellation/rev2
     32 bakeneko65                    | bakeneko65/rev2, bakeneko65/rev3
     33 bm16a                         | kprepublic/bm16a
     34 bm16s                         | kprepublic/bm16s
     35 bm40hsrgb                     | kprepublic/bm40hsrgb
     36 bm43a                         | kprepublic/bm43a
     37 bm60poker                     | kprepublic/bm60poker
     38 bm60rgb                       | kprepublic/bm60rgb
     39 bm60rgb_iso                   | kprepublic/bm60rgb_iso
     40 bm68rgb                       | kprepublic/bm68rgb
     41 clawsome/gamebuddy            | clawsome/gamebuddy/v1_0, clawsome/gamebuddy/v1_m
     42 cospad                        | kprepublic/cospad
     43 custommk/genesis              | custommk/genesis/rev1, custommk/genesis/rev2
     44 daisy                         | ktec/daisy
     45 durgod/k320                   | durgod/k3x0/k320
     46 dztech/volcano660             | ilumkb/volcano660
     47 ergodone                      | ktec/ergodone
     48 gmmk/pro                      | gmmk/pro/ansi, gmmk/pro/iso
     49 handwired/p1800fl             | team0110/p1800fl
     50 jj40                          | kprepublic/jj40
     51 jj4x4                         | kprepublic/jj4x4
     52 jj50                          | kprepublic/jj50
     53 kyria                         | splitkb/kyria
     54 lazydesigners/the60           | lazydesigners/the60/rev1, lazydesigners/the60/rev2
     55 matrix/m12og                  | matrix/m12og/rev1, matrix/m12og/rev2
     56 mechlovin/hannah65/mechlovin9 | mechlovin/mechlovin9/rev1, mechlovin/mechlovin9/rev2
     57 peiorisboards/ixora           | coarse/ixora
     58 ramonimbao/mona               | ramonimbao/mona/v1, ramonimbao/mona/v1_1
     59 staryu                        | ktec/staryu
     60 tokyo60                       | tokyokeyboard/tokyo60
     61 vinta                         | coarse/vinta
     62 xd002                         | xiudi/xd002
     63 xd004                         | xiudi/xd004
     64 xd60                          | xiudi/xd60
     65 xd68                          | xiudi/xd68
     66 xd75                          | xiudi/xd75
     67 xd84                          | xiudi/xd84
     68 xd84pro                       | xiudi/xd84pro
     69 xd87                          | xiudi/xd87
     70 xd96                          | xiudi/xd96
     71 
     72 ### Bootmagic Full Removal ([#13846](https://github.com/qmk/qmk_firmware/pull/13846)) {#bootmagic-full-removal}
     73 
     74 As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
     75 
     76 This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `full` results in an error, allowing only `no`, `yes`, or `lite`.
     77 
     78 Currently `lite` is the equivalent of `yes` in `rules.mk`. Next cycle the use of the `lite` keyword will be prevented in favour of `yes` -- any new submissions should now be using `yes` or `no` to minimise disruption.
     79 
     80 #### Bootmagic Full Deprecation Schedule
     81 
     82 This is the current roadmap for the behavior of `BOOTMAGIC_ENABLE`:
     83 
     84 - (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic.
     85 - (now) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` – setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail.
     86 - (next) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` – setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail.
     87 
     88 ### DIP switch callbacks are now boolean ([#13399](https://github.com/qmk/qmk_firmware/pull/13399)) {#dip-switch-boolean}
     89 
     90 To match the encoder change last breaking changes cycle, DIP switch callbacks now return `bool`, too.
     91 
     92 Example code before change:
     93 
     94 ```c
     95 void dip_switch_update_kb(uint8_t index, bool active) {
     96     dip_switch_update_user(index, active);
     97 }
     98 
     99 void dip_switch_update_user(uint8_t index, bool active) {
    100     switch (index) {
    101         case 0:
    102             if(active) { audio_on(); } else { audio_off(); }
    103             break;
    104     }
    105 }
    106 
    107 void dip_switch_update_mask_kb(uint32_t state) {
    108     dip_switch_update_mask_user(state);
    109 }
    110 
    111 void dip_switch_update_mask_user(uint32_t state) {
    112     if (state & (1UL<<0) && state & (1UL<<1)) {
    113         layer_on(_ADJUST); // C on esc
    114     } else {
    115         layer_off(_ADJUST);
    116     }
    117 }
    118 ```
    119 
    120 Example code after change:
    121 
    122 ```c
    123 bool dip_switch_update_kb(uint8_t index, bool active) {
    124     if !(dip_switch_update_user(index, active)) { return false; }
    125     return true;
    126 }
    127 
    128 bool dip_switch_update_user(uint8_t index, bool active) {
    129     switch (index) {
    130         case 0:
    131             if(active) { audio_on(); } else { audio_off(); }
    132             break;
    133     }
    134     return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".
    135 }
    136 
    137 bool dip_switch_update_mask_kb(uint32_t state) {
    138     if (!dip_switch_update_mask_user(state)) { return false; }
    139     return true;
    140 }
    141 
    142 bool dip_switch_update_mask_user(uint32_t state) {
    143     if (state & (1UL<<0) && state & (1UL<<1)) {
    144         layer_on(_ADJUST); // C on esc
    145     } else {
    146         layer_off(_ADJUST);
    147     }
    148     return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".
    149 }
    150 ```
    151 
    152 ## Notable core changes {#notable-core}
    153 
    154 ### Split transport improvements {#split-transport-improvements}
    155 
    156 Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically:
    157 
    158 * Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930)) -- rewritten data sharing between sides, allowing for data transfer only when required, as well as enabling keyboards and keymaps to define their own shared data.
    159 * Full-duplex ARM USART split ([#13081](https://github.com/qmk/qmk_firmware/pull/13081)) -- adds to the previous half-duplex driver and now allows for full-duplex support on ARM.
    160 * Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523)) -- allows the slave to be disconnected, enabling one-handed use.
    161 * Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418))
    162 
    163 ::: warning
    164 If you're updating your split keyboard, you will need to flash both sides of the split with the your firmware.
    165 :::
    166 
    167 ### Teensy 4.x support ([#13056](https://github.com/qmk/qmk_firmware/pull/13056), [#13076](https://github.com/qmk/qmk_firmware/pull/13076), [#13077](https://github.com/qmk/qmk_firmware/pull/13077)) {#teensy-4-x-support}
    168 
    169 Updated ChibiOS and ChibiOS-Contrib, which brought in support for Teensy 4.x dev boards, running NXP i.MX1062.
    170 
    171 ### Data Driven Improvements ([#13366](https://github.com/qmk/qmk_firmware/pull/13366))
    172 
    173 QMK's pursuit of data-driven keyboards has progressed, allowing substantially more configurable options to be specified in `info.json`.
    174 
    175 #### Tags
    176 
    177 Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a `tags` key to your `info.json`:
    178 
    179     "tags": ["tkl", "backlight", "encoder"]
    180 
    181 #### Dot Notation
    182 
    183 With this release we are moving towards using JSON dot notation in more places. For example, when using `qmk info -f text`:
    184 
    185 ```
    186 $ qmk info -f text -kb clueboard/card
    187   bootloader: atmel-dfu
    188   debounce: 20
    189   diode_direction: ROW2COL
    190   features.audio: True
    191   features.backlight: True
    192   features.bluetooth: False
    193   features.bootmagic: False
    194   features.command: True
    195   features.console: True
    196   features.extrakey: True
    197   features.lto: True
    198   features.midi: False
    199   features.mousekey: True
    200   features.nkro: False
    201   features.rgblight: True
    202   features.unicode: False
    203   height: 8
    204   keyboard_folder: clueboard/card
    205   keyboard_name: Cluecard
    206   layout_aliases.LAYOUT: LAYOUT_all
    207   layouts: LAYOUT_all
    208   maintainer: skullydazed
    209   manufacturer: Clueboard
    210   matrix_pins.cols: F1, F6, F7
    211   matrix_pins.rows: B4, F0, F4, F5
    212   platform: unknown
    213   processor: atmega32u4
    214   processor_type: avr
    215   protocol: LUFA
    216   rgblight.brightness_steps: 17
    217   rgblight.hue_steps: 10
    218   rgblight.led_count: 4
    219   rgblight.pin: E6
    220   rgblight.saturation_steps: 17
    221   split.transport.protocol: serial
    222   usb.device_ver: 0x0001
    223   usb.pid: 0x2330
    224   usb.vid: 0xC1ED
    225   width: 10
    226 ```
    227 
    228 #### New configuration keys
    229 
    230 We've added dozens of new keys to `info.json` so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:
    231 
    232 * `audio.pins`, `audio.voices`
    233 * `backlight.breathing`, `backlight.breathing_period`, `backlight.levels`, `backlight.pin`,
    234 * `bluetooth.driver`, `bluetooth.lto`
    235 * `bootloader_instructions`
    236 * `build.debounce_type`, `build.firmware_format`, `build.lto`
    237 * `combo.count`, `combo.term`
    238 * `leader_key.timing`, `leader_key.strict_processing`, `leader_key.timeout`
    239 * `matrix.custom`, `matrix.custom_lite`, `matrix.ghost`, `matrix.io_delay`
    240 * `mouse_key.enabled`, `mouse_key.delay`, `mouse_key.interval`, `mouse_key.max_speed`, `mouse_key.time_to_max`, `mouse_key.wheel_delay`
    241 * `oneshot.tap_toggle`, `oneshot.timeout`
    242 * `rgblight.layers.blink`, `rgblight.layers.enabled`, `rgblight.layers.max`, `rgblight.layers.override_rgb`, `rgblight.rgbw`
    243 * `split.enabled`, `split.matrix_grid`, `split.matrix_pins`, `split.main`, `split.soft_serial_pin`, `split.soft_serial_speed`, `split.transport.protocol`, `split.transport.sync_matrix_state`, `split.transport.sync_modifiers`, `split.usb_detect`
    244 * `tapping.force_hold`, `tapping.force_hold_per_key`, `tapping.ignore_mod_tap_interrupt`, `tapping.ignore_mod_tap_interrupt_per_key`, `tapping.permissive_hold`, `tapping.permissive_hold_per_key`, `tapping.retro`, `tapping.retro_per_key`, `tapping.term`, `tapping.term_per_key`, `tapping.toggle`
    245 * `usb.force_nkro`, `usb.max_power`, `usb.no_startup_check`, `usb.polling_interval`, `usb.shared_endpoint.keyboard`, `usb.shared_endpoint.mouse`, `usb.suspend_wakeup_delay`, `usb.wait_for`
    246 * `qmk.keys_per_scan`, `qmk.tap_keycode_delay`, `qmk.tap_capslock_delay`
    247 
    248 ### Codebase restructure and cleanup {#codebase-restructure}
    249 
    250 QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:
    251 
    252 * Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312))
    253 * Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673))
    254 * matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748))
    255 * Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749))
    256 * Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777))
    257 * Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843))
    258 * Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894))
    259 * Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927))
    260 * Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973))
    261 * Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025))
    262 * Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132))
    263 * Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134))
    264 
    265 ---
    266 
    267 ## Full changelist
    268 
    269 Core:
    270 * Arm ps2 mouse interrupt ([#6490](https://github.com/qmk/qmk_firmware/pull/6490))
    271 * Process combos earlier & overlapping combos ([#8591](https://github.com/qmk/qmk_firmware/pull/8591))
    272 * Swap buttons on PS2 Mouse/Trackball ([#9205](https://github.com/qmk/qmk_firmware/pull/9205))
    273 * Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys ([#9404](https://github.com/qmk/qmk_firmware/pull/9404))
    274 * add yaml_build_options target ([#10533](https://github.com/qmk/qmk_firmware/pull/10533))
    275 * Warn when building a board that uses arm_atsam ([#10904](https://github.com/qmk/qmk_firmware/pull/10904))
    276 * Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422))
    277 * Refactor `quantum/command.{c,h}` for code size & {read,maintain}ability ([#11842](https://github.com/qmk/qmk_firmware/pull/11842))
    278 * Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930))
    279 * Move print/debug files to quantum ([#12069](https://github.com/qmk/qmk_firmware/pull/12069))
    280 * Unconditionally call led_init_ports ([#12116](https://github.com/qmk/qmk_firmware/pull/12116))
    281 * Support using a timer for wait_us() on ChibiOS-based boards ([#12211](https://github.com/qmk/qmk_firmware/pull/12211))
    282 * Add support for NO_PIN to all matrix types ([#12238](https://github.com/qmk/qmk_firmware/pull/12238))
    283 * Avoid 8-bit timer overflows in debounce algorithms ([#12240](https://github.com/qmk/qmk_firmware/pull/12240))
    284 * Add Per Key exclusions for Haptic Feedback ([#12386](https://github.com/qmk/qmk_firmware/pull/12386))
    285 * Steno combinedkeys ([#12538](https://github.com/qmk/qmk_firmware/pull/12538))
    286 * eeprom_stm32: implement high density wear leveling ([#12567](https://github.com/qmk/qmk_firmware/pull/12567))
    287 * eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. ([#12617](https://github.com/qmk/qmk_firmware/pull/12617))
    288 * Add CRC8 calculation subsystem to quantum ([#12641](https://github.com/qmk/qmk_firmware/pull/12641))
    289 * Limit saturation for RGB_MATRIX_JELLYBEAN_RAINDROPS ([#12669](https://github.com/qmk/qmk_firmware/pull/12669))
    290 * Add asym_eager_defer_pk debounce type ([#12689](https://github.com/qmk/qmk_firmware/pull/12689))
    291 * Include lib8tion.c into RGB/LED matrix build list ([#12699](https://github.com/qmk/qmk_firmware/pull/12699))
    292 * Add readPort() and some API to 'tmk_core/common/*/gpio.h' ([#12754](https://github.com/qmk/qmk_firmware/pull/12754))
    293 * add wait_cpuclock() macro for AVR and CPU_CLOCK macro ([#12755](https://github.com/qmk/qmk_firmware/pull/12755))
    294 * Trigger a wakeup after USB Reset on ChibiOS. ([#12831](https://github.com/qmk/qmk_firmware/pull/12831))
    295 * Add sync_timer support over serial_link (i.e. Ergodox Infinity) ([#12845](https://github.com/qmk/qmk_firmware/pull/12845))
    296 * Digitizer HID interface : absolute coordinates for mouse cursor ([#12851](https://github.com/qmk/qmk_firmware/pull/12851))
    297 * Add config.h and rules.mk support for data driven keymaps ([#12859](https://github.com/qmk/qmk_firmware/pull/12859))
    298 * Add alternate ldscript for STM32duino (F103xB) ([#12914](https://github.com/qmk/qmk_firmware/pull/12914))
    299 * `keymap_extras`: Remove deprecated defines ([#12949](https://github.com/qmk/qmk_firmware/pull/12949))
    300 * Retain brightness with lighting layers ([#13025](https://github.com/qmk/qmk_firmware/pull/13025))
    301 * Move optical sensor code to drivers folder ([#13044](https://github.com/qmk/qmk_firmware/pull/13044))
    302 * Change the prototype of matrix_output_unselect_delay() ([#13045](https://github.com/qmk/qmk_firmware/pull/13045))
    303 * Add weak refs on reading rows/cols. ([#13062](https://github.com/qmk/qmk_firmware/pull/13062))
    304 * Use single memcmp to determine if matrix changed. ([#13064](https://github.com/qmk/qmk_firmware/pull/13064))
    305 * Improve layer mask handling ([#13065](https://github.com/qmk/qmk_firmware/pull/13065))
    306 * mousekey: expose current report to users ([#13069](https://github.com/qmk/qmk_firmware/pull/13069))
    307 * ChibiOS SVN mirror script. ([#13070](https://github.com/qmk/qmk_firmware/pull/13070))
    308 * Added right vs left specific pin assignments for dip switch ([#13074](https://github.com/qmk/qmk_firmware/pull/13074))
    309 * make RESET key work with Teensy 4.x ([#13076](https://github.com/qmk/qmk_firmware/pull/13076))
    310 * wire up flash make target for Teensy 4.x ([#13077](https://github.com/qmk/qmk_firmware/pull/13077))
    311 * bump USB spec version in device descriptor to 2.0 ([#13078](https://github.com/qmk/qmk_firmware/pull/13078))
    312 * Unite half-duplex and full-duplex serial drivers ([#13081](https://github.com/qmk/qmk_firmware/pull/13081))
    313 * Add ST7565 LCD driver ([#13089](https://github.com/qmk/qmk_firmware/pull/13089))
    314 * `spi_master` Kinetis support ([#13098](https://github.com/qmk/qmk_firmware/pull/13098))
    315 * GMMK Pro RGB Support ([#13147](https://github.com/qmk/qmk_firmware/pull/13147))
    316 * Remove dfu-util arguments from mcu_selection ([#13150](https://github.com/qmk/qmk_firmware/pull/13150))
    317 * Add subcommand to generate version.h ([#13151](https://github.com/qmk/qmk_firmware/pull/13151))
    318 * Add oled_invert ([#13172](https://github.com/qmk/qmk_firmware/pull/13172))
    319 * ST7565 invert ([#13237](https://github.com/qmk/qmk_firmware/pull/13237))
    320 * RGB Matrix eeprom write limiting ([#13238](https://github.com/qmk/qmk_firmware/pull/13238))
    321 * Temporary disable of CRC ([#13252](https://github.com/qmk/qmk_firmware/pull/13252))
    322 * Move LED/RGB Matrix code into their own directories ([#13257](https://github.com/qmk/qmk_firmware/pull/13257))
    323 * Skip EEPROM writes once done. ([#13293](https://github.com/qmk/qmk_firmware/pull/13293))
    324 * Remove rgblight stubs ([#13302](https://github.com/qmk/qmk_firmware/pull/13302))
    325 * Allow settable SPI divisor for AW20216 driver, set default to 4 ([#13309](https://github.com/qmk/qmk_firmware/pull/13309))
    326 * Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312))
    327 * Unify matrix for split common and regular matrix ([#13330](https://github.com/qmk/qmk_firmware/pull/13330))
    328 * Relocate RGB/HSV color defs to a more fitting place ([#13377](https://github.com/qmk/qmk_firmware/pull/13377))
    329 * Adds support for STM32L412xB, STM32L422xB. ([#13383](https://github.com/qmk/qmk_firmware/pull/13383))
    330 * Convert Dip Switch callbacks to boolean functions ([#13399](https://github.com/qmk/qmk_firmware/pull/13399))
    331 * Use string literals for `SERIAL_NUMBER` ([#13403](https://github.com/qmk/qmk_firmware/pull/13403))
    332 * Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418))
    333 * Improve 'show_build_options' target ([#13425](https://github.com/qmk/qmk_firmware/pull/13425))
    334 * AW20216 use register increment for framebuffer flushes ([#13430](https://github.com/qmk/qmk_firmware/pull/13430))
    335 * Allow invert of SPLIT_HAND_PIN logic ([#13433](https://github.com/qmk/qmk_firmware/pull/13433))
    336 * chibios: bootloader: use integer pointers as volatile ([#13450](https://github.com/qmk/qmk_firmware/pull/13450))
    337 * Refactor OLED to allow easy addition of other types ([#13454](https://github.com/qmk/qmk_firmware/pull/13454))
    338 * Dual RGB Matrix IS31FL3737 driver support to address #13442 ([#13457](https://github.com/qmk/qmk_firmware/pull/13457))
    339 * Enable g_is31_leds PROGMEM for RGB Matrix IS31FL3737 driver ([#13480](https://github.com/qmk/qmk_firmware/pull/13480))
    340 * Switch Ergodox Infinity over to split_common ([#13481](https://github.com/qmk/qmk_firmware/pull/13481))
    341 * Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523))
    342 * Enable sync of OLED/ST7565 display on/off state on Splits ([#13542](https://github.com/qmk/qmk_firmware/pull/13542))
    343 * Revert "Add rgblight to RGB Matrix VPATH" ([#13559](https://github.com/qmk/qmk_firmware/pull/13559))
    344 * Move `SENDSTRING_BELL` code to `send_string.h` ([#13566](https://github.com/qmk/qmk_firmware/pull/13566))
    345 * Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673))
    346 * Avoid LTO conficts on arm_atsam ([#13676](https://github.com/qmk/qmk_firmware/pull/13676))
    347 * Allow for removal of hysteresis on 4x encoders ([#13698](https://github.com/qmk/qmk_firmware/pull/13698))
    348 * Port new_keyboard.sh to CLI ([#13706](https://github.com/qmk/qmk_firmware/pull/13706))
    349 * Align AW20216 driver ([#13712](https://github.com/qmk/qmk_firmware/pull/13712))
    350 * Haptic: driver-> feature ([#13713](https://github.com/qmk/qmk_firmware/pull/13713))
    351 * Add support for STM32F407x MCUs. ([#13718](https://github.com/qmk/qmk_firmware/pull/13718))
    352 * Remove legacy BACKLIGHT_CUSTOM_DRIVER option ([#13731](https://github.com/qmk/qmk_firmware/pull/13731))
    353 * Minor tidy up of key overrides ([#13747](https://github.com/qmk/qmk_firmware/pull/13747))
    354 * matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748))
    355 * Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749))
    356 * Allow for higher USB Polling rate on ATSAM boards ([#13755](https://github.com/qmk/qmk_firmware/pull/13755))
    357 * Rgb matrix/enable modes explicitly ([#13758](https://github.com/qmk/qmk_firmware/pull/13758))
    358 * Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777))
    359 * __flash? ([#13799](https://github.com/qmk/qmk_firmware/pull/13799))
    360 * `--parallel` improvements ([#13800](https://github.com/qmk/qmk_firmware/pull/13800))
    361 * Speed up pimoroni trackball driver ([#13823](https://github.com/qmk/qmk_firmware/pull/13823))
    362 * Add a toggle key for GUI On/Off in Magic feature ([#13830](https://github.com/qmk/qmk_firmware/pull/13830))
    363 * Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843))
    364 * Remove Full Bootmagic ([#13846](https://github.com/qmk/qmk_firmware/pull/13846))
    365 * Remove backwards compatibility of debounce names ([#13877](https://github.com/qmk/qmk_firmware/pull/13877))
    366 * Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894))
    367 * Remove ONEHAND_ENABLE ([#13920](https://github.com/qmk/qmk_firmware/pull/13920))
    368 * Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927))
    369 * adding uf2 flash support for blackpill 401 ([#13968](https://github.com/qmk/qmk_firmware/pull/13968))
    370 * Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025))
    371 * Add qmk-hid bootloader detection support to `qmk console` ([#14038](https://github.com/qmk/qmk_firmware/pull/14038))
    372 * Align DIP_SWITCH_PINS_RIGHT implementation with encoders ([#14079](https://github.com/qmk/qmk_firmware/pull/14079))
    373 * Tidy up quantum.c now some of tmk_core has been merged ([#14083](https://github.com/qmk/qmk_firmware/pull/14083))
    374 * Improve pmw3360 sensor and make it more hardware agnostic ([#14097](https://github.com/qmk/qmk_firmware/pull/14097))
    375 * Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132))
    376 * Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134))
    377 * Revert 14083 && 14144 ([#14150](https://github.com/qmk/qmk_firmware/pull/14150))
    378 
    379 CLI:
    380 * allow LINE_PINxx for Teensy 4.x pins ([#13247](https://github.com/qmk/qmk_firmware/pull/13247))
    381 * Remove the redundant pin name validation ([#13251](https://github.com/qmk/qmk_firmware/pull/13251))
    382 * Move all our CLI file formatters to the format dir ([#13296](https://github.com/qmk/qmk_firmware/pull/13296))
    383 * Refactor doctor.py into a directory ([#13298](https://github.com/qmk/qmk_firmware/pull/13298))
    384 * Add git and venv info to doctor's output ([#13405](https://github.com/qmk/qmk_firmware/pull/13405))
    385 * Matrix consistency check ([#13470](https://github.com/qmk/qmk_firmware/pull/13470))
    386 * Remove references to info.json `width` and `height` in CLI ([#13728](https://github.com/qmk/qmk_firmware/pull/13728))
    387 * Make `qmk doctor` more lenient about system config ([#13804](https://github.com/qmk/qmk_firmware/pull/13804))
    388 * Defer the expensive search for layout macros until info.json has been processed ([#14007](https://github.com/qmk/qmk_firmware/pull/14007))
    389 
    390 Submodule updates:
    391 * Update ChibiOS, ChibiOS-Contrib. ([#13056](https://github.com/qmk/qmk_firmware/pull/13056))
    392 * Update LUFA (18-07-2021) and add QMK-HID Bootloader support ([#13588](https://github.com/qmk/qmk_firmware/pull/13588))
    393 * Update LUFA Submodule (2021-07-30) ([#13819](https://github.com/qmk/qmk_firmware/pull/13819))
    394 * Bump gtest ([#13885](https://github.com/qmk/qmk_firmware/pull/13885))
    395 * Update ChibiOS-Contrib, mirroring script. ([#13896](https://github.com/qmk/qmk_firmware/pull/13896))
    396 * Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973))
    397 
    398 Keyboards:
    399 * Migrate keyboards using uGFX to LED_MATRIX ([#9657](https://github.com/qmk/qmk_firmware/pull/9657))
    400 * Remove MIDI Configuration boilerplate ([#11151](https://github.com/qmk/qmk_firmware/pull/11151))
    401 * manyboard macro ([#11896](https://github.com/qmk/qmk_firmware/pull/11896))
    402 * Moved tokyo60/ into tokyokeyboard/tokyo60/. ([#12023](https://github.com/qmk/qmk_firmware/pull/12023))
    403 * Organize KPrepublic, K.T.E.C, xiudi boards into directories ([#12159](https://github.com/qmk/qmk_firmware/pull/12159))
    404 * Add Durgod Taurus K310 keyboard ([#12314](https://github.com/qmk/qmk_firmware/pull/12314))
    405 * add support for m65 and simple 5x13 ortholinear ([#12315](https://github.com/qmk/qmk_firmware/pull/12315))
    406 * Relocalize and Update p1800fl ([#12425](https://github.com/qmk/qmk_firmware/pull/12425))
    407 * GameBuddy v1.M ([#12637](https://github.com/qmk/qmk_firmware/pull/12637))
    408 * Add mechlovin9 rev2 PCB ([#12767](https://github.com/qmk/qmk_firmware/pull/12767))
    409 * Add RGB matrix support for Kyria ([#12789](https://github.com/qmk/qmk_firmware/pull/12789))
    410 * RGB Matrix working for Sofle RGB ([#12861](https://github.com/qmk/qmk_firmware/pull/12861))
    411 * Add Durgod Hades, Galaxy and Venus Keyboards ([#12893](https://github.com/qmk/qmk_firmware/pull/12893))
    412 * kint36: set correct EEPROM size ([#12946](https://github.com/qmk/qmk_firmware/pull/12946))
    413 * Updated encoder_update_user on my keymap to follow the new signature on quantum ([#13152](https://github.com/qmk/qmk_firmware/pull/13152))
    414 * Add Creator Pro by SergioPoverony ([#13154](https://github.com/qmk/qmk_firmware/pull/13154))
    415 * Use the new ST7565 driver on Ergodox Infinity ([#13165](https://github.com/qmk/qmk_firmware/pull/13165))
    416 * Refactor atom47 and add rev4 and rev5 ([#13201](https://github.com/qmk/qmk_firmware/pull/13201))
    417 * Add Bakeneko65 V3 and revision folders ([#13228](https://github.com/qmk/qmk_firmware/pull/13228))
    418 * Keyboards/RGBKB/Mün ([#13239](https://github.com/qmk/qmk_firmware/pull/13239))
    419 * Optimize our jsonschema by using refs ([#13271](https://github.com/qmk/qmk_firmware/pull/13271))
    420 * Handwired/Stream_Cheap/2x4: Add via support ([#13297](https://github.com/qmk/qmk_firmware/pull/13297))
    421 * ez_maker/directpins for easy one-offs in qmk_configurator ([#13321](https://github.com/qmk/qmk_firmware/pull/13321))
    422 * add kinT kinesis keyboard controller (kint41 variant) ([#13333](https://github.com/qmk/qmk_firmware/pull/13333))
    423 * Error log cleanup ([#13349](https://github.com/qmk/qmk_firmware/pull/13349))
    424 * Drashna's split updates ([#13350](https://github.com/qmk/qmk_firmware/pull/13350))
    425 * Migrate SHIFT_ESC and RGB `fn_actions` to Grave Escape and RGB keycodes ([#13360](https://github.com/qmk/qmk_firmware/pull/13360))
    426 * Add a lot more data to info.json ([#13366](https://github.com/qmk/qmk_firmware/pull/13366))
    427 * Remove `API_SYSEX_ENABLE`s from rules.mk ([#13389](https://github.com/qmk/qmk_firmware/pull/13389))
    428 * gmmk/pro/mike1808 keymap ([#13398](https://github.com/qmk/qmk_firmware/pull/13398))
    429 * Remove deprecated callbacks for encoders and dip switches ([#13404](https://github.com/qmk/qmk_firmware/pull/13404))
    430 * first pass: matrix consistency improvements ([#13471](https://github.com/qmk/qmk_firmware/pull/13471))
    431 * Migrate more `fn_actions` stuff ([#13502](https://github.com/qmk/qmk_firmware/pull/13502))
    432 * add simple gmmk pro macos keymap with rgb ([#13504](https://github.com/qmk/qmk_firmware/pull/13504))
    433 * move volcano660 to ilumkb folder ([#13550](https://github.com/qmk/qmk_firmware/pull/13550))
    434 * Valor Rev 2 ([#13551](https://github.com/qmk/qmk_firmware/pull/13551))
    435 * Split GMMK Pro PCBs into separate revisions ([#13570](https://github.com/qmk/qmk_firmware/pull/13570))
    436 * Remove the vision_division keyboard ([#13571](https://github.com/qmk/qmk_firmware/pull/13571))
    437 * Develop - Change uint32_t to layer_state_t ([#13596](https://github.com/qmk/qmk_firmware/pull/13596))
    438 * Develop - DC01 left ([#13597](https://github.com/qmk/qmk_firmware/pull/13597))
    439 * Created "paddlegame" keymap ([#13629](https://github.com/qmk/qmk_firmware/pull/13629))
    440 * Add timer_avr to includes for broken builds ([#13641](https://github.com/qmk/qmk_firmware/pull/13641))
    441 * Disable console by default on all Keebio boards ([#13649](https://github.com/qmk/qmk_firmware/pull/13649))
    442 * Enable LTO by default on BastardKB Scylla ([#13664](https://github.com/qmk/qmk_firmware/pull/13664))
    443 * Reduce compile size for dz60rgb v2.1 ([#13680](https://github.com/qmk/qmk_firmware/pull/13680))
    444 * Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines ([#13689](https://github.com/qmk/qmk_firmware/pull/13689))
    445 * Remove some legacy files ([#13715](https://github.com/qmk/qmk_firmware/pull/13715))
    446 * [Keyboard Update] Change to L422 ([#13717](https://github.com/qmk/qmk_firmware/pull/13717))
    447 * Update kyria make path example ([#13720](https://github.com/qmk/qmk_firmware/pull/13720))
    448 * Drashna's Defaults cleanup ([#13722](https://github.com/qmk/qmk_firmware/pull/13722))
    449 * Reduce firmware size in prep for #12670 ([#13724](https://github.com/qmk/qmk_firmware/pull/13724))
    450 * Tidy up rgbkb/mun ([#13801](https://github.com/qmk/qmk_firmware/pull/13801))
    451 * Make default keymap for GMMK Pro reflect stock ([#13850](https://github.com/qmk/qmk_firmware/pull/13850))
    452 * Rework as per 9824 ([#13898](https://github.com/qmk/qmk_firmware/pull/13898))
    453 * Remove console from keebio via keyboards ([#13901](https://github.com/qmk/qmk_firmware/pull/13901))
    454 * Drashna split transport improvement ([#13905](https://github.com/qmk/qmk_firmware/pull/13905))
    455 * Copy GMMK Pro screw specs to ISO readme ([#13908](https://github.com/qmk/qmk_firmware/pull/13908))
    456 * Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines Part 2 ([#13912](https://github.com/qmk/qmk_firmware/pull/13912))
    457 * Add andrebrait layout for GMMK Pro ([#13932](https://github.com/qmk/qmk_firmware/pull/13932))
    458 * Updated RGB Matrix suspend define part 3 ([#13954](https://github.com/qmk/qmk_firmware/pull/13954))
    459 * Improve andrebrait keymap ([#13985](https://github.com/qmk/qmk_firmware/pull/13985))
    460 * Drashna's Improve OLEDs and custom Split code ([#14063](https://github.com/qmk/qmk_firmware/pull/14063))
    461 * Kyria default reformat ([#14080](https://github.com/qmk/qmk_firmware/pull/14080))
    462 * Feature rich keymap for GMMK Pro (ANSI) ([#14120](https://github.com/qmk/qmk_firmware/pull/14120))
    463 
    464 Keyboard fixes:
    465 * Fix LED mapping for GMMK Pro ([#13189](https://github.com/qmk/qmk_firmware/pull/13189))
    466 * Fix up SplitKB keyboards ([#13511](https://github.com/qmk/qmk_firmware/pull/13511))
    467 * Keyboards/sol rev2 fix ([#13533](https://github.com/qmk/qmk_firmware/pull/13533))
    468 * Fix MATRIX_COLS for aeboards/constellation/rev2 ([#13633](https://github.com/qmk/qmk_firmware/pull/13633))
    469 * Fix errors with matrix_output_unselect_delay function calls ([#13645](https://github.com/qmk/qmk_firmware/pull/13645))
    470 * Fix default keymap for 0xCB 1337 keyboard ([#13646](https://github.com/qmk/qmk_firmware/pull/13646))
    471 * Fix Matrix Row number for ggkeyboards/genisis ([#13647](https://github.com/qmk/qmk_firmware/pull/13647))
    472 * Fix matrix issues with Promethium ([#13648](https://github.com/qmk/qmk_firmware/pull/13648))
    473 * Fix dc01/left so that it doesn't throw a warning ([#13653](https://github.com/qmk/qmk_firmware/pull/13653))
    474 * Remove broken, unmaintained converter/ibm_5291 ([#13658](https://github.com/qmk/qmk_firmware/pull/13658))
    475 * Quick hack to fix Astro65 board ([#13665](https://github.com/qmk/qmk_firmware/pull/13665))
    476 * Fix symmetric70_proto build break on develop branch ([#13667](https://github.com/qmk/qmk_firmware/pull/13667))
    477 * Fix matrix delay on Drop boards ([#13671](https://github.com/qmk/qmk_firmware/pull/13671))
    478 * Fix split matrix for sekigon grs 70ec ([#13672](https://github.com/qmk/qmk_firmware/pull/13672))
    479 * Fix type on pandora via keymap ([#13681](https://github.com/qmk/qmk_firmware/pull/13681))
    480 * Fix & clean up tronguylabs/m122_3270 ([#13684](https://github.com/qmk/qmk_firmware/pull/13684))
    481 * Fix up xd002 rgb keymaps ([#13685](https://github.com/qmk/qmk_firmware/pull/13685))
    482 * Dactyl Manuform cleanup ([#13686](https://github.com/qmk/qmk_firmware/pull/13686))
    483 * Fix Q1 change dip switch to bool ([#13687](https://github.com/qmk/qmk_firmware/pull/13687))
    484 * Fix compile size for the Merge UM70 via keymap ([#13690](https://github.com/qmk/qmk_firmware/pull/13690))
    485 * Fix compile size for the Lets Split Sockets via keymap ([#13691](https://github.com/qmk/qmk_firmware/pull/13691))
    486 * Fix Compile size on ungodly Launch Pad ([#13692](https://github.com/qmk/qmk_firmware/pull/13692))
    487 * dirty fix ([#13695](https://github.com/qmk/qmk_firmware/pull/13695))
    488 * Fix compile size for the Vitamins Included via keymap ([#13696](https://github.com/qmk/qmk_firmware/pull/13696))
    489 * Fix typo in Dactyl Manuform ([#13740](https://github.com/qmk/qmk_firmware/pull/13740))
    490 * Fix compile issues due to LED changes ([#13821](https://github.com/qmk/qmk_firmware/pull/13821))
    491 * Fix SRC include for matrix/m20add issi driver ([#13826](https://github.com/qmk/qmk_firmware/pull/13826))
    492 * fix develop branch move file ([#13832](https://github.com/qmk/qmk_firmware/pull/13832))
    493 * Fix knops keymaps ([#13872](https://github.com/qmk/qmk_firmware/pull/13872))
    494 * Switch Draculad to using WPM char hack ([#13886](https://github.com/qmk/qmk_firmware/pull/13886))
    495 * Fix up builds after #8591 ([#13900](https://github.com/qmk/qmk_firmware/pull/13900))
    496 * Fix matrix_output_unselect_delay for handwired/xealousbrown ([#13913](https://github.com/qmk/qmk_firmware/pull/13913))
    497 * Fixup rgb matrix config for KBD67 mkII boards ([#13931](https://github.com/qmk/qmk_firmware/pull/13931))
    498 * Fix compliation for ferris 0.2 bling ([#13937](https://github.com/qmk/qmk_firmware/pull/13937))
    499 * Fix some additional bootmagic settings ([#13979](https://github.com/qmk/qmk_firmware/pull/13979))
    500 * Fix default keymap for GMMK Pro Iso ([#13980](https://github.com/qmk/qmk_firmware/pull/13980))
    501 * Fixup Ungodly Launch Pad config ([#13992](https://github.com/qmk/qmk_firmware/pull/13992))
    502 * Fix errors that have cropped up in develop ([#14005](https://github.com/qmk/qmk_firmware/pull/14005))
    503 * Fix wait_us overflow in matrix for dactyl based boards ([#14039](https://github.com/qmk/qmk_firmware/pull/14039))
    504 * Fixup Neson Design N6 ISSI includes ([#14045](https://github.com/qmk/qmk_firmware/pull/14045))
    505 * Fixup `massdrop/alt`, `cest73/tkm`. ([#14048](https://github.com/qmk/qmk_firmware/pull/14048))
    506 * fix helix:fraanrosi compile error caused by #13677. ([#14061](https://github.com/qmk/qmk_firmware/pull/14061))
    507 * Fix compile issues for Tractyl Manuform ([#14105](https://github.com/qmk/qmk_firmware/pull/14105))
    508 * Disable Console on Keebio Quefrency ([#14108](https://github.com/qmk/qmk_firmware/pull/14108))
    509 * Fixed GMMK Pro -> stickandgum keymap readme.md ([#14123](https://github.com/qmk/qmk_firmware/pull/14123))
    510 * Drashna keymap fixups ([#14140](https://github.com/qmk/qmk_firmware/pull/14140))
    511 * fix ([#14142](https://github.com/qmk/qmk_firmware/pull/14142))
    512 * Fix merge artifacts ([#14146](https://github.com/qmk/qmk_firmware/pull/14146))
    513 * Update readme files ([#14172](https://github.com/qmk/qmk_firmware/pull/14172))
    514 
    515 Others:
    516 * Add examples to RGB Matrix Indicators docs ([#12797](https://github.com/qmk/qmk_firmware/pull/12797))
    517 
    518 Bugs:
    519 * Fix Indicator LED issues ([#12097](https://github.com/qmk/qmk_firmware/pull/12097))
    520 * Fixing incorrect keymap build when switching between multiple keymap.jsons ([#12632](https://github.com/qmk/qmk_firmware/pull/12632))
    521 * Fix LED Hit Counter for LED/RGB Matrix ([#12674](https://github.com/qmk/qmk_firmware/pull/12674))
    522 * ChibiOS fix O3 and LTO breakage of extra keys and joystick ([#12819](https://github.com/qmk/qmk_firmware/pull/12819))
    523 * Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards ([#12870](https://github.com/qmk/qmk_firmware/pull/12870))
    524 * Fix firmware size check with avr-libc 1:2.0.0+Atmel3.6.2-1.1 (Debian bullseye) ([#12951](https://github.com/qmk/qmk_firmware/pull/12951))
    525 * Fix RGB/LED Suspend defines ([#13146](https://github.com/qmk/qmk_firmware/pull/13146))
    526 * Fix overrun in st7565_write_raw when not at (0, 0) ([#13209](https://github.com/qmk/qmk_firmware/pull/13209))
    527 * Upgrades Vagrant box to Debian 10 to fix Docker build error on Debian 9. ([#13236](https://github.com/qmk/qmk_firmware/pull/13236))
    528 * Fix issues with VIA EEPROM init and bring in line with eeconfig functionality ([#13243](https://github.com/qmk/qmk_firmware/pull/13243))
    529 * Fix CRC for AVR and enable again. ([#13253](https://github.com/qmk/qmk_firmware/pull/13253))
    530 * Fix linker error when rgblight and RGB Matrix are both enabled ([#13304](https://github.com/qmk/qmk_firmware/pull/13304))
    531 * Fix building layouts from JSON ([#13310](https://github.com/qmk/qmk_firmware/pull/13310))
    532 * Add rgblight to RGB Matrix VPATH ([#13371](https://github.com/qmk/qmk_firmware/pull/13371))
    533 * Fix two out of bounds accesses from #13330. ([#13525](https://github.com/qmk/qmk_firmware/pull/13525))
    534 * Fixes for clang not being able to run unit tests ([#13546](https://github.com/qmk/qmk_firmware/pull/13546))
    535 * Fixup Audio startup and add to documents ([#13606](https://github.com/qmk/qmk_firmware/pull/13606))
    536 * CLI/Docs: Fix the format commands' name ([#13668](https://github.com/qmk/qmk_firmware/pull/13668))
    537 * Disables rgblight twinkle by default. ([#13677](https://github.com/qmk/qmk_firmware/pull/13677))
    538 * Fix typo in dip switch example ([#13688](https://github.com/qmk/qmk_firmware/pull/13688))
    539 * docs/cli_commands: fix typo ([#13697](https://github.com/qmk/qmk_firmware/pull/13697))
    540 * Include gpio.h in solenoid driver for GPIO Control functions ([#13716](https://github.com/qmk/qmk_firmware/pull/13716))
    541 * Fix pimoroni trackball read address ([#13810](https://github.com/qmk/qmk_firmware/pull/13810))
    542 * Fix Key Override includes ([#13831](https://github.com/qmk/qmk_firmware/pull/13831))
    543 * Fix alignment of USB out report buffer 2 -> 4 ([#13838](https://github.com/qmk/qmk_firmware/pull/13838))
    544 * Fix compilation issue. ([#13926](https://github.com/qmk/qmk_firmware/pull/13926))
    545 * Fix `combo_disable` ([#13988](https://github.com/qmk/qmk_firmware/pull/13988))
    546 * Fix pmw3360 code to only output debug info if mouse debugging is enabled ([#13993](https://github.com/qmk/qmk_firmware/pull/13993))
    547 * Fix ifdefs for OLED split sync code ([#14017](https://github.com/qmk/qmk_firmware/pull/14017))
    548 * Various fixes from reorg of files ([#14051](https://github.com/qmk/qmk_firmware/pull/14051))
    549 * Fixup atsam builds. ([#14052](https://github.com/qmk/qmk_firmware/pull/14052))
    550 * Fix RGB/LED Matrix Suspend code ([#14084](https://github.com/qmk/qmk_firmware/pull/14084))
    551 * Fix issues with recent keymap.json changes ([#14089](https://github.com/qmk/qmk_firmware/pull/14089))
    552 * Fix LED Matrix suspend code ([#14090](https://github.com/qmk/qmk_firmware/pull/14090))
    553 * Fix up compilation issues. ([#14095](https://github.com/qmk/qmk_firmware/pull/14095))
    554 * Fix copypasta issue with pmw3360 sensor config ([#14106](https://github.com/qmk/qmk_firmware/pull/14106))
    555 * Fix typo ([#14118](https://github.com/qmk/qmk_firmware/pull/14118))
    556 * Fix bootloadHID comments breaking :flash ([#14133](https://github.com/qmk/qmk_firmware/pull/14133))
    557 * Fix Mouse Shared EP functionality ([#14136](https://github.com/qmk/qmk_firmware/pull/14136))
    558 * Short term bodge for firmware size bloat ([#14144](https://github.com/qmk/qmk_firmware/pull/14144))
    559 * Move to correct location ([#14171](https://github.com/qmk/qmk_firmware/pull/14171))