# QMK Breaking Change - 2020 Nov 28 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.


## Changes Requiring User Action :id=changes-requiring-user-action

### Relocated Keyboards :id=relocated-keyboards

#### Reduce Helix keyboard build variation ([#8669]https://github.com/qmk/qmk_firmware/pull/8669)

The build commands for the Helix keyboard are:

```
make <helix_build_name>:<keymap_name>
```

For `<helix_build_name>`, specify the one in the rightmost column of the table below, such as `helix`,` helix/pico`.

| before Oct 17 2019   |  Oct 17 2019            | Mar 10 2020             | Nov 28 2020             |
| ---------------------|-------------------------|-------------------------| ------------------------|
| helix/rev1           | helix/rev1              | helix/rev1              | helix/rev1              |
| helix/pico           | helix/pico              | helix/pico              | helix/pico              |
|                      | helix/pico/back         | helix/pico/back         | helix/pico/back         |
|                      | helix/pico/under        | helix/pico/under        | helix/pico/under        |
|                      |                         | helix/pico/sc           | --                      |
|                      |                         | helix/pico/sc/back      | helix/pico/sc           |
|                      |                         | helix/pico/sc/under     | --                      |
| helix/rev2 (=helix)  | helix/rev2 (=helix)     | helix/rev2 (=helix)     | --                      |
|                      | helix/rev2/back         | helix/rev2/back         | --                      |
|                      | helix/rev2/back/oled    | helix/rev2/back/oled    | ( --> helix/rev2/back)  |
|                      | helix/rev2/oled         | helix/rev2/oled         | helix/rev2 (=helix)     |
|                      | helix/rev2/oled/back    | helix/rev2/oled/back    | helix/rev2/back         |
|                      | helix/rev2/oled/under   | helix/rev2/oled/under   | helix/rev2/under        |
|                      |                         | helix/rev2/sc           | --                      |
|                      |                         | helix/rev2/sc/back      | --                      |
|                      |                         | helix/rev2/sc/oled      | --                      |
|                      |                         | helix/rev2/sc/oledback  | helix/rev2/sc           |
|                      |                         | helix/rev2/sc/oledunder | --                      |
|                      |                         | helix/rev2/sc/under     | --                      |
|                      | helix/rev2/under        | helix/rev2/under        | --                      |
|                      | helix/rev2/under/oled   | helix/rev2/under/oled   | ( --> helix/rev2/under) |

#### Update the Speedo firmware for v3.0 ([#10657]https://github.com/qmk/qmk_firmware/pull/10657)

The Speedo keyboard has moved to `cozykeys/speedo/v2` as the designer prepares to release the Speedo v3.0.

| Previous Name | New Name                   |
| :------------ | :------------------------- |
| speedo        | cozykeys/speedo/v2         |
| --            | cozykeys/speedo/v3 **new** |

#### Maartenwut/Maarten name change to evyd13/Evy ([#10274]https://github.com/qmk/qmk_firmware/pull/10274)

Maartenwut has rebranded as @evyd13, and all released Maartenwut boards have moved.

| Previous Name          | New Name           |
| :--------------------- | :----------------- |
| maartenwut/atom47/rev2 | evyd13/atom47/rev2 |
| maartenwut/atom47/rev3 | evyd13/atom47/rev3 |
| maartenwut/eon40       | evyd13/eon40       |
| maartenwut/eon65       | evyd13/eon65       |
| maartenwut/eon75       | evyd13/eon75       |
| maartenwut/eon87       | evyd13/eon87       |
| maartenwut/eon95       | evyd13/eon95       |
| maartenwut/gh80_1800   | evyd13/gh80_1800   |
| maartenwut/gh80_3700   | evyd13/gh80_3700   |
| maartenwut/minitomic   | evyd13/minitomic   |
| maartenwut/mx5160      | evyd13/mx5160      |
| maartenwut/nt660       | evyd13/nt660       |
| maartenwut/omrontkl    | evyd13/omrontkl    |
| maartenwut/plain60     | evyd13/plain60     |
| maartenwut/pockettype  | evyd13/pockettype  |
| maartenwut/quackfire   | evyd13/quackfire   |
| maartenwut/solheim68   | evyd13/solheim68   |
| maartenwut/ta65        | evyd13/ta65        |
| maartenwut/wasdat      | evyd13/wasdat      |
| maartenwut/wasdat_code | evyd13/wasdat_code |
| maartenwut/wonderland  | evyd13/wonderland  |

#### Xelus Valor and Dawn60 Refactors ([#10512]https://github.com/qmk/qmk_firmware/pull/10512, [#10584]https://github.com/qmk/qmk_firmware/pull/10584)

The Valor and Dawn60 keyboards by Xelus22 both now require their revisions to be specified when compiling.

| Previous Name | New Name          |
| :------------ | :---------------- |
| xelus/dawn60  | xelus/dawn60/rev1 |
| xelus/valor   | xelus/valor/rev1  |


### Updated Keyboard Codebases :id=keyboard-updates

#### AEboards EXT65 Refactor ([#10820]https://github.com/qmk/qmk_firmware/pull/10820)

