20250223.md (10272B)
1 # QMK Breaking Changes - 2025 February 23 Changelog 2 3 ## Notable Features 4 5 ### Community Modules ([#24848](https://github.com/qmk/qmk_firmware/pull/24848)) 6 7 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. 8 9 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. 10 11 See the [Community Modules documentation](../features/community_modules) for more information, including the full list of available hooks. 12 13 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! 14 15 ::: tip 16 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). 17 ::: 18 19 ### Chordal Hold ([#24560](https://github.com/qmk/qmk_firmware/pull/24560)) 20 21 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. 22 23 Chordal Hold may be useful to avoid accidental modifier activation with mod-taps, particularly in rolled keypresses when using home row mods. 24 25 See the [Chordal Hold documentation](../tap_hold#chordal-hold) for more information. 26 27 ## Changes Requiring User Action 28 29 ### Updated Keyboard Codebases 30 31 | Old Keyboard Name | New Keyboard Name | 32 |-------------------------|-----------------------------| 33 | cxt_studio | cxt_studio/12e4 | 34 | ergodox_stm32 | handwired/ergodox_stm32 | 35 | ploopyco/mouse | ploopyco/mouse/rev1_002 | 36 | ploopyco/trackball/rev1 | ploopyco/trackball/rev1_004 | 37 | ymdk/id75 | ymdk/id75/f103 | 38 39 ## Deprecation Notices 40 41 In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here. 42 43 ### DEFAULT_FOLDER removal ([#24836](https://github.com/qmk/qmk_firmware/pull/24836)) 44 45 `DEFAULT_FOLDER` was originally introduced to work around limitations within the build system. 46 Parent folders containing common configuration would create invalid build targets. 47 48 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. 49 The `DEFAULT_FOLDER` functionality is now redundant and the intent is for `rules.mk` to become pure configuration. 50 51 Backwards compatibility of build targets has been maintained where possible. 52 53 ## Full changelist 54 55 Core: 56 * Chaining OSL and MO ([#23065](https://github.com/qmk/qmk_firmware/pull/23065)) 57 * Add extra keymap for EurKEY layout ([#24241](https://github.com/qmk/qmk_firmware/pull/24241)) 58 * Add leader_add_user callback ([#24266](https://github.com/qmk/qmk_firmware/pull/24266)) 59 * always return audio pin to 0 on ARM ([#24503](https://github.com/qmk/qmk_firmware/pull/24503)) 60 * Update Starlight matrix effects ([#24521](https://github.com/qmk/qmk_firmware/pull/24521)) 61 * Refactor Hue Breathing matrix effect with runner ([#24525](https://github.com/qmk/qmk_firmware/pull/24525)) 62 * Ensure timer_read() is safe to call from interrupt handlers on ARM ([#24529](https://github.com/qmk/qmk_firmware/pull/24529)) 63 * Update Raindrops effect to respect LED range limits ([#24531](https://github.com/qmk/qmk_firmware/pull/24531)) 64 * Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. ([#24560](https://github.com/qmk/qmk_firmware/pull/24560)) 65 * Azoteq - improve I2C behaviour while polling. ([#24611](https://github.com/qmk/qmk_firmware/pull/24611)) 66 * macOS install: remove bad ARM toolchains ([#24637](https://github.com/qmk/qmk_firmware/pull/24637)) 67 * small refactoring of TIMER_DIFF ([#24678](https://github.com/qmk/qmk_firmware/pull/24678)) 68 * Subscript alef correction ([#24707](https://github.com/qmk/qmk_firmware/pull/24707)) 69 * Created SH1107 driver for quantum painter ([#24724](https://github.com/qmk/qmk_firmware/pull/24724)) 70 * [CI] Regenerate Files ([#24772](https://github.com/qmk/qmk_firmware/pull/24772)) 71 * Patch up issue for inverted complementary output on Backlight ([#24794](https://github.com/qmk/qmk_firmware/pull/24794)) 72 * Patch up issue when compile with APA102 driver ([#24800](https://github.com/qmk/qmk_firmware/pull/24800)) 73 * Consolidate send_string implementations. ([#24817](https://github.com/qmk/qmk_firmware/pull/24817)) 74 * Consolidate timer_elapsed implementations ([#24830](https://github.com/qmk/qmk_firmware/pull/24830)) 75 * `i2c_master`: remove deprecated functions ([#24832](https://github.com/qmk/qmk_firmware/pull/24832)) 76 * Resolve keyboard_aliases when processing keyboard make targets ([#24834](https://github.com/qmk/qmk_firmware/pull/24834)) 77 * LED drivers: remove deprecated defines ([#24837](https://github.com/qmk/qmk_firmware/pull/24837)) 78 * `ferris/0_1`: update I2C API usage ([#24839](https://github.com/qmk/qmk_firmware/pull/24839)) 79 * Unify i2c_master headers ([#24846](https://github.com/qmk/qmk_firmware/pull/24846)) 80 * Community modules ([#24848](https://github.com/qmk/qmk_firmware/pull/24848)) 81 * Relocate base WS2812 code ([#24850](https://github.com/qmk/qmk_firmware/pull/24850)) 82 * Unify UART headers ([#24855](https://github.com/qmk/qmk_firmware/pull/24855)) 83 * Unify spi_master headers ([#24857](https://github.com/qmk/qmk_firmware/pull/24857)) 84 * Invoke `process_record_via` after `_user`/`_kb` have a chance to handle it. ([#24879](https://github.com/qmk/qmk_firmware/pull/24879)) 85 86 CLI: 87 * Extend lint to reject 'blank' files ([#23994](https://github.com/qmk/qmk_firmware/pull/23994)) 88 * `qmk docs`: restore `--port` and `--browser` arguments ([#24623](https://github.com/qmk/qmk_firmware/pull/24623)) 89 * Update via2json layout macro searching ([#24640](https://github.com/qmk/qmk_firmware/pull/24640)) 90 * Change `new-keymap` keymap name prompt ([#24701](https://github.com/qmk/qmk_firmware/pull/24701)) 91 * default_keyboard.h generation tweaks ([#24715](https://github.com/qmk/qmk_firmware/pull/24715)) 92 * Ensure `qmk flash` rejects invalid files for uf2 compatible bootloaders ([#24802](https://github.com/qmk/qmk_firmware/pull/24802)) 93 * Reject readme dummy content ([#24913](https://github.com/qmk/qmk_firmware/pull/24913)) 94 95 Submodule updates: 96 * chibios: usb_main: remove OTG sof workaround ([#24259](https://github.com/qmk/qmk_firmware/pull/24259)) 97 * Update ChibiOS to latest stable branch. ([#24651](https://github.com/qmk/qmk_firmware/pull/24651)) 98 * Update ChibiOS `stable_21.11.x`. ([#24714](https://github.com/qmk/qmk_firmware/pull/24714)) 99 * Update ChibiOS-Contrib. ([#24803](https://github.com/qmk/qmk_firmware/pull/24803)) 100 101 Keyboards: 102 * refactor: move ymdk/id75 to revision ([#24590](https://github.com/qmk/qmk_firmware/pull/24590)) 103 * skyloong/gk61: Remove overriding of core keycode behaviour ([#24655](https://github.com/qmk/qmk_firmware/pull/24655)) 104 * moky/moky88: Remove use of deprecated defines ([#24656](https://github.com/qmk/qmk_firmware/pull/24656)) 105 * Updating Promenade keyboard (Missing keys in matrix, other minor changes to keymap) ([#24705](https://github.com/qmk/qmk_firmware/pull/24705)) 106 * Moving cxt_studio keyboard to own folder ([#24748](https://github.com/qmk/qmk_firmware/pull/24748)) 107 * Add CXT Studio 12E3 keyboard ([#24749](https://github.com/qmk/qmk_firmware/pull/24749)) 108 * Add Silakka54 keyboard ([#24757](https://github.com/qmk/qmk_firmware/pull/24757)) 109 * Add more layout for skiller_sgk50_s4 ([#24784](https://github.com/qmk/qmk_firmware/pull/24784)) 110 * Add watchdog service to RGBKB Sol 3 ([#24786](https://github.com/qmk/qmk_firmware/pull/24786)) 111 * Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24835](https://github.com/qmk/qmk_firmware/pull/24835)) 112 * Remove DEFAULT_FOLDER where keyboard aliases already exists ([#24838](https://github.com/qmk/qmk_firmware/pull/24838)) 113 * Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24845](https://github.com/qmk/qmk_firmware/pull/24845)) 114 * Update for 'A-JAZZ AKC084' ('A-JAZZ AKP846') ([#24868](https://github.com/qmk/qmk_firmware/pull/24868)) 115 * handwired/xealous - Remove DEFAULT_FOLDER ([#24877](https://github.com/qmk/qmk_firmware/pull/24877)) 116 * Updates to Ploopy Classic, Mouse, and Thumb for RP2040 hardware upgrade ([#24880](https://github.com/qmk/qmk_firmware/pull/24880)) 117 * Move Ergodox STM32 to handwired folder ([#24903](https://github.com/qmk/qmk_firmware/pull/24903)) 118 * Remove readme dummy content ([#24912](https://github.com/qmk/qmk_firmware/pull/24912)) 119 * Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24915](https://github.com/qmk/qmk_firmware/pull/24915)) 120 * Migrate some DEFAULT_FOLDER to keyboard_aliases.hjson ([#24938](https://github.com/qmk/qmk_firmware/pull/24938)) 121 122 Keyboard fixes: 123 * Fix up CI with `DEFAULT_FOLDER`. ([#24842](https://github.com/qmk/qmk_firmware/pull/24842)) 124 * rgbkb/pan - Remove invalid build target ([#24844](https://github.com/qmk/qmk_firmware/pull/24844)) 125 126 Others: 127 * Formally deprecate DEFAULT_FOLDER ([#24836](https://github.com/qmk/qmk_firmware/pull/24836)) 128 * Correct I2C API reference ([#24840](https://github.com/qmk/qmk_firmware/pull/24840)) 129 130 Bugs: 131 * Retro Tapping Re-Write; Key Roll Fix ([#23641](https://github.com/qmk/qmk_firmware/pull/23641)) 132 * Fix Quantum Painter compiliation issues with heavy optimization ([#24667](https://github.com/qmk/qmk_firmware/pull/24667)) 133 * Bugfix and update for AT32F415 ([#24807](https://github.com/qmk/qmk_firmware/pull/24807)) 134 * Fix for Chordal Hold: stuck mods when mod-taps are pressed in a stuttered sequence. ([#24878](https://github.com/qmk/qmk_firmware/pull/24878)) 135 * fix EEPROM driver for STM32L0/1 cat.1 devices ([#24928](https://github.com/qmk/qmk_firmware/pull/24928))