# Change Log

## [v0.6.2](https://github.com/ckb-next/ckb-next/tree/v0.6.2) (2025-03-17)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.6.1...v0.6.2)

This release addresses a **major regression** in v0.6.1.

Support for new devices:
- MM700
- K70 RGB Pro

Bug fixes:
- Some keys, bindings, or DPI not working on any of the following devices: M55 Pro, M95, Ironclaw Wireless, Harpoon Wireless, Katar Pro XT, K55 Pro.

Notes for packagers:
- Please drop v0.6.1 or backport https://github.com/ckb-next/ckb-next/commit/7a7d0c80bf1ef56a024606ae49551ce84872ce72 as soon as possible.

## [v0.6.1](https://github.com/ckb-next/ckb-next/tree/v0.6.1) (2025-03-09)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.6.0...v0.6.1)

Support for new devices:
- K100 RGB Optical-Mechanical
- K70 Core TKL RGB
- K65 Mini

Features:
- Port to Qt6

Bug fixes:
- The GUI no longer crashes on device disconnect
- The slash key on the Brazilian (ABNT) layout now works with modern keyboards
- Prevent possible USB connection issues on legacy devices
- OpenRC service file is POSIX compliant and is now able to pass arguments to the daemon
- Resolve a crash on pure XWayland systems
- Prevent memory leak on active window detection code

Notes for packagers:
- Qt version 5.12 or greater is now required
- Bump minimum CMake version to 3.13
- Bump CXX_STANDARD to 17 for Qt6 
- Compiling with -Werror=odr no longer fails due to a mismatch

## [v0.6.0](https://github.com/ckb-next/ckb-next/tree/v0.6.0) (2023-06-23)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.5.0...v0.6.0)

Support for new devices:
- K55 RGB PRO
- K55 RGB PRO XT
- K60 PRO (Monochrome)
- K60 PRO TKL RGB
- Dark Core RGB Pro (experimental)
- Dark Core RGB Pro SE (experimental)
- Slipstream wireless dongle (when paired with a single supported device)

Important bugfixes:
- The <kbd>Fn</kbd> key now behaves as expected on the K65
- The GUI now accepts macros containing the ISO backslash key
- A workaround is now implemented to prevent the media keys on the Strafe from getting stuck pressed
- The daemon no longer crashes with a `buffer overflow detected` message on start under certain conditions
- The WinLock LED now functions on the K55 RGB and K55 RGB Pro XT
- The GUI no longer crashes under certain conditions when the sound server is being restarted
- The battery states are now reported correctly in the GUI
- The brightness is now correctly set for newer devices (and the lights now turn off instantly)

New features:
- The device previews are now rendered using the GPU
- Horizontal scrolling is now available for binding
- The mute indicator can now indicate either the default output or input audio device
- The music visualizer now supports automatic gain control, automatically adapting to volume changes
- It is now possible to pair wireless devices with dongles (not in GUI yet)

Notes for packagers:
- There is a new binary `ckb-next-sinfo`. It is not optional and must be bundled with the GUI. It is not meant to be ran by the end user.
- The explicit dependency to Xlib has been dropped. Only XCB is required
- pulse-simple is no longer used. There is still a dependency on libpulse
- Quazip (for Qt5) is no longer bundled and is required

## [v0.5.0](https://github.com/ckb-next/ckb-next/tree/v0.5.0) (2022-05-27)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.4.4...v0.5.0)

Support for new devices:
- K95 Platinum XT
- Katar Pro
- Katar Pro XT
- Glaive Pro
- M55
- K60 Pro RGB
- K60 Pro RGB Low Profile
- K60 Pro RGB SE

Important bugfixes:
- Scroll wheels are now treated as axes (Responsiveness should be improved for specific mice)
- The lights on the K95 RGB Platinum top bar are now updated correctly
- An infinite loop is prevented if certain USB information can not be read
- GUI no longer crashes on exit under certain conditions
- Mouse scrolling works again when combined with specific libinput versions
- The daemon no longer hangs when quitting due to LED keyboard indicators
- The lighting programming key can now be rebound on K95 Legacy
- Animations won't break due to daylight savings / system time changes
- GUI doesn't crash when switching to a hardware mode on a fresh installation
- Daemon no longer causes a kernel Oops on resume under certain conditions (Devices now resume correctly from sleep)
- Window detection is more reliable and works correctly on system boot
- Settings tab now stretches correctly
- Profile switch button can now be bound correctly on mice
- ISO Enter key is now aligned correctly
- Bindings are now consistent between demo and new modes
- Firmware update dialog is no longer cut off and can be resized
- RGB data won't be sent to the daemon when brightness is set to 0%

