aboutsummaryrefslogtreecommitdiff
path: root/docs/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ChangeLog')
-rw-r--r--docs/ChangeLog/20250223.md135
-rw-r--r--docs/ChangeLog/20250525.md299
-rw-r--r--docs/ChangeLog/20250831/PR25414.md5
3 files changed, 439 insertions, 0 deletions
diff --git a/docs/ChangeLog/20250223.md b/docs/ChangeLog/20250223.md
new file mode 100644
index 0000000000..858848a60b
--- /dev/null
+++ b/docs/ChangeLog/20250223.md
@@ -0,0 +1,135 @@
+# QMK Breaking Changes - 2025 February 23 Changelog
+
+## Notable Features
+
+### Community Modules ([#24848](https://github.com/qmk/qmk_firmware/pull/24848))
+
+Community Modules are a feature within QMK which allows code to be implemented by third parties, making it available for other people to import into their own builds.
+
+These modules can provide implementations which override or enhance normal QMK processing; initialization, key processing, suspend, and shutdown are some of the provided hooks which modules may currently implement.
+
+See the [Community Modules documentation](../features/community_modules) for more information, including the full list of available hooks.
+
+First-class support for [External Userspace](../newbs_external_userspace) is included out of the box, so there's even more reason to take the plunge and convert your keymap builds to a userspace repository!
+
+::: tip
+An example with a new keycode and some debugging information in the QMK repository [lives here](https://github.com/qmk/qmk_firmware/tree/master/modules/qmk/hello_world), and a community module port of [getreuer's SOCD Cleaner](https://getreuer.info/posts/keyboards/socd-cleaner/) can be found in [tzarc's modules repo](https://github.com/tzarc/qmk_modules).
+:::
+
+### Chordal Hold ([#24560](https://github.com/qmk/qmk_firmware/pull/24560))
+
+Chordal Hold implements, by default, an "opposite hands" rule. Suppose a tap-hold key is pressed and then, before the tapping term, another key is pressed. With Chordal Hold, the tap-hold key is settled as tapped if the two keys are on the same hand.
+
+Chordal Hold may be useful to avoid accidental modifier activation with mod-taps, particularly in rolled keypresses when using home row mods.
+
+See the [Chordal Hold documentation](../tap_hold#chordal-hold) for more information.
+
+## Changes Requiring User Action
+
+### Updated Keyboard Codebases
+
+| Old Keyboard Name | New Keyboard Name |
+|-------------------------|-----------------------------|
+| cxt_studio | cxt_studio/12e4 |
+| ergodox_stm32 | handwired/ergodox_stm32 |
+| ploopyco/mouse | ploopyco/mouse/rev1_002 |
+| ploopyco/trackball/rev1 | ploopyco/trackball/rev1_004 |
+| ymdk/id75 | ymdk/id75/f103 |
+
+## 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.
+
+### DEFAULT_FOLDER removal ([#24836](https://github.com/qmk/qmk_firmware/pull/24836))
+
+`DEFAULT_FOLDER` was originally introduced to work around limitations within the build system.
+Parent folders containing common configuration would create invalid build targets.
+
+With the introduction of [`keyboard.json`](./20240526#keyboard-json) as a configuration file, the build system now has a consistent method to detect build targets.
+The `DEFAULT_FOLDER` functionality is now redundant and the intent is for `rules.mk` to become pure configuration.
+
+Backwards compatibility of build targets has been maintained where possible.
+
+## Full changelist
+
+Core:
+* Chaining OSL and MO ([#23065](https://github.com/qmk/qmk_firmware/pull/23065))
+* Add extra keymap for EurKEY layout ([#24241](https://github.com/qmk/qmk_firmware/pull/24241))
+* Add leader_add_user callback ([#24266](https://github.com/qmk/qmk_firmware/pull/24266))
+* always return audio pin to 0 on ARM ([#24503](https://github.com/qmk/qmk_firmware/pull/24503))
+* Update Starlight matrix effects ([#24521](https://github.com/qmk/qmk_firmware/pull/24521))
+* Refactor Hue Breathing matrix effect with runner ([#24525](https://github.com/qmk/qmk_firmware/pull/24525))
+* Ensure timer_read() is safe to call from interrupt handlers on ARM ([#24529](https://github.com/qmk/qmk_firmware/pull/24529))
+* Update Raindrops effect to respect LED range limits ([#24531](https://github.com/qmk/qmk_firmware/pull/24531))
+* Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. ([#24560](https://github.com/qmk/qmk_firmware/pull/24560))
+* Azoteq - improve I2C behaviour while polling. ([#24611](https://github.com/qmk/qmk_firmware/pull/24611))
+* macOS install: remove bad ARM toolchains ([#24637](https://github.com/qmk/qmk_firmware/pull/24637))
+* small refactoring of TIMER_DIFF ([#24678](https://github.com/qmk/qmk_firmware/pull/24678))
+* Subscript alef correction ([#24707](https://github.com/qmk/qmk_firmware/pull/24707))
+* Created SH1107 driver for quantum painter ([#24724](https://github.com/qmk/qmk_firmware/pull/24724))
+* [CI] Regenerate Files ([#24772](https://github.com/qmk/qmk_firmware/pull/24772))
+* Patch up issue for inverted complementary output on Backlight ([#24794](https://github.com/qmk/qmk_firmware/pull/24794))
+* Patch up issue when compile with APA102 driver ([#24800](https://github.com/qmk/qmk_firmware/pull/24800))
+* Consolidate send_string implementations. ([#24817](https://github.com/qmk/qmk_firmware/pull/24817))
+* Consolidate timer_elapsed implementations ([#24830](https://github.com/qmk/qmk_firmware/pull/24830))
+* `i2c_master`: remove deprecated functions ([#24832](https://github.com/qmk/qmk_firmware/pull/24832))
+* Resolve keyboard_aliases when processing keyboard make targets ([#24834](https://github.com/qmk/qmk_firmware/pull/24834))
+* LED drivers: remove deprecated defines ([#24837](https://github.com/qmk/qmk_firmware/pull/24837))
+* `ferris/0_1`: update I2C API usage ([#24839](https://github.com/qmk/qmk_firmware/pull/24839))
+* Unify i2c_master headers ([#24846](https://github.com/qmk/qmk_firmware/pull/24846))
+* Community modules ([#24848](https://github.com/qmk/qmk_firmware/pull/24848))
+* Relocate base WS2812 code ([#24850](https://github.com/qmk/qmk_firmware/pull/24850))
+* Unify UART headers ([#24855](https://github.com/qmk/qmk_firmware/pull/24855))
+* Unify spi_master headers ([#24857](https://github.com/qmk/qmk_firmware/pull/24857))
+* Invoke `process_record_via` after `_user`/`_kb` have a chance to handle it. ([#24879](https://github.com/qmk/qmk_firmware/pull/24879))
+
+CLI:
+* Extend lint to reject 'blank' files ([#23994](https://github.com/qmk/qmk_firmware/pull/23994))
+* `qmk docs`: restore `--port` and `--browser` arguments ([#24623](https://github.com/qmk/qmk_firmware/pull/24623))
+* Update via2json layout macro searching ([#24640](https://github.com/qmk/qmk_firmware/pull/24640))
+* Change `new-keymap` keymap name prompt ([#24701](https://github.com/qmk/qmk_firmware/pull/24701))
+* default_keyboard.h generation tweaks ([#24715](https://github.com/qmk/qmk_firmware/pull/24715))
+* Ensure `qmk flash` rejects invalid files for uf2 compatible bootloaders ([#24802](https://github.com/qmk/qmk_firmware/pull/24802))
+* Reject readme dummy content ([#24913](https://github.com/qmk/qmk_firmware/pull/24913))
+
+Submodule updates:
+* chibios: usb_main: remove OTG sof workaround ([#24259](https://github.com/qmk/qmk_firmware/pull/24259))
+* Update ChibiOS to latest stable branch. ([#24651](https://github.com/qmk/qmk_firmware/pull/24651))
+* Update ChibiOS `stable_21.11.x`. ([#24714](https://github.com/qmk/qmk_firmware/pull/24714))
+* Update ChibiOS-Contrib. ([#24803](https://github.com/qmk/qmk_firmware/pull/24803))
+
+Keyboards:
+* refactor: move ymdk/id75 to revision ([#24590](https://github.com/qmk/qmk_firmware/pull/24590))
+* skyloong/gk61: Remove overriding of core keycode behaviour ([#24655](https://github.com/qmk/qmk_firmware/pull/24655))
+* moky/moky88: Remove use of deprecated defines ([#24656](https://github.com/qmk/qmk_firmware/pull/24656))
+* Updating Promenade keyboard (Missing keys in matrix, other minor changes to keymap) ([#24705](https://github.com/qmk/qmk_firmware/pull/24705))
+* Moving cxt_studio keyboard to own folder ([#24748](https://github.com/qmk/qmk_firmware/pull/24748))
+* Add CXT Studio 12E3 keyboard ([#24749](https://github.com/qmk/qmk_firmware/pull/24749))
+* Add Silakka54 keyboard ([#24757](https://github.com/qmk/qmk_firmware/pull/24757))
+* Add more layout for skiller_sgk50_s4 ([#24784](https://github.com/qmk/qmk_firmware/pull/24784))
+* Add watchdog service to RGBKB Sol 3 ([#24786](https://github.com/qmk/qmk_firmware/pull/24786))
+* Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24835](https://github.com/qmk/qmk_firmware/pull/24835))
+* Remove DEFAULT_FOLDER where keyboard aliases already exists ([#24838](https://github.com/qmk/qmk_firmware/pull/24838))
+* Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24845](https://github.com/qmk/qmk_firmware/pull/24845))
+* Update for 'A-JAZZ AKC084' ('A-JAZZ AKP846') ([#24868](https://github.com/qmk/qmk_firmware/pull/24868))
+* handwired/xealous - Remove DEFAULT_FOLDER ([#24877](https://github.com/qmk/qmk_firmware/pull/24877))
+* Updates to Ploopy Classic, Mouse, and Thumb for RP2040 hardware upgrade ([#24880](https://github.com/qmk/qmk_firmware/pull/24880))
+* Move Ergodox STM32 to handwired folder ([#24903](https://github.com/qmk/qmk_firmware/pull/24903))
+* Remove readme dummy content ([#24912](https://github.com/qmk/qmk_firmware/pull/24912))
+* Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24915](https://github.com/qmk/qmk_firmware/pull/24915))
+* Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24938](https://github.com/qmk/qmk_firmware/pull/24938))
+
+Keyboard fixes:
+* Fix up CI with `DEFAULT_FOLDER`. ([#24842](https://github.com/qmk/qmk_firmware/pull/24842))
+* rgbkb/pan - Remove invalid build target ([#24844](https://github.com/qmk/qmk_firmware/pull/24844))
+
+Others:
+* Formally deprecate DEFAULT_FOLDER ([#24836](https://github.com/qmk/qmk_firmware/pull/24836))
+* Correct I2C API reference ([#24840](https://github.com/qmk/qmk_firmware/pull/24840))
+
+Bugs:
+* Retro Tapping Re-Write; Key Roll Fix ([#23641](https://github.com/qmk/qmk_firmware/pull/23641))
+* Fix Quantum Painter compiliation issues with heavy optimization ([#24667](https://github.com/qmk/qmk_firmware/pull/24667))
+* Bugfix and update for AT32F415 ([#24807](https://github.com/qmk/qmk_firmware/pull/24807))
+* Fix for Chordal Hold: stuck mods when mod-taps are pressed in a stuttered sequence. ([#24878](https://github.com/qmk/qmk_firmware/pull/24878))
+* fix EEPROM driver for STM32L0/1 cat.1 devices ([#24928](https://github.com/qmk/qmk_firmware/pull/24928))
diff --git a/docs/ChangeLog/20250525.md b/docs/ChangeLog/20250525.md
new file mode 100644
index 0000000000..c8859e0ea1
--- /dev/null
+++ b/docs/ChangeLog/20250525.md
@@ -0,0 +1,299 @@
+# QMK Breaking Changes - 2025 May 25 Changelog
+
+## Notable Features
+
+### Flow Tap ([#25125](https://github.com/qmk/qmk_firmware/pull/25125))
+
+Adds Flow Tap as a core tap-hold option to disable HRMs during fast typing, aka Global Quick Tap, Require Prior Idle.
+
+Flow Tap modifies mod-tap MT and layer-tap LT keys such that when pressed within a short timeout of the preceding key, the tapping behavior is triggered. It basically disables the hold behavior during fast typing, creating a "flow of taps." It also helps to reduce the input lag of tap-hold keys during fast typing, since the tapped behavior is sent immediately.
+
+See the [Flow Tap documentation](../tap_hold#flow-tap) for more information.
+
+### Community Modules `1.1.1` ([#25050](https://github.com/qmk/qmk_firmware/pull/25050), [#25187](https://github.com/qmk/qmk_firmware/pull/25187))
+
+Version `1.1.1` introduces support for module defined RGB matrix effects and indicator callbacks, as well as pointing and layer state callbacks.
+
+See the [Community Modules documentation](../features/community_modules) for more information, including the full list of available hooks.
+
+## Changes Requiring User Action
+
+### Updated Keyboard Codebases
+
+| Old Keyboard Name | New Keyboard Name |
+|------------------------|----------------------|
+| chew | chew/split |
+| deemen17/de60fs | deemen17/de60/r1 |
+| keyten/kt60hs_t | keyten/kt60hs_t/v1 |
+| plywrks/ply8x | plywrks/ply8x/solder |
+| rookiebwoy/late9/rev1 | ivndbt/late9/rev1 |
+| rookiebwoy/neopad/rev1 | ivndbt/neopad/rev1 |
+
+## 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.
+
+### Deprecation of `qmk generate-compilation-database` ([#25237](https://github.com/qmk/qmk_firmware/pull/25237))
+
+This command has been deprecated as it cannot take into account configurables such as [converters](/feature_converters) or environment variables normally specified on the command line; please use the `--compiledb` flag with `qmk compile` instead.
+
+### Deprecation of `usb.force_nkro`/`FORCE_NKRO` ([#25262](https://github.com/qmk/qmk_firmware/pull/25262))
+
+Unpicking the assumption that only USB can do NKRO, forcing of NKRO on every boot has been deprecated. As this setting persists, it produces unnecessary user confusion when the various NKRO keycodes (for example `NK_TOGG`) do not behave as expected.
+
+The new defaults can be configured in the following ways:
+
+:::::tabs
+
+==== keyboard.json
+
+```json [keyboard.json]
+{
+ "host": { // [!code focus]
+ "default": { // [!code focus]
+ "nkro": true // [!code focus]
+ } // [!code focus]
+ } // [!code focus]
+}
+
+```
+
+==== keymap.json
+
+```json [keymap.json]
+{
+ "config": {
+ "host": { // [!code focus]
+ "default": { // [!code focus]
+ "nkro": true // [!code focus]
+ } // [!code focus]
+ } // [!code focus]
+ }
+}
+
+```
+
+==== config.h
+
+```c [config.h]
+#pragma once
+
+#define NKRO_DEFAULT_ON true // [!code focus]
+```
+
+:::::
+
+The deprecated options will be removed in a future breaking changes cycle.
+
+### `CTPC`/`CONVERT_TO_PROTON_C` removal ([#25111](https://github.com/qmk/qmk_firmware/pull/25111))
+
+Deprecated build options `CTPC` and `CONVERT_TO_PROTON_C` have been removed. Users should of these should migrate to `CONVERT_TO=proton_c`.
+
+see the [Converters Feature](../feature_converters) documentation for more information.
+
+### `DEFAULT_FOLDER` removal ([#23281](https://github.com/qmk/qmk_firmware/pull/23281))
+
+`DEFAULT_FOLDER` was originally introduced to work around limitations within the build system.
+Parent folders containing common configuration would create invalid build targets.
+
+With the introduction of [`keyboard.json`](./20240526#keyboard-json) as a configuration file, the build system now has a consistent method to detect build targets.
+The `DEFAULT_FOLDER` functionality is now redundant and the intent is for `rules.mk` to become pure configuration.
+
+Backwards compatibility of build targets has been maintained where possible.
+
+### Converter `Pin Compatible` updates ([#20330](https://github.com/qmk/qmk_firmware/pull/20330))
+
+Converter support will be further limited to only function if a keyboard declares that is is compatible.
+
+This can be configured in the following ways:
+
+:::::tabs
+
+==== keyboard.json
+
+```json [keyboard.json]
+{
+ "development_board": "promicro", // [!code focus]
+}
+```
+
+==== rules.mk
+
+```make [rules.mk]
+PIN_COMPATIBLE = promicro
+```
+
+:::::
+
+see the [Converters Feature](../feature_converters) documentation for more information.
+
+### Deprecation of `encoder_update_{kb|user}`
+
+These callbacks are now considered end-of-life and will be removed over the next breaking changes cycle, ending August 2025. PRs containing these callbacks will be asked to change to use [encoder mapping](/features/encoders#encoder-map).
+
+`ENCODER_MAP_ENABLE` will subsequently be changed to "default-on" when encoders are enabled, and future breaking changes cycles will remove this flag entirely.
+
+To migrate usage of `encoder_update_user` to encoder map you'll need to handle all of the following changes in your `keymap.c`:
+
+:::::tabs
+
+=== 1. Add keycode definitions
+
+Define new keycodes:
+
+```c
+enum {
+ MY_ENCODER_LEFT = QK_USER, // [!code focus]
+ MY_ENCODER_RIGHT, // [!code focus]
+};
+```
+
+=== 2. Add encoder mapping
+
+Add the keycodes to a new encoder map (optionally with transparent layers above, if you want identical functionality of layer-independence):
+
+```c
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(MY_ENCODER_LEFT, MY_ENCODER_RIGHT) }, // [!code focus]
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, // [!code focus]
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, // [!code focus]
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, // [!code focus]
+};
+#endif
+```
+
+=== 3. Add keycode processing
+
+Handle the new keycodes within `process_record_user`, much like any other keycode in your keymap:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case MY_ENCODER_LEFT: // [!code focus]
+ if (record->event.pressed) { // [!code focus]
+ // Add the same code you had in your `encoder_update_user` for the left-rotation code // [!code focus]
+ } // [!code focus]
+ return false; // Skip all further processing of this keycode // [!code focus]
+ case MY_ENCODER_RIGHT: // [!code focus]
+ if (record->event.pressed) { // [!code focus]
+ // Add the same code you had in your `encoder_update_user` for the right-rotation code // [!code focus]
+ } // [!code focus]
+ return false; // Skip all further processing of this keycode // [!code focus]
+ }
+}
+```
+
+=== 4. Remove old code
+
+Remove your implementation of `encoder_update_user` from your `keymap.c`.
+
+::::::
+
+If your board has multiple encoders, each encoder will need its own pair of keycodes defined as per above.
+
+## Full changelist
+
+Core:
+* Non-volatile memory data repository pattern ([#24356](https://github.com/qmk/qmk_firmware/pull/24356))
+* High resolution scrolling (without feature report parsing) ([#24423](https://github.com/qmk/qmk_firmware/pull/24423))
+* Implement battery level interface ([#24666](https://github.com/qmk/qmk_firmware/pull/24666))
+* get_keycode_string(): function to format keycodes as strings, for more readable debug logging. ([#24787](https://github.com/qmk/qmk_firmware/pull/24787))
+* [Cleanup] Handling of optional `*.mk` files ([#24952](https://github.com/qmk/qmk_firmware/pull/24952))
+* Add EOL to non-keyboard files ([#24990](https://github.com/qmk/qmk_firmware/pull/24990))
+* use `keycode_string` in unit tests ([#25042](https://github.com/qmk/qmk_firmware/pull/25042))
+* Add additional hooks for Community modules ([#25050](https://github.com/qmk/qmk_firmware/pull/25050))
+* Remove `CTPC`/`CONVERT_TO_PROTON_C` options ([#25111](https://github.com/qmk/qmk_firmware/pull/25111))
+* Flow Tap tap-hold option to disable HRMs during fast typing (aka Global Quick Tap, Require Prior Idle). ([#25125](https://github.com/qmk/qmk_firmware/pull/25125))
+* Remove `bluefruit_le_read_battery_voltage` function ([#25129](https://github.com/qmk/qmk_firmware/pull/25129))
+* Avoid duplication in generated community modules `rules.mk` ([#25135](https://github.com/qmk/qmk_firmware/pull/25135))
+* [chore]: move and rename mouse/scroll min/max defines ([#25141](https://github.com/qmk/qmk_firmware/pull/25141))
+* Ignore the Layer Lock key in Repeat Key and Caps Word. ([#25171](https://github.com/qmk/qmk_firmware/pull/25171))
+* Allow for disabling EEPROM subsystem entirely. ([#25173](https://github.com/qmk/qmk_firmware/pull/25173))
+* Implement connection keycode logic ([#25176](https://github.com/qmk/qmk_firmware/pull/25176))
+* Align ChibiOS `USB_WAIT_FOR_ENUMERATION` implementation ([#25184](https://github.com/qmk/qmk_firmware/pull/25184))
+* Enable community modules to define LED matrix and RGB matrix effects. ([#25187](https://github.com/qmk/qmk_firmware/pull/25187))
+* Bind Bluetooth driver to `host_driver_t` ([#25199](https://github.com/qmk/qmk_firmware/pull/25199))
+* Enhance Flow Tap to work better for rolls over multiple tap-hold keys. ([#25200](https://github.com/qmk/qmk_firmware/pull/25200))
+* Remove force disable of NKRO when Bluetooth enabled ([#25201](https://github.com/qmk/qmk_firmware/pull/25201))
+* [New Feature/Core] New RGB Matrix Animation "Starlight Smooth" ([#25203](https://github.com/qmk/qmk_firmware/pull/25203))
+* Add battery changed callbacks ([#25207](https://github.com/qmk/qmk_firmware/pull/25207))
+* Generate versions to keycode headers ([#25219](https://github.com/qmk/qmk_firmware/pull/25219))
+* Add raw_hid support to host driver ([#25255](https://github.com/qmk/qmk_firmware/pull/25255))
+* Deprecate `usb.force_nkro`/`FORCE_NKRO` ([#25262](https://github.com/qmk/qmk_firmware/pull/25262))
+* [Chore] use {rgblight,rgb_matrix}_hsv_to_rgb overrides ([#25271](https://github.com/qmk/qmk_firmware/pull/25271))
+* Remove outdated `nix` support due to bit-rot. ([#25280](https://github.com/qmk/qmk_firmware/pull/25280))
+
+CLI:
+* Align to latest CLI dependencies ([#24553](https://github.com/qmk/qmk_firmware/pull/24553))
+* Exclude external userspace from lint checking ([#24680](https://github.com/qmk/qmk_firmware/pull/24680))
+* [Modules] Provide access to current path in `rules.mk`. ([#25061](https://github.com/qmk/qmk_firmware/pull/25061))
+* Add "license" field to Community Module JSON schema. ([#25085](https://github.com/qmk/qmk_firmware/pull/25085))
+* Prompt for converter when creating new keymap ([#25116](https://github.com/qmk/qmk_firmware/pull/25116))
+* Extend lint checks to reject duplication of defaults ([#25149](https://github.com/qmk/qmk_firmware/pull/25149))
+* Add lint warning for empty url ([#25182](https://github.com/qmk/qmk_firmware/pull/25182))
+* Deprecate `qmk generate-compilation-database`. ([#25237](https://github.com/qmk/qmk_firmware/pull/25237))
+* Use relative paths for schemas, instead of $id. Enables VScode validation. ([#25251](https://github.com/qmk/qmk_firmware/pull/25251))
+
+Submodule updates:
+* STM32G0x1 support ([#24301](https://github.com/qmk/qmk_firmware/pull/24301))
+* Update develop branch to Pico SDK 1.5.1 ([#25178](https://github.com/qmk/qmk_firmware/pull/25178))
+* Add `compiler_support.h` ([#25274](https://github.com/qmk/qmk_firmware/pull/25274))
+
+Keyboards:
+* add 75_(ansi|iso) Community Layouts to mechlovin/olly/octagon ([#22459](https://github.com/qmk/qmk_firmware/pull/22459))
+* Add the plywrks ply8x hotswap variant. ([#23558](https://github.com/qmk/qmk_firmware/pull/23558))
+* Add Community Layout support to daskeyboard4 ([#23884](https://github.com/qmk/qmk_firmware/pull/23884))
+* New standard layout for Savage65 (65_ansi_blocker_tsangan_split_bs) ([#24690](https://github.com/qmk/qmk_firmware/pull/24690))
+* Add Icebreaker keyboard ([#24723](https://github.com/qmk/qmk_firmware/pull/24723))
+* Update Tractyl Manuform and add F405 (weact) variant ([#24764](https://github.com/qmk/qmk_firmware/pull/24764))
+* Chew folders ([#24785](https://github.com/qmk/qmk_firmware/pull/24785))
+* modelh: add prerequisites for via support ([#24932](https://github.com/qmk/qmk_firmware/pull/24932))
+* Only configure `STM32_HSECLK` within `board.h` ([#25001](https://github.com/qmk/qmk_firmware/pull/25001))
+* Allow LVGL onekey keymap to be able compile for other board ([#25005](https://github.com/qmk/qmk_firmware/pull/25005))
+* Remove Sofle `rgb_default` keymap & tidy readme's ([#25010](https://github.com/qmk/qmk_firmware/pull/25010))
+* Migrate remaining `split.soft_serial_pin` to `split.serial.pin` ([#25046](https://github.com/qmk/qmk_firmware/pull/25046))
+* Update keymap for keycult 1800 ([#25070](https://github.com/qmk/qmk_firmware/pull/25070))
+* Add kt60HS-T v2 PCB ([#25080](https://github.com/qmk/qmk_firmware/pull/25080))
+* Refactor Deemen17 Works DE60 ([#25088](https://github.com/qmk/qmk_firmware/pull/25088))
+* Rookiebwoy to ivndbt ([#25142](https://github.com/qmk/qmk_firmware/pull/25142))
+* Remove duplication of RGB Matrix defaults ([#25146](https://github.com/qmk/qmk_firmware/pull/25146))
+* ymdk/id75/rp2040 ([#25157](https://github.com/qmk/qmk_firmware/pull/25157))
+* Remove duplication of RGBLight defaults ([#25169](https://github.com/qmk/qmk_firmware/pull/25169))
+* Remove empty `url` fields ([#25181](https://github.com/qmk/qmk_firmware/pull/25181))
+* Remove more duplication of defaults ([#25189](https://github.com/qmk/qmk_firmware/pull/25189))
+* Remove `"console":false` from keyboards ([#25190](https://github.com/qmk/qmk_firmware/pull/25190))
+* Remove `"command":false` from keyboards ([#25193](https://github.com/qmk/qmk_firmware/pull/25193))
+* Remove redundant keyboard headers ([#25208](https://github.com/qmk/qmk_firmware/pull/25208))
+* Add debounce to duplicated defaults check ([#25246](https://github.com/qmk/qmk_firmware/pull/25246))
+* Remove duplicate of SPI default config from keyboards ([#25266](https://github.com/qmk/qmk_firmware/pull/25266))
+* Resolve miscellaneous keyboard lint warnings ([#25268](https://github.com/qmk/qmk_firmware/pull/25268))
+* Configure boards to use development_board - 0-9 ([#25287](https://github.com/qmk/qmk_firmware/pull/25287))
+* Configure boards to use development_board - UVWXYZ ([#25288](https://github.com/qmk/qmk_firmware/pull/25288))
+* Configure boards to use development_board - S ([#25293](https://github.com/qmk/qmk_firmware/pull/25293))
+* Configure boards to use development_board - T ([#25294](https://github.com/qmk/qmk_firmware/pull/25294))
+
+Keyboard fixes:
+* Fix `boardsource/beiwagon` RGB Matrix coordinates ([#25018](https://github.com/qmk/qmk_firmware/pull/25018))
+* amptrics/0422 - Prevent OOB in `update_leds_for_layer` ([#25209](https://github.com/qmk/qmk_firmware/pull/25209))
+* salicylic_acid3/getta25 - Fix oled keymap ([#25295](https://github.com/qmk/qmk_firmware/pull/25295))
+
+Others:
+* Require 'x'/'y' properties for LED/RGB Matrix layout ([#24997](https://github.com/qmk/qmk_firmware/pull/24997))
+* Align `new-keyboard` template to current standards ([#25191](https://github.com/qmk/qmk_firmware/pull/25191))
+
+Bugs:
+* Fix OS_DETECTION_KEYBOARD_RESET ([#25015](https://github.com/qmk/qmk_firmware/pull/25015))
+* Fix outdated GPIO control function usage ([#25060](https://github.com/qmk/qmk_firmware/pull/25060))
+* Cater for use of `__errno_r()` in ChibiOS syscalls.c with newer picolibc revisions ([#25121](https://github.com/qmk/qmk_firmware/pull/25121))
+* Fixup eeconfig lighting reset. ([#25166](https://github.com/qmk/qmk_firmware/pull/25166))
+* Fix for Flow Tap: fix handling of distinct taps and timer updates. ([#25175](https://github.com/qmk/qmk_firmware/pull/25175))
+* Minimise force-included files ([#25194](https://github.com/qmk/qmk_firmware/pull/25194))
+* Ensure `qmk_userspace_paths` maintains detected order ([#25204](https://github.com/qmk/qmk_firmware/pull/25204))
+* Resolve alias for `qmk new-keymap` keyboard prompts ([#25210](https://github.com/qmk/qmk_firmware/pull/25210))
+* gcc15 AVR compilation fixes ([#25238](https://github.com/qmk/qmk_firmware/pull/25238))
+* Fix typos introduced by PR #25050 ([#25250](https://github.com/qmk/qmk_firmware/pull/25250))
+* Fix Wear Leveling compilation ([#25254](https://github.com/qmk/qmk_firmware/pull/25254))
+* Remove more USB only branches from NKRO handling ([#25263](https://github.com/qmk/qmk_firmware/pull/25263))
+* [Fix] lib8tion: enable fixed scale8 and blend functions ([#25272](https://github.com/qmk/qmk_firmware/pull/25272))
+* Fix tap_hold code blocks ([#25298](https://github.com/qmk/qmk_firmware/pull/25298))
diff --git a/docs/ChangeLog/20250831/PR25414.md b/docs/ChangeLog/20250831/PR25414.md
new file mode 100644
index 0000000000..bee901c6ca
--- /dev/null
+++ b/docs/ChangeLog/20250831/PR25414.md
@@ -0,0 +1,5 @@
+# Mitigate VIA keylogger security issues [#25414](https://github.com/qmk/qmk_firmware/pull/25414)
+
+VIA's keyboard matrix testing functionality, which allows users to identify active key presses, has been identified as a potential security concern by community members and security researchers. This feature has been demonstrated to enable unauthorized keystroke capture, with documented examples showing how malicious scripts could exploit this capability to create keyloggers. A recent security assessment revealed that user credentials could be compromised by exploiting the matrix testing function combined with VIA's keycode assignment queries. In this attack scenario, a script could remain active during a locked session and capture password input when users authenticate upon return.
+
+The QMK team notified the VIA team of this security vulnerability on May 17, 2022, and made multiple subsequent attempts to coordinate a mitigation strategy. Despite repeated outreach, the VIA team has provided no acknowledgment or response to these security concerns. Given the severity of the potential security implications and the lack of engagement from the VIA team, the QMK team has unilaterally implemented a security enhancement that modifies the keyboard matrix testing functionality to prevent the reporting of key press events. This change prioritizes user security and data protection over potential feature compatibility concerns within VIA.