v2.0.2
 - Load tlslite only for the server, which lowers device memory use
 - Add project links, classifiers and badges to the PyPI page
 - Leave untracked files and coverage output out of the source distribution

v2.0.1
 - Ship a py.typed marker so type checkers use the package annotations

v2.0.0
 - Add opt-in authentication for devices and clients, using
   Server(device_auth=True, client_auth=True). Both default to off
 - Add client sign in with an access identifier, alongside email sign in
 - Hold a failed registration open for auth_failure_delay seconds
 - Breaking: add_device takes the authkey as its third argument, and takes
   manufacturer_id and product_id as keyword arguments
 - Breaking: Server takes certfile and keyfile as Path objects
 - Breaking: Remove support for Python 3.10
 - Add RGBW dimmer channel
 - Add turn on, turn off and set RGBW actions for RGB dimmer channels
 - Default the command field of TRGBDimmerChannel_Value to RGBW_COMMAND_NOT_SET
 - Replace the existing connection when a device or client registers again,
   instead of rejecting the new registration
 - Reject a device whose manufacturer or product id does not match with
   UNKNOWN_ERROR, instead of CHANNEL_CONFLICT
 - Server.stop() takes a timeout, and closes the connections that outlast it
 - Devices time out registration, and shut down when a background task fails
 - Device.add() raises once the device has started, and Device.stop() before
   start() does nothing
 - Devices only ping when they have sent nothing else for the ping interval
 - Close a connection whose event handling fails, and keep dispatching events
   to the other connections
 - Fix a client closing its own connection by asking for an unknown channel
 - Fix the success value reported when a device sets a channel value
 - Fix RGBW and dimmer actions overwriting the fields a client asked to
   leave alone, which it marks with a brightness of -1 or a color of 0
 - Fix the activity timeout resetting to the default when a connection registers
 - Fix events sometimes reaching a client before the response to its call
 - Fix field types in the protocol definitions

v1.1.1
 - Fix setting dimmer brightness

v1.1.0
 - Add dimmer and RGB dimmer channels
 - Fix the value returned when setting a general purpose measurement
 - Fix temperature and humidity readings that are unavailable

v1.0.0
 - Send channel relations to clients
 - Send channels and scenes in batches as the client asks for them, in a
   stable order
 - Increase the default activity timeout
 - Make info level logging less verbose

v0.5.0
 - Fix channel value changed events firing twice

v0.4.0
 - Add scenes, including setting dimmer brightness from a scene
 - Fix empty batches

v0.3.1
 - Set the proto version of a device to the minimum its channels require

v0.3.0
 - Add REQUEST and RESPONSE server events
 - Encode and decode channel values through the channel classes
 - Make device on_change handlers async

v0.2.0
 - Add support for custom icons
 - Add ServerState.get_channel_by_name
 - Allow passing extra arguments to events
 - Persist dimmer brightness when a channel is toggled off then on
 - Fix channel flags and enum types in the protocol definitions
 - Fix the server not removing a device when its call handler raises

v0.1.0
 - Initial version