New features:
- German translation
- 66 service (not installed automatically)
- Device previews are now resizable

## [v0.4.4](https://github.com/ckb-next/ckb-next/tree/v0.4.4) (2021-03-18)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.4.3...v0.4.4)

Important bugfixes:
- Fixed a crash when creating a new profile
- Fixed lights turning off unexpectedly or not being restored correctly
- Macros can now be repeated quickly by repeatedly pressing the keys
- Fixed various deadlocks when resuming from suspend or during device initialisation
- Fixed devices not functioning during system boot requiring a daemon restart

## [v0.4.3](https://github.com/ckb-next/ckb-next/tree/v0.4.3) (2020-12-18)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.4.2...v0.4.3)

PLEASE NOTE: This is the last version of ckb-next to officially support macOS.
It has been reported to work with Big Sur after disabling SIP.
https://github.com/ckb-next/ckb-next/issues/660
ARM Macs are NOT supported.

Support for new devices:
- Scimitar RGB Elite
- Nightsword RGB

Important bugfixes:
- Fixed delay when shutting down with K95 RGB
- Fixed freezing when updating indicator LEDs
- Indicator LEDs are now more responsive when an animation is playing
- GUI now starts hidden in tray on KDE
- The pipe animation now works consistently between mode changes
- The pipe animation now handles input commands sent in rapid succession before the device is updated
- Input works on wayland again after recent updates
- libgdx based games no longer crash on mouse input
- Mouse settings are now correctly restored when resuming from suspend
- Fixed a bug where some devices would not be initialised on daemon start and would require a replug
- Fixed layouts for K68, K65, K63, M95

New features:
- Under X11 only, lights can now automatically turn off after a user-set time
- Macros now loop when the key is held down
- Macro UI has been redesigned and supports recording from non ckb-next managed keyboards
- Modes can now be changed automatically based on the current focused application (X11/XWayland Only)
- Translations are now supported

Notes for packagers:
- The systemd unit directory can be overriden with -DSYSTEMD_UNIT_INSTALL_DIR
- libappindicator is no longer used
- Minimum Qt version has been bumped up to 5.5.1 (xenial)
- cmake now checks for quazip 1.0
- The following new dependencies have been introduced: Qt5 X11Extras, xcb, xcb-screensaver, xcb-ewmh, Qt5 translation tools, dbusmenu-qt5

## [v0.4.2](https://github.com/ckb-next/ckb-next/tree/v0.4.2) (2019-10-08)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.4.1...v0.4.2)

This update fixes ckb-next for macOS Catalina

Note for Ubuntu PPA users: Please cancel this update.
An update will be released shortly through the PPA that also disables this prompt in the future.

Support for new devices:
- Harpoon RGB Pro
- Ironclaw RGB

Important bugfixes:

- ckb-next-daemon now correctly requests permission on macOS Catalina
- Music visualiser is now included again in macOS packages
- GUI no longer crashes if an animation has no keys set

Notes:

- Included quazip was updated to fix deprecation warnings

## [v0.4.1](https://github.com/ckb-next/ckb-next/tree/v0.4.1) (2019-08-27)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.4.0...v0.4.1)

Important bugfixes:

- Specified keyboard layout is no longer being reverted on restart
- Pipe animation no longer quits if it can't read data
- Media keys work again on the legacy K65
- Daemon no longer crashes on quit on macOS
- Devices are now re-activated after resume on Linux
- Gradient animation no longer flickers with dithering enabled
- HiDPI has been disabled by default due to screen resolution misdetection
- Max DPI is now per-device
- Extra words are now filtered from the device name
- gpg2 is preferred over gpg for signature verification

New features:

- An uninstall button has been added for macOS users that allows complete uninstallation, including older versions
- Life animation has a new transparent preset
- Confirmation dialog boxes have been added when deleting profiles, modes, and animations
- Animation preview now gets temporarily disabled while ckb-next is out of focus
- Support for multiple animation paths has been added
- Pollrate can now be changed through the GUI

Notes for packagers:

- Udev rules are now installed by default in /lib/udev/rules.d.
- Udev rule installation path can be changed with UDEV_RULE_DIRECTORY in cmake
- Init systems can manually be force-enabled with FORCE_INIT_SYSTEM in cmake

