Version 0.9.1:
	- Transport errors now trigger a closing of the underlying StreamDeck device, so further API calls will throw correctly (and ``is_open()`` will return ``False``).
	- Updated animated example script to use separate cycle generators for each key, so the animations play at the correct rate regardless of key count.
	- Added support for the StreamDeck pedal.
	- Added new `is_visual()` function.

Version 0.9.0:
	- Added new `set_poll_frequency()` function.
	- Added new `is_open()` function.
	- Fixed a possible internal thread join error when a deck object was closed.

Version 0.8.5:
	- Add support for the new StreamDeck MK2.

Version 0.8.4:
	- Updated animated example script to attempt to maintain a constant FPS, regardless of rendering time.
	- Fixed a race condition in the LibUSB HIDAPI transport backend that could cause crashes when a device was closed.

Version 0.8.3:
	- Altered LibUSB transport workaround to only apply on Mac.
	- Fixed internal _extract_string() method to discard all data after the first NUL byte, fixing corrupt serial number strings being returned in some cases.
	- Set minimum Python version to 3.8, as some of the library uses newer syntax/core library features.

Version 0.8.2:
	- Added new ``PILHelper.create_scaled_image()`` function to easily generate scaled/padded key images for a given deck.
	- Updated LibUSB transport backend so that device paths are returned as UTF-8 strings, not raw bytes.
	- Updated version/serial number string extraction from StreamDecks so that invalid characters are substituted, rather than raising a ``UnicodeDecodeError`` error.
	- Added LibUSB transport workaround for a bug on Mac platforms when using older versions of the library.

Version 0.8.1:
	- Fixed memory leak in LibUSB HIDAPI transport backend.

Version 0.8.0:
	- Fix random crashes in LibUSB HIDAPI transport backend on Windows, as the API is not thread safe.
	- Added support for atomic updates of StreamDeck instances via the Python ``with`` scope syntax.

Version 0.7.3:
	- Fix crash in new LibUSB HIDAPI transport backend on systems with multiple connected StreamDeck devices.
	- Fix crash in new LibUSB HIDAPI transport backend when ``connected()`` was called on a StreamDeck instance.

Version 0.7.2:
	- Documentation restructuring to move installation out of the readme and into the library documentation.

Version 0.7.1:
	- Cleaned up new LibUSB HIDAPI transport backend, so that it only searches for OS-specific library files.
	- Fixed minor typo in the libUSB HIDAPI transport backend probe failure message.

Version 0.7.0:
	- Removed old HID and HIDAPI backends, added new ``ctypes`` based LibUSB-HIDAPI backend replacement.

Version 0.6.3:
	- Added support for the new V2 hardware revision of the StreamDeck Original.

Version 0.6.2:
	- Fixed broken StreamDeck XL communications on Linux.
	- Added blacklist for the ``libhidapi-hidraw`` system library which breaks StreamDeck Original communications.

Version 0.6.1:
	- Fixed broken HIDAPI backend probing.
	- Fixed double-open of HID backend devices causing connection issues on some platforms.

Version 0.6.0:
	- Added support for the ``HID`` Python package. This new HID backend is strongly recommended over the old HIDAPI backend.
	- Added auto-probing of installed backends, if no specific transport is supplied when constructing a DeviceManager instance.

Version 0.5.1:
	- Fixed StreamDeck XL reporting swapped rows/columns count.
	- Fixed StreamDeck XL failing to report correct serial number and firmware version.

Version 0.5.0:
	- Fixed StreamDeck devices occasionally showing partial old frames on initial connection.
	- Removed support for RAW pixel images, StreamDeck Mini and Original take BMP images.
	- Removed ``width`` and ``height`` information from Deck key image dict, now returned as ``size`` tuple entry.

Version 0.4.0:
	- Added StreamDeck XL support.

Version 0.3.2:
	- Fixed StreamDeck Mini key images not updating under some circumstances.

Version 0.3.1:
	- Added animated image example script.

Version 0.3:
	- Remapped StreamDeck key indexes so that key 0 is located on the physical
	  top-left of all supported devices.

Version 0.2.4:
	- Added new ``StreamDeck.get_serial_number()`` function.
	- Added new ``StreamDeck.get_firmware_version()`` function.

Version 0.2.3:
	- Added new ``StreamDeck.ImageHelpers modules`` for easier key image generation.