The EXT65 codebase has been reworked so keymaps can be used with either revision.


## Core Changes :id=core-changes

### Fixes :id=core-fixes

* Reconnect the USB if users wake up a computer from the keyboard to restore the USB state ([#10088]https://github.com/qmk/qmk_firmware/pull/10088)
* Fix cursor position bug in oled_write_raw functions ([#10800]https://github.com/qmk/qmk_firmware/pull/10800)

### Additions and Enhancements :id=core-additions

* Allow MATRIX_ROWS to be greater than 32 ([#10183]https://github.com/qmk/qmk_firmware/pull/10183)
* Add support for soft serial to ATmega32U2 ([#10204]https://github.com/qmk/qmk_firmware/pull/10204)
* Allow direct control of MIDI velocity value ([#9940]https://github.com/qmk/qmk_firmware/pull/9940)
* Joystick 16-bit support ([#10439]https://github.com/qmk/qmk_firmware/pull/10439)
* Allow encoder resolutions to be set per encoder ([#10259]https://github.com/qmk/qmk_firmware/pull/10259)
* Share button state from mousekey to pointing_device ([#10179]https://github.com/qmk/qmk_firmware/pull/10179)
* Add advanced/efficient RGB Matrix Indicators ([#8564]https://github.com/qmk/qmk_firmware/pull/8564)
* OLED display update interval support ([#10388]https://github.com/qmk/qmk_firmware/pull/10388)
* Per-Key Retro Tapping ([#10622]https://github.com/qmk/qmk_firmware/pull/10622)
* Allow backlight duty cycle limit ([#10260]https://github.com/qmk/qmk_firmware/pull/10260)
* Add step sequencer feature ([#9703]https://github.com/qmk/qmk_firmware/pull/9703)
* Added `add_oneshot_mods` & `del_oneshot_mods` ([#10549]https://github.com/qmk/qmk_firmware/pull/10549)
* Add AT90USB support for serial.c ([#10706]https://github.com/qmk/qmk_firmware/pull/10706)
* Auto shift: support repeats and early registration (#9826)

### Clean-ups and Optimizations :id=core-optimizations

* Haptic and solenoid cleanup ([#9700]https://github.com/qmk/qmk_firmware/pull/9700)
* XD75 cleanup ([#10524]https://github.com/qmk/qmk_firmware/pull/10524)
* Minor change to behavior allowing display updates to continue between task ticks ([#10750]https://github.com/qmk/qmk_firmware/pull/10750)
* Change some GPIO manipulations in matrix.c to be atomic ([#10491]https://github.com/qmk/qmk_firmware/pull/10491)
* combine repeated lines of code for ATmega32U2, ATmega16U2, ATmega328 and ATmega328P ([#10837]https://github.com/qmk/qmk_firmware/pull/10837)
* Remove references to HD44780 ([#10735]https://github.com/qmk/qmk_firmware/pull/10735)


## QMK Infrastructure and Internals :id=qmk-internals

* Add ability to build a subset of all keyboards based on platform. ([#10420]https://github.com/qmk/qmk_firmware/pull/10420)
* Initialise EEPROM drivers at startup, instead of upon first execution ([#10438]https://github.com/qmk/qmk_firmware/pull/10438)
* Make bootloader_jump weak for ChibiOS ([#10417]https://github.com/qmk/qmk_firmware/pull/10417)
* Support for STM32 GPIOF,G,H,I,J,K ([#10206]https://github.com/qmk/qmk_firmware/pull/10206)
* Add milc as a dependency and remove the installed milc ([#10563]https://github.com/qmk/qmk_firmware/pull/10563)
* ChibiOS upgrade: early init conversions ([#10214]https://github.com/qmk/qmk_firmware/pull/10214)
* ChibiOS upgrade: configuration file migrator ([#9952]https://github.com/qmk/qmk_firmware/pull/9952)
* Add definition based on currently-selected serial driver. ([#10716]https://github.com/qmk/qmk_firmware/pull/10716)
* Allow for modification of output RGB values when using rgblight/rgb_matrix. ([#10638]https://github.com/qmk/qmk_firmware/pull/10638)
* Allow keyboards/keymaps to execute code at each main loop iteration ([#10530]https://github.com/qmk/qmk_firmware/pull/10530)
* qmk cformat ([#10767]https://github.com/qmk/qmk_firmware/pull/10767)
* Add a Make variable to easily enable DEBUG_MATRIX_SCAN_RATE on the command line ([#10824]https://github.com/qmk/qmk_firmware/pull/10824)
* update Chibios OS USB for the OTG driver ([#8893]https://github.com/qmk/qmk_firmware/pull/8893)
* Fixup version.h writing when using `SKIP_VERSION=yes` ([#10972]https://github.com/qmk/qmk_firmware/pull/10972, [#10974]https://github.com/qmk/qmk_firmware/pull/10974)
* Rename ledmatrix.h to match .c file ([#7949]https://github.com/qmk/qmk_firmware/pull/7949)
* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10231]https://github.com/qmk/qmk_firmware/pull/10231)
* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER ([#10840]https://github.com/qmk/qmk_firmware/pull/10840)