## [v0.4.0](https://github.com/ckb-next/ckb-next/tree/v0.4.0) (2019-03-09)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.3.2...v0.4.0)

NOTICE FOR MAC USERS: ckb-next 0.4.0 stores its data using a different backend. If you upgrade, your settings and profiles will be migrated. In case of a downgrade, any changes will not propagate to newer versions of the software.

Support for new devices:
- K70 RGB MK.2 LP
- M65 RGB Elite
- M95 Legacy

Important bugfixes:
- ST100 now works on macOS properly
- Strafe RGB MK.2 logo is mapped to the right LEDs, and media buttons are positioned correctly
- A buffer overflow causing the daemon to crash or hang has been fixed
- quickinstall can now run correctly with multibyte characters in the path
- Rename now works correctly in the Profile Manager context menu
- Animations with no presets no longer get loaded to prevent crashes
- K70 Lux is now marked correctly as monochrome
- ckb-next can be built again with Qt 5.2
- Save to hardware now gets disabled in the context menu for unsupported devices
- Settings backend has been changed to ini for macOS, preventing silent configuration data corruption
- The K55, the ST100 and the Polaris now have working default profiles
- A few cases that may cause the GUI to crash have been found and fixed
- Blank animation names are no longer allowed

New features:
- GUI has gained a monochrome tray icon option (QSystemTrayIcon only)
- Device brightness can be controlled by scrolling on the tray icon on Linux systems that support it (AppIndicator or KDE)
- Profiles and modes can now be changed with the --profile and --mode arguments passed to the GUI binary
- New Conway's Game of Life animation
- New 'snake' animation
- New 'pipe' animation, allowing the user to send rgb data from external applications
- Music Visualizer (mviz) is now supported on macOS, and has been reworked to function correctly
- A --version argument has been added to the daemon

Notes:
- On Linux, the udev rule has been renamed and moved
- On Linux, for builds with libappindicator, it can be force enabled/disabled by setting the CKB_NEXT_USE_APPINDICATOR environment variable
- On Linux, libappindicator support is also enabled if the Qt platform theme is gtk2 (Useful for Unity on Ubuntu 19.04)
- The restart command has been removed from the daemon
- Threads are now named for easier debugging
- Signal handler has been rewritten
- A few unneeded packets are no longer being sent to M65 mice
- Only Red channel data is being sent to monochrome devices

## [v0.3.2](https://github.com/ckb-next/ckb-next/tree/v0.3.2) (2018-10-07)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.3.1...v0.3.2)

Important news:

- This version fixes a major bug for the Scimitar Pro, causing the daemon to not properly interface with the mouse. This could require manually reflashing the mouse firmware if a firmware update was performed with 0.3.1 or earlier.
- An updater has been created to more quickly push bugfixes to users, especially for those on macOS.
- There is a new Space Invaders-like minigame that can be played as an animation, thanks to @mvladimirovich.

Support for new devices:

- Strafe RGB MK.2; by accidental omission from the previous release.
- K66

Important bugfixes:

- The Scimitar Pro now defaults to v2.xx endpoints
- The DPI LED on mice now changes in sniper mode
- The GUI will warn if uinput cannot be loaded on Linux
- The "Save to Hardware" button on the Scimitar and Glaive has been greyed out due to a current lack of support
- Thanks to the efforts of @Kedstar99, the codebase compiles with much fewer warnings
- The daemon will retry talking to the Karabiner kext in case it runs before the kext is ready
- Binding commands to wheels will now repeat properly
- QuaZip is no longer required for daemon-only builds
- KissFFT is now built as a static library
- Symbolic links are now created in /dev/input/by-id for evdev users
- Fixed a regression for devices using the legacy protocol
- The forwards and backwards keys are now bound by default on Mac
- Workaround for using the Polaris on macOS

Note for packagers:

- If ckb-next is updated through a package management system, `-DDISABLE_UPDATER=1` should be passed to CMake

## [v0.3.1](https://github.com/ckb-next/ckb-next/tree/v0.3.1) (2018-07-31)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.3.0...v0.3.1)

Important news:

- macOS now uses Karabiner Elements as a backend. You will need to enable the kext for ckb-next to function.

Support for new devices:

- K70 RGB MK.2
- K70 RGB MK.2 SE

New major features:

- macOS 10.14 Mojave support
- Karabiner Elements is used as an input backend
- The GUI now has a generate ckb-next-dev-detect report button

