diff --git a/docs/ChangeLog/20260222.md b/docs/ChangeLog/20260222.md new file mode 100644 index 0000000000..462c9e6521 --- /dev/null +++ b/docs/ChangeLog/20260222.md @@ -0,0 +1,75 @@ +# QMK Breaking Changes - 2026 Feb 22 Changelog + +## Deprecation Notices + +### Removal of deprecated GPIO defines ([#26028](https://github.com/qmk/qmk_firmware/pull/26028)) + +QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem. + +The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling. + +Previous backwards compatibility has now been removed. see the [GPIO Control](../drivers/gpio#macros) documentation for more information. + +### Removal of deprecated isLeftHand ([25897](https://github.com/qmk/qmk_firmware/pull/25897)) + +Users should migrate to `is_keyboard_left()` found in `split_util.h` instead. For example: + +```diff +oled_rotation_t oled_init_user(oled_rotation_t rotation) { +- return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0; ++ return is_keyboard_left() ? OLED_ROTATION_180 : OLED_ROTATION_0; +} +``` + +The deprecated variable `isLeftHand` will be removed in a future breaking changes cycle. + +## Full changelist + +Core: +* Refactor Makefile logic for locating keymaps ([#25808](https://github.com/qmk/qmk_firmware/pull/25808)) +* Move shutdown delay to audio feature ([#25859](https://github.com/qmk/qmk_firmware/pull/25859)) +* Refactor core use of deprecated `isLeftHand` ([#25888](https://github.com/qmk/qmk_firmware/pull/25888)) +* Allow custom data sync for community modules ([#25955](https://github.com/qmk/qmk_firmware/pull/25955)) +* Remove an unreachable break statement ([#26006](https://github.com/qmk/qmk_firmware/pull/26006)) +* Remove duplicate host.h ([#26007](https://github.com/qmk/qmk_firmware/pull/26007)) +* Remove redundant EEPROM update ([#26008](https://github.com/qmk/qmk_firmware/pull/26008)) +* Remove redundant unsigned comparison in apa102_set_brightness ([#26010](https://github.com/qmk/qmk_firmware/pull/26010)) +* Remove unused headers ([#26011](https://github.com/qmk/qmk_firmware/pull/26011)) +* Return INVALID_DEFERRED_TOKEN on allocation failure ([#26012](https://github.com/qmk/qmk_firmware/pull/26012)) +* Remove deprecated GPIO defines ([#26028](https://github.com/qmk/qmk_firmware/pull/26028)) + +CLI: +* Enforce EOL when formatting files ([#24989](https://github.com/qmk/qmk_firmware/pull/24989)) +* Allow keymap.json to disable config flags ([#25502](https://github.com/qmk/qmk_firmware/pull/25502)) +* Remove unused `qmk.keymap.write_file`/`qmk.keymap.write_json` ([#25854](https://github.com/qmk/qmk_firmware/pull/25854)) +* Include userspace version (QMK_USERSPACE_VERSION) in version.h ([#25882](https://github.com/qmk/qmk_firmware/pull/25882)) +* Lint out-of-bounds bootmagic config ([#25899](https://github.com/qmk/qmk_firmware/pull/25899)) +* Report permission issues in `qmk doctor` ([#25931](https://github.com/qmk/qmk_firmware/pull/25931)) +* Minor alignment of CLI formatting commands ([#25946](https://github.com/qmk/qmk_firmware/pull/25946)) +* Update lint to validate keymap names ([#25969](https://github.com/qmk/qmk_firmware/pull/25969)) +* Add 'none of the above' to `new-keyboard` dev board prompt ([#25998](https://github.com/qmk/qmk_firmware/pull/25998)) +* Remove `config_h_features` from generated `info.json` ([#26024](https://github.com/qmk/qmk_firmware/pull/26024)) +* Promote duplication of defaults check to error ([#26025](https://github.com/qmk/qmk_firmware/pull/26025)) + +Keyboards: +* Add Soldered Macro Pad ([#25834](https://github.com/qmk/qmk_firmware/pull/25834)) +* Remove redundant URLs from `.json` ([#25856](https://github.com/qmk/qmk_firmware/pull/25856)) +* Guard encoder behaviour on `projectcain/vault*` ([#25864](https://github.com/qmk/qmk_firmware/pull/25864)) +* Refactor keyboard/keymap use of deprecated `isLeftHand` ([#25891](https://github.com/qmk/qmk_firmware/pull/25891)) +* Remove some unnecessary matrix externs ([#25975](https://github.com/qmk/qmk_firmware/pull/25975)) +* Migrate ROW_SHIFTER to core MATRIX_ROW_SHIFTER ([#25977](https://github.com/qmk/qmk_firmware/pull/25977)) + +Keyboard fixes: +* Fix out-of-bounds bootmagic config ([#25898](https://github.com/qmk/qmk_firmware/pull/25898)) +* Fix incorrect `matrix_scan_custom` implementations ([#25999](https://github.com/qmk/qmk_firmware/pull/25999)) + +Others: +* Add missing labels to DD keycode definitions ([#25503](https://github.com/qmk/qmk_firmware/pull/25503)) +* Copilot instructions for pull requests ([#25857](https://github.com/qmk/qmk_firmware/pull/25857)) + +Bugs: +* Fix flash wear leveling sector calculation ([#24776](https://github.com/qmk/qmk_firmware/pull/24776)) +* [Bugfix] WS2812 indexing in split boards ([#25407](https://github.com/qmk/qmk_firmware/pull/25407)) +* Correctly resolve keyboard alias during 'qmk new-keymap' ([#25570](https://github.com/qmk/qmk_firmware/pull/25570)) +* Fixes for is31fl3729 LED matrix driver off-by-one errors ([#25902](https://github.com/qmk/qmk_firmware/pull/25902)) +* Match Key override index type to bounds type to prevent overflow ([#25939](https://github.com/qmk/qmk_firmware/pull/25939)) diff --git a/docs/_sidebar.json b/docs/_sidebar.json index 2531de2b1e..13982765e4 100644 --- a/docs/_sidebar.json +++ b/docs/_sidebar.json @@ -214,7 +214,7 @@ { "text": "My Pull Request Was Flagged", "link": "/breaking_changes_instructions" }, { "text": "Most Recent ChangeLog", - "link": "/ChangeLog/20251130" + "link": "/ChangeLog/20260222" }, { "text": "Past Breaking Changes", "link": "/breaking_changes_history" }, { "text": "Deprecation Policy", "link": "/support_deprecation_policy" } diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index 9dd995500c..af11445291 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -10,25 +10,25 @@ Practically, this means QMK merges the `develop` branch into the `master` branch ## What has been included in past Breaking Changes? +* [2026 Feb 22](ChangeLog/20260222) * [2025 Nov 30](ChangeLog/20251130) * [2025 Aug 31](ChangeLog/20250831) -* [2025 May 25](ChangeLog/20250525) * [Older Breaking Changes](breaking_changes_history) ## When is the next Breaking Change? -The next Breaking Change is scheduled for February 22, 2026. +The next Breaking Change is scheduled for May 31, 2026. ### Important Dates -* 2025 Nov 30 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. -* 2026 Jan 25 - `develop` closed to new PRs. -* 2026 Jan 25 - Call for testers. -* 2026 Feb 8 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes -* 2026 Feb 15 - `develop` is locked, only critical bugfix PRs merged. -* 2026 Feb 20 - `master` is locked, no PRs merged. -* 2026 Feb 22 - Merge `develop` to `master`. -* 2026 Feb 22 - `master` is unlocked. PRs can be merged again. +* 2025 Feb 22 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* 2026 May 3 - `develop` closed to new PRs. +* 2026 May 3 - Call for testers. +* 2026 May 17 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* 2026 May 24 - `develop` is locked, only critical bugfix PRs merged. +* 2026 May 29 - `master` is locked, no PRs merged. +* 2026 May 31 - Merge `develop` to `master`. +* 2026 May 31 - `master` is unlocked. PRs can be merged again. ## What changes will be included? diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index 2db767c5ec..c3c2a8f1b7 100644 --- a/docs/breaking_changes_history.md +++ b/docs/breaking_changes_history.md @@ -2,6 +2,7 @@ This page links to all previous changelogs from the QMK Breaking Changes process. +* [2026 Feb 22](ChangeLog/20260222) - version 0.32.0 * [2025 Nov 30](ChangeLog/20251130) - version 0.31.0 * [2025 Aug 31](ChangeLog/20250831) - version 0.30.0 * [2025 May 25](ChangeLog/20250525) - version 0.29.0