diff --git a/docs/ChangeLog/20260830.md b/docs/ChangeLog/20260830.md new file mode 100644 index 00000000000..757dc3f0f92 --- /dev/null +++ b/docs/ChangeLog/20260830.md @@ -0,0 +1,189 @@ +# QMK Breaking Changes - 2026 August 30 Changelog + +## Notable Changes {#notable-changes} + +### Community Modules `1.1.3` ([#26201](https://github.com/qmk/qmk_firmware/pull/26201)) {#community-modules} + +Version 1.1.3 adds support for persistent data in community modules. Modules can now store and restore their own state across restarts, enabling more stateful behavior without relying on keyboard-level EEPROM handling. A reference example can be located at [modules/qmk/nvm_test](https://github.com/qmk/qmk_firmware/tree/develop/modules/qmk/nvm_test). + +See the [Community Modules documentation](../features/community_modules) for more information, including the full list of available hooks. + +### Steno Feature Updates ([#26273](https://github.com/qmk/qmk_firmware/pull/26273), [#26018](https://github.com/qmk/qmk_firmware/pull/26018)) {#steno} + +The steno feature has been reworked around a clearer integration, including a more consistent keycode naming scheme. +Users should migrate old `STN_*` and legacy mode names to the new `QK_STENO_*`/`ST_*` naming scheme. + +::: warning +Keycode aliases have been put in place in most cases to cater for "old names" being mapped to "new names" -- the documentation already reflects all the new naming of keys. +::: + +
+ Full list of updated keycodes + +| Old Keycode | New Keycode | Aliases | +|----------------------|------------------------|--------------------| +| `STN_FN` | `QK_STENO_FUNCTION` | `ST_FN` | +| `STN_N1`/`STN_NUM` | `QK_STENO_N1` | `ST_N1`/`ST_NUM` | +| `STN_N2` | `QK_STENO_N2` | `ST_N2` | +| `STN_N3` | `QK_STENO_N3` | `ST_N3` | +| `STN_N4` | `QK_STENO_N4` | `ST_N4` | +| `STN_N5` | `QK_STENO_N5` | `ST_N5` | +| `STN_N6` | `QK_STENO_N6` | `ST_N6` | +| `STN_S1`/`STN_SL` | `QK_STENO_S1` | `ST_S1`/`ST_SL` | +| `STN_S2` | `QK_STENO_S2` | `ST_S2` | +| `STN_TL` | `QK_STENO_TL` | `ST_TL` | +| `STN_KL` | `QK_STENO_KL` | `ST_KL` | +| `STN_PL` | `QK_STENO_PL` | `ST_PL` | +| `STN_WL` | `QK_STENO_WL` | `ST_WL` | +| `STN_HL` | `QK_STENO_HL` | `ST_HL` | +| `STN_RL` | `QK_STENO_RL` | `ST_RL` | +| `STN_A` | `QK_STENO_A` | `ST_A` | +| `STN_O` | `QK_STENO_O` | `ST_O` | +| `STN_ST1`/`STN_STR` | `QK_STENO_ST1` | `ST_ST1`/`ST_STR` | +| `STN_ST2` | `QK_STENO_ST2` | `ST_ST2` | +| `STN_RE1`/`STN_RES1` | `QK_STENO_RESET1` | `ST_RES1`/`ST_RE1` | +| `STN_RE2`/`STN_RES2` | `QK_STENO_RESET2` | `ST_RES2`/`ST_RE2` | +| `STN_PWR` | `QK_STENO_POWER` | `ST_PWR` | +| `STN_ST3` | `QK_STENO_ST3` | `ST_ST3` | +| `STN_ST4` | `QK_STENO_ST4` | `ST_ST4` | +| `STN_E` | `QK_STENO_E` | `ST_E` | +| `STN_U` | `QK_STENO_U` | `ST_U` | +| `STN_FR` | `QK_STENO_FR` | `ST_FR` | +| `STN_RR` | `QK_STENO_RR` | `ST_RR` | +| `STN_PR` | `QK_STENO_PR` | `ST_PR` | +| `STN_BR` | `QK_STENO_BR` | `ST_BR` | +| `STN_LR` | `QK_STENO_LR` | `ST_LR` | +| `STN_GR` | `QK_STENO_GR` | `ST_GR` | +| `STN_TR` | `QK_STENO_TR` | `ST_TR` | +| `STN_SR` | `QK_STENO_SR` | `ST_SR` | +| `STN_DR` | `QK_STENO_DR` | `ST_DR` | +| `STN_N7` | `QK_STENO_N7` | `ST_N7` | +| `STN_N8` | `QK_STENO_N8` | `ST_N8` | +| `STN_N9` | `QK_STENO_N9` | `ST_N9` | +| `STN_NA` | `QK_STENO_NA` | `ST_NA` | +| `STN_NB` | `QK_STENO_NB` | `ST_NB` | +| `STN_NC` | `QK_STENO_NC` | `ST_NC` | +| `STN_ZR` | `QK_STENO_ZR` | `ST_ZR` | +| `STN_SL` | `QK_STENO_S1` | `ST_S1` | +| `STN_STR` | `QK_STENO_ST1` | `ST_ST1` | +| `STN_S3` | `QK_STENO_S3` | `ST_S3` | +| `STN_TKL` | `QK_STENO_TKL` | `ST_TKL` | +| `STN_PWL` | `QK_STENO_PWL` | `ST_PWL` | +| `STN_HRL` | `QK_STENO_HRL` | `ST_HRL` | +| `STN_FRR` | `QK_STENO_FRR` | `ST_FRR` | +| `STN_PBR` | `QK_STENO_PBR` | `ST_PBR` | +| `STN_LGR` | `QK_STENO_LGR` | `ST_LGR` | +| `STN_TSR` | `QK_STENO_TSR` | `ST_TSR` | +| `STN_DZR` | `QK_STENO_DZR` | `ST_DZR` | +| `STN_AO` | `QK_STENO_AO` | `ST_AO` | +| `STN_EU` | `QK_STENO_EU` | `ST_EU` | +| `QK_STENO_BOLT` | `QK_STENO_MODE_BOLT` | `ST_BOLT` | +| `QK_STENO_GEMINI` | `QK_STENO_MODE_GEMINI` | `ST_GEMI` | + +
+ +Support for the [Plover custom HID protocol](https://github.com/opensteno/plover/releases/tag/v5.1.0) has also been integrated. This provides an alternative to the COM port based Gemini and Bolt protocols, and extends steno support to VUSB based devices. + +::: info Note +A tighter integration of the Plover HID protocol into the steno feature is planned for a future release. +::: + +See the [Stenography Feature](../features/stenography) documentation for more information. + +### Remove pin ordering restriction in RP2040 ps2 driver ([#26256](https://github.com/qmk/qmk_firmware/pull/26256)) {#rp2040-ps2} + +The RP2040 PS/2 driver no longer requires a strict clock/data pin ordering. This removes an unnecessary wiring restriction for RP2040-based keyboards and allows more valid PS/2 layouts to work without needing to match a specific pin sequence. + +### Restrict the EXTRAKEY_ENABLE System Control HID usage range. ([#26295](https://github.com/qmk/qmk_firmware/pull/26295)) {#extrakey-gamepad} + +QMK now limits the default System Control HID range exposed by `EXTRAKEY_ENABLE` to the safe subset it actually uses. This prevents issues where some hosts to misidentify the device as a gamepad. + +To widen the range to the old behavior, the following can be added to a `config.h`: + +```c +#define SYSTEM_CONTROL_USAGE_MINIMUM 0x0001 +#define SYSTEM_CONTROL_USAGE_MAXIMUM 0x00B7 +``` + +::: warning +Only widen it if you need the extra usages and know your host handles them. +::: + +### Updated Keyboard Codebases {#updated-keyboard-codebases} + +| Old Keyboard Name | New Keyboard Name | +|---------------------|--------------------------| +| ducky/one2sf/1967st | ducky/one2sf/1967st/ansi | + +## Deprecation Notices + +In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here. + +### VIA Feature Migration ([#26315](https://github.com/qmk/qmk_firmware/pull/26315)) {#via-module} + +As part of long-term goal to progressively reduce the maintenance burden on the project, upkeep of the VIA integration will transition to the VIA team. + +This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make. + +Backwards compatibility will remain for a transition period and in a future release, the old VIA feature-based implementation is expected to be removed. + +## Full changelist + +Core: +* Custom plover HID report type ([#26018](https://github.com/qmk/qmk_firmware/pull/26018)) +* Enable modules to persist data ([#26201](https://github.com/qmk/qmk_firmware/pull/26201)) +* Preserve Azoteq mouse buttons ([#26248](https://github.com/qmk/qmk_firmware/pull/26248)) +* Remove pin ordering restriction in RP2040 ps2 driver ([#26256](https://github.com/qmk/qmk_firmware/pull/26256)) +* Plover HID cleanup. ([#26262](https://github.com/qmk/qmk_firmware/pull/26262)) +* repeat_key.c: add implementation for get_last_record ([#26263](https://github.com/qmk/qmk_firmware/pull/26263)) +* Implement Plover HID for VUSB ([#26267](https://github.com/qmk/qmk_firmware/pull/26267)) +* process_key_lock: clear entire key state in cancel_key_lock() ([#26269](https://github.com/qmk/qmk_firmware/pull/26269)) +* Initial rework of steno feature ([#26273](https://github.com/qmk/qmk_firmware/pull/26273)) +* qp_lvgl: always signal flush ready even with no display ([#26275](https://github.com/qmk/qmk_firmware/pull/26275)) +* Consistently handle datablock init ([#26282](https://github.com/qmk/qmk_firmware/pull/26282)) +* Make framebuffer effects honour `rgb_matrix_map_row_column_to_led` ([#26294](https://github.com/qmk/qmk_firmware/pull/26294)) +* Restrict the EXTRAKEY_ENABLE System Control HID usage range. ([#26295](https://github.com/qmk/qmk_firmware/pull/26295)) +* Port typing_heatmap animation to LED Matrix ([#26300](https://github.com/qmk/qmk_firmware/pull/26300)) +* Add `_noeeprom` variants of backlight enable/disable. ([#26328](https://github.com/qmk/qmk_firmware/pull/26328)) +* Add STM32_USB_USE_OTG2 to USB_ENDPOINTS_ARE_REORDERABLE ([#26369](https://github.com/qmk/qmk_firmware/pull/26369)) +* Change preprocessor directive for random solenoid firing ([#26377](https://github.com/qmk/qmk_firmware/pull/26377)) +* Rework Plover HID to use Steno keycodes ([#26421](https://github.com/qmk/qmk_firmware/pull/26421)) + +CLI: +* Require `--keyboard` for some CLI subcommands ([#26308](https://github.com/qmk/qmk_firmware/pull/26308)) +* Be lazier in loading keyboard schema for new-keyboard ([#26340](https://github.com/qmk/qmk_firmware/pull/26340)) + +Keyboards: +* Addition of the Ymdk Oni Tsangan/HHKB-like pcb ([#25230](https://github.com/qmk/qmk_firmware/pull/25230)) +* Add converter/thinkpad_t6x/pico_t61 keyboard ([#26266](https://github.com/qmk/qmk_firmware/pull/26266)) +* Add additional layouts for `mkh_studio/bully` ([#26271](https://github.com/qmk/qmk_firmware/pull/26271)) +* Split `ducky/one2sf/1967st` into `ansi`/`iso` variants ([#26277](https://github.com/qmk/qmk_firmware/pull/26277)) +* Automatically handle duplicate matrix LED mappings ([#26278](https://github.com/qmk/qmk_firmware/pull/26278)) +* Tidy sawnsprojects/satxri6key ([#26317](https://github.com/qmk/qmk_firmware/pull/26317)) +* Update satisfaction75 to only use keyboard datablock ([#26320](https://github.com/qmk/qmk_firmware/pull/26320)) +* Migrate remaining `VIA_EEPROM_CUSTOM_CONFIG_SIZE` to `EECONFIG_KB_DATA_SIZE` ([#26321](https://github.com/qmk/qmk_firmware/pull/26321)) +* Use core `spi_init` implementation for gmmk/gmmk2/p96 ([#26344](https://github.com/qmk/qmk_firmware/pull/26344)) +* Convert `novelkeys/nk87` to use RGB Matrix ([#26349](https://github.com/qmk/qmk_firmware/pull/26349)) +* Update magic_force/mf17 to WS2812 PWM driver ([#26384](https://github.com/qmk/qmk_firmware/pull/26384)) +* Keycult TKL Updates ([#26385](https://github.com/qmk/qmk_firmware/pull/26385)) +* Update keyboards to implement `led_update_kb` instead of `led_set` ([#26388](https://github.com/qmk/qmk_firmware/pull/26388)) + +Keyboard fixes: +* Fix nifty_numpad issues ([#26283](https://github.com/qmk/qmk_firmware/pull/26283)) +* Fix use of `via.h` ([#26316](https://github.com/qmk/qmk_firmware/pull/26316)) + +Others: +* Update RGB Matrix documentation to include JSON config ([#26187](https://github.com/qmk/qmk_firmware/pull/26187)) +* Update encoder documents for json config ([#26188](https://github.com/qmk/qmk_firmware/pull/26188)) +* Update LED Matrix documentation to include JSON config ([#26425](https://github.com/qmk/qmk_firmware/pull/26425)) + +Bugs: +* First pass of ruff check fixes ([#26257](https://github.com/qmk/qmk_firmware/pull/26257)) +* Use `memmove` for overlapping copies in RGB/LED matrix last-hit tracker ([#26306](https://github.com/qmk/qmk_firmware/pull/26306)) +* Fix to make Repeat Key QK_REP work with Key Overrides. ([#26312](https://github.com/qmk/qmk_firmware/pull/26312)) +* Fix SEQUENCER_ENABLE so the sequencer feature builds again ([#26322](https://github.com/qmk/qmk_firmware/pull/26322)) +* Fix ChibiOS virtual serial short packet receive ([#26356](https://github.com/qmk/qmk_firmware/pull/26356)) +* Resolve recursive keyboard aliases when locating userspace keymaps ([#26402](https://github.com/qmk/qmk_firmware/pull/26402)) +* Fix `EECONFIG_MODULE_DATA_SIZE` for modules with zero provisioned eeconfig ([#26414](https://github.com/qmk/qmk_firmware/pull/26414)) +* Align USB endpoint buffers to fix RP2040 Plover HID issues ([#26417](https://github.com/qmk/qmk_firmware/pull/26417)) +* Fix 'qmk generate-develop-pr-list' for ghapi v2 ([#26428](https://github.com/qmk/qmk_firmware/pull/26428)) diff --git a/docs/_sidebar.json b/docs/_sidebar.json index 357574fe7e9..894287c16d0 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/20260531" + "link": "/ChangeLog/20260830" }, { "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 3b169498b87..66d9d404486 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 Aug 30](ChangeLog/20260830) * [2026 May 31](ChangeLog/20260531) * [2026 Feb 22](ChangeLog/20260222) -* [2025 Nov 30](ChangeLog/20251130) * [Older Breaking Changes](breaking_changes_history) ## When is the next Breaking Change? -The next Breaking Change is scheduled for Aug 30, 2026. +The next Breaking Change is scheduled for November 29, 2026. ### Important Dates -* 2025 May 31 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. -* 2026 Aug 2 - `develop` closed to new PRs. -* 2026 Aug 2 - Call for testers. -* 2026 Aug 16 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes -* 2026 Aug 23 - `develop` is locked, only critical bugfix PRs merged. -* 2026 Aug 28 - `master` is locked, no PRs merged. -* 2026 Aug 30 - Merge `develop` to `master`. -* 2026 Aug 30 - `master` is unlocked. PRs can be merged again. +* 2025 Aug 30 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* 2026 Nov 1 - `develop` closed to new PRs. +* 2026 Nov 1 - Call for testers. +* 2026 Nov 15 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* 2026 Nov 22 - `develop` is locked, only critical bugfix PRs merged. +* 2026 Nov 27 - `master` is locked, no PRs merged. +* 2026 Nov 29 - Merge `develop` to `master`. +* 2026 Nov 29 - `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 f313ea63286..7edee445de4 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 Aug 30](ChangeLog/20260830) - version 0.34.0 * [2026 May 31](ChangeLog/20260531) - version 0.33.0 * [2026 Feb 22](ChangeLog/20260222) - version 0.32.0 * [2025 Nov 30](ChangeLog/20251130) - version 0.31.0