2011-11-14: 1.0.0 (5afa1c2)
- Initial version

2012-03-02: 1.0.1 (1836e39)
- Add timeout for message callbacks

2012-03-28: 1.0.2 (dc58be8)
- Don't wait 100ms if no callback available
- Add macOS support

2012-04-11: 1.0.3 (e7e4121)
- Remove global reactor import for macOS

2012-04-13: 1.0.4 (e35d70c)
- Remove double fork completely for macOS

2012-04-15: 1.0.5 (3313060)
- Update to newest python-libusb1 version (thanks to vpelletier)
- Remove possible memory leak

2012-04-24: 1.0.6 (971d172)
- Remove faulty libusb locking

2012-06-05: 1.0.7 (e4745c1)
- Fix handling of incomplete packets

2012-06-25: 1.0.8 (19f38a7)
- Break a reference cycle between USBDevice and USBTransfer objects
- Add date to log output
- Fix stack ID routing for enumerate with multiple connected stacks
- Add --version commandline option

2012-07-30: 1.0.9 (7002e21)
- Reduce Windows and macOS installer size
- Avoid race condition when enumerating USB devices on Linux
- Use more expressive log file name and correct line endings on Windows
- Don't cancel pending USB transfers to avoid segfault in libusb on USB
  hotunplug on Linux
- Update bundled libusb to 1.0.12 to make USB 3.0 work on Windows
- Increase USB hotplug/unplug stability by using a libusb context per device

2012-10-12: 1.0.10 (e893ec0)
- Enable non-root usage on Linux
- Avoid potential data corruption in python-libusb1

2012-10-26: 1.0.11 (0d870e6)
- Don't broadcast GetStackID responses, avoids confusing clients
- Update bundled libusb to 1.0.14 to support the 2nd generation of Renesas USB
  3.0 controllers on Windows
- Lock the PID file on Linux to prohibit starting multiple instances

2013-01-22: 2.0.0 (3ced6b6)
- Complete rewrite in C for protocol 2.0

2013-01-25: 2.0.1 (d820268)
- Add socket peer name to related log messages
- Don't accept an empty string as valid integer value in config file
- Reject 0 as port number in config file
- Report config errors to log file

2013-02-07: 2.0.2 (dc8b108)
- Make errors during client peer name lookup non-fatal
- Support running as normal console application on Windows
- Support MinGW as compiler on Windows
- Support running as non-root on Linux
- Improve --help output

2013-02-08: 2.0.3 (6e4f690)
- Fix USB unplug detection on Windows

2013-04-03: 2.0.4 (8e22cd3)
- NSIS installer automatically installs/updates the WinUSB driver on Windows < 8
- Improve callback related log messages
- Fix wrong log level of startup greeting on Windows
- Drop incoming disconnect probe requests
- Fix packet buffer handling in unlikely error case

2013-04-19: 2.0.5 (1be1146)
- Avoid non-portable usage of bit fields
- Handle big endian byte order correctly
- Show UIDs in log messages in Base58
- Debian i386 package now really compiled for i386 instead of i686

2013-08-08: 2.0.6 (c9d5504)
- Workaround struct packing bug in MinGW GCC 4.7
- Add Log Viewer tool for Windows
- Prohibit starting a second instance on Windows
- Check for USB device additions/removals changes on SIGUSR1
- Ignore SIGPIPE and handle socket write errors properly

2013-09-12: 2.0.7 (693f7bd)
- Add OpenWrt package Makefile (thanks to bjoern-r)
- Debian package now works with libudev0 and libudev1
- Use GetSystemTimePreciseAsFileTime() on Windows 8 for more precise log
  timestamps
- Fix race between socket select thread and USB poll thread on Windows
- Fix text of some USB related error messages
- Don't set SO_REUSEADDR for server socket on Windows

2013-09-13: 2.0.8 (19f5c69)
- Fix dynamic loading of libudev on Linux

2013-11-04: 2.0.9 (333f72b)
- Use libusb hotplug support if available on Linux
- Update bundled libusb to 1.0.17 on macOS, libusb hotplug replaces custom
  IOKit code
- Update bundled libusb to 1.0.17 on Windows, adds support for VIA VL805
  USB 3.0 host controllers