Important bugfixes:

- Rapidfire keyboards have a workaround on shutdown
- Bugfix for independent X/Y DPI
- The new Strafe NRGB has firmware updates now
- The GUI pops up a warning when trying to bind the Windows key with Winlock enabled
- The GUI now has a DPI indicator
- The K68 NRGB winlock light now lights up
- The GUI handles SIGINT/SIGTERM cleanly, avoiding stalled devices
- Strafe sidelights now save state on GUI start
- Original Strafe NRGB's sidelights now toggle correctly
- ckb-next-dev-detect is now installed to the system and added to PATH

## [v0.3.0](https://github.com/ckb-next/ckb-next/tree/v0.3.0) (2018-04-30)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.2.9...v0.3.0)

Important news:

- Binaries have been renamed from ckb to ckb-next and qmake has been replaced with CMake

Support for new devices:

- K55 RGB
- K68 RGB
- K90 Legacy
- Katar RGB
- Polaris RGB
- ST100 RGB

New major features:

- Use URB Interrupts to read data from devices
- Profile Import/Export
- Keyboard Layout autodetection
- CMake build system
- Relocation of binaries
- No single global layout for all devices in the GUI

Important bugfixes:

- Deadlock on daemon exit
- Support for K95 Platinum profile switch key
- Keymap corruption on the GUI
- Pulseaudio GUI deadlock
- macOS Sierra and higher mouse fixes
- Use udev to detect the appropriate endpoint max packet size
- Ignore devices in BIOS mode
- Disable save to hardware for unsupported devices
- Keymap patches for K68
- Devices not being enabled on resume on macOS
- Workaround for linux kernel out-of-bounds write
- Memory leaks on firmware update

## [v0.2.9](https://github.com/ckb-next/ckb-next/tree/v0.2.9) (2018-01-21)
[Full Changelog](https://github.com/ckb-next/ckb-next/compare/v0.2.8...v0.2.9)

Important news:
* Project was moved to the organization since mattanger has disappeared
* Binaries will be renamed in `v0.3.0`

Important changes:
* Significantly lower CPU usage on idle
* Add support for K95 Platinum
* Add support for K68
* Add support for (new) Strafe non-RGB
* Add support for Glaive
* Add support for Harpoon
* Add support for Corsair firmware v3
* Add support for pt\_br layout
* Add support for Japanese layout
* Add macro delays to the GUI
* New FIRMWARE file structure
* GUI warning when daemon is not running
* udev rule to remove joystick tag
* Dynamic keymap patching
* Require Qt >=5.2
* Numerous small fixes and improvements

## [v0.2.8](https://github.com/mattanger/ckb-next/tree/v0.2.8) (2017-05-06)
[Full Changelog](https://github.com/mattanger/ckb-next/compare/v0.2.7...v0.2.8)

- `ckb` is now `ckb-next`, __but the binaries will be renamed in `v0.2.9`__
- Releases and release notes are provided from now on [\#10](https://github.com/mattanger/ckb-next/issues/10) [\#66](https://github.com/mattanger/ckb-next/issues/66)
- Numerous PRs from `ckb` merged [\#4](https://github.com/mattanger/ckb-next/issues/4)
- SIGSEGV when deleting copied profile is fixed [\#38](https://github.com/mattanger/ckb-next/issues/38)
- Modifier keys not working on macOS Sierra are temporarily fixed [\#29](https://github.com/mattanger/ckb-next/issues/29)
- Compilation errors on macOS Sierra are fixed [\#134](https://github.com/mattanger/ckb-next/issues/134)
- `make debug` target on Linux is fixed [\#79](https://github.com/mattanger/ckb-next/issues/79)
- Heat map animation issues fixed [\#30](https://github.com/mattanger/ckb-next/issues/30)
- Compilation of the music visualizer fixed [\#21](https://github.com/mattanger/ckb-next/issues/21)
- Hardware profile loading error on firmware 2.05 fixed [\#24](https://github.com/mattanger/ckb-next/pull/24)
- Project's own firmware table created, signed and populated with new devices [\#60](https://github.com/mattanger/ckb-next/pull/60)
- Arch Linux and Fedora/CentOS packages added [\#80](https://github.com/mattanger/ckb-next/pull/80) [\#5](https://github.com/mattanger/ckb-next/issues/5) [\#41](https://github.com/mattanger/ckb-next/pull/41)