- Add --libusb-debug option to enable libusb debug output
- Report too long lines in config as errors instead of silently ignoring them
- Add IPv6 support with configurable dual-stack handling
- Don't interfere with Apple's USB Ethernet Adapter on macOS
- Sign brickd.app and installer on macOS to silence the Gatekeeper
- Linux packages build on older Debian/Ubuntu to lower required glibc version

2013-12-03: 2.0.10 (5bacb2c)
- Reduce log level of messages about USB write queue usage, packet burst are
  expected for the LED Strip Bricklet
- Handle USB transfers correctly that complete during usb_stack_destroy()
- Add Queue type for the USB stack's write queue instead of Array type

2014-04-08: 2.1.0 (3575dad)
- Add authentication support (disabled by default)
- Add WebSocket support (port 4280, disabled by default)
- Make USB device lookup more robust in case of some USB driver bugs on Windows
- Update bundled libusb to 1.0.18 on macOS, fixes a SIGFPE bug
- Update bundled libusb to 1.0.18 on Windows, adds support for Intel and AMD
  USB 3.0 root hubs
- Improve handling of request packets with invalid length in the header
- Handle rare case of socket_receive failing with EWOULDBLOCK
- Don't lose connection to USB devices on host-resume-from-suspend on Linux and
  macOS (requires pm-utils on Linux)
- Increase upper limits for pending requests and USB write queues
- Add socket_send queue for clients, enqueue packet instead of disconnecting
  client if socket_send would block
- Only dispatch response to the first client with a matching pending request,
  fixes response duplication

2014-07-31: 2.1.1 (466a67c)
- Add live debug log view to Log Viewer on Windows
- Include signed version of the Brick bootloader driver for Windows
- Workaround race condition in USB hotplug handling on Linux
- Fix crash if client with pending responses disconnects
- Fix possible mismatch while handling responses for identical requests
- Avoid broadcasting unexpected responses in most cases

2014-12-10: 2.2.0 (76081ce)
- Add RED Brick support
- Colorized log messages
- Detect and drop pending requests that will never get a response
- Windows installer and drivers are signed now
- macOS installer signed on macOS 10.10 to pass the Gatekeeper again
- Enable logrotate for brickd.log on Linux
- Remove all categories from logging system
- Handle partial writes if outgoing socket buffer is almost full

2015-02-02: 2.2.1 (36a039b)
- Improve RED Brick hotplug detection and error handling on Windows
- Add debug filter to fine-tune debug output
- Wait for WebSocket handshake completion before sending data
- Use redapid version as RED Brick firmware version
- Don't send packet twice after partial write

2015-10-01: 2.2.2 (fcc07cd)
- Use uname to get RED Brick kernel release for loading Ethernet Extension
  kernel driver (hotfix-1: already released as part of RED Brick Image 1.6)
- Improve RED Brick SPI stack protocol error recovery (hotfix-2: already
  released as part of RED Brick Image 1.7)
- Add start menu link for Log Viewer on Windows
- Adapt to file system protection changes in macOS 10.11
- Update libusb WDF co-installer for Windows Vista and Windows 7

2016-11-29: 2.2.3 (e754f54)
- Update bundled libusb to 1.0.20 on Windows, add support for Intel Alpine
  Ridge USB 3.1 controller
- Update bundled libusb to 1.0.20 on macOS
- Merge --debug and --libusb-debug options
- Properly quote path to brickd.exe for service registration on Windows
- Switch to .pkg based installer for macOS
- Fix crash in RS485 Extension code for RED Brick
- Add experimental Windows 10 IoT Core (Universal Windows Platform) support, no
  precompiled app available yet, brickd for Windows 10 IoT Core has to be
  compiled from source

2017-01-24: 2.3.0 (7b487f2)
- Add support for WIFI Extension 2.0 Mesh mode
- Improve RED Brick SPI stack protocol ACK handling
- Add Co-MCU Bricklet handling to RED Brick SPI stack protocol
- Avoid crash due to improperly cancelled USB transfers at device disconnect on
  macOS
- Update bundled libusb to 1.0.21 on Windows and macOS
- Also read config from unsupported Extensions on RED Brick to allow Brick
  Viewer showing them as unsupported
- Avoid using Debian specific init script helper functions on Linux

2017-10-06: 2.3.1 (879b323)
- Add support for RED Brick Image 1.10 and drop support for older RED Brick
  Image versions
- Add AppService as alternative to TCP/IP connection on Windows 10 IoT Core to
  allow C# Bindings (since 2.1.3) to connect from the same device
- Adapt to Windows 10 IoT Core version 15063
- Add logic to reopen USB devices to recover from stalled USB transfers
- Avoid race condition with USB prober on macOS while opening USB devices

2018-07-16: 2.3.2 (c58ca19)
- Fix notification event name handling on Windows 10 IoT Core
- Read USB string descriptors instead of faking them on Windows 10 IoT Core
- Add compile-time backward compatibility to RED Brick Image 1.9
- Update bundled libusb to 1.0.22 on Windows and macOS, this fixes enumeration
  problems with ASMedia USB hubs, composite devices and bogus USB device address
  reports on Windows
- Add MSVC project on Windows
- Use systemd instead of init.d on Linux, if available
- Add experimental Android support, no precompiled app available yet, brickd for
  Android has to be compiled from source

2019-07-02: 2.4.0 (d3d7482)
- Add support for HAT (Zero) Brick (SPI connected Bricklets)
- Install Log Viewer start menu link for all users on Windows
- Add commandline options to override config, log and PID file location on Linux
  and macOS
- Remove accidental dependency to libusb 1.0.20 on Linux
- Replace Event Log usage with persistent log file on Windows
- Extend Log Viewer to start/stop brickd, view log file and edit config file on
  Windows
- Fix rare crash in WIFI Extension 2.0 mesh packet handling
- Add support for receiving multiple response packets per USB read transfer
- Update bundled libusb to 1.0.23-rc1 on Windows and macOS, this fixes problems
  with ROOT/SYSTEM/0001 USB hubs on Windows
- Bind to all IP addresses resolved from the listen.address config option,
  instead of just the first one

2019-12-11: 2.4.1 (431b1a2)
- Rename bundled libusb to avoid potential collision with system libusb on macOS
- Add missing network dependency to systemd service on Linux
- Make sleep time between SPI reads for HAT (Zero) Brick configurable
- Add experimental support for HAT (Zero) Brick (SPI connected Bricklets) on
  Windows 10 IoT Core, disabled by default due to missing HAT detection
- Notarize Brick Daemon app to make it ready for macOS 10.15

2020-11-12: 2.4.2 (1e6411a)
- Properly shutdown subsystems on Ctrl+C instead of abruptly exiting on Windows
- Rotate persistent log file on Windows and limit its total size to 25 MB
- Add commandline options to override log and config file location on Windows
- Colorize Log Viewer live log messages on Windows
- Reword Log Viewer messages to be less ambiguous on Windows
- Add build option to work without a device file manager such as udevd on Linux
- Allow to handle more then 6 USB devices on Windows
- Use BCM2835 library for SPI connected Bricklets on Raspberry Pi to improve
  performance and work around SPI chip select conflict between Linux kernel 5.4
  and HAT Brick firmware < 2.0.2
- Improve log messages related to HAT (Zero) Brick on Linux
- Fix SPI hardware chip select usage on Linux
- Allow to fully static link brickd for Docker container usage on Linux
- Switch Debian package build to debhelper and drop SysV init support
- Improve USB transfer error logging and stall error recovery

2020-12-01: 2.4.3 (2f57246)
- Fix SPI clock for HAT (Zero) Brick on Linux, if core_freq differs from 250 MHz
- Add config option to override SPI backend detection

2023-01-16: 2.4.4 (889c425)
- Add menu entry to clear Live Log in Windows Log Viewer
- Abort delayed USB stall recovery if device was removed in the meantime
- Add rate limit for Bricklet error messages
- Increase libusb requirement from 1.0.6 to 1.0.20
- Allow to disable mesh gateway
- Update bundled libusb to 1.0.26.11755 on Windows (Windows Vista or newer
  required) and macOS

2023-11-30: 2.4.5 (f841c6b)
- Add Raspberry Pi 5 support for HAT (Zero) Brick
- Fix rare crash in initial USB device scan

2024-07-02: 2.4.6 (a897da7)
- Adapt to Raspberry Pi 5 GPIO pin numbering changes
- Use libgpiod for GPIO pin access on Linux
- Change runstatedir default from /var/run to /run on Linux

2024-07-29: 2.4.7 (5be7729)
- Fix Raspberry Pi 1-4 SPI backend detection